Подключение ЖК-дисплея на базе 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:
Потенциометры яркости и контрастности — 10 кОм, но здесь вы также можете использовать резисторы от 1 до 3 кОм.
Подключение ЖК-дисплея в 4-битном режиме
В 4-битном режиме каждый байт данные пересылаются на LCD за 2-а такта по 4 бита, сначала старшие 4-е бита, потом младшие 4-е бита, а для обмена используются только контакты D4 – D7.
4-битный режим требует 6 контактов GPIO для ввода/вывода, что делает его популярным для многих проектов:
Потенциометры яркости и контрастности — 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
-lpthreadCodeLite
wiringPi
wiringPiDev
pthread
Чтобы использовать библиотеку LCD, вам нужно будет добавить следующие строчки в начале вашей программы:
#include <wiringPi.h> #include <lcd.h>
Функции
int lcdInit (int rows, int cols, int bits, int rs, int strb, int d0, int d1, int d2, int d3, int d4, int d5, int d6, int d7) ;
Это основная функция инициализации и должна быть вызвана до использования любых других функций ЖК-дисплея.
void lcdHome (int handle) void lcdClear (int handle)
Перемещает курсор в начале экрана (0, 0) и очищают экран соответственно.
void lcdDisplay (int fd, int state) ; void lcdCursor (int fd, int state) ; void lcdCursorBlink (int fd, int state) ;
Включает или выключает дисплей, включает или выключает курсор, мигает или не мигает курсор. Параметр state имеет значение «true» или «false«. Установки по умолчанию ЖК-дисплей включён, курсор выключён и курсор не мигает.
void lcdPosition (int handle, int x, int y) ;
Задаёт положение курсора для последующего ввода текста. X — столбец, а 0 — крайнее левое. Y — это строка, а 0 — верхняя строка.
void lcdCharDef (int handle, int index, unsigned char data [8]) ;
Эта функция позволяет вам переопределить один из 8 определяемых пользователём символов на дисплее. Массив данных представляет собой 8 байтов, которые представляют символ от верхней строки до нижней строки. Обратите внимание, что символы фактически равны 5×8, поэтому используются только младшие 5 битов. Индекс от 0 до 7, и впоследствии вы можете напечатать символ, определенный с помощью вызова lcdPutchar(...)
.
void lcdPutchar (int handle, unsigned char data) ; void lcdPuts (int handle, const char *string) ; void lcdPrintf (int handle, const char *message, ...) ;
Эти функции выводят один символ ASCII, строку или форматированную строку, используя обычные команды форматирования printf(...)
.
Запись на ЖК-дисплей в 8-битном режиме
Ниже приведён пример программы инициализации и работы с ЖК-дисплеем в 8-битном режиме. Данная программа выводит на экран сообщение «Hello, world!».
#include <wiringPi.h> #include <lcd.h> #define LCD_RS 25 // RS - Выбор регистра #define LCD_E 24 // E - Еnable (строб по спаду) #define LCD_D0 29 // D0 - бит данных #define LCD_D1 28 // D1 - бит данных #define LCD_D2 27 // D2 - бит данных #define LCD_D3 26 // D3 - бит данных #define LCD_D4 23 // D4 - бит данных #define LCD_D5 22 // D5 - бит данных #define LCD_D6 21 // D6 - бит данных #define LCD_D7 14 // D7 - бит данных int main() { int code = wiringPiSetup(); if (code != 0) { return -1; } int fd = lcdInit(2, 16, 8, LCD_RS, LCD_E, LCD_D0, LCD_D1, LCD_D2, LCD_D3, LCD_D4, LCD_D5, LCD_D6, LCD_D7); lcdClear(fd); lcdPosition(fd, 0, 0); lcdPuts(fd, "Hello, world!"); }
Функция lcdInit(...)
используется для инициализации ЖК-дисплея:
int fd = lcdInit(2, 16, 8, LCD_RS, LCD_E, LCD_D0, LCD_D1, LCD_D2, LCD_D3, LCD_D4, LCD_D5, LCD_D6, LCD_D7);
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-битном режиме:
#include <wiringPi.h> #include <lcd.h> #define LCD_RS 25 // RS - Выбор регистра #define LCD_E 24 // E - Еnable (строб по спаду) #define LCD_D4 23 // D4 - бит данных #define LCD_D5 22 // D5 - бит данных #define LCD_D6 21 // D6 - бит данных #define LCD_D7 14 // D7 - бит данных int main1() { int code = wiringPiSetup(); if (code != 0) { return -1; } int fd = lcdInit(2, 16, 4, LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7, 0, 0, 0, 0); lcdCursorBlink(fd, 1); lcdClear(fd); lcdPosition(fd, 0, 0); lcdPuts(fd, "site:micro-pi.ru"); lcdPosition(fd, 0, 1); lcdPuts(fd, "Hello, world!"); }
Результат
Включение и выключение курсора
Курсор по умолчанию выключен, но вы можете получить различные стили курсоров, используя следующие функции:
- Подчеркнутый не мерцающий курсор:
lcdCursor(lcd, 1);
- Подчеркивание мигающего курсора:
lcdCursor(lcd, 1);
затемlcdCursorBlink(lcd, 1);
- Мигающий курсор в стиле блока:
lcdCursorBlink(lcd, 1);
- Выключить курсор:
lcdCursor(lcd, 0);
Пример программы: подчеркивание мигающего курсора
#include <wiringPi.h> #include <lcd.h> #define LCD_RS 25 // RS - Выбор регистра #define LCD_E 24 // E - Еnable (строб по спаду) #define LCD_D4 23 // D4 - бит данных #define LCD_D5 22 // D5 - бит данных #define LCD_D6 21 // D6 - бит данных #define LCD_D7 14 // D7 - бит данных int main2() { int code = wiringPiSetup(); if (code != 0) { return -1; } int fd = lcdInit(2, 16, 4, LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7, 0, 0, 0, 0); lcdCursor(fd, 1); lcdCursorBlink(fd, 1); lcdClear(fd); lcdPosition(fd, 0, 0); lcdPuts(fd, "Hello, world!"); delay(1000); }
Результат
Пользовательские символы
Каждый ЖК-символ представляет собой массив пикселей размером 5×8. Вы можете создать любой шаблон, который вы хотите, и отобразить его на ЖК-дисплее в качестве пользовательского символа. Одновременно в памяти ЖК-дисплея может храниться до 8 пользовательских символов. На этой странице Custom Character Generator for HD44780 LCD Modules вы найдёте хороший визуальный инструмент для генерации массива.
Пример программы: Записи/вывод пользовательских символов
Вот пример использования нескольких пользовательских символов, которые печатают греческие буквы ‘Ω’, ‘π’ и ‘μ’, а также ‘°’, термометр и символы капли воды:
#include <wiringPi.h> #include <lcd.h> #define LCD_RS 25 // RS - Выбор регистра #define LCD_E 24 // E - Еnable (строб по спаду) #define LCD_D4 23 // D4 - бит данных #define LCD_D5 22 // D5 - бит данных #define LCD_D6 21 // D6 - бит данных #define LCD_D7 14 // D7 - бит данных unsigned char omega[8] = { 0b00000, 0b01110, 0b10001, 0b10001, 0b10001, 0b01010, 0b11011, 0b00000 }; unsigned char pi[8] = { 0b00000, 0b00000, 0b11111, 0b01010, 0b01010, 0b01010, 0b10011, 0b00000 }; unsigned char mu[8] = { 0b00000, 0b10010, 0b10010, 0b10010, 0b10010, 0b11101, 0b10000, 0b10000 }; unsigned char drop[8] = { 0b00100, 0b00100, 0b01010, 0b01010, 0b10001, 0b10001, 0b10001, 0b01110 }; unsigned char temp[8] = { 0b00100, 0b01010, 0b01010, 0b01110, 0b01110, 0b11111, 0b11111, 0b01110 }; unsigned char celsius[8] = { 0b01100, 0b10010, 0b10010, 0b01100, 0b00000, 0b00000, 0b00000, 0b00000 }; void customChar(int fd) { lcdCharDef(fd, 10, omega); lcdCharDef(fd, 11, pi); lcdCharDef(fd, 12, mu); lcdCharDef(fd, 13, drop); lcdCharDef(fd, 14, temp); lcdCharDef(fd, 15, celsius); lcdClear(fd); lcdPutchar(fd, 10); lcdPutchar(fd, 11); lcdPutchar(fd, 12); lcdPutchar(fd, 13); lcdPutchar(fd, 14); lcdPutchar(fd, 15); } int main() { int code = wiringPiSetup(); if (code != 0) { return -1; } int fd = lcdInit(2, 16, 4, LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7, 0, 0, 0, 0); customChar(fd); lcdPosition(fd, 0, 1); lcdPrintf(fd, "%c %.2f%cC", 14, 24.52, 15); }
Результат
Вот и всё. Надеюсь, эта информация была вам полезна. Успехов вам!
как вывести на дисплей температуру процессора ?
не могу добавить русский текст у
к коду.
использую code blocks
Профессиональный сервисный центр по ремонту стиральных машин с выездом на дом по Москве.
Мы предлагаем: ремонт стиральных машин профи центр
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
необычные бизнес идеи необычные бизнес идеи .
идея для бизнеса идея для бизнеса .
поролон купить мебельный поролон купить мебельный .
поролон мебельный 100мм поролон мебельный 100мм .
идеи для открытия бизнеса http://www.biznes-idei12.ru .
автоматические рулонные шторы на створку http://rulonnye-shtory-s-elektroprivodom.ru .
электронный карниз для штор цена [url=www.elektrokarniz2.ru/]электронный карниз для штор цена[/url] .
Встречайте криптовалютного босса в казино, станьте победителем вместе с лучшим криптовалютным казино, возможность выиграть крупный джекпот, попробуйте удачу в казино Cryptoboss, выиграть криптовалюты легко в Cryptoboss casino, Cryptoboss casino — ваш лучший выбор, будьте боссом в мире криптовалютных игр с Cryptoboss casino, Cryptoboss casino – ваша площадка для побед, качественный сервис и безопасность с Cryptoboss casino, Cryptoboss casino — ваш путь к криптовалютному успеху, революция в криптовалютных играх с Cryptoboss casino, большие выигрыши ждут вас в Cryptoboss casino, получите криптовалютные призы в Cryptoboss casino, следуйте за лидером с Cryptoboss casino, Cryptoboss casino — ваше казино удачи, Cryptoboss casino — гарант криптовалютных побед.
сайт cryptoboss casino сайт cryptoboss .
Если вы искали где отремонтировать сломаную технику, обратите внимание — ремонт бытовой техники в ростове на дону
Не упустите шанс, переходите на зеркало Cryptoboss Casino сейчас, выигрывайте без проблем!
Самое актуальное зеркало Cryptoboss Casino всегда под рукой, полный контроль гарантированы.
Официальное зеркало Cryptoboss Casino ждет вас прямо сейчас, не упустите другие варианты!
Проводите время с удовольствием на зеркале Cryptoboss Casino!, забирайте джекпот!
Самое надежное зеркало Cryptoboss Casino только у нас, получайте удовольствие без лишних хлопот!
cryptoboss casino зеркало cryptoboss casino официальный зеркало .
вальцовочный станок вальцовочный станок .
Профессиональный сервисный центр по ремонту компьютерных видеокарт по Москве.
Мы предлагаем: ремонт видеокарт в москве
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
ручные листогибы ручные листогибы .
Вывод из запоя на дому Вывод из запоя на дому .
мини бизнес мини бизнес .
сумасшедшие идеи малого бизнеса https://www.biznes-idei13.ru .
Aptechka Online – это уникальный интернет-ресурс, предоставляющий отзывы о медикаментах, таких как Адаптол, и различных медикаментах. На Aptechka Online пользователи могут ознакомиться с подробной информацией о препаратах Аллохол, Альфа Нормикс, побочных эффектах и узнать, что лучше для лечения.
Аптечка Онлайн также предоставляет пользователям возможность ознакомиться с рекомендациями о различных препаратах, таких как Альфа Нормикс. Эти отзывы помогают определиться, какое лекарство будет наиболее эффективным в конкретном случае. Кроме того, на сайте представлено сравнение аналогов, что облегчает выбор альтернативных вариантов.
Благодаря удобной навигации на сайте Аптечка Онлайн, пользователи могут быстро найти нужную информацию, будь то описание действия или противопоказания. Это делает ресурс незаменимым помощником для тех, кто заботится о своем здоровье.
Aptechka Online предлагает подробные инструкции по применению лекарств, таких как Ксефокам, что помогает читателям лучше понять, как использовать средства для лечения различных состояний. На сайте также можно найти актуальные данные о показаниях и возможных реакциях, что важно для эффективного применения.
Дополнительно, Aptechka Online предлагает рекомендации по сравнению аналогов, таких как Урсосан. Это помогает пользователям принимать информированные решения и находить более доступные варианты лекарственных препаратов, не теряя при этом в качестве.
Наткнулся на замечательный интернет-магазин, специализирующийся на раковинах и ваннах. Решил сделать ремонт в ванной комнате и искал качественную сантехнику по разумным ценам. В этом магазине нашёл всё, что нужно. Большой выбор раковин и ванн различных типов и дизайнов.
Особенно понравилось, что они предлагают купить узкую раковину. Цены доступные, а качество продукции отличное. Консультанты очень помогли с выбором, были вежливы и профессиональны. Доставка была оперативной, и установка прошла без нареканий. Очень доволен покупкой и сервисом, рекомендую!
Попробуйте свои силы в казино от Cryptoboss, добейтесь успеха вместе с Cryptoboss, криптовалютные ставки для настоящих боссов, освойте мир криптовалютных игр в казино Cryptoboss, стать криптобоссом легко с Cryptoboss casino, захватывающий азарт с криптовалютным боссом, будьте боссом в мире криптовалютных игр с Cryptoboss casino, Cryptoboss casino – ваша площадка для побед, качественный сервис и безопасность с Cryptoboss casino, играйте и выигрывайте с лучшим криптовалютным казино, встречайте новый уровень криптовалютных ставок в Cryptoboss casino, Cryptoboss casino — ваш путеводитель в мире криптовалютных игр, получите криптовалютные призы в Cryptoboss casino, встречайте криптовалютного короля в казино, Cryptoboss casino — ваше казино удачи, наслаждайтесь азартом с Cryptoboss casino.
криптобосс автоматы cryptoboss crypto boss casino2 xyz .
Профессиональный сервисный центр по ремонту компьютерных блоков питания в Москве.
Мы предлагаем: ремонт блоков питания москва
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!