В статье мы рассмотрим вариант организации 12-кнопочной клавиатуры для устройств на микроконтроллерах. Интерфейс клавиатуры потребует от микроконтроллера всего лишь две линии ввода/вывода: одна линия предназначена для информирования микроконтроллера о нажатии кнопки, вторая линия – для чтения информации о нажатой кнопке.
Как известно, клавиатуры используются в устройствах на микроконтроллерах для ввода пользовательской информации и управления. В общем случае, многокнопочная клавиатура организуется как матрица кнопок объединенных в столбцы и строки, таким образом, интерфейс такой клавиатуры потребует определенного минимального количества линий ввода/вывода микроконтроллера. Например, 12-кнопочная клавиатура организуется в формат 4×3 и потребует 7 линий ввода/вывода. Для определения нажатой кнопки на такой клавиатуре микроконтроллер должен просканировать все столбцы и строки. В сети Интернет много информации относительно этой техники.
Здесь мы рассмотрим иной интерфейс клавиатуры, требующей всего лишь две линии ввода/вывода микроконтроллера. Основа нашей 12-кнопочной клавиатуры – интегральный таймер 555, который сконфигурирован как несинхронизированный мультивибратор. Также для проверки работоспособности клавиатуры мы будем использовать микроконтроллер PIC16F628A, который будет считывать информацию с выхода таймера, определять какая кнопка нажата и отображать код нажатой кнопки на символьном LCD дисплее.
Теория
Рассматриваемая техника реализации клавиатуры основывается на очень простом принципе. Значение выходной частоты несинхронизированного мультивибратора определяется двумя резисторами и конденсатором, ее значение рассчитывается по формуле, представленной на рисунке 1.
![]() |
|
Рис. 1. | Схема включения таймера 555 в режиме генератора импульсов и формула расчета выходной частоты. |
Если мы выберем постоянными значение резистора R1 и конденсатора С, изменение выходной частоты будет связано с изменением резистора R2. Таким образом, если каждую кнопку клавиатуры подключим к различным резисторам, то при нажатии на кнопки мы получим различные значения частоты на выходе таймера. Микроконтроллер может измерить выходную частоту генератора и определить какая кнопка нажата.
На первый взгляд это кажется более сложной техникой, поскольку могут потребоваться вычисления с плавающей точкой при вычислении частоты. Кроме того, выходная частота таймера 555 окажется нестабильной. Но эти проблемы можно решить правильным выбором значений резисторов и использованием встроенного в микроконтроллер таймера.
Принцип работы нашей клавиатуры
При нажатии одной из кнопок клавиатуры, резистор с определенным значением включается между выводом 7 (Разряд) и выводом 6 (Останов) таймера 555, завершая схему несинхронизированного мультивибратора. Выходные импульсы подсчитываются за период 100 мс встроенным таймером микроконтроллера. Определение микроконтроллером нажатой кнопки производится по количеству переполнений таймера. Т.е., если количество переполнений таймера равно 5, то была нажата кнопка 5. Если была нажата кнопка 0, то переполнения таймера микроконтроллера не произойдет.
Принципиальная схема интерфейса клавиатуры
На схеме показано, как можно подключить 12 кнопок к таймеру 555 для генерации 12 различных частот. Резисторы R0 – R# – это 12 различных резисторов, которые включаются в цепь (между выводом 6 и 7 таймера) в соответствии с нажатой кнопкой.
Для нашего случая номинал резистора R1 – 1 кОм, конденсатора C – 0.01 мкф, в соответствии с типовой схемой включения. В нижеследующей таблице видно соответствие между различными номиналами резистора R2 для каждой кнопки, частотой и количеством переполнений таймера 0 микроконтроллера. Заметим, что некоторые из этих резисторов являются составными для получения нужного номинала.
R1=1 кОм, С=0.01 мкФ | ||||
Кнопка № |
Номинал резистора R2, Ом |
Выходная частота, Гц |
Количество импульсов за 100 мс |
Количество переполнений Таймера 0 |
0 | 47000 | 1515.79 | 151.58 | 0 |
1 | 22000 | 3200 | 320 | 1 |
2 | 12000 | 5760 | 576 | 2 |
3 | 8200 | 8275.86 | 827.59 | 3 |
4 | 5600 | 11803.28 | 1180.33 | 4 |
5 | 4700 | 13846.15 | 1384.62 | 5 |
6 | 3900 | 16363.64 | 1636.36 | 6 |
7 | 3400 | 18461.54 | 1846.15 | 7 |
8 | 2800 | 21818.18 | 2181.82 | 8 |
9 | 2530 | 23762.38 | 2376.24 | 9 |
* | 2200 | 26666.67 | 2666.67 | * |
# | 2000 | 28800 | 2880 | # |
Для боле стабильной работы схемы нужно применять электронные компоненты (конденсатор и резисторы) с допуском менее 5%.
Часть 2. Описание работы схемы, значение и выбор времязадающих компонентов схемы.