В этом руководстве мы собираемся связать клавиатуру 4x4 (16 клавиш) с микроконтроллером ATMEGA32A. Мы знаем, что клавиатура - одно из важнейших устройств ввода, используемых в проектах электроники. Клавиатура - это один из самых простых способов отдавать команды или инструкции электронной системе.
Необходимые компоненты
Аппаратное обеспечение: ATMEGA32, блок питания (5 В), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), конденсатор 100 мкФ, конденсатор 100 нФ, резистор 10 кОм (8 шт.).
Программное обеспечение: Atmel studio 6.1 или Atmel studio 6.2, прогисп или flash magic.
Принципиальная схема и объяснение работы
В схеме PORTB ATMEGA32 подключен к LCD порту данных. Здесь следует не забыть отключить связь JTAG в PORTC или ATMEGA, изменив байты предохранителя, если вы хотите использовать PORTC в качестве обычного порта связи. В LCD 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 микроконтроллера
PIN9 или D2 - PB2 uC
PIN10 или D3 - PB3 uC
PIN11 или D4 - PB4 uC
PIN12 или D5 - PB5 микроконтроллера
PIN13 или D6 - PB6 uC
PIN14 или D7 на PB7 uC
На схеме вы можете видеть, что мы использовали 8-битную связь (D0-D7), однако это не обязательно, мы можем использовать 4-битную связь (D4-D7), но с 4-битной коммуникационной программой становится немного сложнее. Итак, просто наблюдая за таблицей выше, мы подключаем 10 контактов ЖК-дисплея к контроллеру, из которых 8 контактов являются контактами данных и 2 контакта для управления.
Теперь поговорим о клавиатуре, клавиатура - это не что иное, как мультиплексированные клавиши. Кнопки соединены в мультиплексной форме для уменьшения использования контактов в системе управления.
Предположим, у нас есть клавиатура 4x4, в этой клавиатуре у нас 16 кнопок, в нормальных случаях нам нужно 16 контактов контроллера для взаимодействия с 16 кнопками, но это плохо с точки зрения системы управления. Это использование контактов может быть уменьшено путем соединения кнопок в мультиплексной форме.
Например, у нас есть 16 кнопок, и мы хотим прикрепить его к контроллеру, чтобы сформировать клавиатуру, эти клавиши расположены, как показано на рисунке:
Эти кнопки соединены общими столбцами, как показано на рисунке:
Как показано на рисунке, неотмеченные концы каждых четырех кнопок перетаскиваются вместе, образуя столбец, поэтому для 16 клавиш у нас есть четыре столбца.
Если мы забудем о соединениях столбцов выше и соединили общие отмеченные концы каждых четырех кнопок вместе, чтобы сформировать строку:
Как показано на рисунке, для 16 ключей у нас будет четыре ряда, как показано на рисунке.
Теперь, когда они оба видны вместе, мы получаем что-то вроде схемы ниже:
Здесь мы соединили 16 ключей в мультиплексной форме, чтобы уменьшить использование контактов контроллера. По сравнению с первым случаем подключения 16 ключей, нам нужно было 16 контактов на контроллере, но теперь, после мультиплексирования, нам нужно просто 8 контактов контроллера для подключения 16 ключей.
Обычно это то, что представлено внутри клавиатуры:
Как показано на рисунке выше, на указанной клавиатуре имеется 16 клавиш, и каждая из этих клавиш представляет кнопку в конфигурации мультиплексированных кнопок. А также есть 8-контактные соединения, как показано на рисунке выше, символизирующем мультиплексное соединение.
Теперь к работе:
На клавиатуре здесь четыре столбца и четыре строки, для идентификации нажатой кнопки мы воспользуемся методом перекрестных ссылок. Здесь сначала мы собираемся либо подключить все столбцы, либо все строки к vcc, поэтому, если строки подключены к общему vcc, мы собираемся использовать столбцы в качестве входных данных для контроллера.
Теперь, если нажать первую кнопку, как показано на рисунке:
После этого по цепи течет ток, как показано на рисунке ниже:
Итак, у нас высокий уровень C1 для нажатия кнопки. В этот самый момент мы собираемся сместить порты питания и ввода, то есть мы собираемся питать столбцы и принимать строки в качестве входов, При этом будет поток мощности, как показано на рисунке ниже:
Итак, для ряда у нас высокий R1.
На данный момент у нас высокий уровень C1 в первом случае и высокий уровень R1 во втором случае, поэтому у нас есть матричное положение кнопки, отсюда и число «один».
Если будет нажата вторая кнопка, у нас будет столбец C1, но высокая логика, которую мы получим в общем столбце, будет «R2». Итак, у нас будут C1 и R2, следовательно, у нас будет матричное положение второй кнопки.
Вот как мы будем писать программу, мы собираемся подключить восемь контактов клавиатуры к восьми контактам контроллера. И для начала мы запитываем четыре контакта контроллера для питания четырех рядов клавиатуры, в это время остальные четыре контакта используются как входы. Когда кнопка нажата, соответствующий вывод столбца вытянут вверх и, таким образом, вывод контроллера вытянут вверх, это будет распознаваться как изменение входа на питание и питания на ввод, поэтому у нас будут строки в качестве входов.
Таким образом мы получаем нажатие кнопки пользователем. Эта матрица адресов направлена на соответствующий номер, и этот номер отображается на ЖКИ.
Работа взаимодействия клавиатуры с микроконтроллером AVR объясняется шаг за шагом в C-коде, приведенном ниже. Вы также можете проверить: взаимодействие клавиатуры с микроконтроллером 8051.