Информация к новости
  • Просмотров: 3035
  • Добавил: Dina
  • Дата: 4 декабря 2013
4 декабря 2013

Arduino UNO — Serial LCD. Урок 11

Категория: Статьи » Программирование » Arduino

В предыдущем уроке мы рассмотрели подключение 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 — Serial LCD. Урок 11


Как видно из фото выше, модуль имеет всего 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);
}
</liquidcrystal_i2c.h></wire.h>


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

Arduino UNO — Serial LCD. Урок 11


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

Arduino UNO — Serial LCD. Урок 11


Первая строка полностью закрашена, т.е. в двоичном формате это 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()
{
  
}
</liquidcrystal_i2c.h></wire.h>


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

Arduino UNO — Serial LCD. Урок 11


Скачать файлы к проекту
Вы не можете скачивать файлы с нашего сервера

Метки к статье: Arduino UNO — Serial LCD



Добавление комментария

Имя:*
E-Mail:*
Введите два слова, показанных на изображении: *

Друзья и партнеры:

Архив новостей

Декабрь 2016 (1)
Ноябрь 2016 (1)
Сентябрь 2016 (3)
Июнь 2016 (1)
Май 2016 (1)
Апрель 2016 (1)
^
 
-->