Arduino UNO урок 11 — Serial LCD

Эффективные методы подключения Serial LCD к Arduino UNO. Узнайте о преимуществах и особенностях использования Serial LCD вместо обычных LCD.

В предыдущем уроке мы рассмотрели подключение LCD-экранчика к Arduino. Неудобство в том, что при задействовании 4-битного режима задействуется 7 выводов Arduino, а при использовании 8-битного аж 11 выводов. Чтобы сократить количество выводов I/O Arduino при подключении к LCD, были разработаны LCD с последовательным интерфейсом т.н. Serial LCD. При подключении через I2C кол-во проводников сокращается до 4-х.

На eBay Serial LCD на сегодняшний день продаются по цене в среднем 10$, найти их достаточно легко, введя в поисковую строку один из запросов: Serial LCD, I2C LCD, Serial LCD Arduino, UART LCD и др. Есть отдельно продающиеся адаптеры.

В основной массе это широко распространённые китайские LCD модули 1602, JHD162A и др., с установленным с обратной стороны модулем, который и обеспечивает преобразование. Как правило, в модулях используется микросхема PCF8574T, представляющая собой 8-ми битный расширитель шины для I2C интерфейса.

Serial LCD Module Connected to Arduino UNO

Как видно из фото выше, модуль имеет всего 4 вывода: GND, VCC, SDA, SCL. Линия SDA (data) подключается к Analog In 4, а SCL (clock) к Analog In 5. Ну и естественно питание 5В.
На плате размещен джампер для включения подсветки, а также потенциометр для регулировки контрастности.

Исходный код:

#include Wire.h
#include LiquidCrystal_I2C.h

LiquidCrystal_I2C lcd(0x27,16,2); // устанавливаем адрес 0x27, и дисплей 16 символов в 2 строки (16х2)

int interval = 0;

void setup()
{
lcd.init(); // инициализация LCD
lcd.backlight(); // включаем подсветку
lcd.clear(); // очистка дисплея
lcd.setCursor(4, 0); // устанавливаем курсор на 1 строку, 4 символ
lcd.print(«BESTSCHEMES.RU»); // вывод надписи
lcd.setCursor(1, 1); // устанавливаем курсор на 2 строку, 1 символ
lcd.print(«count:»);
lcd.setCursor(8, 1); // устанавливаем курсор на 2 строку, 8 символ
lcd.print(interval);
}

void loop()
{
delay(500);
interval++;
lcd.setCursor(8, 1);
lcd.print(interval);
}

Код я постарался хорошо прокомментировать, поэтому вопросов по его работе возникнуть не должно.

Serial LCD Module Connected to Arduino UNO

Создание пользовательских символов

На экране можно выводить пользовательские символы, создавать их очень просто. Размер одного символа составляет 5 пикселей по горизонтали и 7 пикселей по вертикали. Для создания символа необходимо начертить табличку 5х7 и закрасить необходимые клетки. В них ставим 1, а в пустых 0. Затем формируем семь строк в двоичном формате. К примеру русская буква «П»:

Serial LCD Module Connected to Arduino UNO

Первая строка полностью закрашена, т.е. в двоичном формате это 11111. Переводим в шестнадцатеричный формат и получаем 1F. И так для всех 7-ми строк. Вторая и все последующие строки 10001 и 0x11.

В самой программе для создания символа вы инициализируете массив из 7-ми элементов и можете задавать его как в двоичном формате, так и в шестнадцатеричном формате.

Давайте рассмотрим пример вывода на LCD надписи «ПАЯЛЬНИК»:

#include «Wire.h»
#include «LiquidCrystal_I2C.h»

uint8_t bukva_P[8] = {0x1F,0x11,0x11,0x11,0x11,0x11,0x11};
uint8_t bukva_Ya[8] = {
B01111,
B10001,
B10001,
B01111,
B00101,
B01001,
B10001
};
uint8_t bukva_L[8] = {0x3,0x7,0x5,0x5,0xD,0x9,0x19};
uint8_t bukva_Mz[8] = {0x10,0x10,0x10,0x1E,0x11,0x11,0x1E};
uint8_t bukva_I[8] = {0x11,0x13,0x13,0x15,0x19,0x19,0x11};

LiquidCrystal_I2C lcd(0x27,16,2); // устанавливаем адрес 0x27, и дисплей 16 символов в 2 строки (16х2)

void setup()
{
lcd.init(); // инициализация LCD
lcd.backlight(); // включаем подсветку
lcd.clear(); // очистка дисплея

lcd.createChar(0, bukva_P); // создаем символ и записываем его в память LCD
lcd.createChar(1, bukva_Ya);
lcd.createChar(2, bukva_L);
lcd.createChar(3, bukva_Mz);
lcd.createChar(4, bukva_I);
lcd.home();
lcd.print(0, BYTE); // отображаем символ в памяти LCD по 0 адресу
lcd.print(«A»);
lcd.print(1, BYTE);
lcd.print(2, BYTE);
lcd.print(3, BYTE);
lcd.print(«H»);
lcd.print(4, BYTE);
lcd.print(«K»);
}

void loop()
{

}

Символы П,Л,Ь,И мы задали массивом из шестандцатеричных значений. А символ Я задан массивом из двоичных значений. Фото вывода на LCD:

Serial LCD Module Connected to Arduino UNO

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *