Привет!

Это резервный блог для GetChip.net - "Готовые решения для твоих электронных проектов".
Заходите, найдете что-то интересное для себя.

047-Драйвер матричной клавиатуры 3х4 на ATtiny13 с UART выходом.

047-Драйвер матричной клавиатуры 3х4 на ATtiny13 с UART выходом.:
титлВ предыдущей статье мы реализовали программный UART в ATtiny13. Чтобы показать целесообразность применения программного UART в ATtiny13 пришло время заюзать этот интерфейс в реальном устройстве.

Выбор реального устройства пал на устройства ввода – keypad. Кто не в курсе – это набор (матрица) клавиш, часто 3х4 (а-ля телефон). Такие кейпады продаются в радиомагазинах.

Вот купил один:
Заводской кейпад
Также заиметь такой кейпад можно способом расковыривания ненужной оргтехники (телефоны, калькуляторы – все пойдет в ход!) или, брутально, отпилить ножовкой по металлу кусок от ненужной «клавы» для PC.
Старые клавиатуры


Для классического варианта обслуживания матрицы клавиш нужно 3+4=7 линий (ножек микроконтроллера), но у ATtiny13 есть только 5 (не считая сброса), кроме того, одна ножка нам нужна для передачи сообщений по UART – итого 4. Не сходится. Но ничего, мы подключим keypad к ATtiny13 нестандартно! Используя АЦП микроконтроллера, мы обойдемся всего тремя ножками. Вот так:
Схема драйвера клавиатуры
На схеме не указан разъем для программирования, но я надеюсь Вы знаете куда его приткнуть. Пунктиром показаны не обязательные элементы, они могут понадобится в случае больших помех на линиях АЦП и не надежного срабатывания клавиш (конденсаторы подобрать экспериментально, но не более 0.01мкФ).
Идея такого подключения матрицы клавиш заключается в том, что на линиях строк, при помощи резисторного делителя напряжения, создаются разные потенциалы. При нажатии на клавишу соответствующий потенциал прикладывается к определенной линии столбца, где он оценивается соответствующим АЦП. По результатам оценки потенциала можно однозначно сделать вывод, о том какая клавиша нажата.
Раз мы обошлись всего тремя ножками для обслуживания keypad’а оставшеюся ножку используем для световой и звуковой сигнализации – клавиатура у нас будет «пикать» и красиво светить светодиодиком :) .
В устройстве (прошивке) реализовано:

- устранение дребезга контактов;

– автоповтор при удержании клавиши;

– озвучивание нажатой клавиши;

– Shift-режим – расширение возможностей кейпада;

– индикация включения Shift-режима.
Работает устройство следующим образом:

При нажатии на клавишу, через UART, передается соответствующий символ (пример: нажали клавишу 1 – по UART передался символ «1″). При длительном удержании клавиши включается автоповтор – по UART непрерывно передаются символы нажатой клавиши.

При нажатии на любую из клавиш подается звуковой сигнал – «пиканье».

При нажатии клавиши «*» включается Shift-режим – загорится светодиод. В Shift-режиме при нажатии на клавиши по UART будут передаваться символы латиницы (пример: нажали клавишу 1 –по UART передался символ «A»; 2 – «B»; 3 – «C» и т.д.). Это сделано для того, чтобы расширить функциональность кейпада. Например, при помощи кейпада в нормальном режиме вводятся данные, а в Shift-режиме он используется для навигации по меню (по аналогии с Num Lock ПиСишной клавиатуры). Клавиши «*», «0″ и «#» передают по UART одни и те-же символы в обоих режимах (реализация общих для режимов клавиш, например: если клавишу «#» Ваш проект будет воспринимать как «Enter» , то этот «Enter» будет работать в любом режиме). Повторное нажатие «*» выключит Shift-режим.
Настройки передатчика UART:

- Скорость - 9600;

– Количество бит данных – 8;

- Стоп-бит – 1;

– Бит четности – нет.

(Baud Rate: 9600, 8 Data, 1 Stop, No Parity).
А вот и сама прошивка для ATtiny13:

047-T13-Key-to-UART.hex v1.0 [501 bytes] - Драйвер матричной клавиатуры на ATtiny13 c UART

047-T13-fusebits.png [1.68 KB] - Фьюзы для ATtiny13
Выводы:

Реализовав драйвер клавиатуры на ATtiny13 мы освободили: 6 ножек микроконтроллера Вашего проекта; как минимум, один таймер; память и процессорное время на обработку матрицы. Теперь для того, чтобы подключить клавиатуру к вашему проекту достаточно одной ножки микроконтроллера и минимальной обработки принятых символов.
047-ABProg-Key-to-UART.zip [8.61 KB] - Исходник драйвера клавиатуры на Algorithm Builder

Смотрим демонстрацию устройства:

048-Демонстрация: 047-Драйвер матричной клавиатуры 3х4 на ATtiny13 с UART выходом.
P.S.

Программа драйвера клавиатуры вышла размером в 140 слов – это всего 30% доступной памяти – жалко! Если есть какие пожелания, в плане чего добавить, пишите, будем добавлять!