Приветствую Вас ГостьСреда, 08.01.2025, 12:15

AVR & ARDUINO




Каталог статей

Главная » Статьи » Платы

LCD 1602 и другие ЖК-модули на основе HD44780

Введение

При работе с платами Arduino иногда нужно выводить какие-либо данные. Если устройство подключено к компьютеру, то вывести их довольно тривиально. В случае же автономного устройства нам на помощь придут ЖК-модули. Наиболее часто используются контроллеры HD44780 монохромных жидкокристаллических знакосинтезирующих дисплеев с параллельным 4- или 8-битным интерфейсом. Особенно популярны китайские платы LCD 1602.

Экраны предоставляют только возможность вывода монохромного текста. Существуют варианты дисплеев с подсветкой и без.

Интерфейс

Номер контакта Обозначение Уровень (HIGH или LOW) Описание
1 Vss 0 В Земля
2 VDD или VCC 5.0 В Напряжение питания
3 VO переменный (0-5 В) Настройка контрасности
4 R/S или A0 H/L Выбор регистра. Если H: данные, если L: команда
5 R/W H/L Чтение/Запись. Если H: чтение, если L: запись. (Этот контакт не является обязательным, т.к обычно нужно писать в него, а не читать. Поэтому обычно он постоянно подключен непосредственно к земле).
6 E H,H→ L Строб по спаду
7 DB0 H/L Бит 0 (не используется в 4-битных операциях, младший для 8-битного интерфейса))
8 DB1 H/L Бит 1 (не используется в 4-битных операциях)
9 DB2 H/L Бит 2 (не используется в 4-битных операциях)
10 DB3 H/L Бит 3 (не используется в 4-битных операциях)
11 DB4 H/L Бит 4 (младший для 4-битного интерфейса)
12 DB5 H/L Бит 5
13 DB6 H/L Бит 6
14 DB7 H/L Бит 7 (старший бит)
15 A   Питание подсветки для дисплеев с подсветкой (анод) +
16 K   Питание подсветки для дисплеев с подсветкой (катод) земля

Подача питания подсветки может различаться от модели к модели в зависимости от её типа. Обычно подсветка питается от 5 вольт, токоограничительный резистор (50-100 Ом) обычно обязателен.

Дисплей может работать в 4- или 8-битном режимах. В первом случае контакты с седьмого по десятый не используются, а данные передаются только через 11-14 контакты, по четыре бита за такт (старший полубайт, затем младший полубайт).

Подключение к Arduino

На рисунке а) представленном ниже приведена схема включения контроллера с 8-ми разрядной условной микро-ЭВМ. Восмиразрядный двунаправленный порт PA0...PA7 подключен к шине DB0...DB7 ЖКИ модуля. К трехразрядному порту PB0...PB2 подключены управляющие сигналы E, RS,R/W. На рисунке б) контроллер подключен к этой же микро-ЭВМ в четырехразрядном режиме, при этом используются старшие адреса шины данных DB4...DB7.

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

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

Кстати, обычно дисплеи имеют режим самотестирования, который можно включить, подсоединив контакты:

  • 1 — Vss, земля ⇨ GND
  • 2 — Vdd, питание ⇨ +5 В
  • 3 — Vo, управление контрастностью напряжением ⇨ выход потенциометра
  • 15 — A, питание для подсветки ⇨ +5 В
  • 16 — K, земля для подсветки ⇨ GND

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

Описание функций В модуль ЖК-диспля встроен в контроллер LSI, который имеет два 8-разрядных регистра: регистр команд (IR - instruction register) и регистр данных (DR - data register). Регистр IR хранит коды инструкций, такие как очистка экрана, сдвиг курсора, адресную информацию для видеопамяти (DDRAM) и ОЗУ знакогенератора (CGRAM). Регистр DR служит для временного хранения данных, которые должны быть записаны или считаны в видеопамять или ОЗУ знакогенератора. Линия RS определяет какой из регистров выбран: если RS=0, то адресуется регистр команд, иначе RS=1, то адресуется регистр данных.

RS R/W Операция
0 0 В IR пишется внутренняя команда (очистка экрана и т.д.)
0 1 Осуществляется чтение флага занятости (BF) в DB7 и счетчика адреса памяти (AC) в DB0..DB6
1 0 Записываются данные из DR в DDRAM или CGRAM
1 1 Считываются данные в DR из DDRAM или CGRAM

Флаг занятости (BF - Busy Flag)

Когда флаг занятости равен 1, контроллер находится в режиме выполнения внутренних операций и следующая инструкция не будет принята. Когда RS = 0 и R / W = 1, флаг занятости выводится DB7. Следующая команда должна быть передана, только после проверки, что флаг занятости равен 0.

