Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Часть 2 - Микропроцессорная техника.doc
Скачиваний:
42
Добавлен:
23.09.2019
Размер:
981.5 Кб
Скачать

Подключение матричной клавиатуры

Если требуется большое количество управляющих кнопок, то вам просто может не хватить имеющихся выводов. В этом случае не обойтись без матрицы клавиш. На рис. 1.3 приведена схема подключения клавиатуры из 32 клавиш путем составления из них матрицы.

Напоминаю, что цепи сброса и цепи, связанные с кварцевым резонатором, на этой схеме, как и в большинстве последующих примеров, условно не показаны. Как видно из схемы, для подключения тридцати двух клавиш используется всего лишь 12 выводов. В данном конкретном случае порт Р1 работает как порт ввода. Четыре младшие разряда порта РЗ работают на вывод. Возможен и обратный вариант (Р1 на вывод, РЗ на ввод). Но мы выбрали тот вариант, который наиболее рационален с точки зрения удобства составления программы. Давайте рассмотрим подробнее принцип работы схемы.

В исходном состоянии на выводы РЗ.О...РЗ.З подается сигнал логической единицы. На все выводы порта PI (P1.0...P1.7) также поданы единицы. Но во втором случае единицы поданы для того, чтобы обеспечить возможность работы линий в режиме ввода.

Контроллер периодически опрашивает состояние клавиш путем изменения сигналов на выходах РЗ.О...РЗ.З и считывания сигнала из порта Р1. В случае обнаружения замыкания контактов одной из клавиш, программа выполняет закрепленные за этой клавишей действия. В случае, если при опросе клавиатуры обнаружится несколько одновременно нажатых клавиш, это считается ошибкой и никаких действий не выполняется. Если ни одна клавиша не нажата, никаких действий также не выполняется. Такой алгоритм

используется в большинстве современных клавиатур. Каким же образом осуществляется опрос клавиш? Процедура опроса клавиш поочередно переводит одну из линий Р3.0...РЗ.З в нулевое состояние. Сначала в нулевое состояние переводится линия РЗ.О. Сразу после этого контроллер производит чтение числа из порта Р1. Если ни одна из клавиш не нажата, то все разряды считанного числа будут равны единице (считанное число будет равно 0FFH). Если хотя бы одна из клавиш К1...К8 окажется нажатой, то число, прочитанное из порта Р1, будет отличаться от значения 0FFH. Предположим, что мы нажали клавишу К1. Тогда сигнал логического нуля с выхода РЗ.О поступит на вход Р1.0 и младший разряд считанного числа окажется равным нулю. В этом случае процессор из порта Р1 прочитает 0FEH. Нажатие любых других клавиш этой вертикали (К2...К8) приведет к обнулению других разрядов считываемого числа. В результате для разных комбинаций клавиш мы получим разные коды.

Аналогичным образом микроконтроллер опрашивает остальные вертикали клавиш. То есть, на следующем этапе, процессор выставляет ноль на линию Р3.1, а линию РЗ.О возвращает в единичное состояние. После этого считанное из порта Р1 число будет определять состояние клавиш К9...К16. Затем ноль выставляется на линию Р3.2 и проверяется состояние клавиш К17...К24. И в заключение ноль выставляется на линию РЗ.З и проверяется состояние клавиш К25...К32. Анализируя полученные при этом коды можно вычислить номер нажатой клавиши.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]