Клавіатури - це широко використовувані пристрої введення, що використовуються в різних електроніках та вбудованих проектах. Вони використовуються для отримання вхідних даних у вигляді цифр та алфавітів, і подають їх у систему для подальшої обробки. У цьому підручнику ми збираємось взаємодіяти матричну клавіатуру 4x4 з мікроконтролером 8051.
4X4 матрична клавіатура
Перш ніж ми взаємодіємо клавіатуру з мікроконтролером, спочатку нам слід зрозуміти, як це працює. Матрична клавіатура складається з набору кнопок, які з'єднані між собою. Як і в нашому випадку, ми використовуємо матричну клавіатуру 4X4, в якій є по 4 кнопки в кожному з чотирьох рядків. А клеми кнопок підключені згідно схеми. У першому рядку один термінал з усіх 4-х кнопок з'єднаний разом, а інший термінал з 4-х кнопок представляє кожну з 4 колонок, те саме стосується кожного рядка. Отже, ми отримуємо 8 терміналів для підключення до мікроконтролера.
Клавіатура взаємодії з мікроконтролером 8051 (AT89S52)
Спочатку нам потрібно підключити РК-модуль для відображення даних, які будуть передаватися через KEYPAD, тому, будь ласка, пройдіть статтю «Інтерфейс РК з мікроконтролером 8051» перед тим, як взаємодіяти з KEYPAD.
Як показано на схемі вище, для інтерфейсу клавіатури нам потрібно підключити 8 терміналів клавіатури до будь-якого порту (8 контактів) мікроконтролера. Як ми підключили термінали клавіатури до порту 1 8051. Кожного разу, коли натискається будь-яка кнопка, нам потрібно визначити місце розташування цієї кнопки, означає відповідний РЯДОК СТОЛБЦЯ Отримавши розташування кнопки, ми можемо відповідно надрукувати символ.
Тепер питання полягає в тому, як отримати розташування натиснутої кнопки? Я збираюся пояснити це в кроках нижче, а також хочу, щоб ви подивились на код:
1. Спочатку ми зробили всі рядки до рівня логіки 0, а всі стовпці - до рівня логіки 1.
2. Кожного разу, коли ми натискаємо кнопку, стовпець і рядок, що відповідають цій кнопці, замикається і робить відповідний стовпець логічним рівнем 0. Оскільки цей стовпець підключається (замикається) до рядка, який знаходиться на рівні логіки 0. Отже, ми отримуємо колонка № Див. Функцію main ().
3. Тепер нам потрібно знайти номер рядка, тому ми створили чотири функції, що відповідають кожному стовпцю. Як якщо натиснути будь-яку кнопку стовпця один, ми викликаємо функцію row_finder1 (), щоб знайти номер рядка.
4. У функції row_finder1 () ми змінили рівні логіки, це означає, що всі рядки дорівнюють 1, а стовпці дорівнюють 0. Тепер рядок натиснутої кнопки повинен дорівнювати 0, оскільки вона стала підключеною (короткою) до стовпця, кнопка якого натиснута, і всі стовпці мають логіку 0. Отже, ми просканували всі рядки на 0.
5. Отже, коли ми знаходимо рядок за логікою 0, це означає, що це рядок натиснутої кнопки. Отже, тепер у нас є стовпець No (отриманий на кроці 2) та рядок No, і ми можемо надрукувати No. цієї кнопки за допомогою функції lcd_data.
Ця процедура діє при кожному натисканні кнопки, і ми використовуємо в той час як (1), щоб постійно перевіряти, натиснута кнопка чи ні.