Клавиатуры - широко используемые устройства ввода, используемые в различных проектах электроники и встраиваемых систем. Они используются для ввода входных данных в виде чисел и альбабетов и передачи их в систему для дальнейшей обработки. В этом уроке мы собираемся соединить матричную клавиатуру 4x4 с микроконтроллером 8051.
Матричная клавиатура 4X4
Перед тем как соединить клавиатуру с микроконтроллером, сначала нам нужно понять, как она работает. Матричная клавиатура состоит из набора нажимных кнопок, которые соединены между собой. Как и в нашем случае, мы используем матричную клавиатуру 4X4, в которой по 4 кнопки в каждом из четырех рядов. А клеммы кнопок подключены согласно схеме. В первом ряду одна клемма из всех 4 кнопок соединена вместе, а другая клемма из 4 кнопок представляет каждый из 4 столбцов, то же самое касается каждой строки. Итак, мы получаем 8 клемм для подключения микроконтроллера.
Сопряжение клавиатуры с микроконтроллером 8051 (AT89S52)
Сначала нам нужно подключить ЖК-модуль для отображения данных, которые будут передаваться через КЛАВИАТУРУ, поэтому, пожалуйста, прочтите статью «Сопряжение ЖК-дисплея с микроконтроллером 8051», прежде чем подключать КЛАВИАТУРУ.
Как показано на приведенной выше принципиальной схеме, для взаимодействия с клавиатурой нам необходимо подключить 8 клемм клавиатуры к любому порту (8 контактов) микроконтроллера. Подобно тому, как мы подключили терминалы клавиатуры к порту 1 8051. Каждый раз, когда нажимается какая-либо кнопка, нам нужно получить местоположение кнопки, что означает соответствующий ROW и COLUMN no. Как только мы узнаем расположение кнопки, мы можем соответствующим образом распечатать символ.
Теперь вопрос, как узнать расположение нажатой кнопки? Я собираюсь объяснить это в следующих шагах, а также хочу, чтобы вы посмотрели на код:
1. Сначала мы перевели все строки на логический уровень 0 и все столбцы на логический уровень 1.
2. Всякий раз, когда мы нажимаем кнопку, столбец и строка, соответствующие этой кнопке, замыкаются и переводят соответствующий столбец на логический уровень 0. Поскольку этот столбец подключается (замыкается) к строке, которая находится на логическом уровне 0. Итак, мы получаем столбец нет. См. Функцию main ().
3. Теперь нам нужно найти номер строки, поэтому мы создали четыре функции, соответствующие каждому столбцу. Как и при нажатии любой кнопки первого столбца, мы вызываем функцию row_finder1 (), чтобы найти номер строки.
4. В функции row_finder1 () мы изменили логические уровни на противоположные, это означает, что теперь все строки равны 1, а столбцы - 0. Теперь строка нажатой кнопки должна быть равна 0, потому что она стала подключенной (замкнутой) к столбцу, кнопка которого нажата., и все столбцы имеют нулевую логику. Итак, мы просканировали все строки на предмет 0.
5. Таким образом, всякий раз, когда мы находим строку с логическим 0, это означает, что это строка нажатой кнопки. Итак, теперь у нас есть номер столбца (полученный на шаге 2) и номер строки, и мы можем вывести номер. этой кнопки с помощью функции lcd_data.
Такая же процедура выполняется для каждого нажатия кнопки, и мы используем while (1), чтобы постоянно проверять, нажата кнопка или нет.