LCD 1602 (символьный зелёный ЖК-дисплей, контроллер HD44780, I2C интерфейс на микросхеме PCF8574)
Характеристики дисплея LCD 1602
Количество символов 16х2;
Напряжение питания 5В;
Потребляемый рабочий ток 2мA;
Размеры 80х36х15 мм.;
Диапазон рабочих температур -20°C…+70°C;
размер точки дисплея — 0,5×0,5 мм;
Угол обзора — 180°C.
I2C переходник
I2C адреса:
— для PCF8574 0x20…0x27;
— для PCF8574A 0x38…0x3F.
Распиновка LCD 1602
VSS (Ground) — земля;
VDD — питание 5 вольт;
VC — регулировка контрастности (переменный резистор R=10…20 кОм);
RS (Register Select) — регистр для выбора команд, 0- команда, 1 — данные;
RW (Read Write) — запись и чтение команд и данных;
E (Enable signal) — готовность данных;
D0…D7 (Data bus) — для передачи 8 битных данных на дисплей в виде 0 и 1. Например, 00110011.
A, K — анод (+5V), катод (0V) питание подсветки дисплея (через токоограничивающий резистор).
SCL (Serial CLock) — последовательная линия тактирования;
SDA (Serial DAta) — последовательная линия данных;
VCC — напряжение питания 5В;
GND — земля.


Схема подключения LCD 1602A к Arduino UNO

Для повышение быстродействия вывода данных на дисплее лучше использовать 8 битный режим, а для уменьшение проводов — 4 битный режим.
#include <LiquidCrystal_PCF8574.h>
LiquidCrystal_PCF8574 lcd(0x27); // установить адрес 0x27 для 16x2 дисплея
void setup()
{
lcd.begin(16, 2); // подключение lcd экрана 16x2
lcd.setBacklight(255); //яркость подсветки, 255 - max
lcd.clear(); // очистить дисплый, курсор в начальной позиции (0,0)
}
void loop()
{
lcd.setCursor(1, 0);
lcd.print("matematicus.ru");
lcd.setCursor(6, 1);
lcd.print("site");
delay(1000);
lcd.clear();
lcd.setCursor(7, 0);
lcd.print("\x58""Y"); // XY
delay(1000);
lcd.clear();
}
Результат работы дисплея (вывод своих символов):

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
byte heart[8] = {
B00000,
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000
};
byte celsius[8] =
{
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000
};
byte smiley[8] = {
B00000,
B10001,
B00000,
B00000,
B10001,
B01110,
B00000,
};
byte triangle[8] = {
B00000,
B00000,
B00001,
B00011,
B00111,
B01111,
B11111,
};
void setup()
{
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.createChar(0, smiley);
lcd.createChar(1, heart);
lcd.createChar(2, celsius);
lcd.createChar(3, triangle);
// lcd.home(); // курсор в начальную позицию
}
void loop()
{
lcd.setCursor(0, 0);
lcd.write(byte(0));
lcd.setCursor(1, 0);
lcd.write(byte(1));
lcd.setCursor(2, 0);
lcd.write(byte(2));
lcd.setCursor(3, 0);
lcd.print("C");
lcd.setCursor(4, 0);
lcd.write(byte(3));
lcd.cursor();
}
Результат работы дисплея (вывод текста — кириллица):

#include <LCD_1602_RUS.h>
LCD_1602_RUS lcd(0x27, 16, 2);
void setup()
{
lcd.init();
lcd.backlight();
lcd.setCursor(1, 0);
lcd.print("Математикус");
lcd.setCursor(6, 1);
lcd.print("сайт");
lcd.setCursor(12, 1);
lcd.print(char(13));
}
void loop()
{
}
Результат работы дисплея:

