Когда мы хотим связать одну кнопку с микроконтроллером, ему нужен один контакт GPIO. Но когда мы хотим подключить много кнопок, например, 9, 12 или 16 и т. д., тогда нам необходимо использовать столько же контактов GPIO микроконтроллера.
Чтобы сохранить некоторые выводы GPIO микроконтроллера, мы можем использовать матричную клавиатуру. Матричная клавиатура — это не что иное, как расположение клавиш в ряд и столбец.
Например. если мы хотим подключить 16 кнопок к микроконтроллеру, нам потребуется 16 контактов GPIO, но если мы используем матричную клавиатуру 4×4, нам потребуется только 8 контактов GPIO микроконтроллера.
Структура модуля матричной клавиатуры 4×4
Модуль клавиатуры сделан в виде матрицы, где строки и столбцы пересекаются. Когда происходит нажатие кнопки, ключ кнопки замыкает в месте пересечения строку и столбец. Если нажатия не было, то и связи между строкой и столбцом не происходит.
Работа с матричной клавиатурой
Для того чтобы обнаружить нажатую клавишу, микроконтроллер все время должен сканировать ключи клавиш. Сканирование происходит по следующему алгоритму:
- Микроконтроллер заземляет все строки, устанавливая 0 на выходные контакты (R1, R2, R3 и R4), а затем считывает столбцы (C1, C2, C3 и C4), показанные на рисунке ниже.
- В случае, когда данные считанные из столбцов, равны = 1 1 1 1, ни одна кнопка клавиатуры не была нажата, тогда процесс сканирования продолжается до тех пор, пока не будет обнаружено нажатие клавиши.
- Теперь рассмотрим выделенную клавишу на рис. выше, когда она нажимается. После нажатия клавиши происходит замыкание строки со столбцом, показанным ниже.
- В случае нажатия клавиши в одном из битов столбца установится ноль. Например, если C1:C4 = 1 0 1 1, это означает, что была нажата клавиша в столбце с идентификатором C2.
- После того как было зафиксировано нажатие клавиши, микроконтроллер выполнит процесс ее идентификации.
Процесс определения нажатой кнопки
Начиная с верхнего ряда, микроконтроллер заземлит его, подав низкий уровень только на ряд R1.
Теперь прочитайте столбцы, если все прочитанные данные равны 1, ни одна клавиша в этой строке не нажата, и процесс продолжается для следующей строки.
Итак, теперь заземлите следующий ряд, R2. Прочитайте столбцы, проверьте наличие нуля, и этот процесс продолжается до тех пор, пока строка не будет идентифицирована.
Например. В приведенном выше случае мы получим строку 2, в которой столбец не равен 1 1 1 1.
Итак, после идентификации строки, в которой была нажата клавиша, мы можем легко узнать клавишу по значению строки и столбца.
Подключение клавиатуры с использованием одного провода
Можно подключить клавиатуру любого размера с помощью всего одного аналогового контакта. Он основан на схеме с делителем напряжения. Узнать какая кнопка нажата можно по уровню напряжения на аналоговом входе микроконтроллера.
Например. Интерфейс клавиатуры 4×4 с одним проводом, как показано ниже.
Примечание
Комбинации номиналов резисторов могут быть разными.