Как подключить LCD дисплей с I2C модулем к Arduino
Содержание
- 1 Описание FC-113 преобразователя последовательного интерфейса в параллельный
- 2 Схема подключения ЖК дисплея к Arduinoпо протоколу I2C
- 3 Библиотека для работы по протоколу I2C
- 4 Скетч для вывода текста на LCD экран по шине I2C
- 5 Создание собственных символов для ЖК дисплея
- 6 Управление ЖК экраном по шине I2C
- 7 Что находится за шиной I2C
В статье будем подключать к Ардуино жидкокристаллический дисплей 1602 с I2C модулем FC-113, благодаря чему подключение будет осуществляться всего по 2 проводам данных + 2 проводам питания.
Инструкция по подключению ЖК дисплея к Arduino по интерфейсу I 2 C
Нам понадобится:
-
или иная совместимая плата; (16 символов, 2 строки);
- I2C адаптер FC-113 или аналогичный;
- соединительные провода (рекомендую вот такой набор); (breadboard);
- персональный компьютер со средой разработки Arduino IDE.
1 Описание FC-113 преобразователя последовательного интерфейса в параллельный
- Модуль FC-113 сделан на базе микросхемы PCF8574T, которая представляет собой 8-битный сдвиговый регистр расширитель входов-выходов для последовательной шины I2C. На рисунке микросхема обозначена DD1.
- R1 подстроечный резистор для регулировки контрастности ЖК дисплея.
- Джампер J1 используется для включения подсветки дисплея.
- Выводы 116 служат для подключения модуля к выводам LCD дисплея.
- Контактные площадки А1А3 нужны для изменения адреса I2C устройства. Запаивая соответствующие перемычки, можно менять адрес устройства. В таблице приведено соответствие адресов и перемычек: "0" соответствует разрыву цепи, "1" установленной перемычке. По умолчанию все 3 перемычки разомкнуты и адрес устройства 0x27.
2 Схема подключения ЖК дисплея к Arduinoпо протоколу I2C
Подключение модуля к Arduino осуществляется стандартно для шины I2C: вывод SDA модуля подключается к аналоговому порту A4, вывод SCL к аналоговому порту A5 Ардуино. Питание модуля осуществляется напряжением +5 В от Arduino. Сам модуль соединяется выводами 116 с соответствующими выводами 116 на ЖК дисплее.
Схема подключения ЖК дисплея к Arduino по протоколу I2C
3 Библиотека для работы по протоколу I2C
Теперь нужна библиотека для работы с LCD по интерфейсу I2C. Можно воспользоваться, например, вот этой (ссылка в строке "Download Sample code and library"). Библиотека для работы по протоколу I2C
Скачанный архив LiquidCrystal_I2Cv1-1.rar разархивируем в папку \libraries\, которая находится в директории Arduino IDE.
Библиотека поддерживает набор стандартных функций для LCD экранов:
Функция | Назначение |
---|---|
LiquidCrystal() | создаёт переменную типа LiquidCrystal и принимает параметры подключения дисплея (номера выводов); |
begin() | инициализация LCD дисплея, задание параметров (кол-во строк и символов); |
clear() | очистка экрана и возврат курсора в начальную позицию; |
home() | возврат курсора в начальную позицию; |
setCursor() | установка курсора на заданную позицию; |
write() | выводит символ на ЖК экран; |
print() | выводит текст на ЖК экран; |
cursor() | показывает курсор, т.е. подчёркивание под местом следующего символа; |
noCursor() | прячет курсор; |
blink() | мигание курсора; |
noBlink() | отмена мигания; |
noDisplay() | выключение дисплея с сохранением всей отображаемой информации; |
display() | включение дисплея с сохранением всей отображаемой информации; |
scrollDisplayLeft() | прокрутка содержимого дисплея на 1 позицию влево; |
scrollDisplayRight() | прокрутка содержимого дисплея на 1 позицию вправо; |
autoscroll() | включение автопрокрутки; |
noAutoscroll() | выключение автопрокрутки; |
leftToRight() | задаёт направление текста слева направо; |
rightToLeft() | направление текста справа налево; |
createChar() | создаёт пользовательский символ для LCD-экрана. |
4 Скетч для вывода текста на LCD экран по шине I2C
Откроем образец: Файл Образцы LiquidCrystal_I2C CustomChars и немного его переделаем. Выведем сообщение, в конце которого будет находиться мигающий символ. В комментариях к коду прокомментированы все нюансы скетча.
Кстати, символы, записанные командой lcd.createChar();, остаются в памяти дисплея даже после выключения питания, т.к. записываются в ПЗУ дисплея 1602.
5 Создание собственных символов для ЖК дисплея
Немного подробнее рассмотрим вопрос создания собственных символов для ЖК экранов. Каждый символ на экране состоит из 35-ти точек: 5 в ширину и 7 в высоту (+1 резервная строка для подчёркивания). В строке 6 приведённого скетча мы задаём массив из 7-ми чисел: . Преобразуем 16-ричные числа в бинарные: . Эти числа не что иное, как битовые маски для каждой из 7-ми строк символа, где "0" обозначают светлую точку, а "1" тёмную. Например, символ сердца, заданный в виде битовой маски, будет выглядеть на экране так, как показано на рисунке.
Создание собственного символа для LCD экрана
6 Управление ЖК экраном по шине I2C
Загрузим скетч в Arduino. На экране появится заданная нами надпись с мигающим курсором в конце.
Управление ЖК экраном с помощью Arduino по шине I2C
7 Что находится за шиной I2C
В качестве бонуса рассмотрим временную диаграмму вывода латинских символов "A", "B" и "С" на ЖК дисплей. Эти символы имеются в ПЗУ дисплея и выводятся на экран просто передачей дисплею их адреса. Диаграмма снята с выводов RS, RW, E, D4, D5, D6 и D7 дисплея, т.е. уже после преобразователя FC-113 I2C параллельная шина. Можно сказать, что мы погружаемся немного глубже в железо.
Временная диаграмма вывода латинских символов A, B и С на LCD дисплей 1602
И ещё один пример. На этой временной диаграмме показан вывод символа Сердце на ЖК дисплей.
Временная диаграмма вывода символа Сердце из ПЗУ на ЖК дисплей 1602
Источник: