Материал просмотрен 356 раз(а)

Всем привет! Продолжаю баловаться с Arduino. Наконец, распаял LCD1602 дисплей и захотел его проверить в деле. Что представляет собой этот дисплей? Как следует из названия – это 16 символов ширина, 2 символа – высота. Такая вот матрица.

К слову о матрицах, каждый символ здесь состоит из двумерного массива 5 на 8 точек, так что вполне можно нарисовать собственные символы и выводить их на дисплее. Это касается кириллицы и различных смайлов. Это мы обязательно рассмотрим ниже. Ну а сейчас, подключение дисплея к Arduino.

Дисплей имеет 16 контактов на обратной стороне:

IMAG1867

Вот там в верхней части. Гребёнку уже я сам напаял, там отверстия идут штатно. Зато этой гребёнкой теперь можно вставить плату в Breadboard.

Итак, что же это за выводы?

1 (VSS) – Питание контроллера (-)
2 (VDD) – Питание контроллера (+)
3 (VO) – Вывод управления контрастом
4 (RS) – Выбор регистра
5 (R/W) – Чтение/запись ( режим записи при соединении с землей)
6 (E) – Еnable (включение)
7-10 (DB0-DB3) – Младшие биты 8-битного интерфейса
11-14 (DB4-DB7) – Старшие биты интерфейса
15 (A) – Анод (+) питания подсветки
16 (K) – Катод (-) питания подсветки

Запитаем от Arduino:

  • 5V подёт на питание подсветки и питание контроллера (VDD, A)
  • GND пойдёт на землю контрллера (VSS, K)
  • 7 пин на регистр контроллера (RS)
  • 6 пин на включение (E)
  • 5-2 пины на старшие регистры DB4-DB7 соответсвтенно

Работать с Arduino достаточно просто – весь функционал описан в библиотеке LiquidCrystal.h, который мы и подключим в заголовочной части скетча.
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
void setup(){
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Hello, from:");
lcd.setCursor(0, 1);
lcd.print("LITL-ADMIN.RU");
}
void loop(){
}

Вот и вся программа:
LA

А как быть с кириллицей или спецсимволами?

На самом деле есть возможность создавать свои символы, указав их битовую маску. Вот например, мастер создания символа

Создали символ “домик”, получили битовую маску:

house

#include <LiquidCrystal.h>
byte home[8] =
{
B00100,
B01110,
B11011,
B11111,
B10001,
B10001,
B11111,
};
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
void setup(){
lcd.begin(16, 2);
lcd.createChar(1, home);
lcd.setCursor(0, 0);
lcd.print("\1");
}
void loop(){
}

Кроме того, не очень хочется отдавать дисплею целых 6 пинов! Есть возможность подключать многие устройства по шине I2C – это некий аналог USB, управляется по двум проводам всего! И можно подключить последовательно сотню устройств (если питания хватит ;)).