LCD1602_8BIT
// Подключаем пины Arduino к пинам LCD1602
const int rs = 12, en = 11, d0 = 2, d1 = 3, d2 = 4, d3 = 5, d4 = 6, d5 = 7, d6 = 8, d7 = 9;
int int_out;
unsigned long times;
void setup() {
Serial.begin(9600);
// Устанавливаем пины в режим вывода
pinMode(rs, OUTPUT);
pinMode(en, OUTPUT);
pinMode(d0, OUTPUT);
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(d5, OUTPUT);
pinMode(d6, OUTPUT);
pinMode(d7, OUTPUT);
// Инициализируем экран
lcd_init();
}
void loop() {
times=millis();
for(int i1=0;i1<10000;i1++){
lcd_command(0x80);
lcd_print("LCD1602");
lcd_command(0xC0);
lcd_print(String(int_out++));
}
lcd_command(0x01);
int_out=0;
Serial.print("8-bit ");Serial.println(millis()-times);
delay(1000);
}
void lcd_init() {
// Инициализация экрана
delay(100);
lcd_command(0x03);delayMicroseconds(4500);
lcd_command(0x03);delayMicroseconds(4500);
lcd_command(0x03);delayMicroseconds(200);
lcd_command(0x02);
lcd_command(0x38);
lcd_command(0x0C);
lcd_command(0x01);
}
void lcd_command(byte cmd) {
// Отправляем команду на экран
digitalWrite(rs, LOW);delayMicroseconds(100);
lcd_write(cmd);
}
void lcd_print(String str) {
// Выводим строку на экран
digitalWrite(rs, HIGH);
for (int i = 0; i < str.length(); i++) {
lcd_write(str[i]);
}
}
void lcd_write(byte data) {
// Отправляем данные на экран
digitalWrite(d7, (data >> 7) & 0x01);
digitalWrite(d6, (data >> 6) & 0x01);
digitalWrite(d5, (data >> 5) & 0x01);
digitalWrite(d4, (data >> 4) & 0x01);
digitalWrite(d3, (data >> 3) & 0x01);
digitalWrite(d2, (data >> 2) & 0x01);
digitalWrite(d1, (data >> 1) & 0x01);
digitalWrite(d0, (data >> 0) & 0x01);
digitalWrite(en, HIGH);
delayMicroseconds(1);
digitalWrite(en, LOW);
delayMicroseconds(50);
}