unsigned char key_code[4][4]={{'C','D','E','F'}, {'B','3','6','9'}, {'A','2','5','8'}, {'0','1','4','7'}};
Со схемы видно, что для считывания 16-ти клавиш нам потребуется 8 выводов. По сравнению с обычным подключением (один пин одна кнопка) мы выиграем в 16/8=2 раза. Алгоритм считывания будет таков: конфигурируем выводы PB0-PB3 как выхода и подадим на них нулевой уровень, а выводы PC0-PC3, выставим как входа и будем смотреть в какой колонке находиться нажатая клавиша. Далее поменяем все местами. Порты PC0-PC3 будут выходами с нулевым уровнем, а на портах PB0-PB3 будет считывать строку, в которой находиться нажатая клавиша. Зная строку и колонку можно однозначно вычислить клавишу, которая была нажата. Каждой клавише сопоставим код, который будет храниться в 2х мерном массиве 4х4 (строка нажатой клавиши первый индекс массива, колонка - второй):
Но при большом количестве клавиш не хватает ножек. Можно перейти на более «многоногие» контроллеры, но они, как правило, стоят больших денег и в некоторых случаях приходиться заново переписывать проект под них. Рассмотрим решение проблемы нехватки ножек при считывании с клавиатуры, так называемое динамическое считывание. Например, мы имеем 16 клавиш, и хотим считать с них информацию. Хитро соединим их в клавиатурную матрицу, как показано на рисунке ниже:
В прошлой своей заметке я описывал с помощью и вывод на ЖКИ. Написанную выше программу можно легко модифицировать на большее количество кнопок. Следует подсоединить клавиши к свободным выводам и периодически их всех опрашивать.
Написал vakula дата Чт., 07/01/2010 - 22:33
» Матричная клавиатура 4х4 динамическое считывание данных с портов
Больше знаний, больше возможностей.
Матричная клавиатура 4х4 динамическое считывание данных с портов | AVR Lab устройства на микроконтроллерах AVR
Комментариев нет:
Отправить комментарий