Процедура ввода цифры с клавиатуры. Опрос матрицы двоичных датчиков
Процедура ввода числа с клавиатуры состоит из ряда частных процедур: ожидания нажатия клавиши, сканирования, устранения дребезга контактов, ожидания освобождения нажатой клавиши, обнаружения одновременного нажатия двух и более клавиш, определения веса нажатой клавиши (идентификация). Особенности реализации этих процедур при работе с клавиатурой вызваны тем, что группы клавиш объединены в матрицу 4х4 (рис. 61).
Вертикальные линии К1 (колонки или столбцы) являются выходными, а горизонтальные линииCi (строки матрицы) - входными Для МП-контроллера. Один вывод каждой клавиши соединен с одной Из колонок Ki, а другой - с одной из строк Ci матрицы. Аналогичным способом в матрицу могут быть включены автономные двоичные датчики объекта управления, когда их много.
Сканирование. Частная процедура сканирования служит для обнаружения нажатой клавиши и последующей ее идентификации. Процедура состоит в последовательной выборке и считывании кода столбца строк матрицы клавиатуры. БСА представлена на рисунке 62.
Рисунок 61 – Структура клавиатуры 4 х 4 и схема подключения ее к МП-контроллеру; ША - первый разряд шины адреса
Выборка столбца осуществляется выдачей в выходной порт слова выборки, формирующего в каждый момент времени значение логического 0 только на одной из вертикальных линий матрицы KI (активный столбец). На всех остальных вертикальных линиях матрицы должен быть сформирован уровень логической единицы. Столбцы выбираются последовательно, начиная с КО. Для этого МП-контроллер обеспечивает последовательную выдачу через порт 1 слов выборки бегущий нуль, т.е. последовательность кодов 1110, 1101, 1011, 0111, формируемую операциями сдвига. Для матриц большой размерности используется аппаратный способ формирования слов выборки бегущий нуль. К выходному порту подключается дешифратор, последовательность слов выборки будет иметь вид 00, 01, 10,11 и может быть сформирована программным счетчиком.
После каждой новой генерации слов выборки горизонтальные линии должны быть опрошены МП-контроллером. Если при опросе горизонтальная линия Ci приобретет значение 0 (активная строка), то имеется возможность программным путем определить нажатую клавишу, так как сигнал на входной горизонтальной линии будет иметь значение 0 только в том случае, если нажатая клавиша соединяет ее с вертикальной линией матрицы, на которой в данный момент времени присутствует уровень 0. МП-контроллер выполняет сканирование матрицы клавиатуры до тех пор, пока не обнаружит нажатую клавишу, после чего реализуется переход к частной процедуре устранения дребезга контакта.
Рисунок 62 – Схема алгоритма частной процедуры сканирования
Фрагмент программы сканирования:
SCAN: | MVI | A,OFFH ; | слово выборки – 11111110 |
SCAN1: | MOV | B,A ; | сохранение копии СВ в регистре В |
OUT | 01H ; | выдача СВ | |
IN | 01H ; | считывание строк | |
CPI | OEFH ; | анализ состояния клавиш | |
JNZ | SCAN2 | ||
MOV | A,B | ||
RLC | ; сдвиг | ||
CPL | OEFH | ; опрошен последний столбец матрицы | |
JNZ | SCAN1 | ||
JMP | SCAN | ||
SCAN2: | MOV | C,A | ; сохранение кода активной строки |
;в регистре С | |||
DBOUNCE: | ;начало частной процедуры DBOUNCE |
В результате выполнения фрагмента программы SCAN в регистре 0 хранится код активной строки, т.е. код, содержащий нуль в разряде, соответствующем номеру строки, на пересечении которой с активным столбцом обнаружена нажатая клавиша и единицы во всех остальных разрядах.
Устранение дребезга контактов при вводе символа с клавиатуры реализуется программой временной задержки величиной 10-50 мс, после чего МП-контроллер переходит к частной процедуре ожидания освобождения нажатой клавиши.
Поскольку столбец, в котором обнаружена нажатая клавиша, известен, частная процедура ожидания освобождения нажатой клавиши в клавиатуре выполняется аналогично одноименной процедуре для группы кнопок, т.е. путем многократного считывания строк матрицы.
На рисунке 63. представлена БСА, а программа имеет вид:
WAITOP: | MOV | A,B | ; загрузка CВ в аккумулятор |
OUT | 01H | ; вывод СВ | |
WAIT01: | IN | 01H | ; считывание строк |
CPI | OEFH | ; анализ состояния клавиш | |
JNZ | WAIT01 | ; если нажатая клавиша, то ждать | |
KEYW: | ; начало частной процедуры | ||
; определения веса нажатой клавиши | |||
Дата добавления: 2019-02-07; просмотров: 333;