Материал: ATMEL Russian Home Сопряжение AVR-микроконтроллеров и ЖКИ

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Сопряжение AVR-микроконтроллеров и ЖКИ

Татьяна Кривченко,

24 января 1999

1. Архитектура и система команд контроллера ЖКИ

Многие фирмы (Optrex Corporation, Powertip, Seiko Instruments, Batron и др.)

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

Рассматриваемый ЖКИ при помощи стандартного 14-контактного разъема (табл. 1) обменивается информацией с управляющим микроконтроллером (в нашем случае с AVR). AVR-микроконтроллер посылает в ЖКИ команды (табл. 2), управляющие режимами его работы, и ASCII-коды выводимых символов. В свою очередь, ЖКИ может посылать AVRмикроконтроллеру по его запросу информацию о своем состоянии и данные из своих внутренних блоков памяти.

Таблица 1: Описание выводов стандартного разъема ЖКИ на базе HD44780

N

Название

 

вывода

1 VSS

2 VDD

3 V0

4 RS

5 R/W

6 E

7 DB0

8 DB1

9 DB2

1

0 DB3

1 DB4

Описание

(-) Питание. 0 V.

(+) Питание.+5V.

Напряжение смещения, управляющее контрастностью

Вход. Высокий уровень - Данные; Низкий - Команды

Вход. Высокий-Чтение, Низкий-Запись

Вход. Строб, сопровождающий сигналы на шине "команды/данные"

Шина "команды/данные"

1

1

2 DB5

1

3 DB6

1

4 DB7

Три вывода 14-контактного разъема предназначены для подачи питающего напряжения и напряжения смещения, которое управляет контрастностью дисплея. На рис. 1 показана рекомендуемая схема подключения этих выводов.

Рис. 1: Возможная схема питания ЖКИ

Из оставшихся 11 выводов 8 (DB0 - DB7) используются для организации мультиплексированной шины "команды / данные", и на 3 вывода (RS, R/W, E) AVRмикроконтроллер выставляет управляющие сигналы. На рис. 2 изображены временные диаграммы этих сигналов при записи команд / данных в контроллер ЖКИ.

При помощи сигнала на линии RS микропроцессор сообщает контроллеру индикатора о том, что именно передается по шине: команда или данные. Cигнал на линии Е является стробом, сопровождающим сигналы на шине "команды / данные". Запись информации в ЖКИ происходит по спаду этого сигнала. Потенциал на управляющем выводе R/W задает направление передачи данных: запись в RAM индикатора (R/W=0) или считывание оттуда

(R/W=1).

Для случая, когда микроконтроллер имеет ограниченное количество линий ввода / вывода, предусмотрен второй вариант подключения ЖКИ с использованием 4-х разрядной шины "команды / данные". При этом каждый байт данных передается по линиям DB4 - DB7 последовательно двумя тетрадами, начиная со старшей.

Контроллер ЖКИ после приема байта команды или байта данных требует некоторого времени (табл. 2) для обработки полученной информации, в течение которого AVRмикроконтроллер не должен выполнять новых передач.

Рис. 2: Запись данных в ЖКИ

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

Если во время цикла записи AVR-микроконтроллер передает в контроллер индикатора код команды, то этот код записывается в регистр команд контроллера ЖКИ, и команда сразу же начинает выполняться. Если AVR-микроконтроллер передает в контроллер ЖКИ данные, которые представляют собой ASCII-коды отображаемых символов, то они записываются в буфер данных (DDRAM), который обычно содержит 80 ячеек (рис. 3). При записи или считывании буфера данных обращение осуществляется к ячейке, на которую в данный момент указывает курсор.

Таблица 2: Система команд контроллера НD4478

 

Код

Время

 

испол

 

 

 

 

 

 

 

 

 

 

 

-

 

 

D

D

D

D

D

D

D

D

Описание команды

ния

R

R/

коман

B

B

B

B

B

B

B

B

 

S W

 

ы

 

 

7

6

5

4

3

2

1

0

 

