Контроллер HD44780 производства Hitachi для управления ЖКИ

Контроллер HD44780 производства Hitachi для управления ЖКИ

Общее описание: Наиболее распространенный контроллер управления алфавитно-цифровым модулем это контроллер HD44780 производства Hitachi. Практически все ведущие производители ЖКИ - Epson, Sanyo, Toshiba, Samsung, Philips выпускают аналоги этого контроллера или совместимые с ним по интерфейсу и командному языку микросхемы либо ЖКИ на базе этих контроллеров. То есть практически можно говорить об HD44780 как о неком промышленном стандарте. Модули с этим контроллером применяются в самых разнообразных устройствах: измерительные приборы, промышленнне, технологическое и медицинское оборудование, офисная техника.

Контроллер поддерживает размер символа 5x7 точек и 5x10 точек. HD44780 может управлять двумя строками по 40 символов (для управления четырехстрочного модуля по 40 символов используют два однотипных контроллера). При существующих стандартах ЖКИ контроллер не накладывает ограничений на количество и комбинации отображаемых символов (их количество может быть от 1 до 80).

Подключение: Контроллер соединяется с ЖКИ через параллельную синхронную шину (8 или 4 линий данных - выбирается программно), через линию выбора операций (R/W), линию выбора регистра (RS), линию стробирования и синхронизации (E). В качестве образца рассмотрим распростроненную модель ЖКИ производства Powertip PC2402. Аналог этой модели выпускается практически всеми производителями ЖКИ модулей. В первую очередь на ЖКИ подается питанеи и проверяется его работоспособность.

Контроллер HD44780

На рисунке 1 показана схема включения, рассчитанная на стандартный диапазон температур. Подстроечный резистор R1 плавно меняет напряжение питоания ЖКИ, что позволяет менять угол поворота жидких кристаллов и как следствие выставлять необходимую контрасность индикатора при необходимом угле обзора. Для применения ЖКИ с расширенным температурным диапазоном, необходимо повышенное напряжение питания. Эта задача решается подачей отрицательного напряжения (максимум -5 V) на вывод Vo. Источник отрицательного напряжение можно реализовать на MAX660, как показано на рисунке 2. После подачи напряжения на модуль и прохождения внутренней инициализации, устройство включается в режиме развертки верхней строки. При изменении напряжения на выводе Vo сегменты плавно меняют свой цвет от прозрачного к непрозрачному, что говорит о правильном подключении модуля питания. ЖКИ правильно отрегулирован, когда изображение сегментов едва проступает на основном фоне. Подсоединятся модул может к 4-х или 8-ми разрядной шине. При этом обмен можно организовать либо с системной шиной, либо через порты ввода-вывода программными средствами.

Контроллер HD44780

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

Контроллер HD44780

В исходном состоянии E=0, R/W=0, значение сигнала RS произвольное, шина данных DB0...DB7 в состоянии высокого импеданса. В промежутках, между операциями обмена E и R/W также должны быть равны 0, в этот момент шина данных свободна и может использоваться в мультиплексном режиме для других целей. Ниже приведены таблицы последовательности действий при выполнении операций чтения-записи. Время выполнения каждого шага не менее 250 нс

Операции записи для 8-ми разрядной шины
1 Установка значения линии RS
2 Вывод значения байта данных на шину DB0...DB7
3 Установка линии Е=1
4 Установка линии Е=0
5 Установка шины DB0...DB7 в состояние HI
Операции чтения для 8-ми разрядной шины
1 Установка значения линии RS
2 Установка линии R/W=1
3 Установка линии Е=1
4 Считывание байта данных с шины DB0...DB7
5 Установка линии Е=0
6 Установка линии R/W=0
Операции записи для 4-х разрядной шины
1 Установка значения линии RS
2 Вывод значения старшей тетрады байта данных DB4...DB7
3 Установка линии Е=1
4 Установка линии Е=0
5 Вывод значения младшей тетрады байта данных DB4...DB7
6 Установка линии Е=1
7 Установка линии Е=0
8 Установка шины DB4...DB7 в состояние HI
Операции чтения для 4-х разрядной шины
1 Установка значения линии RS
2 Установка линии R/W=1
3 Установка линии Е=1
4 Считывание значения старшей тетрады байта данных DB4...DB7
5 Установка линии Е=0
6 Установка линии Е=1
7 Считывание значения младшей тетрады байта данных DB4...DB7
8 Установка линии Е=0
9 Установка линии R/W=0

Описанные операции чтения-записи байта являются базовыми для осуществления обмена данными с ЖКИ. Процесс обмена по 4-х и 8-ми разрядной шиной различается только реализацией этих операций. Эти две операции могут быть реализованны аппаратно, когда модуль подключен к системной шине, или программно, когда он взаимодействует с портами микро-ЭВМ. В таблице ниже приведены допустимые области значений временных интервалов.

