Работаем с ЖКИ. Часть 1

Работаем с ЖКИ. Часть 1

Сегодня все чаще для отображения простой символьной информации используют символьные жидкокристаллические индикаторы ЖКИ. О том, как с ними работать мы и поговорим. В этой части статьи, мы детально рассмотрим  символьные ЖКИ на базе контроллера 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).

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

Типичный 14-пиновый интерфейс контроллеров HD44780:

1

Земля, общий провод, GND

2

Напряжение питания, Vcc (+5V)

3

Настройка контрастности (Vo)

4

Выбор регистра (R/S для HD44780, A0 для KS0066)

5

Чтение/запись (R/W)

6

Строб по спаду Е (Enable)

7

Bit 0 (младший для 8мибитного интерфейса)

Линия данных

8

DB 1

9

DB 2

10

DB 3

11

DB 4 (младший для 4х битного интерфейса)

12

DB 5

13

DB 6

14

DB 7 (старший для 8-х (4х) битного интерфейса)

Для дисплея с подсветкой

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 на землю.

Набор команд HD44780

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

Название инструкции

Состояние выводов

Прим.

Время исполнения

fраб.=270 кГц

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

Clear display

0

0

0

0

0

0

0

0

0

1

Очистка Всего ЖКИ установка адреса DDRAM в 0

1.52 мс

Return home

0

0

0

0

0

0

0

0

1

Х

Установка текущего адреса DDRAM в 0 (курсор – домой) Данные DDRAM не меняются

1.52 мс

Entry mode set

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 or display shift

0

0

0

0

0

1

S/C

R/L

Х

Х

Двигает курсор и смещает дисплей по DDRAM

37 мкс

Function set

0

0

0

0

1

DL     

N      

F      

Х

Х

Установка  интерфейса(DL), число строк(N) и шрифт символов(F)

37 мкс

Set CGRAM address

0

0

0

1

ACG5

ACG4

ACG3

ACG2

ACG1

ACG0

Установка счетчика адреса CGRAM. После этого можно записывать данные в CGRAM

37 мкс

Set DDRAM address

0

0

1

ADD6 

ADD5

ADD4 

ADD3 

ADD2 

ADD1 

ADD0 

Установка счетчика адреса DDRAM

37 мкс

Read busy flag & address

0

1

BF

AC6

AC5

AC4

AC3

AC2

AC1

AC0

Если BF = 1 то контроллер ЖКИ выполняет внутреннюю операцию (занят). АC6-АC0 – текущее значение адреса DDRAM

0 мкс

Write data to RAM

1

0

D7

D6

D5

D4

D3

D2

D1

D0

Запись данных в RAM

37 мкс

Read data from RAM

1

1

D7

D6

D5

D4

D3

D2

D1

D0

Чтение данных из 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 адресов

Инициализация ЖКИ

Есть 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», когда хотим узнать, занят ЖКИ или нет).

Вот, собственно, все, что касается теории работы с символьными ЖКИ. Если что-то пропустил или ошибся, читаем спецификацию на контроллер HD44780  или англ. версию.

Во второй части рассмотрим аппаратную и программную реализацию связи PIC-микроконтроллера с ЖКИ.

Автор: Kharakternyk


Категория: Микроконтроллеры
Метки:

Написать коментарий

*
= 5 + 4

Добавить изображение

Последние статьи