WordPress database error: [Table './meandr_base/anzpz_usermeta' is marked as crashed and last (automatic?) repair failed]
SELECT user_id, meta_key, meta_value FROM anzpz_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC

Работаем с ЖКИ на контроллерах ks0066 и hd44780 – Меандр – занимательная электроника
Site icon Меандр – занимательная электроника

Wir arbeiten mit LCD-Controller und HD44780 ks0066

Сегодня все чаще для отображения простой символьной информации используют символьные жидкокристаллические индикаторы ЖКИ. О том, как с ними работать мы и поговорим. В этой части статьи, мы детально рассмотрим символьные ЖКИ на базе контроллера HITACHI HD44780 (или совместимым с ним SAMSUNG KS0066). Статья – попытка систематизировать найденную мной информацию при работе с этими ЖКИ.

СОДЕРЖАНИЕ:
1. Символьный ЖКИ с контроллером HD44780 (KS0066). Интерфейс.
2. Набор команд контроллера HD44780.
3. Инициализация ЖКИ.

Символьный ЖКИ с контроллером HD44780 (KS0066). Интерфейс

Символьный ЖКИ есть ничем другим, как матрицей из точек, разделенной на строки и поля символов:

Для управления этой матрицей и вывода собственно символов используется специальный контроллер.

HD44780 (и совместимый с ним KS0066) – есть де-факто стандартом на контроллеры монохромных жидкокристаллических знакосинтезирующих дисплеев с параллельным 4-х или 8-битным интерфейсом. На базе этого контроллера выпускается огромное количество моделей с различным конструктивном и разрешением, начиная с 8×1 (восемь символов в одной строке), и заканчивая 40×4 (содержащих два независимых управляющих чипа). Типичная частота работы контроллера – 270 кГц.

Контролер ЖКИ оперирует 3-мя блоками памяти:

1. Для вывода символа контроллер использует память DDRAM (Display Data RAM), где хранятся ASCII-коды символов, которые мы хотим видеть на ЖКИ. Под нее отведено 80 ячеек памяти. Понятно, что на ЖКИ мы увидим лишь часть символов, которые находятся в DDRAM – если наш ЖКИ 1 или 2-строчный и отображает 8 символов в строке, то так:

Рабочую область дисплея, как видно, можно смещать по ячейкам DDRAM (получается эффект бегущей строки).

2. Шаблоны самих символов контроллер берет из CGROM (Character Generator ROM) – памяти знакогенератора. Таблицу символов можно посмотреть в спецификации на HD44780.

3. Для хранения пользовательских символов (их шаблонов) предусмотрена память CGRAM (Character Generator RAM).

Также, контроллер в зависимости от некоторых условий распределяет пришедшие в него данные в Befehlsregister oder регистр данных.

Eine typische 14-Pin-Interface-Controller HD44780:

1 Земля, общий провод, GND
2 Напряжение питания, Vcc (+5V)
3 Настройка контрастности (Vo)
4 Выбор регистра (R/S для HD44780, A0 для KS0066)
5 Чтение/запись (R/W)
Sechs Строб по спаду Е (Enable)
7 Bit 0 (младший для 8мибитного интерфейса)
Data Line
8 DB 1
9 DB 2
10 DB 3
11 DB 4 (младший для 4х битного интерфейса)
12 DB 5
13 DB 6
14 DB 7 (старший для 8-х (4х) битного интерфейса)
Für ein hintergrundbeleuchtetes Display
15 Питание подсветки для дисплеев с подсветкой (анод)
16 Питание подсветки для дисплеев с подсветкой (катод)

Нумерацию пинов на конкретном ЖКИ смотрим в datasheet.

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

Но, следует смотреть в спецификацию на свой контроллер (например у ЖКИ Klsn10294v-0 на чипе KS0066 1-Vcc, а 2-GND). Подача питания подсветки может различаться от модели к модели в зависимости от её типа. Обычно подсветка питается от 5 вольт, токоограничительный резистор (50-100 Ом) обычно не обязателен.

Назначение выводов R/S, R/W,E:

При переходе Е с высокого лог. уровня на низкий данные, которые уже «висят» на выводах DB0..DB7, записываются в память контроллера ЖКИ для последующей обработки.

При высоком лог. уровне на R/S(Register Select) контроллер ЖКИ воспринимает этот набор битов как данные(код символа), а при низком – как инструкцию и направляет их в соответствующий регистр.

R/W определяет направление работы выводов DB0..DB7 – если на R/W «0», то мы можем только писать в порт DB, а если R/W = «1», то можем прочитать с него (например узнать занят контроллер или свободен для приема новых данных). Если мы не будем читать данные из ЖКИ, то можно «посадить» R/W на землю.

