Таблица 2.4.5 Значения временных характеристик. Операция записи
Параметр | Обозначение | Мин. | Макс. | Единица |
Период сигнала Е | tcycE | 500 | - | нс |
Положительный полупериод сигнала Е | PWEH | 230 | - | нс |
Фронт/спад сигнала Е | tEr, tEf | - | 20 | нс |
Установление адреса | tAS | 40 | - | нс |
Удержание адреса | tAH | 10 | - | нс |
Установление данных | tDSW | 80 | - | нс |
Удержание данных | tDSW | 10 | - | нс |
Таблица 2.4.6 Значения временных характеристик. Операция чтения
Параметр | Обозначение | Мин. | Макс. | Единица |
Период сигнала Е | tcycE | 500 | - | нс |
Положительный полупериод сигнала Е | PWEH | 230 | - | нс |
Фронт/спад сигнала Е | tEr, tEf | - | 20 | нс |
Установление адреса | tAS | 40 | - | нс |
Удержание адреса | tAH | 10 | - | нс |
Установление данных | tDSW | - | 160 | нс |
Удержание данных | tDSW | 5 | - | нс |
Описанные выше операции записи/чтения байта являются базовыми для осуществления обмена с ЖКИ-модулем. Реализация этих двух операций - единственное, что отличает процесс обмена по 8-ми разрядной шине от обмена по 4-х разрядной шине. На основе этих двух операций, реализованных программно (когда модуль подключен к портам Ввода/Вывода какого нибудь устройства), или аппаратно (когда модуль подключен к системной шине), строятся все виды операций программирования и управления.
Управление контроллером ведется посредством интерфейса управляющей системы. Основными объектами взаимодействия являются регистры DR и IR. Выбор адресуемого регистра производится линией RS, если RS = 0 - адресуется регистр команд (IR), если RS = 1 - регистр данных (DR).
Данные через регистр DR, в зависимости от текущего режима, могут помещаться (или прочитываться) в видеопамять (DDRAM) или в ОЗУ знакогенератора (CGRAM) по текущему адресу, указываемому счетчиком адреса (АС). Информация, попадающая в регистр IR, интерпретируется устройством выполнения команд как управляющая последовательность. Прочтение регистра IR возвращает в 7-ми младших разрядах текущее значение счетчика АС, а в старшем разряде флаг занятости (BF).
У контроллера HD44780 существует набор внутренних флагов, определяющих режимы работы различных элементов контроллера (таблица 2.4.7). В таблице 2.4.8 приведены значения управляющих флагов непосредственно после подачи на ЖКИ-модуль напряжения питания. Переопределение значений флагов производится специальными командами, записываемыми в регистр IR, при этом комбинации старших битов определяют группу флагов или команду, а младшие содержат собственно флаги.
Таблица 2.4.7 Флаги, управляющие работой контроллера HD44780
/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 - включено |
С: | курсор в виде подчерка: 0 - выключен, 1 - включен |
В: | курсор в виде мерцающего знакоместа: 0 - выключен, 1 - включен. |
Таблица 2.4.8 Значения управляющих флагов после подачи питания
I/D = 1: | режим увеличения счетчика на 1 |
S = 0: | без сдвига изображения |
D/L = 1: | 8-ми разрядная шина данных |
N = 0: | режим развертки одной строки |
F = 0: | символы с матрицей 5 х 8 точек |
D = 0: | отображение выключено |
С = 0: | курсор в виде подчерка выключен |
В = 0: | курсор в виде мерцающего знакоместа выключен |
Список управляющих комбинаций битов регистра IR и выполняемые ими команды приведены в таблице 2.4.9. Так как на момент включения ЖКИ-модуль ничего не отображает (флаг D = 0), то для того, чтобы вывести какой-либо текст необходимо, как минимум, включить отображение, установив флаг D = 1. Вот пример широко распространенной последовательности для инициализации ЖКИ-модуля: , $OC, 6 (знак "$" перед числом указывает на шестнадцатеричное основание) устанавливает режим отображения 2-х строк с матрицей 5 х 8 точек и работу с 8-ми разрядной шиной данных; $OC включает отображение на экране ЖКИ-модуля, без отображения курсоров; 6 устанавливает режим автоматического перемещения курсора слева-направо после вывода каждого символа.
Таблица2.4.9. Управляющие комбинации битов регистра IR
D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | Назначение | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | Очистка экрана, АС = 0, адресация АС на DDRAM | |
0 | 0 | 0 | 0 | 0 | 0 | 1 | - | АС = 0, адресация на DDRAM, сброшены сдвиги, начало строки адресуется в начале DDRAM | |
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 | - | - | Определение параметров развертки и ширины шины данных | |
0 | 1 | AG | AG | AG | AG | AG | AG | Присвоение счетчику АС адреса в области CGRAM | |
1 | AG | AG | AG | AG | AG | AG | AG | Присвоение счетчику АС адреса в области DDRAM |
Контроллер 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. Чтобы произвести переустановку курсора на нужную позицию, необходимо присвоить АС соответствующее значение (см. таблицу 2.4.9). Здесь есть одна тонкость. Когда производится последовательная запись символов и в результате заполняется вся строка, курсор автоматически переходит на вторую строку, но если необходимо принудительно установить курсор, скажем, на начало второй строки, то будет неверным присвоить АС казалось бы логичное значение (40), правильным является значение (64). Значения адресов DDRAM в диапазоне ...fF (а равно и ...F) являются неопределенными и результаты работы с ними могут быть непредсказуемыми.
Необходимо учитывать, что контроллеры, устанавливаемые на ЖКИ-модули, могут иметь различные наборы символов, причем это может зависеть как от производителя контроллера, так и от модификации данной конкретной модели. Например, фирма Powertip выпускает ЖКИ-модули с четырьмя базовыми модификациями наборов символов: японской, европейской, французской и русской.
Более того, существует как минимум два варианта русского набора символов: контроллер фирмы Hitachi (H2 по маркировке фирмы Powertip) и контроллер фирмы Epson (EH по маркировке Powertip). Контроллер фирмы Hitachi обладает существенным недостатком - у него весьма ограниченный набор русских символов, фактически у него имеются только прописные русские буквы, и даже среди них отсутствует символ "Ф". Напротив, контроллер фирмы Epson содержит полный набор русских символов в прописном и строчном вариантах, поэтому он весьма удобен для отечественных применений. Это свойство контроллеров фирмы Epson обеспечило им заслуженную популярность на российском рынке, поэтому в последнее время основная масса импортируемых в нашу страну ЖКИ-модулей оснащены именно этим контроллером; в качестве примера в таблице 2.4.10 приведен набор символов этого контролера.