Матричная клавиатура

О подключении матричной клавиатуры, чаще всего 4х4, к микроконтроллерам AVR написано немеряно постов. Кто-то в своих разработках пользуется готовыми библиотеками, кто-то пишет свои. Я отношусь к последним, хотя перед написанием любой программы внимательно изучаю уже готовые по тематике. При написании библиотек для себя  я стараюсь делать их максимально простыми и универсальными.  В представленном здесь примере обработки матричной клавиатуры использован следующий принцип.
В микроконтроллере для обслуживания столбцов матрицы разряды портов используются как входы с pull-up резисторами, а для обслуживания строк — как выходы с лог. «1». Поочерёдно на каждую строку подаётся лог. «0»,  при этом проверяется состояние столбцов. Зная номер строки с «нулём» — a, находим столбец с «нулём» — b;  из этого делается вывод, что нажата клавиша Sa-b. Как видите ничего сложного.
Примеры программной реализации вышеописанного алгоритма я неоднократно встречал в интернете. Но в них всегда была привязка к конкретным портам, по крайней мере строк или столбцов. У меня в проекте, в заголовочном файле, для управления столбцами и строками можно назначить любые свободные разряды любых портов. Т.е. нет привязки к конкретным портам — это очень удобно! Для того, чтобы собрать схему на макете или использовать в своём устройстве, в файлах kk.h и lcd.h распределите разряды портов для обслуживания клавиатуры и управления ЖК? и будет вам счастье! Пример чисто демонстрационный: выводит на ЖК? символ нажатой клавиши (я использовал телефонную тастатуру 3×4). Столбцы и строки распихал по контроллеру в случайном порядке.
Функции файла kk.c — это заготовки. Поэтому к их применению в своих проектах подходите творчески. Проще всего вызывать функцию опроса клавиатуры с определённой периодичностью по таймеру (раз в 50 ms) — таким образом решится заодно и проблема дребезга контактов.
Также не составит труда изменить/дополнить функции при другом количестве строк или/и столбцов.

В архиве папка с проектом.

Успехов, уважаемые коллеги!

Запись опубликована в рубрике Микроконтроллерный конструктор с метками . Добавьте в закладки постоянную ссылку.

8 комментариев на «Матричная клавиатура»

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.