Временные характеристики (нс)

Параметр Обозн. Мин. Макс.
Операция чтения
Период сигнала E tcycE 500 -
Положительный полупериод сигнала E PWEH 230 -
Фронт/спад сигнала E tEf, tEr - 20
Установление адреса tAS 40 -
Удержание адреса tAH 10 -
Установление данных tDSW 80 -
Удержание данных tDSH 10 -
Операция записи
Период сигнала E tcycE 500 -
Положительный полупериод сигнала E PWEH 230 -
Фронт/спад сигнала E tEf, tEr - 20
Установление адреса tAS 40 -
Удержание адреса tAH 10 -
Установление данных tDSW - 160
Удержание данных tDHW 5 -

Программирование и управление: На рисунке ниже приведена упрощенная структурная схема контроллера, приведены основные элементы, которые напрямую взаимодействуют с управляющей программой - регистр данных (DR), регистр команд (IR), видеопамять (DDRAM), ОЗУ знакогенератора (CGRAM), счетчик адреса памяти (AC), флаг занятости контроллера. Элементы не взаимодействующие с управляющей программой не так важны для получения общей картины и поэтому пропущены.

Управление контроллером ведется через интерфейс управляющей системы. Основные объекты взаимодействия - регистры DR и IR. Выбор адресуемого регистра осуществляется линией RS, если RS=0 - адресуется регистр команд (IR), если RS=1 - регистр данных (DR). Данные через регистр DR могут помещаться или прочитываться в видеопамять (DDRAM) или в ОЗУ знакогенератора (CGRAM) по текущему адресу, на который указывает счетчик адреса (АС). Информация в регистре IR интерпретируется устройством выполнения команд как управляющая последовательность. Прочтение регистра IR возвращает в 7-ми младших разрядах текущее значение счетчика АС, а в старшем разряде флаг занятости (BF).

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

Контроллер циклически производит обновление информации на ЖКИ, который организован как матрица, состоящая в зависимости от режима работы из 8-ми (одна строка символов 5 х 7 точек), 11-ти (одна строка символов 5 х 10 точек) или 16-ти (две строки символов 5 х 7 точек) строк по 200 сегментов (когда строка насчитывает 40 символов) в каждой. Собственный драйвер конроллера HD44780 имеет только 40 выходов (SEG1...SEG40) и самостоятельно может поддерживать только 8-ми символьные ЖКИ.

Это означает, что ЖКИ-модули форматов до 8 х 2 реализованы на одной единственной микросхеме HD44780, модули, имеющие большее количество символов, содержат дополнительные микросхемы драйверов, например, HD44100, каждая из которых дополнительно предоставляет управление еще 40-ка сегментами. ЖКИ-модули формата 16 х 1 также реализованы с помощью одной единственной микросхемы HD44780, но одна 16-ти символьная строка в них фактически составлена из двух 8-ми символьных. Это усложняет программное управление, ведь строка оказывается логически разорванной посередине, тем не менее, экономически это оправдано, ибо позволило создать ЖКИ-модуль, содержащий всего одну микросхему.

Другой вариант пространственной адресации встречается в 4-х строчных модулях. Из-за проблем разводки токоведущих дорожек, первая и вторая строки этих модулей являются таковыми как обычно, третья же является продолжением первой строки, а четвертая - второй.

Контроллер HD44780

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

Флаги, управляющие работой контроллера HD44780
I/D Режим смещения счетчика адреса АС, 0 - уменьшение, 1 - увеличение
S Флаг режима сдвтга содержимого экрана. 0 - сдвиг экрана не производится, 1 - после записи в DDRAM очередного кода экран сдвигается в направлении, определяемым флагом I/D: 0 - вправо, 1 - влево. При сдвиге не производится изменение содержимого DDRAM. изменяются только внутренние указатели расположения видимого начала строки в DDRAM
S/C Флаг-команда, производящая вместе с флагом R/L операцию сдвига содержимого экрана (так же, как и в предыдущем случае, без изменений в DDRAM) или курсора. Определяет объект смещения: 0 - сдвигается курсор, 1 - сдвигается экран
R/L Флаг-команда, производящая вместе с флагом S/C операцию сдвига экрана или курсора. Уточняет направление сдвига: 0 - влево, 1 - вправо
D/L Флаг, определяющий ширину шины данных: 0 - 4 разряда, 1 - 8 разрядов
N Режим развертки изображения на ЖКИ: 0 - одна строка, 1 - две строки
F Размер матрицы символов: 0 - 5 х 8 точек, 1 - 5 х 10 точек
D Наличие изображения: 0 - выключено, 1 - включено
C Курсор в виде подчерка: 0 - выключен, 1 - включен
B Курсор в виде мерцающего знакоместа: 0 - выключен, 1 - включен
Значения управляющих флагов после подачи питания
I/D=1 Режим увеличения сетчика на 1
S=0 Без сдвига изображения
D/L=1 8-ми разрядная шина данных
N=0 Режим развертки одной строки
F=0 Символы с матрицей 5 х 8 точек
D=0 Отображение выключено
С = 0 Курсор в виде подчерка выключен
В = 0 Курсор в виде мерцающего знакоместа выключен