Счетчик адреса памяти (AC - Adress Counter)

Счетчик адреса памяти (AC) назначает адреса для видеопамяти(DDRAM) или ОЗУ знакогенератора (CGRAM).

Видеопамять (DDRAM - Dispay Data RAM)

Видеопамять служит для хранения кодов отображаемых на экране символов. Индикатор содержит ОЗУ размером 80 байтов (знаков) по адресам 0h–27h и 40h–67h для хранения данных (DDRAM), выводимых на ЖКИ. Порядок символов в DDRAM соответствует порядку их отображения. Адреса отображаемых на индикаторе символов распределены следующим образом:

№ знакоместа 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1-я строка 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh
2-я строка 40h 41h 42h 43h 44h 45h 46h 47h 48h 49h 4Ah 4Bh 4Ch 4Dh 4Eh 4Fh

ПЗУ знакогенератора (CGROM - Character Generator ROM)

ПЗУ знакогенератора содержит наборы символов 5x8 точек или 5x11 точек в 8-битных кодах. Причем символы 5x8 могут быть закодированы на двух страницах. Контроллеры, устанавливаемые на ЖКИ-модули, могут иметь различные наборы символов, это может зависеть как от производителя контроллера, так и от модификации данной конкретной модели.

Кроме того, есть и различные варианты наборов с русским буквами. Наиболее популярный набор показан ниже:

ОЗУ знакогенератора Character Generator RAM (CGRAM)

Индикатор содержит память (64 байта) для хранения изображений восьми символов формата 5x8 или четырех формата 5x11, программируемых пользователем (CGRAM). Адреса строк изображений этих символов не зависят от адресов выводимых символов (расположены в отдельном адресном пространстве) и занимают адреса от 0h до 3Fh. Каждый символ занимает 8 байтов (0h–7h, 8h–Fh, 10h–17h, ..., 30h–37h, 38h–3Fh). Нумерация байтов идет в порядке отображения на модуле сверху вниз (первый байт самый верхний, восьмой байт самый нижний). Последняя, восьмая строка используется также для отображения курсора (если выбран курсор в виде подчеркивания). В каждом байте используются только 5 младших битов (4, 3, 2, 1, 0), старшие 3 бита (7, 6, 5) могут быть любые, на отображение они не влияют. Бит 4 соответствует левому столбцу матрицы символа, бит 0 — правому столбцу символа.

Набор инструкций
Инструкция Код       Описание       Время выпол-нения
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Очистить экран 0 0 0 0 0 0 0 0 0 1 Очищает экран и возвращает курсор в левую (начальную) позицию (адрес 0) 1.52 мс
Возврат курсора в начальное состояние 0 0 0 0 0 0 0 0 1 * Возвращает курсор в левую позицию. (Устанавливает счетчиков адреса и сдвига в состояние 0) Содержание DDRAM остается неизменным. 1.52 мс
Установка режима ввода данных 0 0 0 0 0 0 0 1 I/D S Установка направления сдвига курсора (ID=0/1—влево/вправо) 
и разрешения сдвига дисплея (S=1) при записи в DDRAM
37 мкс
Включение/выключение управления отображением 0 0 0 0 0 0 1 D C B Включает/выключает весь дисплей (D), курсор (C), мигание курсора или символа (B). 37 мкс
Сдвиг курсора или экрана 0 0 0 0 0 1 S/C R/L * * Выполняет сдвиг дисплея или курсора (SC=0/1—курсор/дисплей), и направления (RL=0/1—влево/вправо). Содержание DDRAM останется неизменным. 37 мкс
Установка функциональ-ного состояния 0 0 0 0 1 DL N F P*) I*) Установка разрядности
интерфейса (DL=0/1—4/8 бита), количество строк дисплея (N), и размер шрифта (F: 5×11 точек/5×8 точек), номер текущей страницы (P) и режим инверсии экрана (I).
37 мкс
Установка адресов CGRAM 0 0 0 1 адрес CGRAM Установка 6-разрядного адреса CGRAM. После подачи этой команды данные записываются или читаются в/из CGRAM. 37 мкс
Установка адресов DDRAM 0 0 1 адрес DDRAM Установка 7-разрядного адреса DDRAM. После подачи этой команды данные записываются или читаются в/из DDRAM. 37 мкс
Чтение BF и AC 0 1 BF AC (адрес CGRAM/DDRAM) Чтение флага занятости (BF), сообщающего о выполнении текущей команды, и текущего состояния счетчика адреса (AC) - адрес CGRAM/DDRAM для предыдущей команды. Данная инструкция не является командой и не блокирует интерфейс. 0 мкс
Запись данных в CGRAM или
DDRAM
1 0 Записываемые данные Запись данных в CGRAM или DDRAM. 37 мкс
Чтение данных из CGRAM или DDRAM 1 1 Читаемые данные Чтение данных из CGRAM или DDRAM. 37 мкс

