У цьому підручнику ми збираємося взаємодіяти з клавіатурою 4x4 (16 клавіш) з мікроконтролером ATMEGA32A. Ми знаємо, що клавіатура - це один з найважливіших пристроїв введення, що використовується в проектах електроніки. Клавіатура - це один з найпростіших способів передавати команди або вказівки електронній системі.
Потрібні компоненти
Апаратне забезпечення: ATMEGA32, блок живлення (5 в), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), конденсатор 100 мкФ, конденсатор 100 нФ, резистор 10 кОм (8 штук).
Програмне забезпечення: Atmel studio 6.1 або Atmel studio 6.2, прогісп або флеш-магія.
Принципова схема та робоче пояснення
У схемі PORTB ATMEGA32 підключений до РК-порту даних. Тут слід пам’ятати про вимкнення зв’язку JTAG у PORTC від ATMEGA, змінивши байти запобіжників, якщо потрібно використовувати PORTC як звичайний порт зв’язку. У РК-дисплеї 16x2 є 16 штифтів, якщо є підсвічування, якщо немає підсвічування, буде 14 штифтів. Можна підключити або залишити шпильки підсвічування. Тепер у 14 висновках є 8 висновків даних (7-14 або D0-D7), 2 висновки джерела живлення (1 & 2 або VSS & VDD або gnd & + 5v), 3- й висновок для контролю контрасту (VEE-контролює, наскільки товстими повинні бути символи показано) та 3 керуючі штифти (RS & RW & E).
У схемі ви можете помітити, що я взяв лише два керуючі штирі, це надає гнучкість, біт контрасту та READ / WRITE не часто використовуються, тому їх можна замикати на землю. Це дає РК-дисплею найвищий контраст і режим читання. Нам просто потрібно контролювати ENABLE та RS-шпильки, щоб відповідно надсилати символи та дані.
Підключення, які виконуються для РК-дисплея, наведені нижче:
PIN1 або VSS на землю
PIN2 або VDD або VCC до + 5 В потужності
PIN3 або VEE на землю (забезпечує максимальний контраст найкращий для початківця)
PIN4 або RS (реєстрація вибору) до PD6 uC
PIN5 або RW (читання / запис) на землю (переведення РК в режим читання полегшує зв'язок для користувача)
PIN6 або E (увімкнути) для PD5 uC
PIN7 або D0 до PB0 uC
PIN8 або D1 до PB1 uC
PIN9 або D2 до PB2 uC
PIN10 або D3 до PB3 uC
PIN11 або D4 до PB4 uC
PIN12 або D5 до PB5 uC
PIN13 або D6 до PB6 uC
PIN14 або D7 до PB7 з UC
У схемі ви можете бачити, що ми використовували 8-бітовий зв'язок (D0-D7), однак це не є обов'язковим, ми можемо використовувати 4-бітний зв'язок (D4-D7), але з 4-бітовою програмою зв'язку стає трохи складніше. Отже, з простого спостереження за наведеною таблицею ми підключаємо 10 висновків РК-дисплея до контролера, в якому 8 висновків - це висновки для даних і 2 висновки для управління.
Тепер поговоримо про клавіатуру, клавіатура - це не що інше, як мультиплексні клавіші. Кнопки з'єднані в мультиплексованій формі для зменшення використання штифтів системи управління.
Враховуйте, що у нас є клавіатура 4х4, на цій клавіатурі ми маємо 16 кнопок, у звичайних випадках нам потрібні 16 штифтів контролера для інтерфейсу 16 кнопок, але це погано з точки зору системи управління. Це використання штифтів можна зменшити, підключивши кнопки в мультиплексній формі.
Наприклад, розглянемо, що у нас є 16 кнопок, і ми хочемо приєднати його до контролера для формування клавіатури, ці клавіші розташовані так, як показано на малюнку:
Ці кнопки з'єднані загальними стовпцями, як показано на малюнку:
Як показано на малюнку, не позначені кінці кожних чотирьох кнопок перетягуються, щоб утворити стовпець, і тому для 16 клавіш ми маємо чотири стовпці.
Якщо ми забудемо з'єднання стовпців вище та зв'язали загальні позначені кінці кожних чотирьох кнопок, щоб сформувати рядок:
Як показано на малюнку, для 16 клавіш ми матимемо чотири рядки, як показано на малюнку.
Тепер, коли їх обох бачать разом, ми отримуємо щось на зразок наведеної нижче схеми:
Тут ми підключили 16 клавіш у мультиплексованій формі, щоб зменшити використання контактів контролера. У порівнянні з першим випадком підключених 16 ключів нам знадобилося 16 висновків на контролері, але тепер після мультиплексування нам потрібно просто 8 висновків контролера для підключення 16 ключів.
Зазвичай це те, що представлено всередині клавіатури:
Як показано на малюнку вище, у верхній клавіатурі є 16 клавіш, і кожна з цих клавіш являє собою кнопку в мультиплексній конфігурації кнопок. А також є 8 контактних з'єднань, як показано на малюнку вище, що символізує мультиплексне з'єднання.
Тепер для роботи:
Клавіатура тут має чотири стовпці та чотири рядки, для ідентифікації натиснутої кнопки ми будемо використовувати метод перехресного посилання. Тут спочатку ми будемо або підключати всі стовпці, або всі рядки до vcc, тому, якщо рядки підключені до загальної vcc, ми будемо брати стовпці як вхідні дані до контролера.
Тепер, якщо натиснути кнопку 1, як показано на малюнку:
Після цього по ланцюгу протікає струм, як показано на малюнку нижче:
Отже, у нас C1 високий, для натискання кнопки. У цей самий момент ми збираємося перенести порти живлення та введення, тобто, ми будемо живити стовпці та приймати рядки як входи, До цього буде відбуватися потік потужності, як показано на малюнку нижче:
Отже, для ряду у нас R1 високий.
На даний момент у нас C1 високий у першому випадку та R1 високий у другому випадку, тому у нас є матричне положення кнопки, отже, число “один”.
Якщо натиснути другу кнопку, ми матимемо C1 як стовпець, але висока логіка, яку ми отримаємо в загальній колонці, буде "R2". Отже, ми матимемо C1 і R2, отже, матимемо матричне положення другої кнопки.
Ось як ми збираємося писати програму, ми підключаємо вісім контактів клавіатури до восьми контактів контролера. І для початку ми вмикаємо чотири висновки контролера для живлення чотирьох рядів клавіатури, в цей час інші чотири висновки приймаються як входи. Коли кнопка натискається, відповідний штифт стовпчика витягується, і таким чином штифт контролера підтягується, це буде визнано, щоб змінити вхід на потужність і потужність на вхід, тому ми матимемо рядки як входи.
Таким чином ми отримуємо кнопку, натиснуту користувачем. Ці адреси матриці спрямовані на відповідний номер, і цей номер відображається на РК-дисплеї.
Робота взаємодії клавіатури з мікроконтролером avr пояснюється поетапно в коді наведеному нижче. Ви також можете перевірити: взаємодія клавіатури з мікроконтролером 8051.