Список управляющих комбинаций битов регистра IR и выполняемые ими команды приведены в следующей таблице. Так как на момент включения ЖКИ-модуль ничего не отображает (флаг D=0), то для того, чтобы вывести какой-либо текст необходимо, как минимум, включить отображение, установив флаг D=1. Вот пример широко распространенной последовательности для инициализации ЖКИ-модуля: , $OC, 6 (знак $ перед числом указывает на шестнадцатеричное основание). устанавливает режим отображения 2-х строк с матрицей 5 х 8 точек и работу с 8-ми разрядной шиной данных; $OC включает отображение на экране ЖКИ-можуля, без отображения курсоров; 6 устанавливает режим автоматического перемещения курсора слева-направо после вывода каждого символа.

Управляющие комбинации битов регистра IR
Назначение D7 D6 D5 D4 D3 D2 D1 D0
Очистка экрана, АС = 0, адресация АС на DDRAM 0 0 0 0 0 0 0 1
АС = 0, адресация на DDRAM, сброшены сдвиги, начало строки адресуется в начале DDRAM 0 0 0 0 0 0 1 -
Выбирается направление сдвига курсора или экрана 0 0 0 0 0 1 I/D S
Выбирается режим отображения 0 0 0 0 1 D C B
Команда сдвига курсора/экрана 0 0 0 1 S/C R/L - -
Определение параметров развертки и ширины шины данных 0 0 1 DL N F - -
Присвоение счетчику АС адреса в области CGRAM 0 1 AG AG AG AG AG AG
Присвоение счетчику АС адреса в области DDRAM 1 AD AD AD AD AD AD AD

Контроллер HD44780 поддерживает как операции записи так и операции чтения. Чтение регистра DR приводит к загрузке содержимого DDRAM или CGRAM, в зависимости от текущего режима, при этом курсор смещается на одну позицию, как и при записи. Чтение регистра IR возвращает 8 значащих разрядов, причем в 7-ми младших содержится текущее значение счетчика АС (7 разрядов, если адресуется DDRAM, и 6 - если CGRAM), а в старшем - флаг занятости BF. Этот флаг имеет значение 1 когда контроллер занят и 0 - когда свободен.

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

После совершения операции записи или чтения DDRAM и появления после нее признака готовности (BF = 0), прочитанное в этом же цикле (вместе с флагом BF) значение АС скорее всего не будет достоверным. Дело в том, что между появлением признака готовности и вычислением контроллером нового значения АС существует некоторый временной интервал, составляющий около 4 мкс при тактовой частоте контроллера 270 кГц. Поэтому, если необходимо получить истинное значение АС, нужно совершить повторную операцию прочтения IR спустя не менее чем 4 мкс (если контроллер работает на частоте 270 кГц время ожидания необходимо пропорционально увеличить).

Вывод на экран символа производится записью его кода в регистр DR. При этом символ размещается в DDRAM по текущему адресу, указываемому АС, а значение АС увеличивается или уменьшается на 1. Чтобы произвести переустановку курсора на нужную позицию, необходимо присвоить АС соответствующее значение.

Здесь есть одна тонкость. Когда производится последовательная запись символов и в результате заполняется вся строка, курсор автоматически переходит на вторую строку, но если необходимо принудительно установить курсор, скажем, на начало второй стороки, то будет неверным присвоить АС казалось бы логичное значение (40), правильным является значение (64). Значения адресов DDRAM в диапазоне ...fF (а равно и ...F) являются неопределенными и результаты работы с ними могут быть непредсказуемыми.

Необходимо учитывать, что контроллеры, устанавливаемые на ЖКИ-модули, могут иметь различные наборы символов, причем это может зависеть как от производителя контроллера, так и от модификации данной конкретной модели. Например, фирма Powertip выпускает ЖКИ-модули с четырьмя базовыми модификациями наборов символов: японской, европейской, французской и русской.

