Клавиатурите са широко използвани входни устройства, използвани в различни електроника и вградени проекти. Те се използват за приемане на входове под формата на числа и букви и ги подават в системата за по-нататъшна обработка. В този урок ще свържем матрична клавиатура 4x4 с микроконтролер 8051.
4X4 матрична клавиатура
Преди да свържем клавиатурата с микроконтролера, първо трябва да разберем как работи. Матричната клавиатура се състои от набор от бутони, които са свързани помежду си. Както в нашия случай, ние използваме 4X4 матрична клавиатура, в която има по 4 бутона във всеки от четирите реда. И клемите на бутоните са свързани според схемата. В първия ред един терминал от всичките 4 бутона е свързан заедно, а друг терминал от 4 бутона представлява всяка от 4 колони, същото важи и за всеки ред. Така получаваме 8 терминала за свързване с микроконтролер.
Интерфейсна клавиатура с микроконтролер 8051 (AT89S52)
Първо трябва да свържем LCD модул, за да покажем данните, които ще бъдат подадени чрез KEYPAD, така че, моля, преминете през статията "LCD Interfacing with 8051 Microcontroller", преди да свържете KEYPAD.
Както е показано на горната схема, за да свържем клавиатурата, трябва да свържем 8 терминала на клавиатурата към всеки порт (8 пина) на микроконтролера. Подобно на това, че сме свързали терминали на клавиатурата към порт 1 от 8051. Винаги, когато се натисне който и да е бутон, трябва да получим местоположението на бутона, означава съответния ROW a COLUMN No. След като получим местоположението на бутона, можем съответно да отпечатаме символа.
Сега въпросът е как да се получи местоположението на натиснатия бутон? Ще обясня това в стъпките по-долу и също така искам да разгледате кода:
1. Първо направихме всички редове до ниво логика 0 и всички колони до ниво логика 1.
2. Всеки път, когато натиснем бутон, колона и ред, съответстващи на този бутон, се късоват и превръщат съответната колона в логическо ниво 0. Тъй като тази колона се свързва (късо) с реда, който е на логическо ниво 0. Така получаваме колона бр. Вижте основната () функция.
3. Сега трябва да намерим номера на реда, така че сме създали четири функции, съответстващи на всяка колона. Подобно на натискането на който и да е бутон от първа колона, ние извикваме функцията row_finder1 (), за да намерим номера на реда.
4. Във функцията row_finder1 () обърнахме логическите нива, означава, че сега всички редове са 1, а колоните са 0. Сега редът на натиснатия бутон трябва да е 0, защото той е свързан (късо) с колоната, чийто бутон е натиснат, и всички колони са на 0 логика. Така че сканирахме всички редове за 0.
5. Така че, когато намерим реда в логика 0, означава, че това е редът на натиснатия бутон. Така че сега имаме колона № (в стъпка 2) и ред № и можем да отпечатаме номер. на този бутон с помощта на функцията lcd_data.
Същата процедура следва при всяко натискане на бутон и ние използваме while (1), за да проверяваме непрекъснато дали бутонът е натиснат или не.