Про LCD-модули на базе HD44780 (здесь и далее под HD44780 понимается как оригинальный чип, так и совместимые с ним аналоги) я писал уже дважды — в заметке Научился выводить текст на ЖК-индикатор из Arduino, а также Об использовании экранчиков 1602 с I2C-адаптером. В обоих статьях использовался принцип «подключаем экранчик так-то, берем готовую библиотеку, и магия, все работает». Магию, как вы можете помнить, я осуждаю. Поэтому сегодня мы наконец-то разберемся, как устроен протокол подобных дисплеев, и напишем нашу собственную, очень простенькую, библиотеку для работы с ними.
Спрашивается, зачем вообще разбираться в каких-то там протоколах, когда есть готовые библиотеки? Как минимум, выводить что-то на экранчик может хотеться не только с Arduino, но и с отличных от AVR микроконтроллеров (PIC, STM32, …), а также с какого-нибудь FPGA или даже Raspberry Pi через его GPIO. В этом случае готовой библиотеки у вас может и не быть. Кроме того, готовые библиотеки для Arduino, вроде той же LiquidCrystal, зачастую далеко не оптимальны в плане используемого ими объема flash-памяти, а память у микроконтроллеров не резиновая. Наконец, это просто интересно — разобраться, как же там данные передаются по проводам, что в итоге буковки выводятся.
Итак, работающий прототип у меня получился таким:
Модуль подключается к Arduino точно так же, как было описано в уже упомянутой заметке Научился выводить текст на ЖК-индикатор из Arduino.
Рассмотрим код прошивки:
#include <Arduino.h>
const int PIN_RS = 7; const int PIN_E = 8; const int PIN_D4 = 9;
const int PIN_D5 = 10; const int PIN_D6 = 11; const int PIN_D7 = 12;
// Wnen writing to the display, data is transfered only // on the high to low transition of the E signal. digitalWrite(PIN_E, HIGH); delay(LCD_DELAY_MS); digitalWrite(PIN_E, LOW);
// 4-bit mode, 2 lines, 5×7 format lcdCommand(0b00110000); // display & cursor home (keep this!) lcdCommand(0b00000010); // display on, right shift, underline off, blink off lcdCommand(0b00001100); // clear display (optional here) lcdCommand(0b00000001);
lcdCommand(0b10000000); // set address to 0x00 lcdString(«Using HD44780»);
lcdCommand(0b11000000); // set address to 0x40 lcdString(«LCD directly! :)»); }
void loop() { /* do nothing */ delay(100); }
Как видите, данные передаются в модуль по четырехбитной шине D4-D7. Если на пин RS модуля подано низкое напряжение, данные воспринимаются, как команда. Если же напряжение на пине высокое, данные выводятся в виде символа. Считывание данных с шины происходит по спаду сигнала (заднему фронту) на пине E.
Наглядная табличка с описанием поддерживаемых команд была найдена мной в статье 1997-го года How to Use Intelligent L.C.D.s, part one [PDF] за авторством Julyan Ilett. Вот эта табличка:
В приведенном выше коде первом делом отправляется команда 0b00110000, выбирающая четырехбитную передачу данных, двухстрочный режим, и формат символов 5x7. Заметьте, что размер шины (4 или 8 бит) передается в 4-м бите команды, а значит чип может интерпретировать команду о желаемом размере шины, не зная размера шины. Какое элегантное решение проблемы курицы и яйца, не находите?
Остальная же часть кода достаточно тривиальна, если не считать адресации символов на индикаторе. Как видите, первому символу в первой строке соответствует адрес 0x00, а первому символу во второй строке — адрес 0x40. Спрашивается, а что делать, если у экранчика, скажем, четыре строки? Ведь никакого выбора режима с четырьмя строками в командах не предусмотрено! Оказывается, такие индикаторы обычно имеют ширину 16 символов и адреса в третьей строке начинаются с 0x10, а в четвертой — 0x50. То есть, в каком-то смысле такие экранчики даже совместимы с двухстрочными. Вообще, возможных адресов всего лишь 128. То есть, определить, какой адрес какому положению на экране соответствует для данного конкретного экрана, можно обыкновенным перебором.
Размер прошивки получился равным 1438 байтам. Для сравнения, аналогичная прошивка, использующая LiquidCrystal, занимает 2164 байт. Получается, что отказавшись от LiquidCrystal, программу можно сжать на 33.5%, что очень даже неплохой результат! Думаю, что переписав программу на чистый C (см заметку Как я спаял электронные игральные кости на базе ATtiny85) результат можно еще улучшить. Если хотите, то можете проверить это утверждение в качестве домашнего задания.
Надеюсь, сей материал был для вас интересен. Полную версию кода к этой заметке вы найдете на GitHub. Как обычно, если после прочтения у вас остались вопросы или появились дополнения, не стесняйтесь воспользоваться комментариями!
Дополнение: Протокол, используемый в I2C-адаптерах к таким экранчикам, рассматривается в посте Микроконтроллеры STM32: работа с экранчиком 1602 по I2C. См также заметку Отображение произвольных символов на ЖКИ 1602.
Метки: AVR, Электроника.
lcd 1602 русский шрифт — Все о Windows 10
На чтение 3 мин. Просмотров 365 Опубликовано
Здравствуйте! Для очередного проекта мне понадобился дисплей с поддержкой кириллицы. Ранее перепробовал много известных способов, но удовлетворения не получил. Но, настало время и припёрло! Приобрел на Али LCD1622 с ПОДДЕРЖКОЙ КИРИЛЛИЦЫ и начал ваять. Снова проштудировал форумы и нашёл ссылку на конвертор символов автора Владимира Кириевского! Немного адаптировав под FLProg, сделал блок конвертор_кириллицы_(CODE). Результат на картинках ниже.
Здесь используется таблица символов из прошивки дисплея, а конвертор подменяет символы win в utf8. Тестовая программа Display. Для установки библиотеки, скачайте архив и извлеките в каталог «Х:ХХХFLProgideV2librariesCyrLCDconverter-master».
Автор: Сергей · Опубликовано 08.12.2016 · Обновлено 28.06.2019
В предыдущих статьях рассказывал о популярном модуле LCD1602A. На просторах интернета, можно найти большое количество вариантов использование, обусловлено это его дешевизной и наличию готовых библиотек. Но есть большой недостаток, данного модуля, в нем нету кириллицы (то есть не поддерживает русский язык). В этой статье расскажу как можно вывести на печать русский текст.
Общие сведения
Китайские производители модулей LCD1602A v.2.0, программируют английский алфавит в памяти модуля, включая цифры и еще кучу символом (все символы можно посмотреть в мануале). Если необходимого символа нет, можно нарисовать собственный, но не более 8 шт., то есть мы можем одновременно отобразить не более восьми собственных символов. Теперь немного подробнее, для отображения символов, модуль LCD1602A содержит 32 ячейки, каждая из этих ячеек, содержит восемь строк и пять столбцов (5х8). Наглядно можно приставить, как таблицу из 8 на 5 точек, если в любой точке таблицы мы укажем единицу, точка будет светится, если ноль нет.
Ниже продемонстрирован небольшой кусок кода, точно такой же как и в основном примере отличие только в написание.
Arduino LCD 16×02 display with I2C interface RUSSIAN with NO CYRILLIC symbols set
Библиотека позволяет использовать русские символы при использовании LCD дисплеев, подключенных по интерфейсу I2C, без встроенной кириллицы. Максимально возможно отображение 8 уникальных по начертанию русских символа (например Ж, Д, И, Ю и т.п.) Символы, одинаковые по начертанию с английскими (A, B, C, O, P и т.п.) используются из английского набора символов. Дополнительно встроена возможность печати знака градуса Цельсия. Для этого в тексте программы необходимо набрать код UTF-8 (Alt+0176)
Должна быть установелна базовая библиотека LiquidCrystal_I2C. Для Arduino, например, может быть рекомендована эта: https://github.com/marcoschwartz/LiquidCrystal_I2C
HelloWorld – простой пример вывода кириллических символов на LCD экран
HelloWorldCustom – пример вывода задаваемых пользователем и кириллических символов на LCD экран
SerialToLCD – Ввод символов (в т.ч. кириллических) с монитора порта и их вывод на LCD экран
rfid система. LCD дисплей 1602. Русификация
Продолжаем тему RFID. Сегодня мы подключим дисплей LCD 1602 и русифицируем его. Ведь мы же не хотим выводить на экран кракозябры или буржуйский текст. Нам милее наш, Великий и Могучий. Как завещал сами знаете кто.
Будет 2 примера. Первый — это простое подключение дисплея и его русификация. У меня есть хорошее видео про подключение LCD дисплеев на 2 и 4 строчки. С I2C и без него. В том примере я использовал библиотеку LiquidCrystal_I2C_RUS которая сама может выводить на экран русский шрифт. Но она может работать только с микроконтроллерами AVR на которых и построена Ардуино. А так как мы используем ESP, то надо как-то выкручиваться самим. Придётся нам самим создавать русские буквы. Хорошо что их не так много. Я имею ввиду, что нам не придётся создавать те буквы, которые похожи на латинские, а только те что отличаются в написании. В видео про дисплей я рассказывал про ограничения на вывод своих символов. Их одновременно может быть не больше 8. Короче если интересно посмотрите.
А мы возвращаемся к нашему проекту. Я собрал всё на макетной плате. Подключение немного отличается от того что я давал в прошлом видео. Там были задействованы пины 1 и 2. Это пины отвечают за шину I2C которая нам сегодня пригодиться. Поэтому переставим их на пины 2 и 3. Схема будет дальше в видео. А к пинам 1 и 2 подключим наш LCD дисплей. Забыл сказать. Дисплей должен уметь подключаться к шине I2C, то есть из него должны выходить всего 4 контакта. Теперь давайте рассмотрим скетч.
В первых двух строчках указаны библиотеки для работы с дисплеем. Первая стандартная и она уже в программе Arduino IDE. А вот вторую надо установить. Вы можете скачать её с гитхаба, но там старая версия. У меня же более новая версия. Откуда я её взял уже и не помню.
Дальше идут массивы всех букв которые в своём написании отличаются от латинских.
В следующей строчке указан адрес и тип дисплея. Если у вас на экране ничего не отображается, то возможно у вас другой адрес. Узнать его можно запустив сканер шины I2C.
Затем идут Инициализация дисплея включение подсветки.
Теперь каждой букве что мы будем выводить присвоим свой номер. Вот эти цифры мы и будем вставлять в код. Звучит немножко непонятно, но всё очень просто и вы скоро привыкнете. Текст я вывел только для того что бы показать как работать с русским шрифтом. И не забудьте посмотреть видео про дисплей, не пожалеете. Теперь давайте выведем на экран дисплея номер карты UID. Для этого объединим этот скетч с предыдущим. Подносим карту и видим на дисплее её номер. Вывод происходит практически моментально. А вот когда мы дойдём до получения номера по WIFI, то там будет небольшая задержка. На дисплее всё будет так же быстро, а на телефон будет приходить с опозданием. Ну это я так. Забежал вперёд. Так что ничего сложного в выводе номера карты на экран нет. В следующих видео мы ещё больше добавим устройств в наш проект.
Так, что не забудьте подписаться и нажать колокольчик, так вы не пропустите новое видео. Лайки и комментарии приветствуются.
Теперь рассмотрим схему подключения. Здесь больше деталей чем нам нужно для этого урока. Это я нарисовал для следующих видео. В подключении не должно возникнуть ни каких проблем. Главное не забыть, что модуль RFID питается от 3.3 вольт, а дисплей от 5 вольт. Я подключил его к контакту VIN платы ESP. этот вывод выдаст такое напряжение которое вы подали на питание NodeMCU. Я питаю плату от USB соответственно это 5 вольт. И на выходе VIN будет тоже 5 вольт. Красным квадратам я обвёл те выводы которые мы используем. Так, что у нас осталось не так уж и много свободных пинов. Тут сразу вспоминается Ардуино с его огромным количеством выводов. А аналоговых входов в ESP вообще всего 1. Ну вроде всё работает и можно переходить к усложнению проекта и написанию нового скетча и монтажа нового видеоурока. А вот когда он появится зависит от вашей активности. Чем больше, тем быстрее.
Если вы посмотрите ещё одно видео, А я об этом обязательно узнаю, то ваша карма увеличится и у вас сразу станут получаться самые сложные Ардуино проекты. Удачи вам. И с Наступающим Новым 2021 годом.
STN, отрицательный, синий пропускающий
(При производстве ЖК-дисплеев возможна небольшая разница в цвете. Мы можем гарантировать одинаковый цвет только в одной партии.)
Обязанность
1/16
Направление взгляда
6 часов
Тип подсветки
Светодиод, белый
Абсолютные максимальные значения
Товар
Символ
Мин.
Тип
Максимум
Блок
Рабочая температура
ВЕРХ
-20
-
+70
℃
Температура хранения
ТСТ
-30
-
+80
℃
Входное напряжение
VI
ВСС
-
ВДД
В
Напряжение питания для логики
ВДД-ВСС
-0.3
-
7
В
Напряжение питания для ЖК-дисплея
ВДД-Во
-0,3
-
13
В
Электрические характеристики
Товар
Символ
Состояние
Мин.
Тип
Максимум
Блок
Напряжение питания для логики
ВДД-ВСС
-
4.5
5,0
5,5
В
Напряжение питания для ЖК-дисплея
ВДД-В0
Та=-20℃
Та=25℃
Та=70℃
-
3,6
3.2
-
3,7
—
5,2
3,8
—
В
В
В
Вход высокого напряжения.
ВИХ
-
0,7 ВДД
-
ВДД
В
Низкое входное напряжение.
ВИЛ
-
Против
-
0,6
В
Выход, высокое напряжение.
ВОХ
-
3,9
-
ВДД
В
Низкое выходное напряжение.
ТОМ
-
0
-
0,4
В
Ток питания
ИДД
VDD=5,0 В
1,0
1,2
1,5
мА
Поиск по ключевому слову: lcd 16×2, lcd 16 x 2, lcd 16×2, 16 x 2 lcd
1602-символьный ЖК-дисплей — Часть 20. Основы микроконтроллеров…
#include «p10f200.ООО
bit_count EQU 10 ;счетчик битов
data_byte EQU 11 ;байт данных для отправки в сдвиговый регистр
lcd_data EQU 12 ;байт для отправки на LCD
data_com EQU 13 ;если = 0x10, то данные, если = 0, то команда
CLRF GPIO ;Очистите GPIO, чтобы установить все контакты на 0
CLRF data_com ;Установите низкий уровень на линии RS для отправки команды
;Задержка после включения
MOVLW 0x07 ;Выполнить задержку на 2 секунды
ЗАДЕРЖКА ВЫЗОВА
;————Инициализация ЖК-дисплея——————
MOVLW 0x33 ;Подготовка
ПОЗВОНИТЕ LCD_SEND
MOVLW 0x02 ;Выполнить задержку на 200 мс
ЗАДЕРЖКА ВЫЗОВА
MOVLW 0x32 ;Установить 4-битный интерфейс
ПОЗВОНИТЕ LCD_SEND
MOVLW 0x28 ;Установить 2-строчный дисплей
ПОЗВОНИТЕ LCD_SEND
MOVLW 0x08 ;Отображение выключено
ПОЗВОНИТЕ LCD_SEND
MOVLW 0x01 ;Очистить дисплей
ПОЗВОНИТЕ LCD_SEND
MOVLW 0x02 ;Выполнить задержку на 200 мс
ЗАДЕРЖКА ВЫЗОВА
MOVLW 0x06 ;Приращение курсора вправо, без смещения
ПОЗВОНИТЕ LCD_SEND
MOVLW 0x0C ;Дисплей включен, курсор выключен
ПОЗВОНИТЕ LCD_SEND
MOVLW 0x02 ;Выполнить задержку на 200 мс
ЗАДЕРЖКА ВЫЗОВА
;————————Конец части инициализации——————
MOVLW 0x85 ;Установить строку 1, позицию 5
CALL LCD_SEND
BSF data_com, RS ;Установите высокий уровень линии RS для отправки данных
;Отправьте слово «ПРИВЕТ»
MOVLW ‘H’
ПОЗВОНИТЕ LCD_SEND
MOVLW ‘E’
ПОЗВОНИТЕ LCD_SEND
MOVLW ‘L’
ПОЗВОНИТЕ LCD_SEND
MOVLW ‘L’
ПОЗВОНИТЕ LCD_SEND
MOVLW ‘О’
ПОЗВОНИТЕ LCD_SEND
CLRF data_com ;Установите низкий уровень на линии RS для отправки команды
MOVLW 0xC5 ;Установить строку 2, позицию 5
ПОЗВОНИТЕ LCD_SEND
BSF data_com, RS ;Установите высокий уровень линии RS для отправки данных
;Отправьте слово «МИР»
MOVLW ‘W’
ПОЗВОНИТЕ LCD_SEND
MOVLW ‘О’
ПОЗВОНИТЕ LCD_SEND
MOVLW ‘R’
ПОЗВОНИТЕ LCD_SEND
MOVLW ‘L’
ПОЗВОНИТЕ LCD_SEND
MOVLW ‘D’
ПОЗВОНИТЕ LCD_SEND
LOOP ;Основной цикл программы
GOTO LOOP ; цикл навсегда
SEND_BYTE ;Отправить один байт в сдвиговый регистр
CLRF bit_count ;Очистить регистр ‘bit_count’
SEND_BIT ;Отправить один бит в регистр сдвига
BCF GPIO, clk ;Установите низкий уровень на выводе «clk»
NOP ; Нет операции для реализации инструкции
BCF GPIO, dat ;Установите низкий уровень на выводе ‘dat’
BTFSC data_byte, 7 ;Если старший бит ‘data_byte’ не равен 0
BSF GPIO, dat ;Затем установите высокий уровень на выводе dat
RLF data_byte, F ;Сдвиг ‘data_byte’ влево
BSF GPIO, clk ;Установите высокий уровень на выводе ‘clk’
INCF bit_count, F ;Увеличить значение ‘bit_count’
BTFSS bit_count, 3 ; Если ‘bit_count’ меньше 8
GOTO SEND_BIT ;Затем перейдите к ярлыку «SEND_BIT»
BSF GPIO, защелка ;Установите высокий уровень для контакта «защелки»
NOP ; Нет операции для реализации инструкции
BCF GPIO, защелка ;Установите низкий уровень на выводе «защелки»
RETLW 0 ;Возврат из подпрограммы
LCD_SEND ;Отправить байт на ЖК-дисплей
;Отправка старшего полубайта
MOVWF lcd_data ;Сохранить содержимое регистра W в ‘lcd_data’
MOVWF data_byte ;Сохранить содержимое регистра W в ‘data_byte’
SWAPF data_byte, F ; Поменять местами полубайты ‘data_byte’
MOVLW 0x0F ;Загрузить 0x0F в регистр W
ANDWF data_byte, F ; И выполните операцию AND с ‘data_byte’
MOVF data_com, W ; Скопируйте ‘data_com’ в регистр W
IORWF data_byte, F ; и выполните ИЛИ с ‘data_byte’
MOVF data_byte, W ;Скопировать ‘data_byte’ в регистр W
MOVWF temp ;и сохраните его в регистре ‘temp’
байт данных BSF, E ;установите сигнал ‘E’
CALL SEND_BYTE ;Отправить байт в сдвиговый регистр
MOVF temp, W ; Восстановите значение ‘temp’
MOVWF data_byte ;и сохраните его в регистре data_byte
байт данных BCF, E ;Сбросить сигнал ‘E’
CALL SEND_BYTE ;Отправить байт в сдвиговый регистр
;Отправка младшего полубайта
MOVF lcd_data, W ; Скопировать «lcd_data» в «data_byte»
MOVWF data_byte
MOVLW 0x0F ;Загрузить 0x0F в регистр W
ANDWF data_byte, F ; И выполните операцию AND с ‘data_byte’
MOVF data_com, W ; Скопируйте ‘data_com’ в регистр W
IORWF data_byte, F ; и выполните ИЛИ с ‘data_byte’
MOVF data_byte, W ;Скопировать ‘data_byte’ в регистр W
MOVWF temp ;и сохраните его в регистре ‘temp’
байт данных BSF, E ;установите сигнал ‘E’
CALL SEND_BYTE ;Отправить байт в сдвиговый регистр
MOVF temp, W ; Восстановите значение ‘temp’
MOVWF data_byte ;и сохраните его в регистре data_byte
байт данных BCF, E ;Сбросить сигнал ‘E’
CALL SEND_BYTE ;Отправить байт в сдвиговый регистр
MOVLW D’12’ ;Задержка 40 мкс для выполнения команды
CALL SHORT_DELAY
RETLW 0
;————-Подпрограмма с короткой задержкой—————
SHORT_DELAY
MOVWF i ;Скопируйте значение в регистр i
SHORT_DELAY_LOOP ;Запустить цикл с короткой задержкой
DECFSZ i, F ;Уменьшить i и проверить, не равно ли оно нулю
GOTO SHORT_DELAY_LOOP; Если нет, перейдите к метке SHORT_DELAY_LOOP
RETLW 0 ;В противном случае возврат из подпрограммы
;————-Подпрограмма с большой задержкой—————
ЗАДЕРЖКА
MOVWF i ;Скопируйте значение в регистр i
MOVWF j ;Скопируйте значение в регистр j
MOVWF k ;Скопируйте значение в регистр k
DELAY_LOOP ;Начать цикл задержки
DECFSZ i, F ;Уменьшить i и проверить, не равно ли оно нулю
GOTO DELAY_LOOP ;Если нет, то перейти к метке DELAY_LOOP
DECFSZ j, F ;Уменьшить j и проверить, не равно ли оно нулю
GOTO DELAY_LOOP ;Если нет, то перейти к метке DELAY_LOOP
DECFSZ k, F ;Уменьшите значение k и проверьте, не равно ли оно нулю
GOTO DELAY_LOOP ;Если нет, то перейти к метке DELAY_LOOP
RETLW 0 ;В противном случае возврат из подпрограммы
КОНЕЦ
Класс Lcd1602 (Иот.Device.CharacterLcd) | Документы Майкрософт
Важный
Некоторая информация относится к предварительной версии продукта, которая может быть существенно изменена до ее выпуска. Microsoft не дает никаких явных или подразумеваемых гарантий в отношении представленной здесь информации.
LCD1602 (I2cDevice)
Lcd1602 (I2cDevice, логическое значение)
Создает новый ЖК-контроллер 16×2 на базе HD44780 со встроенной поддержкой I2c.
Lcd1602 (Int32, Int32, Int32 [], Int32, Single, Int32, GpioController)
Lcd1602 (Int32, Int32, Int32 [], Int32, Single, Int32, GpioController, Boolean)
Создает новый ЖК-контроллер 16×2 на базе HD44780 с использованием контактов GPIO.
ЖК-1602 (ЖК-интерфейс)
Создает новый ЖК-контроллер 16×2 с заданным интерфейсом
Прозрачный()
Очищает ЖК-дисплей, возвращая курсор в исходное положение и возвращая его в исходное положение, если он был смещен.Также будет установлено значение Increment.
(Унаследовано от HD44780)
CreateCustomCharacter (байт, байт [])
(Унаследовано от HD44780)
CreateCustomCharacter(Byte, ReadOnlySpan)
Заполните одну из 8 ячеек CGRAM (коды символов 0–7) пользовательскими символами.
(Унаследовано от HD44780)
CreateCustomCharacter(Int32, Byte[])
Заполните одну из 8 ячеек CGRAM (коды символов 0–7) пользовательскими символами.Дополнительные сведения см. в разделе CreateCustomCharacter(Int32, ReadOnlySpan).
(Унаследовано от HD44780)
CreateCustomCharacter(Int32, ReadOnlySpan)
Заполните одну из 8 ячеек CGRAM (коды символов 0–7) пользовательскими символами.
(Унаследовано от HD44780)
Утилизировать()
Освобождает неуправляемые ресурсы, используемые Hd44780
и при необходимости выпустить управляемые ресурсы
(Унаследовано от HD44780)
Распоряжаться (логическое значение)
Освобождает неуправляемые ресурсы, используемые Hd44780
и при необходимости выпустить управляемые ресурсы
(Унаследовано от HD44780)
GetTwoLineMode (Int32)
Определяет, должно ли устройство использовать двухлинейный режим
(Унаследовано от HD44780)
Дома()
Перемещает курсор в первую строку и первый столбец, сохраняя при этом сдвиг.
(Унаследовано от HD44780)
Инициализеровофсетс (Int32)
Инициализирует смещения строк
(Унаследовано от HD44780)
ОтправитьКоманду (байт)
Отправляет команду на устройство
(Унаследовано от HD44780)
SendCommandAndWait(Byte)
Последовательность инициализации и некоторые другие сложные команды должны отправляться с задержками, иначе дисплей может
вести себя неожиданно.Он может отображать случайные мигающие символы.
или отображать текст очень слабо.
(Унаследовано от HD44780)
SendCommands(ReadOnlySpan)
Отправка команд на устройство
(Унаследовано от HD44780)
ОтправитьДанные (байт)
Отправляет байт на устройство
(Унаследовано от HD44780)
SendData(ReadOnlySpan)
Отправляет данные на устройство
(Унаследовано от HD44780)
SendData(ReadOnlySpan)
Отправляет данные на устройство
(Унаследовано от HD44780)
SetCursorPosition (Int32, Int32)
Перемещает курсор в указанную позицию столбца и строки.
(Унаследовано от HD44780)
ShiftCursorLeft()
Переместить курсор влево на одну позицию.
(Унаследовано от HD44780)
ShiftCursorRight()
Переместить курсор вправо на одну позицию.
(Унаследовано от HD44780)
ShiftDisplayLeft()
Переместить дисплей влево на одну позицию.
(Унаследовано от HD44780)
ShiftDisplayRight()
Переместить дисплей вправо на одну позицию.
(Унаследовано от HD44780)
ЖдатьForNotBusy(Int32)
Подождите, пока устройство не будет занято.
(Унаследовано от HD44780)
Написать (Символ [])
Записать на дисплей необработанный поток байтов.Используется, если перевод символов уже был выполнен
(Унаследовано от HD44780)
Запись (ReadOnlySpan)
Записать на дисплей необработанный поток байтов.
Используется, если перевод символов уже был выполнен
(Унаследовано от HD44780)
Запись (ReadOnlySpan)
Записать на дисплей необработанный поток байтов.
Используется, если перевод символов уже был выполнен
(Унаследовано от HD44780)
Написать (строка)
Введите текст для отображения.
(Унаследовано от HD44780)
LCD1602 Синий ЖК-дисплей 16×2
Описание
Синий ЖК-дисплей LCD1602 16×2 оснащен 16-символьным 2-строчным ЖК-дисплеем с параллельным интерфейсом для управления MCU.
КОМПЛЕКТ ВКЛЮЧАЕТ:
LCD1602 Синий ЖК-дисплей 16×2
1 x 16 штыревая соединительная планка
ОСНОВНЫЕ ХАРАКТЕРИСТИКИ LCD1602 СИНИЙ ЖК-ДИСПЛЕЙ 16×2 :
16 символов x 2 строки Синий ЖК-дисплей
4-битный и 8-битный параллельный интерфейс
Работа 5 В
Эти дисплеи просты в использовании и представляют собой отличный способ предоставить пользовательский интерфейс во многих проектах, где вам нужно больше информации, чем могут предоставить простые светодиодные индикаторы или 7-сегментные дисплеи, поскольку они представляют собой полные буквенно-цифровые дисплеи с 2 строками по 16 символов в каждой. всего 32 символа.Для интерактивного дисплея сочетание этого типа дисплея с поворотным энкодером для навигации и выбора пунктов меню на дисплее может обеспечить очень приятный пользовательский интерфейс.
ЖК-дисплей
Дисплей состоит из 16-символьного 2-строчного ЖК-дисплея с синей подсветкой и белыми символами. Каждый из символов состоит из матрицы точек 5 x 8 для хорошего представления символов. Пользовательские символы могут быть определены и использованы с дисплеем.
Подсветка имеет вход VO (Display Contrast) для подключения потенциометра регулировки контрастности дисплея для лучшего просмотра.Потенциометр может быть где-то в диапазоне 10K-50K и должен подключаться между 5V и землей. Выход ползунка потенциометра подает на вывод VO переменное напряжение, которое устанавливает контрастность. Если это не отрегулировано правильно, дисплей может не отображать никаких символов или могут отображаться сплошные блоки.
Питание подсветки осуществляется от контактов А (Анод) и К (Катод). Обычно 5 В подается на «А» и заземляется на «К». Подсветка включает токоограничивающий резистор на 51 Ом, поэтому внешний резистор не требуется.
Подсветка может упасть примерно до 3,2 В, прежде чем она погаснет. Он может работать от сети 3,3 В, если для приложения требуется более низкая яркость. Подсветка может управляться логическим выводом с использованием транзистора, если требуется яркость ШИМ или управление ВКЛ/ВЫКЛ
Параллельный интерфейс
Этот дисплей оснащен параллельным интерфейсом, который может работать в 8-битном (байтовом) режиме или в 4-битном (полубайтовом) режиме. В 8-битном режиме используются выводы данных D0-D7 , а в 4-битном режиме используются верхние выводы данных D4-D7 .
На практике обычно используется 4-битный режим, поскольку он экономит 4 контакта на MCU, а максимальная скорость связи с дисплеем, как правило, не вызывает беспокойства. Библиотека LiquidCrystal.h делает различие между использованием двух режимов прозрачным для пользователя.
Если желательно еще больше уменьшить количество контактов, используемых на MCU, проверьте версию с интерфейсом I2C внизу, который использует только 2 контакта, а также питание и землю.
Соединения модуля
Подключение к дисплею осуществляется через 16-контактный разъем.
1 x 16 Заголовок
VSS = Подключите к заземлению системы. Эта земля должна быть общей с MCU
.
VDD = Подключите к 5 В. Это может исходить от MCU или быть отдельным источником питания.
VO = Контрастность дисплея. Подключите к потенциометру приблизительно 20K между 5V и землей, чтобы отрегулировать контрастность дисплея
RS = Регистрация выбора. Выбирает регистр команды или данных.Логический НИЗКИЙ = команда, ВЫСОКИЙ = данные.
RW = Чтение/Запись. Дисплей предназначен только для записи. Этот контакт заземлен, чтобы постоянно поддерживать его в режиме записи.
E = Включить. Этот контакт разрешает запись на дисплей, когда он активен. НИЗКИЙ
.
D0 – D7 = контакты данных. D0-D7 используются для 8-битного режима. D4-D7 используется для 4-битного режима
A = Анод подсветки. Подключается к 5В.
K = Катод подсветки.Соединяется с землей
Модуль сборки
Модуль поставляется с незакрепленной контактной полосой. Это позволяет припаять разъем к верхней или нижней части модуля в зависимости от планируемого использования или использовать провода для соединения.
Для использования на макетной плате поместите заголовки внизу. Пайка проще всего, если головка сначала вставляется в макетную плату без пайки, чтобы удерживать ее на месте и выровнять во время процесса пайки.
РЕЗУЛЬТАТЫ НАШЕЙ ОЦЕНКИ:
Это модули хорошего качества, которые должны быть у любого любителя.Благодаря интерактивности, которую они обеспечивают, с ними интересно играть и они полезны для более серьезных проектов.
Приведенное ниже программное обеспечение использует встроенную в Arduino библиотеку « LiquidCrystal.h » для демонстрации функциональности модуля.
Подключения к модулю описаны в комментариях к программе. Используемые строки данных MCU могут быть изменены и переопределены в следующей строке, если это необходимо.
// Определить подключение контактов к Arduino (RS, Enable, D4, D5, D6, D7) LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
Требуется потенциометр между 5 В и землей для питания линии VO для настройки контрастности дисплея, иначе текст может быть не виден.Также обязательно подключите 5 В и заземлите к контактам A/K подсветки и заземлите контакт R/W, чтобы перевести модуль в режим записи
LCD1602 Пример программы ЖК-дисплея 16×2
/*
16x2 4-битная шина данных ЖК-тест
Инициализируйте ЖК-дисплей и напечатайте на нем простое сообщение.
Затем увеличивайте счетчик в 4-й строке каждую секунду.
В этой настройке используется 4-битная шина для экономии количества контактов MCU.
Подключите VDD к 5V и VSS к земле на Arduino.
Подключите RW к земле
Подключите RS к D8, включите к D9, D4 к D4, D5 к D5, D6 к D6, D7 к D7
Подключите A к 5V и K к земле
Подключите потенциометр к VO для регулировки контрастности дисплея.
*/
#include < LiquidCrystal .h>// подключаем код библиотеки
// Определяем контакты для подключения к Arduino (RS, Enable, D4, D5, D6, D7)
LiquidCrystal ЖК (8, 9, 4, 5, 6, 7);
длинный счет = 0;
//=============================================== ================================
// Инициализация
//=============================================== ================================
недействительная установка ()
{
lcd.begin(16, 2); // Инициализируем и определяем количество столбцов и строк ЖК-дисплея:
// Выводим фиксированную информацию на дисплей один раз
ЖК.установитьКурсор(4, 0); // устанавливаем курсор на Col 7, Line 1
lcd.print("LCD1602");
lcd.setCursor(0, 1);
lcd.print("Счетчик: ");
}
//=============================================== ================================
// Основной
//=============================================== ================================
пустой цикл ()
{
// Просто считаем один раз в секунду, пока не будет достигнут максимальный размер длинного типа,
// затем начнем сначала
lcd.setCursor(9, 1); // Установить курсор в место подсчета
ЖК.распечатать (количество); // Печать нового счетчика
if (count > 100000) { // Обработка любого переноса
количество=0;
lcd.print(" "); // очистить старый счет
lcd.print (количество);
}
количество++; // увеличить счетчик
задержка (1000);
}
ДО ПОСТАВКИ ЭТИ МОДУЛИ:
Проверено
Образец протестирован для каждой входящей партии.
Переупакован в высококачественный повторно закрывающийся антистатический пакет для безопасного хранения.
Примечания:
Задняя часть платы содержит электронику, поэтому следует соблюдать осторожность, чтобы избежать возможного короткого замыкания при размещении платы на металлической поверхности.
Технические характеристики
Дисплей
символов
16 символов x 2 строки
Цвет подсветки
Синий
Рабочие характеристики
Вход питания постоянного тока
5 В номинально (5.5 В макс)
Рабочий ток (общий)
30 мА (тип.)
Рабочий ток (только подсветка)
20 мА (тип.)
Размеры
Размер дисплея (печатная плата)
80 x 36 мм (3,1″ x 1,4″)
Высота дисплея с печатной платой
11 мм (0,43 дюйма)
Рамка дисплея
72 х 25 мм (2.8 х 1″)
Технический паспорт
Репрезентативный пример
Модуль LCD1602
SCM управляет LCD1602 для отображения предложений на английском языке
LCD1602 Введение:
1602-символьный ЖК-дисплей также называется 1602-символьным ЖК-дисплеем. Это матричный ЖК-модуль, специально используемый для отображения букв, цифр и символов. Символьный ЖК-дисплей может одновременно отображать 16×02 или 32 символа.
Он состоит из нескольких битов точечно-матричного символа 5X7 или 5X11, каждый бит точечно-матричного символа может отображать символ, между каждым битом есть шаг точки, а между каждой строкой есть пробел, который воспроизводит интервал между символами и line Из-за эффекта интервала он не может хорошо отображать графику из-за этого (при использовании пользовательской CGRAM эффект отображения не очень хорош).6;
#define RS_CLR RS=0
#define RS_SET RS=1
#define RW_CLR RW=0
#define RW_SET RW=1
#define EN_CLR EN=0
#define EN_SET EN=1
#define Порт данных P0
void DelayUs2x (беззнаковый символ t)
{
в то время как (—t);
}
void DelayMs (беззнаковый символ t)
{
в то время как (т—)
{
ЗадержкаUs2x(245);
ЗадержкаUs2x(245);
}
}
бит LCD_Check_Busy (пусто)
{
Порт данных = 0xFF;
RS_CLR;
RW_SET;
EN_CLR;
_ноп_();
EN_SET;
возврат (бит) (порт данных и 0x80);
}
void LCD_Write_Com (без знака char com)
{
ЗадержкаMs(5);
RS_CLR;
RW_CLR;
EN_SET;
Порт данных = COM;
_ноп_();
EN_CLR;
}
void LCD_Write_Data (данные без знака)
{
ЗадержкаMs(5);
RS_SET;
RW_CLR;
EN_SET;
Порт данных = данные;
_ноп_();
EN_CLR;
}
недействительным LCD_Clear (недействительным)
{
LCD_Write_Com (0x01);
ЗадержкаMs(5);
}
void LCD_Write_String (беззнаковый символ x, беззнаковый символ y, беззнаковый символ *s)
{
если (у == 0)
{
LCD_Write_Com (0x80 + х);
}
еще
{
LCD_Write_Com (0xC0 + x);
}
пока (*с)
{
LCD_Write_Data(*s);
с++;
}
}
void LCD_Write_Char (символ без знака x, символ без знака y, данные без знака char)
{
если (у == 0)
{
LCD_Write_Com (0x80 + х);
}
еще
{
LCD_Write_Com (0xC0 + x);
}
LCD_Write_Data(данные);
}
недействительным LCD_Init (недействительным)
{
LCD_Write_Com (0x38);
ЗадержкаMs(5);
LCD_Write_Com (0x38);
ЗадержкаMs(5);
LCD_Write_Com (0x38);
ЗадержкаMs(5);
LCD_Write_Com (0x38);
LCD_Write_Com (0x08);
LCD_Write_Com (0x01);
LCD_Write_Com (0x06);
ЗадержкаMs(5);
LCD_Write_Com (0x0C);
}
недействительный основной (пустой)
{
LCD_Init();
LCD_Clear();
пока (1)
{
LCD_Write_Char(7,0,’o’);
LCD_Write_Char(8,0,’k’);
LCD_Write_String(1,1,»Я ТЕБЯ ЛЮБЛЮ!»);
пока (1);
}
}
Файл проекта имитации PROTEUS, HEX-файл и файл программы на языке C: