Процедура ввода цифры с клавиатуры. Опрос матрицы двоичных датчиков

Процедура ввода числа с клавиатуры состоит из ряда частных процедур: ожидания нажатия клавиши, сканирования, устранения дребезга контактов, ожидания освобождения нажатой клавиши, обна­ружения одновременного нажатия двух и более клавиш, определения веса нажатой клавиши (идентификация). Особенности реализации этих процедур при работе с клавиатурой вызваны тем, что группы клавиш объединены в матрицу 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; просмотров: 328;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.