пятница, 8 февраля 2013 г.

из чего состоит микроконтроллер клавиатуры

#include <avr/io.h>//стандартная библиотека ввода/вывода#include <avr/interrupt.h>//библиотека с прерываниями #define RS 2//RS=PD2 управляющий сигнал ЖКИ#define E 3//E=PD3 управляющий сигнал ЖКИ #define TIME 10//временная константа для ЖКИ//Тактовая частота 4Mhz unsigned char key_code[4][4]={

Теперь перейдем к написанию программы:

То есть, нажав клавишу во 2-й строке и 4-й колонке, микроконтроллер поймет, что была нажата клавиша «9» (массив будет отличаться, в зависимости от того, как подсоединить клавиатуру к микроконтроллеру). Далее все это будем . В схеме так же присутствуют ограничивающие резисторы R4-R11 номиналом 2 кОм, которые на «всякий пожарный случай» не дают пройти большому току через порт микроконтроллера. Клавиатуру проще всего изготовить из макетной платы и отдельных кнопок, соединив их короткими перемычками, она верой и правдой послужит в дальнейших опытах. Вид сверху:

unsigned char key_code[4][4]={{'C','D','E','F'}, {'B','3','6','9'}, {'A','2','5','8'}, {'0','1','4','7'}};

Со схемы видно, что для считывания 16-ти клавиш нам потребуется 8 выводов. По сравнению с обычным подключением (один пин одна кнопка) мы выиграем в 16/8=2 раза. Алгоритм считывания будет таков: конфигурируем выводы PB0-PB3 как выхода и подадим на них нулевой уровень, а выводы PC0-PC3, выставим как входа и будем смотреть в какой колонке находиться нажатая клавиша. Далее поменяем все местами. Порты PC0-PC3 будут выходами с нулевым уровнем, а на портах PB0-PB3 будет считывать строку, в которой находиться нажатая клавиша. Зная строку и колонку можно однозначно вычислить клавишу, которая была нажата. Каждой клавише сопоставим код, который будет храниться в 2х мерном массиве 4х4 (строка нажатой клавиши первый индекс массива, колонка - второй):

Но при большом количестве клавиш не хватает ножек. Можно перейти на более «многоногие» контроллеры, но они, как правило, стоят больших денег и в некоторых случаях приходиться заново переписывать проект под них. Рассмотрим решение проблемы нехватки ножек при считывании с клавиатуры, так называемое динамическое считывание. Например, мы имеем 16 клавиш, и хотим считать с них информацию. Хитро соединим их в клавиатурную матрицу, как показано на рисунке ниже:

В прошлой своей заметке я описывал с помощью и вывод на ЖКИ. Написанную выше программу можно легко модифицировать на большее количество кнопок. Следует подсоединить клавиши к свободным выводам и периодически их всех опрашивать.

Написал vakula дата Чт., 07/01/2010 - 22:33

» Матричная клавиатура 4х4 динамическое считывание данных с портов

Больше знаний, больше возможностей.

Матричная клавиатура 4х4 динамическое считывание данных с портов | AVR Lab устройства на микроконтроллерах AVR

Комментариев нет:

Отправить комментарий