Процедура опроса состояния клавиатуры. Выше уже отмечалось, в МК- системах, реализующих непрерывное управление, процедуре KEYBRD должна предшествовать процедура опроса состояния клавиатуры ASC. Пример программной реализации процедуры ASC, оформленной в виде подпрограммы, приведен ниже.
Выходной параметр передается в основную программу через флаг переноса С, который устанавливается, если хотя бы одна клавиша нажата:
; ВЕРСИЯ ДЛЯ МК48
ASK: CLR A ; СБРОС АККУМУЛЯТОРА
CLR C ; СБРОС ФЛАГА ПЕРЕНОСА
OUTL P1, A ; ВЫВОД БАЙТА “ВСЕ НУЛИ” ;ДЛЯ ОДНОВРЕМЕННОГО ОПРОСА ВСЕХ КЛАВИШ
IN A, P2 ; ВВОД БАЙТА ВОЗВРАТА
CPL A ; ИНВЕРСИЯ БАЙТА ВОЗВРАТА
JNZ EXIT ; ВЫХОД, ЕСЛИ НЕТ НАЖАТОЙ ;КЛАВИШИ
CPL C ; УСТАНОВКА ФЛАГА ПЕРЕНОСА EXIT: RET ; ВОЗВРАТ
Подпрограмма производит одновременный опрос всех клавиш. В случае, если хотя бы одна клавиша нажата (байт возврата - не все единицы), устанавливается флаг переноса, иначе - сбрасывается.
10.2. Вывод и отображение информации
Индикаторы. Многие МК-устройства требуют наличия только простейшей индикации типа ДА/НЕТ, ВКЛ/ВЫКЛ. Такая индикация реализуется на основе отдельных светодиодов.
Семисегментные индикаторы (ССИ) широко используются для отображения цифровой и буквенной информации. Семь отображающих элементов позволяют высвечивать десятичные и шестнадцатиричные цифры, некоторые буквы русского и латинского алфавитов, а также некоторые специальные знаки. Структура ССИ и способы ее подключения к МК показаны на рис. 7. Для засветки одного сегмента большинства типов ССИ необходимо обеспечить протекание через сегмент тока 10-15 мА при напряжении 2,0 -2,5 В. Низкая нагрузочная способность МК не допускает прямого соединения с ССИ. В качестве промежуточных усилителей тока могут использоваться логические элементы серии К155 или интегральные схемы преобразователей кодов для управления ССИ.
Преобразование двоичных кодов в коды для ССИ может осуществлятся либо программно, либо аппаратурно с использованием преобразователей К514ИД1, К514ИД2, 133ПП4, 564ИД5.
Матричные светодиодные индикаторы (МСИ) используются для отображения алфавитно-цифровой информации. Каждый из таких МСИ, выполненный в виде интегральной микросхемы, представляет собой матрицу светодиодов размеренностью m x n, где n-число колонок, m-число строк матрицы. Наибольшее распространение получили МСИ с размеренностью матрицы 7 х 5 и 9 х 7 (рис. 8).
а) – внешний вид; б) – схемы; в, г) – способы подключения к МК
Для включения одного светодиода матрицы необходимо обеспечить протекание через него тока 10-15 мА при напряжении 2,0 - 2,5 В. Подключение матричного индикатора к МК осуществляется через управляемые схемы формирования тока колонок и строк (рис. 9).
Для отображения многосимвольной информации используются линейные (однострочные) дисплеи. Такие дисплеи представляют собой "линейку", смонтированную из отдельных ССИ или МСИ. Число знакомест дисплея определяется в соответствии с требованиями к МК-системе.
Существует два способа организации интерфейса МК с линейным дисплеем: статический и динамический.
Первый требует наличия на входах каждого индикатора специальных буферных регистров для хранения кодов выводимых символов. Естественно, что с увеличением разрядности дисплея возрастает число дополнительных микросхем, а следовательно, и стоимость МК-системы.
Второй способ (динамический) основан на том, что любой световой индикатор является инерционным прибором, а человеческому глазу отображаемая на дисплее информация, если ее обновлять с частотой примерно 20 раз в секунду, представляется неизменяемой.
Рис.8. Матричный индикатор: Рис.9. Схема подключения
а)-общий вид; б)-схема индикатора к МК (а) и цепь
индикатора протекания тока через светодиод (б)
Динамический способ вывода информации на дисплей требует значительно меньших аппаратурных затрат, но более сложного программного обеспечения. Именно этот способ организации вывода информации получил преимущественное распространение в МК-системах.
Вывод символа на ССИ. При использовании внешних (по отношению к МК) схем преобразователей кодов процедура индикации одного символа сводится к выдаче двоичного кода символа в соответствующий порт вывода МК.
При программной перекодировке МК должен поставить в соответствие двоичному коду индицируемого символа определенный байт индикации (БИ), который и выдается в выходной порт. Перекодировку удобнее всего проводить табличным способом. Для этого байты индикации размещаются в смежных ячейках РПП в порядке возрастания исходных двоичных кодов символов. Такое расположение байтов индикации упрощает процесс перекодировки, так как в этом случае требуемый байт находится в строке таблицы с номером, равным двоичному коду индицируемого символа:
; ВЕРСИЯ ДЛЯ МК48
; ПРОГРАММА СТАТИЧЕСКОЙ ИНДИКАЦИИ СИМВОЛА
; НА СЕМИСЕГМЕНТНОМ ИНДИКАТОРЕ
SYMB: MOV A, @R0 ;ЗАГРУЗКА В АККУМУЛЯТОР КОДА ;СИМВОЛА
ADD A, #CODTBL ;ФОРМИРОВАНИЕ АДРЕСА ;БАЙТА ИНДИКАЦИИ
MOVP3 A, @A ;СЧИТЫВАНИЕ БАЙТА ;ИНДИКАЦИИ ИЗ ТАБЛИЦЫ
OUTL P1, A ;ВЫДАЧА БАЙТА ИНДИКАЦИИ ;НА ИНДИКАТОР ЧЕРЕЗ ПОРТ 1
Приведенный фрагмент программы рассчитан на то, что гашение ССИ осуществляется при инициализации системы. Одновременно с этим в регистре R0 формируется адрес ячейки CODDE, в которой хранится двоичный код индицируемого символа:
INIT: . . .
ORL P2, #0FFH ; ГАШЕНИЕ ИНДИКАТОРА
MOV R0, #CODE ; ЗАГРУЗКА В R0 АДРЕСА CODE
. . .
Вывод информации на линейный дисплей ССИ. При динамической индикации байт индикации поступает одновременно на выходы всех ССИ, образующих линейный дисплей, а выбор знакоместа осуществляется байтом выборки, представляющим собой код "бегущий нуль" (рис. 10). При бездешифраторном способе формирования байта выборки максимальное число знакомест линейного дисплея ограниченно разрядностью порта. Использование для формирования кода "бегущий нуль" внешнего дешифратора позволяет значительно увеличить число знакомест линейного дисплея.
Для динамической индикации группы символов удобно воспользоваться процедурой индикации символа, оформив ее в виде параметрической подпрограммы.
Входными параметрами для подпрограммы DISPLY является исходный код отображаемого символа и номер знакоместа, на которое осуществляется вывод. Исходный код символа задается текущим адресом в массиве CODE (регистр R0), а номер знакоместа - текущим значением байта выборки (регистр R2) и значением счетчика знакомест (регистр R7).
; ВЕРСИЯ ДЛЯ МК 48
DSPLY:MOV A, #0FFH ;БЛАНКИРОВАНИЕ (ГАШЕНИЕ
OUTL BUS, A ;ВСЕХ ИНДИКАТОРОВ)
MOV A, @R0 ;ВЫБОРКА КОДА СИМВОЛА
ADD A, #CODTBL ;ПЕРЕКОДИРОВКА СИМВОЛА
MOVP3 A, @A
OUTL P1, A ;ВЫВОД БАЙТА ИНДИКАЦИИ
MOV A, R2
OUTL BUS, A ;ВЫВОД БАЙТА ВЫБОРКИ
RL A ;СДВИГ БАЙТА ВЫБОРКИ
MOV R2, A ;В СТОРОНУ СТАРШИХ БИТ
INC R0 ;ПРОДВИЖЕНИЕ ПО МАССИВУ ;CODE
DJNZ R7, EXIT ;ДЕКРЕМЕНТ СЧЕТЧИКА ;ЗНАКОМЕСТ, И ВЫХОД, ЕСЛИ НЕ НУЛЬ
INITD:MOV R2, #0FEH ;ЗАГРУЗКА В R2 ИСХОДНОГО ;БАЙТА ВЫБОРКИ
MOV R7, #8 ;ЗАГРУЗКА СЧЕТЧИКА ;ЗНАКОМЕСТ
MOV R0, #CODE ;ЗАГРУЗКА В R0 НАЧАЛЬНОГО ;АДРЕСА МАССИВА CODE
EXIT: RET ; ВОЗВРАТ
Рис. 10. Линейный дисплей на семисегментных светодиодных индикаторахПодпрограмма DISPLY реализует выборку кода очередного символа из РПД (исходные коды символов должны быть размещены в последовательно расположенных ячейках памяти), его перекодировку и отображение на текущем знакоместе. Для получения яркой и ровной (немигающей) индикации необходимо обеспечить: во-первых, запрет выборки знакомест на время изменения байта индикации в порте 1 (блокирование), во-вторых, регенерацию изображения на каждом знакоместе с частотой не менее 20 раз в секунду, т.е. обращение к подпрограмме DISPLY через каждые 50/N - мс, где N - число знакомест на дисплее. Бланкирование осуществляется выдачей байта выборки "все единицы”. Требуемая частота регенерации изображения обеспечивается основной программой МК-системы, если она организованна в соответствии со структурой:
INIT: . . . ;ИНИЦИАЛИЗАЦИЯ
CALL INITD ;ФОРМИРОВАНИЕ ИСХОДНЫХ ;ПАРАМЕТРОВ ДЛЯ ПОДПРОГРАММЫ DISPLY
. . .
CALL DIAPLY ;ВЫВОД ПЕРВОГО СИМВОЛА
;ФРАГМЕНТ ОСНОВНОЙ ПРОГРАММЫ ДЛИТЕЛЬНОСТЬЮ ;НЕ БОЛЕЕ 50 / N МС
. . .
CALL DISPLY ;ВЫВОД ВТОРОГО СИМВОЛА
;ФРАГМЕНТ ОСНОВНОЙ ПРОГРАММЫ ДЛИТЕЛЬНОСТЬЮ ;НЕ БОЛЕЕ 50 / N МС
. . .
CALL DISPLY ;ВЫВОД ТРЕТЬЕГО СИМВОЛА
. . .
CALL DISPLY ;ВЫВОД N - ГО ;СИМВОЛА
;ФРАГМЕНТ ОСНОВНОЙ ПРОГРАММЫ ДЛИТЕЛЬНОСТЬЮ ;НЕ БОЛЕЕ 50 / N МС
. . .
CALL DIAPLY ;ВЫВОД ПЕРВОГО СИМВОЛА . . .
Требуемая частота обращений к подпрограмме DISPLY может быть обеспеченна также с помощью прерывания от таймера.
Приложение 1. Перечень основных стандартов
Обозначение стандарта Наименование стандарта
ГОСТ 2.001-70 ЕСКД. Общие положения.
ГОСТ 2.102-68 ЕСКД. Виды и комплектность
конструкторских документов.
ГОСТ 2.103-68 ЕСКД. Стадии разработки.
ГОСТ 2.104-68 ЕСКД. Основные надписи.
ГОСТ 2.105-79 ЕСКД. Общие требования к
текстовым документам.
ГОСТ 2.106-68 ЕСКД. Текстовке документы.
ГОСТ 2.108-68 ЕСКД. Спецификация.
ГОСТ 2.109-73 ЕСКД. Основные требования к
Чертежам.
ГОСТ 2.201-80 ЕСКД. Обозначение изделий
и конструкторских документов.
ГОСТ 2.301-68 ЕСКД. Форматы.
ГОСТ 2.302-68 ЕСКД. Масштабы.
ГОСТ 2.303-68 ЕСКД. Линии.