(fosc=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

250кГ

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

0

0

0

0

0

0

1

Очистить дисплей и установить курсор в нулевую позицию

82мкс

(адрес 0)

до

 

 

 

 

 

 

 

 

 

 

1.64мс

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

0

0

0

0

0

1

*

Установить курсор в нулевую позицию (адрес 0). Установить дисплей относительно буфера DDRAM в начальную позицию. Содержимое DDRAM при этом не меняется.

40мкс до 1.6

0

 

0

 

0

 

0

 

0

 

0

 

0

 

1

 

I/

 

S

 

Установить направление сдвига курсора вправо (I/D=1) или

 

40мкс

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

влево (I/D=0) при записи/чтении очередного кода в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DDRAM. Разрешить (S=1) сдвиг дисплея вместе со сдвигом курсора.

0

0

0

0

0

0

1

D

C

B

0

0

0

0

0

1

S/

R/

*

*

 

 

 

 

 

 

C

L

 

 

0

0

0

0

1

D

N

F

*

*

L

 

 

 

 

 

 

 

 

 

0

0

0

1

ACG

 

 

 

 

0

0

1

ADD

 

 

 

 

 

0

1

B

AC

 

 

 

 

 

 

F

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

Данные

 

 

 

 

 

1

1

Данные

 

 

 

 

 

Включить(D=1)/выключить(D=0) дисплей. Зажечь(C=1)/погасить(C=0) курсор. Изображение курсора сделать мигающим (B=1).

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

Установить разрядность шины данных 4 бита (DL=0) или 8 бит (DL=1), количество строк дисплея - одна (N=0) или две (N=1), шрифт - 5х7 точек (F=0) или 5х10 точек (F=1).

Установка адреса CGRAM. После этой команды данные будут записываться/считываться в/из CGRAM.

Установка адреса DDRAM. После этой команды данные будут записываться/считываться в/из DDRAM.

Чтение состояния busy-флага (BF) и счетчика адреса.

Запись данных в DDRAM или CGRAM.

Чтение данных из DDRAM или CGRAM.

40мкс

40мкс

40мкс

40мкс

40мкс

1мкс

40мкс

40мкс

Примечание:

DDRAMDisplay data RAM - ОЗУ ASCII-кодов, отображаемых символов

CGRAM-Сharacter generator RAM - ОЗУ знакогенератора

Рис. 3: Отображение на дисплее символов, ASCII-коды которых записаны в DDRAM (а - однострочный ЖКИ, б - двустрочный ЖКИ)

Буфер данных имеет больше ячеек, чем число знакомест дисплея. Смещая окно индикатора относительно буфера данных (см. систему команд), можно отображать на дисплее различные области буфера. У двустрочных индикаторов первые 40 ячеек буфера данных, обычно, отображаются на верхней строке дисплея, а вторые 40 ячеек - на нижней строке. Сдвиг окна дисплея относительно буфера данных для верхней и нижней строк происходит синхронно. Курсор будет виден на индикаторе только в том случае, если он попал в зону видимости дисплея (и если предварительно была подана команда отображать курсор).

Кроме DDRAM, контроллер ЖКИ содержит еще один блок памяти - знакогенератор. Его

"прошивка", то есть соответствие ASCII-кодов начертанию символов, обычно имеется в описании индикатора. Пример такой "прошивки" представлен в таблице 3. Знакогенератор состоит из двух частей. Основная его часть представляет собой ПЗУ (CGROM) и ее, следовательно, нельзя изменить. Вторая часть, в которой задаются начертания символов для первых 16-ти кодов таблицы знакогенератора, представляет собой перепрограммируемое ОЗУ(CGRAM). Имеется возможность задать начертание 8 символов, соответствующих кодам 0(8), 1(9), 2(10) ... 7(15). Для каждого из восьми перепрограммируемых символов в CGRAM отводится по 8 ячеек памяти, каждая из которых соответствует одной строке точек в изображении символа. Таким образом, перепрограммируемая часть знакогенератора содержит 64 байта памяти (8х8). Пример кодирования CGRAM для одной буквы приведен на рис. 4.

Рис. 4: Пример кодирования символа

Таблица 3: Кодовая таблица для русифицированного индикатора PC 1202-A

2. Интерфейс ЖКИ с AVR-микроконтроллером

На рис. 5 и рис. 7 приведены две возможные схемы сопряжения ЖКИ и AVRмикроконтроллера. В первой схеме (рис. 5) ЖКИ подключается к AVR как блок внешней памяти данных.

Узел формирования стробирующего сигнала E здесь выполнен так же, как и на фирменных платах STK200, STK300 и использует сигнал записи WR AVRмикроконтроллера и старший разряд адреса A15. Таким образом, информация на индикатор поступает при выполнении AVR-микроконтроллером команды записи данных во внешнюю память с любым адресом, имеющим A15=1.

На рис. 6 представлена временная диаграмма записи данных во внешнюю память AVRмикроконтроллера.

Источник: https://studfile.net/preview/16521289/