ЖК индикатор WH1602B
WH1602B-YYK-CTK - это ЖК индикатор 16x2 с латинским и кириллическим шрифтом и HD44780-совместимым интерфейсом.

ЖК индикатор 16x2 WH1602B-YYK-CTK c запаянными "низкими" (4мм) штыревыми разъемами - специально для LCD Keypad Shield.

- Тип: знакосинтезирующий (текстовый)
- Количество символов: 2 строки по 16 символов
- Подсветка: светодиодная, желто-зеленая
- Шрифт: латинский и кириллический
- Габариты (мм): 80x36x14
- Область вывода (мм): 56x11
- Напряжение питания (В): 5
- Интерфейс: HD44780 совместимый
Более полное техническое описание доступно в документации производителя.просмотр
Подключение к Arduino
WH1602B-YYK-CTK, как и другие ЖК индикаторы с HD44780 совместимым интерфейсом, легко подключается к любой Arduino-совместимой плате.
Одним из вариантов является применение LCD Keypad Shield, но возможно, также и непосредственное подключение (потребует больше свободных выводов).
Дисплей имеет следующее расположение выводов:
1 | - | Gnd (земля) |
2 | - | Vin (питание +5В) |
3 | - | VO (настройка контрастности) |
4 | - | RS (данные/команды) |
5 | - | RW (чтение/запись) |
6 | - | E (Enable) |
7-14 | - | DB0-DB7 (линии данных) |
15 | - | LED+ (анод подсветки) |
16 | - | LED- (катод подсветки) |
Модуль может работать в 4-х битном режиме, что уменьшает число необходимых выводов - нужно подключить только Gnd, Vin, VO, RS, RW, E, DB4-DB7, и при необходимости подсветку. Также, поскольку обычно обмен данными идет только в одну сторону - от микроконтроллера к ЖК дисплею, вывод RW может не подключаться к Arduino, а быть подключенным к Gnd.
Возможный вариант подключения представлен на рисунках. На втором рисунке «сэкономлен» один вывод за счет подключения RW к Gnd. Итого, в минимальном варианте для подключения требуется 6 свободных портов Arduino, и это могут быть любые порты - не обязательно те же, что и на рисунках.


Переменный резистор Contrast номиналом 10-20 кОм служит для регулировки контрастности.
Обращаем внимание на резистор LCD backlight - он ограничивает ток в цепи подсветки, а значит, от его номинала зависит ее яркость. Сопротивление такого резистора при питании подсветки от +5В должно быть порядка 6-8 Ом, а сам ток около 100 мА.
Пример вывода на ЖК дисплей, подключенный согласно второго рисунка:
//Создаем объект для работы с дисплеем.
//При создании указываем номера портов
//в порядке RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(12, 10, 5, 4, 3, 2);
void setup() {
//Выставлем число столбцов и строк
lcd.begin(16, 2);
//Выводим текст
lcd.print("hello, world!");
}
void loop() {
//Выставляем курсор во 2-ю строку,
//1й столбец (счет идет с 0, поэтому
//строка номер 1, стобец номер 0)
lcd.setCursor(0, 1);
//Выводим число секунд со старта
lcd.print(millis()/1000);
}
Вывод русского текста имеет ряд особенностей в связи с тем, что исходный код в среде Arduino сохраняется в кодировке UTF-8, которая, конечно, не соответствует таблице символов в ЖК дисплее. Для вывода русских символов можно указывать их коды в восьмеричной системе в соответствии с синтаксисом C/C++, ориентируясь на таблицу из документации. Пример такого вывода:
lcd.print("\243K \343\270c\276\273e\271");
Здесь "\243", "\343", "\270", "\276", "\273", "\271" - коды символов "Ж", "д", "и", "п", "л", "й". Обратите внимание, что символы "K", "c" и "e" - это символы латинского алфавита.
Более удобным может быть использование библиотеки LiquidCrystalRus, которая, хоть и занимает несколько дополнительных десятков байт flash-памяти, зато позволяет непосредственно использовать русские символы в кодировке UTF-8 при выводе на дисплей. Библиотека доступна также и на сайте ее разработчика.