Рассмотрим теперь построение клавиатуры (рис. 6). Для
её реализации нужно создать схему сканирования матрицы кнопок размером
4х5, то есть из двадцати кнопок. Для сканирования двадцати кнопок
необходим 5-разрядный счётчик (так как только такая разрядность позволит
различить все 20 кнопок ), для упрощения можно, впрочем, взять и
8-разрядный счётчик (его проще строить из стандартных элементов) - при
этом ещё останется и запас для возможного расширения клавиатуры. В
нашем случае счётчик можно построить на основе двух 4-разрядных
счётчиков КР1554ИЕ18, как показано на рисунке 6. От полученного
8-разрядного счётчика для целей сканирования клавиатуры нужно взять
лишь 5 младших разрядов, 2 из которых (0 и 1) будут использованы
для выбора строк, а оставшиеся 3 - для выбора столбцов. Строки
сканируются путём подачи двух младших разрядов счётчика на дешифратор
2х4 (возьмём КР1554ИД14), а с дешифратора выходы идут уже непосредственно
на матрицу клавиш (эти выходы инверсные). 3 оставшихся разряда
счётчика подадим на адресные входы выходного мультиплексора 3х8
(соберём его на основе микросхемы КР1554КП2 как показано на рисунке
6). Этот мультиплексор будет поочерёдно соединять каждый столбец с
триггером для отсечения дребезга контактов, причём в состоянии, когда
к клавиатуре нет обращений, на всех столбцах - “1” (для этого подключаем
столбцы через сопротивление R = 1 кОм (Р1 - 4 - 0,5 - 1 кОм ± 5%В). Когда нажата какая-либо клавиша
на клавиатуре на дешифратор строк пойдёт ток, образующийся при
падении напряжения от 5 до 0В на сопротивлении 1 кОм (считаем, что
рассматриваемая линия дешифратора находится в состоянии “0” - то есть
сканируем именно эту линию), таким образом пойдёт ток IOL=
5/1000 = 5 мА, что не превысит максимального уровня (24 мА), затем на
мультиплексор пойдёт “0”, что и обеспечит выработку сигнала прерывания.
Вообще сигнал прерывания выдаётся с установленного на выходе
мультиплексора D - триггера на вход IRQ3
блока обслуживания прерываний. Этот триггер при нажатии на какую-либо
клавишу производит ещё блокировку счёта на счётчиках. Сброс этого D -
триггера возможен только при получении единичного сигнала с порта Р0
ОМЭВМ (разряд 0). Подавать такой сигнал будет при старте программа
обработки запроса прерывания.
Сканирование клавиатуры будем проводить с помощью сигнала ALE процессора. Этот сигнал дважды присутствует в каждом машинном цикле, то есть идёт с частотой 2 МГц ( за редким исключением, когда частота будет 1 МГц).
При работе программы обслуживания прерывания можно прочитать скэн - код нажатой клавиши из канала В параллельного порта, инициализируемого по сигналу CS3 системного дешифратора. На этот канал заведены все 5 значащих разряда счётчика клавиатуры.
Рассмотрим теперь блок обслуживания прерываний (рис. 7). Он реализован очень просто - это всего лишь схема ИЛИ, собирающая запросы прерываний от трёх источников (IRQ0 - от аварийного датчика, IRQ1 - отказ источника питания, IRQ2 - запрос от клавиатуры). Затем посылется общий запрос прерывания на вход INT0 процессора (разряд 2 порта Р3). Кроме того, чтобы программа обслуживания запроса могла выяснить от какого всё-таки источника пришёл запрос, все 3 сигнала запроса параллельно заводятся в канал А параллельного интерфейса, выбираемого сигналом CS3 системного дешифратора.
Для реализации самого системного дешифратора проанализируем сначала карту распределения адресного пространства. По карте видно, что имеется лишь 4 устройства, которым необходимо подать сигнал CS. Причём различие у всех этих устройств будет лишь в восьмом и девятом разрядах адреса (А8 и А9). Общая характеристика этих устройств - одинаковые адресные разряды А10 и А11, которые можно использовать для выбора самого системного дешифратора (А10 = 0 и А11 = 1). Схема системного дешифратора представлена на рис. 8. За основу дешифратора, как видно из рисунка, взята микросхема КР1554ИД14.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.