Instruction Set HD44780

Для того чтобы начать выводить информацию на ЖКИ, его контроллер надо проинициализировать (сообщить ему об интерфейсе, шрифте, смещениях и т.д.). Контроллер может воспринимать всего 11 команд:

Titel Anleitung Status Schlussfolgerungen Прим. Zeitpunkt der Ausführung

fраб.= 270 kHz

RS R / W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Übersichtliches Display 0 0 0 0 0 0 0 0 0 1 Очистка Всего ЖКИ установка адреса DDRAM в 0 1.52 мс
Nach Hause zurückkehren 0 0 0 0 0 0 0 0 1 X Установка текущего адреса DDRAM в 0 (курсор – домой) Данные DDRAM не меняются 1.52 мс
Eingabemodus festzulegen 0 0 0 0 0 0 0 1 I / D S Установка направления движения курсора (I/D) и смещения дисплея (S) при выводе данных 37 мкс
Display on/off control 0 0 0 0 0 0 1 D C B Вкл/выкл. дисплей(D), курсор(C) и его мерцание(B) 37 мкс
Cursor oder Anzeigeverschiebung 0 0 0 0 0 1 S / C R / L X X Bewegen Sie den Cursor und verschiebt die Anzeige der DDRAM 37 мкс
Funktionssatz 0 0 0 0 1 DL N F X X Установка интерфейса(DL), число строк(N) и шрифт символов(F) 37 мкс
Stellen CGRAM Adresse 0 0 0 1 ACG5 ACG4 ACG3 ACG2 ACG1 ACG0 Установка счетчика адреса CGRAM. После этого можно записывать данные в CGRAM 37 мкс
Set DDRAM Adresse 0 0 1 ADD6 ADD5 ADD4 ADD3 ADD2 ADD1 ADD0 Set DDRAM Adressenzähler 37 мкс
Read busy flag & address 0 1 BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 Если BF = 1 то контроллер ЖКИ выполняет внутреннюю операцию (занят). АC6-АC0 – текущее значение адреса DDRAM 0 ISS
Schreiben von Daten in den RAM 1 0 D7 D6 D5 D4 D3 D2 D1 D0 Schreiben von Daten in den RAM- 37 мкс
Lesen Sie Daten aus dem RAM 1 1 D7 D6 D5 D4 D3 D2 D1 D0 Lesen von Daten von RAM 37 мкс

I/D = 1: адрес DDRAM увеличивается I/D = 0: уменьшается
S = 1: сдвиг рабочей области дисплея по DDRAM разрешен
D = 1: дисплей (изображение) включен
C = 1: курсор включен
В = 1: мерцание курсора включено

S/C = 1: сдвинуть дисплей S/C = 0: переместить курсор
R/L = 1: вправо R/L = 0: влево

DL = 1: 8 bit DL = 0: 4 bits
N = 1: 2 lines N = 0: 1 line
F = 1: 5х10 F = 0: 5х8

ACG: CGRAM address
ADD: DDRAM address (адрес курсора)
AC: Address counter DD и CGRAM адресов

Initialisieren LCD

Есть 2 способа инициализации контроллера ЖКИ:

1. Через внутреннюю схему сброса.

2. В ручном режиме (через посылку в него ряда команд, которыми мы задаем режим работы ЖКИ)

Внутренняя схема сброса контроллера начинает работать сразу после включения питания. В этом есть один минус – если питание у нас «ползет» до рабочего уровня медленно (медленнее, чем за 10 мс), то самоинициализация контроллера может пройти некорректно. При этом способе инициализации контроллер сам исполняет следующие команды:

1. Display clear

2. Function set:
DL = 1; 8-bit interface data
N = 0; 1-line display
F = 0; 5х8 dot character font

3. Display on/off control:
D = 0; Display off
C = 0; Cursor off
B = 0; Blinking off

4. Entry mode set:
I/D = 1; Increment by 1
S = 0; No shift

Второй способ исключает зависимость схемы от источника питания. Для инициализации контроллера ЖКИ в ручном режиме необходимо исполнить следующий алгоритм:

8-битный параллельный интерфейс.

4-битный параллельный интерфейс.

Как видно, здесь нет ничего сложного: посылаем в ЖКИ команду за командой, учитывая время их исполнения (около 40 мкс) или проверяя флаг занятости контроллера ЖКИ (тогда надо посадить пин RW на лапку микроконтроллера и выставлять его в «1», когда хотим узнать, занят ЖКИ или нет).

Exit mobile version