Подключение LCD 16×2 на базе HD44780 к Orange Pi, Banana Pi и Raspberry Pi

Подключение ЖК-дисплея на базе HD44780 к Orange Pi, Banana Pi и Raspberry рано или поздно заинтересует вас. ЖК-дисплеи отлично подходят для вывода показаний датчиков, обычных сообщений, а также материалов из Интернета, таких как твиты. Что бы вы ни выбрали для показа, ЖК-дисплей — это простой и недорогой способ сделать это.

В этом уроке я покажу вам два разных способа подключения ЖК-дисплея на базе HD44780 к Orange Pi с помощью контактов GPIO. Первый способ — это 8-битный режим, который использует 10 контактов GPIO. Затем я покажу вам, как подключить HD44780 к Orange Pi в 4-битном режиме, который использует только 6 контактов. После того, как мы подключим ЖК-дисплей, я покажу вам, как программировать его с помощью C/C++, используя библиотеку LCD Gordon Henderson’s WiringPi.

Я покажу вам, как вывести текст на дисплее, очистить дисплей. Вы также увидите, как создавать пользовательские символы, печатать данные с датчиков.

Я буду использовать ЖК-дисплей 16×2, но приведенные ниже примеры будут работать с любым ЖК-дисплеем, который использует драйвер Hitachi HD44780.

Подключение ЖК-дисплея на базе HD44780 к Orange Pi

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

Подключение ЖК-дисплея в 8-битном режиме

В 8-разрядном режиме каждая команда или символ отправляется на ЖК-дисплей в виде одиночного байта (8 бит) данных, для обмена информацией используются контакты от D0 до D7, данные пересылаются за один такт. 8-битный режим быстрее, чем 4-битный, но основной недостаток данного режима состоит в том, что он использует большое количество контактов GPIO.

Подключение LCD в 8-битном режиме требует 10 контактов GPIO:

Подключение LCD 1602 на базе HD44780 к Orange Pi в 8-битном режимеПотенциометры яркости и контрастности — 10 кОм, но здесь вы также можете использовать резисторы от 1 до 3 кОм.

Подключение ЖК-дисплея в 4-битном режиме

В 4-битном режиме каждый байт данные пересылаются на LCD за 2-а такта по 4 бита, сначала старшие 4-е бита, потом младшие 4-е бита, а для обмена используются только контакты D4 – D7.

4-битный режим требует 6 контактов GPIO для ввода/вывода, что делает его популярным для многих проектов:

Подключение LCD 1602 на базе HD44780 к Orange Pi в 4-битном режимеПотенциометры яркости и контрастности — 10 кОм, но резисторы от 1 до 3 кОм также будут работать.

Программирование ЖК-дисплея на С/C++

WiringPi — это модуль C, который упрощает программирование ЖК-дисплея. Если у вас не установленный WiringPi, переходите на странице Установка и настройка BPI-WiringPi/WiringPi на Banana Pi или Установка и настройка WiringOP/WiringPi на Orange Pi PC, где есть инструкция по установке WiringPi для Banana Pi и Orange Pi, соответственно.

Также рекомендую установить CodeBlocks или CodeLite.

Важно:
Не забудьте добавить следующие параметры в Linker:

Code::blocks
-lwiringPi
-lwiringPiDev
-lpthread

CodeLite
wiringPi
wiringPiDev
pthread

Чтобы использовать библиотеку LCD, вам нужно будет добавить следующие строчки в начале вашей программы:

Функции

Это основная функция инициализации и должна быть вызвана до использования любых других функций ЖК-дисплея.

Перемещает курсор в начале экрана (0, 0) и очищают экран соответственно.

Включает или выключает дисплей, включает или выключает курсор, мигает или не мигает курсор. Параметр state имеет значение «true» или «false«. Установки по умолчанию ЖК-дисплей включён, курсор выключён и курсор не мигает.

Задаёт положение курсора для последующего ввода текста. X — столбец, а 0 — крайнее левое. Y — это строка, а 0 — верхняя строка.

Эта функция позволяет вам переопределить один из 8 определяемых пользователём символов на дисплее. Массив данных представляет собой 8 байтов, которые представляют символ от верхней строки до нижней строки. Обратите внимание, что символы фактически равны 5×8, поэтому используются только младшие 5 битов. Индекс от 0 до 7, и впоследствии вы можете напечатать символ, определенный с помощью вызова lcdPutchar(...).

Эти функции выводят один символ ASCII, строку или форматированную строку, используя обычные команды форматирования printf(...).

Запись на ЖК-дисплей в 8-битном режиме

Ниже приведён пример программы инициализации и работы с ЖК-дисплеем в 8-битном режиме. Данная программа выводит на экран сообщение «Hello, world!».

Функция lcdInit(...) используется для инициализации ЖК-дисплея:

const int rows — (2) количество строк;
const int cols — (16) количество символов;
const int bits — (8) режим работы: 8 или 4-битный режим;
const int rs — (LCD_RS) вывод с помощью которого, дисплей определяет что в него поступает данные или команды;
const int strb — (LCD_E) линия синхронизации;
const int d0 - d7 — (LCD_D0 — LCD_D7) шина команд/данных.
Функция lcdPuts(fd, "Hello, world!"); выводит на экран «Hello, world!».

Запись на ЖК-дисплей в 4-битном режиме

Чтобы использовать ЖК-дисплей в 4-битном режиме, нам необходимо установить параметр const int bits в 4 в функции инициализации lcdInit(...). Следующий код выводит на экран «Hello, world!» в 4-битном режиме:

Результат

HD44780 к Orange Pi - Большой курсор

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

Курсор по умолчанию выключен, но вы можете получить различные стили курсоров, используя следующие функции:

  1. Подчеркнутый не мерцающий курсор: lcdCursor(lcd, 1);
  2. Подчеркивание мигающего курсора: lcdCursor(lcd, 1); затем lcdCursorBlink(lcd, 1);
  3. Мигающий курсор в стиле блока: lcdCursorBlink(lcd, 1);
  4. Выключить курсор: lcdCursor(lcd, 0);

Пример программы: подчеркивание мигающего курсора

Результат

HD44780 к Orange Pi - Маленький курсор

Пользовательские символы

Каждый ЖК-символ представляет собой массив пикселей размером 5×8. Вы можете создать любой шаблон, который вы хотите, и отобразить его на ЖК-дисплее в качестве пользовательского символа. Одновременно в памяти ЖК-дисплея может храниться до 8 пользовательских символов. На этой странице Custom Character Generator for HD44780 LCD Modules вы найдёте хороший визуальный инструмент для генерации массива.

Custom Character Generator for HD44780 LCD Modules

Пример программы: Записи/вывод пользовательских символов

Вот пример использования нескольких пользовательских символов, которые печатают греческие буквы ‘Ω’, ‘π’ и ‘μ’, а также ‘°’, термометр и символы капли воды:

Результат

HD44780 к Orange Pi - Пользовательские символы
Вот и всё. Надеюсь, эта информация была вам полезна. Успехов вам!

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

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