Текстовый жидкокристаллический дисплей 2×16

ЖК-дисплейДо сих пор наша работа с платой Arduino было относительно ограниченной. Мы и сейчас могли бы использовать светодиоды для сигнализации определенных состояний или UART для подключения к компьютеру.

Да, предыдущие программы позволяли нам относительно многое, но нам приходилось каждый раз переключаться на вкладку Монитор порта, что не очень удобно. Пришло время для первой программы, использующей ЖК-дисплей.

Кратко о дисплее

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

Образец текста на ЖК-дисплее
Образец текста на ЖК-дисплее

Каждая буква на экране текстового жк-дисплея состоит из множества пикселей. Обозначение 2×16 или 16×2 означает, что мы можем одновременно отображать на экране 2 строки по 16 символов в каждой.

Это ограничение присуще текстовым дисплеям, на которых отображаются субтитры или маленькие символы. В случае графических дисплеев все было бы иначе, там у нас было бы больше свободы, т.к. все пиксели расположены в одном прямоугольнике, например 128×128. На таком дисплее можно рисовать, например, линии или круги.

В этой статье мы рассмотрим монохромные (одноцветные) текстовые дисплеи.

Как заставить дисплей работать?

Как мы уже говорили, буквы состоят из пикселей. Управление каждым из них по отдельности привело бы к созданию большого, даже огромного количества линий управления. Конечно, все работает намного проще, ведь дисплеи оснащены встроенными драйверами! Самый популярный из них — HD44780.

Чаще всего в описании того или иного ЖК-дисплея встречается «Дисплей, совместимый с драйвером HD44780». Тогда становится понятно, что его работа будет совершенно тривиальной!

Как же тогда выводить текст на дисплей? Необходимо подключить около 12 проводов. Конечно, только часть из них используется для связи, остальные — это сигналы питания и другие сигналы, которые не меняются во время работы дисплея.

Чаще всего такой экран комплектуется разъемом на 16 контактов:

Текстовый ЖК-дисплей 2x16 символов
Текстовый ЖК-дисплей 2×16 символов

Если считать слева направо, то соединения будут такими, как показано ниже:

  1. GND — земля
  2. Vcc — источник питания плюс, 5В
  3. V0 — регулировка контрастности
  4. RS — выбор регистра (команда, данные)
  5. RW — выбор опции чтения / записи
  6. E — разрешение на запись в регистры
  7. D0 — данные
  8. D1 — данные
  9. D2 — данные
  10. D3 — данные
  11. D4 — данные
  12. D5 — данные
  13. D6 — данные
  14. D7 — данные
  15. Vpod — блок питания плюса подсветки
  16. GNDpod — земля подсветки

Пины с 1 по 3 используются для питания системы, с 4 по 14 для управления, а в 15 и 16 есть внутренний светодиод, который освещает экран. Дисплеи, совместимые с контроллером HD44780, могут работать в 4-битном и 8-битном режимах.

В 4-битном режиме требуется 7 подключений дисплея Arduino <->. Однако в случае 8-битного режима их нужно сделать 11. Используя меньшее количество контактов, мы сохраним практически все параметры отображения.

Вот почему мы подключаем ЖК-дисплеи в 4-битном режиме практически в любой ситуации. Использовать следует только контакты, выделенные жирным шрифтом в списке выше.

Подключение дисплея к Arduino

Среда программирования Arduino оснащена специальной библиотекой, подготовленной для отображения текстов. Однако прежде чем мы начнем работать с дисплеем, самое время его подключить. К счастью, в этой статье не будет много схем для сборки — вам понадобится всего несколько. Первый ниже.

Понадобятся: Arduino, макетная плата, ЖК-дисплей, и, конечно же, провода.

Подключение ЖК-дисплея к Arduino
Подключение ЖК-дисплея к Arduino

Напряжение можно подавать через токоограничивающий резистор или напрямую (ведь чаще всего в центре дисплея уже есть встроенный резистор). У нас получился хороший эффект и без резистора.

После подключения Arduino к питанию (здесь достаточно USB-питания) экран должен засветиться. Как показано ниже.

Экран не подключен к питаниюЭкран подключен к питанию
Экран не подключен к питаниюЭкран подключен к питанию

Если вы видите пустой экран или верхнюю строку заполненную прямоугольниками, это не означает, что дисплей поврежден.

Это хороший симптом, вот так должен выглядеть исправный дисплей, подключенный к источнику питания.

Дисплеи доступны в различных цветах — часто зеленом или синем. В этой статье мы используем желтый.

Теперь можно перейти к программированию.

Первая программа — текстовый дисплей

Как и в случае с сервоприводами, в Arduino мы находим отдельную библиотеку, которая облегчает работу с текстовыми дисплеями. На этот раз его имя — LiquidCrystal. Сначала пример, а потом обзор программы. Пока не загружайте код в свой Arduino!

Библиотека для работы с дисплеем находится в файле: LiquidCrystal.h . Чтобы начать работу с дисплеем, необходимо инициализировать новый объект. Для этого используется следующая линейка:

Это положение указывает, что вызванный подключенный ЖК-дисплей к пинам от 2 до 5 и от 11 до 12.

Конечно, выбор подключения свободный.
Важно, чтобы он соответствовал физическим соединениям.

ЖК-функция lcd.begin (characters, lines) устанавливает количество символов и строк, на которых будет отображаться текст. В нашем случае на дисплее можно разместить 16 символов в каждой из 2 строк.

ЖК-функция lcd.setCursor (position, line) устанавливает курсор в заданную позицию. Например, (0,0) означает начало строки с первого символа, первой строки. В свою очередь, запись (0,1) — это текст с начала второй строки.

Самая главная функция — lcd.print (string) печатает текст на дисплее. Курсор перемещается по мере отображения букв. Следовательно, следующий вызов lcd.print начинается там, где был конец предыдущего текста, если мы не используем setCursor между вызовами. Все станет ясно на следующих примерах.

Пришло время загрузить программу в Arduino! Эффект должен выглядеть так:

Текст на ЖК-дисплее
Текст на ЖК-дисплее

Что делать, если это не сработает?

Если вы не видите текст на экране, проверьте следующие 3 пункта, они решают 99,99% проблем!

  1. К ЖК-дисплею не подключено питание
  2. Неправильный порядок подключения сигналов к Arduino

Последний пункт выделен жирным шрифтом, потому что его легче всего проверить, и новички о нем часто забывают! Надеемся, все получилось после проверки вышеуказанных пунктов. Теперь давайте обсудим наиболее важные функции, связанные с ЖК-дисплеем. Однако сначала простое домашнее задание

Домашнее задание 6.1

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

Включение и выключение курсора

Как и в текстовом редакторе, мы можем включать и выключать курсор на ЖК-дисплее. Это будет символ «_» после последнего набранного символа. По умолчанию он выключен. Есть две простые функции для управления: lcd.cursor() и lcd.noCursor().

Когда курсор включен:

Получим такой эффект:

ЖК-дисплей, курсор включен
ЖК-дисплей, курсор включен

Конечно, эти эффекты можно смешивать, проверьте сами этот программный эффект, когда вставите этот код:

Другая версия курсора

Существует также аналогичная функция, которая автоматически включает мигание курсора. Однако на этот раз это будет нарисованный прямоугольник. Функции для включения и выключения этой опции называются так: lcd.noBlink() и lcd.blink(). Использовать эту функцию очень просто, например:

Эффект мигающего курсора:

Мигающий курсор на ЖК-дисплее
Мигающий курсор на ЖК-дисплее

Включение и выключение дисплея

Название говорит само за себя, мы можем включить или выключить то, что отображается на экране. Однако обратите внимание, что эти функции отключают только отображение текста.

На подсветку они не влияют!

Имена функций ,elen: lcd. display () и lcd. noDisplay () . Конечно, после выключения и включения дисплея на нем появится предыдущий текст. Нет необходимости повторно отправлять контент, который должен быть виден. Пример программы:

И эффект:

Временное отключение и включение дисплея LCD
Временное отключение и включение дисплея LCD

Четкое содержимое ЖК-дисплея

Когда вы проверяете отображение текстов на ЖК-дисплее, вы можете заметить, что они иногда перекрываются. Дисплей не очищает содержимое автоматически (в этом есть свои преимущества). Однако, если мы хотим удалить весь текст, мы используем функцию lcd.clear(). Убедитесь сами, как это работает!

Отображение результата c АЦП на дисплее

Программа предназначена для отображения значения напряжения на фоторезисторе. Фоторезистор и резистор образуют делитель напряжения, и это напряжение подается на аналоговый вход A0.

При изменении интенсивности света, падающего на делитель, значение считываемого напряжения на преобразователе изменяется. Двоичный результат преобразуется в соответствующий результат напряжения. Эта задача должна быть тривиальной, если вы до этого ознакомились с АЦП.

Обратите внимание, что в этом случае мы отображаем субтитры только один раз и никогда не перезаписываем их. Мы изменяем только первые 4 символа нижней строки, которые и показывают наши значения. Проверьте, правильно ли работает программа. Например, наш результат выглядел так:

Портативный измеритель интенсивности света
Портативный измеритель интенсивности света

Таким образом, мы создали портативное устройство, которое может представлять ваши результаты без необходимости подключения его к компьютеру!

Домашнее задание 6.2

У дисплея есть некоторая инерция. Проверьте, что происходит, когда мы пытаемся отобразить новые данные слишком быстро (удаляя содержимое экрана при каждом завершении цикла).

Домашнее задание 6.3

Посмотрите, что произойдет, если нам придется чаще обновлять весь текст в приведенном выше примере вольтметра. Будет ли результат все еще так легко читаем, до какого значения?

Домашнее задание 6.4

Напишите программу, которая представляет собой простой секундомер. Как только вы нажмете одну кнопку, начнется измерение, и на экране появится текущее время. После нажатия второй кнопки на дисплее отображается слово «The end» и измеренное время в секундах.

Насчет подсветки…

Наконец, еще одна любопытная вещь. Ранее мы упоминали, что у нас нет возможности управлять подсветкой. А точно ли это так? В конце концов, это же просто светодиод. Стоит ли подключать его к микроконтроллеру? Но тут достаточно вставить один провод:

Этот опыт может быть вреден для Arduino. Проверьте, сколько энергии потребляет ваша подсветка. Информацию об измерениях тока можно найти в разделе электроники. Для безопасности стоит подключить подсветку через резистор или транзистор !

Вы помните, каковы возможности генерации сигнала ШИМ? Проверьте, как ведет себя ЖК-дисплей после загрузки программы ниже. Думаю, вы уже знаете, почему так происходит!

У вас теперь есть полный контроль над ЖК-дисплеями. Отныне мы будем использовать их в будущих проектах. А пока осваивайте их работу!

Вывод

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

С Уважением, МониторБанк

Оставьте комментарий

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