I/D - 0 = декрементирование позиции курсора, 1 = инкрементирование  позиции курсора;

S - 0 = нет сдвига дисплея, 1 = разрешает сдвиг дисплея при записи DDRAM;

D - 0 = выключить дисплей, 1 = включить дисплей;

C - 0 = курсор выключен, 1 = курсор включен;

B - 0 = мерцание выключено, 1 = мерцание включено ;

S/C - 0 = сдвиг курсора, 1 = сдвиг дисплея;

R/L - 0 = сдвиг влево, 1 = сдвиг вправо;

DL - 0 = 4-разрядный интерфейс, 1 = 8-разрядный интерфейс;

N - 0 = однострочный дисплей, 1 =  двухстрочный дисплей;

F - 0 = шрифт 5×8 точек, 1 = шрифт 5×10 точек;

P - 0 = первая страница CGROM, 1 = вторая страница CGROM;

I - 0 = инверсия экрана выключена, 1 = инверсия экрана включена

BF - 0 =можно выполнить команду, 1 = выполняется команда.

AC - адресный счетчик, используемый для адресации как CGRAM, так и DDRAM.

* - не имеет значение

*) - дополнительная функция (зависит от контроллера, если контроллер не поддерживает то любое значение)

Программирование контроллера

Программная инициализация контроллера

Программная инициализация в режиме 8-разрядного интерфейса

Включение питания VDD
   
Ожидание более 20мс после установления VDD=4,5В или ожидание более 40мс, после установления VDD=2,7 В
   
Установить 8 разрядный интерфейс
RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 1 1 * * * *
Флаг занятости (BF) после этой команды не должен проверяться
   
Ожидание более 40мс
   
Установить 8 разрядный интерфейс
RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 1 1 * * * *
Флаг занятости (BF) после этой команды не должен проверяться
   
Установить 8 разрядный интерфейс
RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 1 1 * * * *
Флаг занятости (BF) после этой команды не должен проверяться
   
Установить число строк и размер шрифта
RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 1 1 N F * *
Выключение дисплея
RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 0 0 1 0 0 0
Очистка дисплея
RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 0 0 0 0 0 1
Установка режима ввода данных
RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 0 0 0 1 ID S
 

 

Программная инициализация в режиме 4-разрядного интерфейса

Включение питания VDD
   
Ожидание более 20мс после установления VDD=4,5В или ожидание более 40мс, после установления VDD=2,7 В
   
Установить 8 разрядный интерфейс
    RS RW DB7 DB6 DB5 DB4    
    0 0 0 0 1 1    
Флаг занятости (BF) после этой команды не должен проверяться
   
Ожидание более 40мс
   
Установить 8 разрядный интерфейс
    RS RW DB7 DB6 DB5 DB4    
    0 0 0 0 1 1    
Флаг занятости (BF) после этой команды не должен проверяться
   
Установить 8 разрядный интерфейс
    RS RW DB7 DB6 DB5 DB4    
    0 0 0 0 1 1    
Флаг занятости (BF) после этой команды не должен проверяться
   
Установить число строк и размер шрифта
    RS RW DB7 DB6 DB5 DB4    
    0 0 0 0 1 0    
    0 0 N F * *    
Выключение дисплея
    RS RW DB7 DB6 DB5 DB4    
    0 0 0 0 0 0    
    0 0 1 0 0 0    
Очистка дисплея
    RS RW DB7 DB6 DB5 DB4    
    0 0 0 0 0 0    
    0 0 0 0 0 1    
Установка режима ввода данных
    RS RW DB7 DB6 DB5 DB4    
    0 0 0 0 0 0    
    0 0 0 1 ID S    
 

Для более полной информации обратитесь у спецификации вашего алфавитно-цифрового индицирующего ЖК-модуля.

Смотрите также:

Спецификация на контроллер ЖКИ An6866

Русское описание контроллера HD44780

Описание контроллера HD44780U на английском

Спецификация на ЖКИ МТ–16S2H

Эмулятор ЖКИ на базе контроллера HD44780

Категория: Платы | Добавил: magi (05.03.2015)
Просмотров: 19134 | Теги: HD44780, 1602, ЖК, LCD | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Поиск
Вход на сайт
На правах рекламы

Мы переезжаем на сайт Arduino по-русски