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() { }
Результат работы дисплея: