Академия технических курсов Хакспейс

Самые практичные технические курсы!

| Академия | Преподаватели | Работа у нас | Контакты |
т. 931 41 59

Дисплей


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





Код для выдачи надписи Hello world

#include "LiquidCrystal.h"

//Создаем объект для работы с дисплеем.
//При создании указываем номера портов
//в порядке 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);
}

Создание своего символа:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); byte smiley[8] = { B00000, B10001, B00000, B00000, B10001, B01110, B00000, }; void setup() { lcd.createChar(0, smiley); lcd.begin(16, 2); lcd.write(byte(0)); } void loop() {}

Вывод русского текста имеет ряд особенностей в связи с тем, что исходный код в среде Arduino сохраняется в кодировке UTF-8, которая, конечно, не соответствует таблице символов в ЖК дисплее. Для вывода русских символов можно указывать их коды в восьмеричной системе в соответствии с синтаксисом C/C++, ориентируясь на таблицу из документации. Пример такого вывода:
  //вывод строки "ЖК дисплей"
lcd.print("\243K \343\270c\276\273e\271");

Здесь "\243", "\343", "\270", "\276", "\273", "\271" - коды символов "Ж", "д", "и", "п", "л", "й". Обратите внимание, что символы "K", "c" и "e" - это символы латинского алфавита.

Можно задавать коды 16-м кодом. Так например, букве «Я» соответствует код B1 в шестнадцатиричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности \x## встроить в строку код символа:
lcd.print("\xB1ndex");

Более удобным может быть использование библиотеки LiquidCrystalRus, которая, хоть и занимает несколько дополнительных десятков байт flash-памяти, зато позволяет непосредственно использовать русские символы в кодировке UTF-8 при выводе на дисплей. Библиотека доступна также и на сайте ее разработчика.

http://www.freeduino.ru/arduino/files/WH1602B-YYH-CTK.pdf