Arduino UNO урок 11 - Serial LCD

  • Час 12-08-2015, 11:38
  • Автор admin
  • Коментарів 0 Комент.
  • Силка url

У попередньому уроці ми розглянули підключення 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 інтерфейсу.

Arduino UNO урок 11 - Serial LCD

Як видно з фото вище, модуль має всього 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 ("cxem.net"); // Вивід написи 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); }

Код я постарався добре прокоментувати, тому питань по його роботі виникнути не повинно.

Arduino UNO урок 11 - Serial LCD

Створення користувальницьких символів

На екрані можна виводити користувальницькі символи, створювати їх дуже просто. Розмір одного символу становить 5 пікселів по горизонталі і 7 пікселів по вертикалі. Для створення символу необхідно накреслити табличку 5х7 і зафарбувати необхідні клітини. У них ставимо 1, а в порожніх 0. Потім формуємо сім рядків у довічним форматі. Наприклад російська буква "П":

Arduino UNO урок 11 - Serial LCD

Перший рядок повністю зафарбована, тобто в двійковому форматі це 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:

Arduino UNO урок 11 - Serial LCD

Прикріплені файли:
  • arduino67.rar (1531 Кб)
Tags

Коментарі до новини