Более того, существует как минимум два варианта русского набора символов: контроллер фирмы Hitachi (H2 по маркировке фирмы Powertip) и контроллер фирмы Epson (EH по маркировке Powertip). Контроллер фирмы Hitachi обладает существенным недостатком - у него весьма ограниченный набор русских символов, фактически у него имеются только прописные русские буквы, и даже среди них отсутствует символ "Ф". Напротив, контроллер фирмы Epson содержит полный набор русских символов в прописном и строчном вариантах, поэтому он весьма удобен для отечественных применений. Это свойство контроллеров фирмы Epson обеспечило им заслуженную популярность на российском рынке, поэтому в последнее время основная масса импортируемых в нашу страну ЖКИ-модулей оснащены именно этиим контроллером, в качестве примера в таблице приведен набор символов этого контролера.

Контроллер HD44780

Из допустимых для размещения в DDRAM кодов символы с кодами <--DESCRIPTION-->0...7 (и их дубликат с кодами 8...<--DESCRIPTION-->F) имеют специальное назначение - это переопределяемые символы, графическое изображение которых может назначить сам потребитель, разместив соответствующую информацию в области CGRAM. Для программирования доступны 8 переопределяемых символов в режиме с матрицей 5 х 7 точек и 4 с матрицей 5 х 10 (в режиме 5 х 10 переопределяемые символы адресуются кодами DDRAM через один: <--DESCRIPTION-->0, 2, 4, 6). Для кодирования матрицы используются горизонтально "уложенные" байты, пять младших битов которых несут информацию о рисунке ( причем 1 означает, что сегмент будет включен), 4-й разряд каждого из 8-ми (или 11-ти в режиме 5 х 10) байтов матрицы определяет левую колонку символа, а 0-й - правую. Старшие три бита не используются, равно как и старшие пять байтов, составляющих полную область матрицы символа (16 байтов) в режиме 5 х 10 (обратите внимание, что матрица программируемых символов допускает использование полной высоты строки (8 строчек для режима 5 х 7 и 11 строчек для режима 5 х 10), то есть можно размещать точки в области подчеркивающего курсора).

Чтобы определить собственный симол необходимо установить счетчик АС на адрес начала матрицы требуемого символа в CGRAM - <--DESCRIPTION-->0, 8, и т.д. (<--DESCRIPTION-->0, , для режима 5 х 10 точек) - произвести перезапись всех байтов матрицы, начиная с верхней строки. После этого, записав в DDRAM код запрограммированного символа: <--DESCRIPTION-->0, 1, 2 (<--DESCRIPTION-->0, 2, 4 для режима 5 х 10 точек), на экране в соответствующем месте будет отображаться переопределенный символ.

Несколько слов о процессе инициализации ЖКИ-модуля. Производитель контроллера рекомендует выполнять следующую последовательность действий для инициализации. Выдержать паузу не менее 15 мс между установлением рабочего напряжения питания (более 4,5 В) и выполнением каких-либо операций с контроллером.

Первой операцией выполнить команду, выбирающую разрядность шины (это должна быть команда независимо от того, какой разрядности интерфейс вы собираетесь использовать в дальнейшем), причем перед выполнением этой операции не проверять значение флага BF. Далее опять выдержать паузу не менее 4,1 мс и повторить команду выбора разрядности шины, причем перед подачей команды вновь не производить проверку флага BF.

Следующим шагом необходимо вновь выдержать паузу, на этот раз 100 мкс, и в третий раз повторить команду установления разрядности шины, вновь без проверки BF. Эти три операции являются инициализирующими и призваны вывести контроллер в исходный режим работы (то есть перевести в режим работы с 8-ми разрядной шиной) из любого состояния. Следом за ними нормальным порядком (без выдерживания пауз, но с проверкой флага BF) выполняется инициализация режимов работы с выдачей инициализирующей последовательности, аналогичной указанной в таблице 7 (содержащей в том числе команду выбора необходимой разрядности шины).

Необходимо помнить, что когда Вы объявляете режим работы с 4-х разрядной шиной, то есть выдаете команду , то делаете это обычно из 8-ми разрядного режима, который устанавливается автоматически после подачи напряжения питания, а значит вы не сможете адекватно объявить необходимое значение флагов N и F, располагающихся в младшей тетраде команды установки разрядности шины. Поэтому команду необходимо повторить в уже установившемся 4-х разрядном режиме путем последовательной передачи двух тетрад, то есть для 4-х разрядного режима образом.

Литература:
1. LCD Controller/Driver LSI. Data Book. 1994 Hitachi America Ltd.
2. Алфавитно-цифровые индицирующие ЖК-модули фирмы Powertip. Каталог, 1-е издание, 1998 КТЦ-МК
3. Микросхема CE-110. Техническое описание, 1-е издание, 1997 КТЦ-МК
4. DB-CE110. Техническое описание, 1-е издание, 1997 КТЦ-МК


Поиск
Меню раздела