Главная » Статьи » Как подключить |
На страницах этого сайта уже была представлена работа по созданию и использованию клавиатуры, но она была сенсорная. Те, кому нужен вариант попроще, чаще выбирают стандартные кнопочные клавиатуры, в которых кнопки соединены матрицей. Такое соединение кнопок позволяет сократить число выводов необходимых для подключения к микроконтроллеру. Чаще всего встречаются клавиатуры 3х4 и 4х4 с 12-ю и 16-ю кнопками, соответственно. У меня в руках оказалась клавиатура 4х4. Работу с ней сейчас и рассмотрим. У меня оказалась вот такая клавиатура с мембранными контактами. Хороша тем, что в толщину составляет всего 1 мм и легко может приклеиваться к нужным поверхностям. Потыкав по кнопкам, с помощью мультиметра установил как соединены кнопки внутри клавиатуры. Для сканирования матричных клавиатур в Bascom-AVR существует специальная функция Getkbd(). Эта команда заточена под использование клавиатур 4х4, поэтому она использует все 8 выводов одного порта микроконтроллера. И в случае использования клавиатур c меньшим числом кнопок стоит это учитывать.
Конфигурирование команды заключается в назначении порта, к которому будет подключена клавиатура, время прохождения дребезга контактов и задержка после определения нажатия к примеру, в следующей строке:
Config Kbd = Portd , Debounce = 20 , Delay = 100 сконфигурировано подключение клавиатуры к PortD, время дребезга установлено 20 мс, время задержки после нажатия 100 мс
Эта команда берет на себя всю работу по сканированию строк клавиатуры и возвращает переменной номер нажатой клавиши от 0 до 15. Если нажатия на кнопку не зафиксировано, тогда функция вернет число 16. Дальше, в зависимости от того как соединены кнопки, может потребоваться узнать символ нажатой кнопки.
В приведенном ниже примере, сканирование клавиатуры происходит с частотой 10 Гц и находится в главном цикле программы. Результат нажатий выводится на ЖК дисплей.
$regfile = "m8def.dat"
$crystal = 1000000 'конфигурация дисплея Config Lcdpin=Pin,Rs=Portc.0,E=Portc.1,Db4=Portc.2,Db5=Portc.3,Db6=Portc.4,Db7=Portc.5 Config Lcd = 20 * 4 Cursor Off Cls 'конфигурация клавиатуры Config Kbd = Portd , Debounce = 20 , Delay = 100 'переменные Dim Key_char As Byte 'номер нажатой клавиши Dim Key_str As String * 1 'символ нажатой клавиши на клавиатуре Dim Result As String * 20 'результат нажатий на клавиатуру Result = "" 'Главный цикл программы Do Key_char = Getkbd() 'клавиша не нажата и функция возвращает переменной значение 16 If Key_char <> 16 Then 'если переменная не равна 16, значит была нажата кнопка Key_str = Lookupstr(key_char , Keyboard_data) 'вытаскиваем символ нажатой клавиши Result = Result + Key_str End If Locate 1 , 1 Lcd Result 'выводим на дисплей результат нажатий Waitms 100 Loop End Keyboard_data: Data "1" , "4" , "7" , "*" , "2" , "5" , "8" , "0" Data "3" , "6" , "9" , "#" , "A" , "B" , "C" , "D" А вот тестовая схемка, по которой подключаются дисплей и клавиатура: Еще в схему не мешало бы добавить токоограничительные резисторы на линию клавиатуры, номиналом 100-150 Ом. На всякий случай, но для пробы сойдет и так (главное не нажимать сразу несколько кнопок) Подключаем, прошиваем, тыкаем на кнопки и видим результат - на дисплей выводятся символы нажатых клавиш: Позже добавлю демонстрационное видео, как только найду чем снять в приличном качестве. А пока можно скачать архив в котором находится файл для симуляции в Proteus и прошивка. | |
Просмотров: 37463 | Комментарии: 23 | Рейтинг: 5.0/7 |
Всего комментариев: 23 | ||||||||||||||||||||
| ||||||||||||||||||||
Проекты [46] |
Как подключить [32] |
Инструменты [3] |
Полезная информация [18] |
Объявления [3] |