Андрей Кузнецов
Окончание, начало в КиТ №2, 2000
Вакуумно-флуоресцентные дисплеи фирмы IEE
Система команд дисплеев 036Х2 фирмы IEE
Система команд обеспечивает управление курсором, выбор символов из кодовой таблицы встроенного знакогенератора, включение/выключение режимов скроллинга и служебных режимов. Полный список команд приводится в табл. 2.
Таблица 2. Система команд дисплеев серии Century036X2
Шестнадцатеричный код команды |
Команда |
Число байтов |
Примечание |
0 |
Нулевая (Null) |
1 |
Холостая команда |
1 |
Чтение идентификатора (Read Display Identification) |
1 |
Чтение идентификационного кода и формата дисплея |
2 |
Чтение контрольной суммы (Read Software Check Sum) |
1 |
|
3 |
Чтение местоположения курсора (Read Cursor Location) |
1 |
|
4 |
Чтение данных текущего местоположения курсора и инкремент (Read Data at Present Location) |
1 |
|
5 |
Чтение местоположения курсора и инкремент (Read Cursor Location and Increment) |
1 |
|
6 |
Не используется |
|
|
7 |
Формирование звукового сигнала (Bell/Alarm Output) |
1 |
Формирует на выходе Alarm-сигнал длительностью 160 мс |
8 |
Возврат курсора (Backspace Cursor) |
1 |
|
9 |
Курсор вправо (Advance Cursor) |
1 |
|
0A |
Перевод строки (Line Feed) |
1 |
Имеет несколько режимов. Режим определяется командой 11h |
0B |
Не используется |
|
|
0С |
Не используется |
|
|
0D |
Возврат каретки (Carriage Return) |
1 |
Имеет несколько режимов. Режим определяется командой 37h |
0E |
Отключить курсор (Cursor off) |
1 |
Курсор невидимый |
0F |
Включить курсор (Cursor on)* |
1 |
Курсор видимый |
10 |
Выключение заданной строки из режима скроллинга (Scroll Line Lock) |
2 |
Выключает заданную строку из режима скроллинга |
11 |
Установка режима вертикального скроллинга (Vertical Scroll Mode)* |
1 |
Устанавливает режим вертикального скроллинга и отключает режим горизонтального |
12 |
Не используется |
|
|
13 |
Установка режима горизонтального скроллинга (Horizontal Scroll Mode) |
1 |
Устанавливает режим горизонтального скроллинга и отключает режим вертикального |
14 |
Сброс (Reset) |
1 |
|
15 |
Очистка экрана и установка курсора в стартовую позицию |
1 |
(Clear Display and Home Cursor)* |
16 |
Возврат курсора в стартовую позицию (Cursor Home) |
1 |
|
17 |
Установка 7-го бита данных в состояние логической 1 только для следующего байта (Set Data Bit 7 High for Next Only) |
1 |
Для отображения символа из кодовой таблицы |
18 |
Запись символа, определяемого пользователем (User Defined Character) |
7 |
Позволяет записать до 8 символов, определяемых пользователем, с возможностью послежующего отображения |
19 |
Установка А0 в состояние логической 1 только для следующего байта (Set Address Bit High for Next Byte Only) |
1 |
Применяется при работе по последовательному каналу совместно с командами 30h...3Fh |
1A |
Курсор вверх на одну линию (Cursor Up One Line) |
1 |
|
1B |
Перемещение курсора в определенную позицию |
2 |
(Move Cursor to Designated Location) |
1C |
Выбор страницы европейских символов (Select European Character Set)* |
1 |
Выбирает кодовую страницу, загружаемую по адресам A0...DF |
1D |
Выбор страницы символов Katakana (Select Katakana Character Set) |
1 |
Выбирает кодовую страницу, загружаемую по адресам A0...DF |
1E |
Выбор страницы символов кириллицы (Select Cyrillic Character Set) |
1 |
Выбирает кодовую страницу, загружаемую по адресам A0...DF |
1F |
Выбор страницы символов Hebrew (Select Hebrew Character Set) |
1 |
Выбирает кодовую страницу, загружаемую по адресам A0...DF |
30 |
Программная установка уровня яркости (Set Display Screen or Column Brighness Level) |
3 |
Программно устанавливает уровень яркости отдельного столбца или экрана |
31 |
Установка режима мигания символов (Begin Blinking Characters or Underline) |
2 |
Устанавливает частоту мигания заданного символа или подчеркивания |
32 |
Запрет режима мигания символов (End Blinking Characters or Underline) |
1 |
Запрещает режим мигания заданного симола или строки |
33 |
Выключение самого индикатора (Blank Display Screen) |
1 |
Гасит индикатор без стирания видеопамяти |
34 |
Включение самого индикатора (Unblank Display Screen) |
1 |
Включает экран |
35 |
Разрешение служебных символов (Set Period, Comma or Triangle On) |
2 |
Только для дисплея 036Х2-121 |
36 |
Сброс атрибутов мигания и стирание данных в данной строке (Erase Line Data and Reset Blink Attribute) |
2 |
|
37 |
Установка режимов команд Возврат каретки и Перевод строки (Set Carriage Return and Line Feed Definions) |
2 |
Устанавливает режимы команд Возврат аретки и Перевод строки |
38 |
Не используется |
|
|
39 |
Не используется |
|
|
3А |
Установка направления формирования слов справа налево (Set Right to Left Data Entry) |
1 |
Для языка Hebrew (иврит) |
3В |
Установка направления формирования слов слева направо (Set Left to Right Data Entry)* |
1 |
Для европеских и японского языков |
3С |
Включение режима пониженного энергопотребления (Screen Saver On) |
1 |
|
3D |
Выключение режима пониженного энергопотребления (Screnn Saver Off) |
1 |
|
3E |
Включение режима самотестирования (Self-test On) |
1 |
|
3F |
Выключение режима самотестирования (Self-test Off) |
1 |
|
* Данные режимы установлены в дисплеях серии 036Х2 по умолчанию.
При использовании параллельного интерфейса при пересылке команд 00h..1Fh линия А0 должна находиться в состоянии логического 0; при пересылке команд 30h..3Fh линия А0 должна находиться в состоянии логической 1. При использовании последовательного интерфейса каждой из команд, имеющих код 30h..3Fh, должна предшествовать команда 19h. Рассмотрим более подробно основные команды. Операции, выполняемые большинством команд, легко определяются по названию команды, однако для некоторых из них будет приведено расширенное описание. Для изучения работы дисплея удобно пользоваться схемой на рис. 9, где задействованы сигналы RD, А0 и CS. Дисплей подключается к параллельному интерфейсу платы 5600 фирмы Octagon Systems. Базовый адрес платы — 100Н, порт А используется для формирования сигналов данных, порт В — для формирования сигналов WR (разряд В.2) и A0 (разряд В.0). Для проверки работы дисплея через последовательный интерфейс можно использовать схему, показанную на рис. 7. Проверочная программа написана на языке CAMBASIC-V Octagon Systems, однако ее несложно повторить и на любом другом языке программирования. Большинство команд являются однобайтовыми, то есть для их выполнения необходимо передать в дисплей только один байт. Для проверки работы подобных команд можно использовать программу, приведенную далее. Для проверки работы двухбайтовых команд можно использовать модифицированную версию программы или выполнить тестовую программу два раза. В приведенном примере задержка, формирующая длительность импульса WR, равна 0,1 с. Для реальных программ, написанных на других языках программирования, задержки могут быть и меньше, однако следует иметь в виду, что запись в регистр дисплея производится по заднему фронту сигнала WR, минимальная длительность которого должна составлять не менее 120 нс (рис. 6).
Рис. 6. Подключение к одному параллельному порту двух дисплеев. Использование сигнала CS
Рис. 7. Схема подлючения дисплея к последовательному порту
- Группа команд управления курсором
1.1. Команды Гашения и Включения курсора (коды 0Eh и 0Fh). Проще всего проверить, воспринимает ли дисплей данные, можно при помощи команд Гашения и Включения курсора. Для этого следует запустить тестовую программу, и на приглашение «input HEX code of command» ввести 0Еh, а на приглашение «input code A0, 0 or 1» ввести 0h. Курсор должен погаснуть. Если же после этого аналогичным образом ввести команду Включения курсора 0Fh, то курсор должен вновь засветиться.
Рис. 9. Схема подключения дисплея 036Х2 к плате 5600
1.2. Команды перемещения курсора Курсор вправо (код 09h), Курсор влево (код 08h), Курсор вверх на одну линию (код 1Ah) и Перевод строки (код 0Аh). К этой подгруппе также относятся команды Возврат каретки (код 0Dh), Возврат курсора в стартовую позицию (Cursor Home, код 16h) и команда Стереть информацию и установить курсор в стартовую позицию (код 15h). Следует заметить, что команда Курсор влево (Backspace) не перемещает курсор вверх в многострочных дисплеях, а режимы работы команд Возврат каретки и Перевод строки определяются командой 37h.
Проверить работу команд данной подгруппы можно аналогично проверке работы команд Гашения и Включения курсора. На линии А0 должен быть уровень логического 0.
1.3. Команда Перемещение курсора в определенную позицию (код 1Bh) является более сложной, так как состоит из двух байтов. Она позволяет перемещать курсор в любую позицию на экране. Первый байт команды состоит из кода команды 1Вh, а второй указывает на позицию, в которую необходимо переместить курсор. Позиции нумеруются в шестнадцатеричном коде слева направо сверху вниз, левая верхняя позиция имеет номер 00h. Если, например, для дисплея, имеющего 4 строки по 20 символов, необходимо переместить курсор в третью позицию второй строки, последовательность команд будет иметь вид: 1Вh, 16h (23-я позиция в шестнадцатеричном коде).
- Служебные команды
2.1. В первую подгруппу входят команды Установка режима вертикального скроллинга (код 11h), Установка режима горизонтального скроллинга (код 13h), Выключение заданной линии из режима скроллинга (код 10h) и команда Установка параметров команд Возврат каретки и Перевод строки (код 37h). При этом в командах установки режимов скроллинга для однострочных дисплеев соответствующий скроллинг будет включен записью последующего символа при полностью заполненной строке. Для многострочных дисплеев горизонтальный и вертикальный скроллинг будет включен только после записи последнего символа в нижней строке. Команда Выключение заданной линии из режима скроллинга является двухбайтовой и выключает из режима вертикального скроллинга строку (строки), указанную во втором байте команды.
Таблица 3. Кодировка второго байта команды Выключение заданной линии из режима скроллинга (Scroll Line Lock, код 10h)
Код 2-го байта |
Функция |
00h |
Отключение линии 1 |
01h |
Отключение линий 1 и 2 |
02h |
Отключение линий 1, 2, 3 |
03h |
Отключение линий 1, 2, 3, 4 |
В табл. 3 приведены значения, которые может принимать второй байт. Команда Установка параметров команд Возврат каретки и Перевод строки также является двухбайтовой и определяет, что последует после выполнения соответствующих команд. Так, например, они могут быть объединены, то есть вызов любой из них приводит к последовательному выполнению обеих (табл. 4).
Таблица 4. Кодировка второго байта команды Установка режимов команд Возврат каретки и Перевод строки (код 37h)
Код 2-го байта команды |
Вызов команды Перевод строки приведет к выполнению следующих операций |
Вызов команды Возврат каретки приведет к выполнению следующих операций |
00h |
Перевод строки |
Возврат каретки |
01h |
Перевод строки+Возврат каретки |
Возврат каретки |
02h |
Перевод строки |
Возврат каретки+Перевод строки |
03h |
Перевод строки+Возврат каретки |
Возврат каретки+Перевод строки |
2.2. Команды второй подгруппы устанавливают/сбрасывают режим мигания символов (коды 31h и 32h), отвечают за программное включение/выключение режима тестирования (коды 3Eh и 3Fh). В эту подгруппу входят также команды включения/выключения режима пониженного энергопотребления (коды 3Сh, 3Dh) и самого индикатора (коды 33h и 34h). В двухбайтовой команде Установки режима мигания символа второй байт определяет частоту мигания (табл. 5).
Таблица 5. Кодировка второго байтаа команды Установка режима мигания символов (код 31h)
Частота мигания |
Код |
Без мигания |
00h |
1 Гц |
01h |
2 Гц |
02h |
4 Гц |
04h |
2.3. Команды Установка уровня яркости (код 30h) и Сброс атрибутов мигания и стирание данных в данной строке (код 36h) образуют третью подгруппу.
Команда Программная установка уровня яркости является трехбайтовой и определяет уровень яркости свечения для определенной колонки дисплея или всего дисплея в целом. Первый байт команды — собственно сам код команды 30h, второй — код колонки, для которой будет изменяться уровень яркости (00h — первая колонка, FFh — для всего дисплея). Третий байт определяет уровень яркости (табл. 6).
Таблица 6. Кодировка третьего байта команды Программная установка уровня яркости (код 30h)
Код |
Уровень яркости |
00h |
100% |
01h |
76% |
02h |
60% |
03h |
45% |
04h |
33% |
05h |
25% |
06h |
18% |
07h |
12% |
Команда Сброс атрибутов мигания и стирание данных в данной строке выполняет очистку данных и отключение режима мигания в одной или нескольких строках дисплея. Команда является двухбайтовой и содержит во втором байте код строки (строк), которую необходимо очистить. Кодировка строк (табл. 7) осуществляется путем установки логической 1 в младшей тетраде, причем младшему биту (биту 0) соответствует верхняя (первая) строка, а старшему (биту 3) — нижняя (четвертая строка дисплея).
2.4. Отдельно в этом списке стоят команды Системного сброса (RESET, код 14h) и Установки А0 в состояние логической 1 только для следующего байта (код 19h), применяемой при последовательной передаче данных.
- Команды, отвечающие за отображение символов и выбор кодовых страниц
знакогенератора
Как уже указывалось, дисплеи Century серии 036Х2 содержат встроенный знакогенератор, в том числе позволяющий отображать и символы кириллицы. Однако при более близком рассмотрении обнаруживается, что, кроме кириллицы, в памяти дисплеев также есть страницы символов, встречающихся в европейских языках, японская кодовая таблица Katakana, таблица символов Hebrew (рис. 10).
Рис. 10. Кодовые таблицы для дисплеев 036Х2. Основная кодовая таблица ASCII (всегда загружена). Примечание. UDC - символ, определяемый пользователем. Европейская кодовая таблица (загружена сразу). Для переустановки использовать команду 1C Katakana. Для выбора использовать команду 1D Кириллица. Для выбора использовать команду 1Е. Иврит. Для выбора использовать команду 1F
Одним словом, дисплеи разрабатывали истинные интернационалисты! Впрочем, с точки зрения знакогенератора, один недостаток все-таки есть — кодовая страница кириллицы занимает другое адресное пространство по отношению к общепринятой кодировке в странах СНГ. То есть для отображения символов кириллицы необходимо написание перекодировщика или при небольших объемах отображаемой информации можно просто использовать коды, применяемые в дисплее, без оглядки на компьютерную кодировку. Отображение символа, расположенного в основной части кодовой таблицы, производится очень просто: для этого необходимо только выдать в дисплей код, соответствующий выбранному символу. Например, для отображения в текущем поле цифры «3» следует запустить тестовую программу и ввести код цифры «3» 33h. (При пересылке кодов символов на линии А0 должен быть уровень логического 0!) Если же необходимо отобразить символ, расположенный в одной из кодовых таблиц, нужно сначала загрузить соответствующую кодовую таблицу, а затем выдать код символа. Например, если необходимо отобразить в текущем поле символ «Ю», в дисплей нужно послать последовательность 1 Dh (выбор кириллицы). При желании можно использовать команду Записи символа, определяемого пользователем. Дисплей позволяет записать восемь таких символов, а затем при необходимости их отобразить на экране. Символы записываются в ОЗУ и при выключении питания пропадают. Данная команда состоит из семи байтов. Первый байт представляет код команды 18h, второй байт определяет адрес символа (для режима Intel F6h..FFh). Оставшиеся пять байтов последовательно заполняют матрицу символа 5х7 точек (рис.11).
Порядок размещения точек в матрице данных
Байт |
Данные |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
3 |
33 |
15 |
34 |
16 |
35 |
17 |
0 |
18 |
4 |
29 |
11 |
30 |
12 |
31 |
13 |
32 |
14 |
5 |
25 |
7 |
26 |
8 |
27 |
9 |
28 |
10 |
6 |
21 |
3 |
22 |
4 |
23 |
5 |
24 |
6 |
7 |
0 |
0 |
0 |
0 |
19 |
1 |
20 |
2 |
|
Порядок размещения точек в матрице символов
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
2 |
1 |
0 |
17 |
0 |
|
Рис. 11. Пример отображения символа, определяемого пользователем, с помощью команды 18h
Практическое применение дисплеев
Так как дисплеи работают в расширенном температурном диапазоне, логично их использовать совместно с аппаратурой фирмы Octagon. При этом для подключения их по параллельному интерфейсу к принтерному порту и плате 5600 необходимо только сделать несложный заказной кабель. Если же необходимо применять дисплей совместно с клавиатурой типа КР-3, то можно использовать схему, показанную на рис. 12. Следует учитывать, что 8 линий данных будет использовать дисплей, а три линии вывода дисплей будет делить с клавиатурой. При этом конфликтов возникать не будет, так как в один момент времени производится либо сканирование клавиатуры, либо запись информации в дисплей. При записи информации в дисплей приемный порт клавиатуры на сигналы не реагирует, а при сканировании клавиатуры производится последовательная установка каждой из четырех линий столбцов в состояние логического 0, причем остальные три линии будут иметь высокий уровень. Таким образом, при сканировании никогда не возникнет ситуация, при которой низкий уровень будет на линиях 1 и 3 одновременно (сигналы CS и WR соответственно). Диоды VD предназначены для предотвращения случайного замыкания между собой столбцов, а соответственно, и выходных управляющих линий при одновременном нажатии двух клавиш в одной строке, что может привести к сбоям в работе дисплея.
Рис. 12. Совместное применение дисплеев серии 036Х2 и клавиатуры КР-3 при их подключении к плате 5600
Много возможностей предоставляет также работа по последовательному интерфейсу. Например, можно использовать дисплеи 036Х2 совместно с адресуемыми модулями ADAM-4521 (рис. 13), при этом дисплеи можно соединить в сеть и организовать систему удаленных терминалов, причем на каждом дисплее может высвечиваться своя информация.
Рис. 13. Включение дисплеев серии 036Х2 в сеть RS-485 через модули ADAM-4521
Конечно, отведенные рамки не позволяют подробно описать все функции и варианты применения дисплеев, однако автор надеется, что сумел убедить читателя в главном: данные индикаторы просты в подключении и программировании, что позволяет работать с ними даже начинающему разработчику. В то же время инженеру с опытом они дают возможность строить весьма сложные устройства отображения для различных систем.
andrey@prosoft.ru
http://www.prosoft.ru
|