Малаток-меню
Авторизация

Наш опрос
Мини-чат
200
Статистика


Наш линк
Malatok.at.ua
Полезные ссылки
Это может быть интересно
[
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Stalker753, Викр, Дмытрохан  
Форум » РАДИОТЕХНИКА » Полезные устройства » Подключение матричной клавиатуры 4х4 к микроконтроллеру
Подключение матричной клавиатуры 4х4 к микроконтроллеру
incubus Дата: Суббота, 14.12.2013, 22:16 | Сообщение # 1
Почетный друг сайта
Группа: Модераторы
Сообщений: 190
Награды: 4
Репутация: 200
Замечания: 0%
Статус: Офлайн
На страницах этого сайта уже была представлена работа по созданию и использованию клавиатуры, но она была сенсорная. Те, кому нужен вариант попроще, чаще выбирают стандартные кнопочные
клавиатуры, в которых кнопки соединены матрицей. Такое соединение кнопок
позволяет сократить число выводов необходимых для подключения к
микроконтроллеру.
 
Чаще всего встречаются клавиатуры 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 и прошивка.


С дураком спорить бесполезно!
 
Форум » РАДИОТЕХНИКА » Полезные устройства » Подключение матричной клавиатуры 4х4 к микроконтроллеру
  • Страница 1 из 1
  • 1
Поиск:
Новый ответ
Имя:
Текст сообщения:
Опции сообщения:
Код безопасности:
Яндекс.Метрика
24 log 24 LOG statistick
счетчик посещений
Если вы видите это,
то ваш браузер устарел
и не поддерживает технологий
CSS 3.0