Подключение клавиатуры и устройств индикации к микро-ЭВМ
Клавиатура компьютера представляет собой набор механических контактов (открытых или герконовых), контактов на основе токопроводящей резины, емкостных датчиков или датчиков на основе эффекта Холла. Состояние кнопки фиксируется в триггере, выход которого присоединяется к одной из линий шины данных микропроцессора. На рисунке 4.13,а показана схема подключения контакта к шине микропроцессора. Из схемы видно, что в отпущенном состоянии на входе D–триггера присутствует уровень логической 1 и триггер принимает состояние «1». При нажатии кнопки триггер принимает нулевое состоянии. Недостатком такой схемы является наличие эффекта «дребезга» контакта за счет того, что в момент нажатия ключа подвижный пружинистый контакт несколько раз отскакивает от неподвижного, прежде чем установиться в устойчивое состояние. В результате «дребезга» наблюдается расщепление единичного потенциала в момент смены состояния и возможно неверное фиксирование состояния кнопки. Дребезг контакта может быть устранен программно путем считывания состояния триггера с некоторой задержкой после замыкания контакта. На рисунке 4.13 б) показана схема бездребезгового формирования состояния кнопки клавиатуры.
а) | б) |
Рисунок 4.13 - Схемы подключения контакта клавиатуры к МП |
Если клавиатура имеет N контактов, то для фиксации ее состояния требуется N триггеров или N/8 регистров. Организация клавиатуры, при которой на каждый контакт требуется свой входной триггер, носит название «линейного» подключения. Более экономной, с точки зрения затрат клавиатурных регистров, является матричная организация клавиатуры, которая применяется практически во всех типах клавиатур. При этом контакты клавиатуры располагаются в узлах матрицы размером n´m, где n,m – соответственно количество строк и столбцов. Схема подключения клавиатуры в виде матрицы показана на рисунке 4.14.
В качестве устройств вывода Увыв и ввода Увв используются регистры, выполненные на D–триггерах. Если выходные шины Увыв имеют нулевой потенциал, то схема подключения контакта кнопки ничем не отличается от рисунка 4.13а. При разомкнутых контактах клавиатуры триггеры регистра Увв находятся в состоянии «1». При замыкании одного из контактов он соединяет вход одного из соответствующего триггера УВв с нулевым потенциалом и тот переходит в нулевое состояние.
Во всех случаях при организации ввода информации с клавиатуры в ЭВМ решается ряд задач к которым можно отнести:
1) определение факта нажатия клавиши на клавиатуре;
2) определение номера нажатой клавиши;
3) осуществляется передачу управления на соответствующую программу.
Определение факта нажатия клавиши может быть осуществлено с помощью последовательных операций.
1. Записать нули в разрядные ячейки выходного устройства.
2. Считать содержание разрядов входного устройства.
3. Повторять слова, если во всех разрядах УВВ записаны единицы.
Вариант программы определения факта нажатия на одну из клавиш имеет вид:
Адрес | Машинный код | Метка | Мнемокод | Комментарий |
3E F8 | M1 | MVI A, 11111000 | Занести 0 в младшие три разряда аккумулятора | |
D3 KBDOT | OUT KBDOT | Записать 0 в выходное устройство с адресом KBDOT | ||
DB KBDIN | IN KBDIN | Получить число со входного устройства с адресом KBDIN | ||
E6 07 | ANI 00000111 | Очистить старшие пять разрядов аккумулятора | ||
FE 07 | CPI 00000111 | Проверить, есть ли в младших трех разрядах аккумулятора 0 | ||
080А | CA 0008 | JZ M1 | Если нет, то идти на М1 | |
080В | C3 0D08 | DONE | JMP DONE | Конец |
Для определения номера нажатой клавиши необходимо нулевой потенциал подать только на одну из горизонтальных линий матрицы (путем записи единицы в соответствующий триггер Увыв), а на остальных должна быть «1» и определять ячейку регистра УВв, которая приняла состояние «1». Затем по очереди перемещать «0» в Увыв (сканировать УВыв) и определять разряд Увв с нулевым значением.