Клавиатурная матрица 3х4. Подключаем к КР1878ВЕ1 |
Здесь используется опрос клавиатуры "змейкой", то есть подается логический 0 на строку клавиатуры и проверяются по очереди состояния линий ввода микроконтроллера подключенных к столбцам клавиатуры, если логический 0 не обнаружен ни на одном столбце, то переходят к проверке следующей строки клавиатуры. Как только обнаружено нажатие кнопки, по смещению (счетчику) key_code в таблице sym_set находится код нажатой кнопки. Таблица используется для настройки программы на конкретный вид клавиатуры (размещение на ней кнопок).
Защита от автоповтора (при длительном удержании кнопки) и от дребезга, реализована на основе стека нажатых кнопок (при прощлых опросах клавиатуры) key1, key2 и key_code. Если при опросе клавиатуры нажатие кнопки не обнаружено, то код кнопки key_code=12. При каждом опросе клавиатуры, перед выходом из подпрограммы keyboard, проводится процедура key1=key2, key2=key_code. Кнопка считается нажатой, если key1=12 и key2 не=12 и key2=key_code.
Существует так же матричный метод опроса клавиатуры, его алгоритм описан в документе AVR240: 4x4 Keypad-Wake up on Keypress на сайте www.atmel.com . Описанный выше алгоритм при большем времени выполнения по сравнению с матричным опросом требует меньшего количества команд на реализацию и работает при фиксированной конфигурации порта: младшая тетрада порта - выход, старшая - вход.
На схеме не показана схема сброса (обычная интегрирующая цепочка см. описание МК) и питание микроконтроллера. keyboard.mic - сама программа (в кодировке win-txt) Схема электрическая: Алгоритм работы:
От редакции (Sanchos):
Если это использовать в том виде в котором нарисовано, то никаких проблем не будет.
Если вы не уверены в том, что не будут нажаты одновременно две и более кнопок или если этот же порт используется ещё и для индикации то в каждую линию матрици нужно припаять резюк сопротивлением 220 - 510 ом (они ограничат сквозные токи).
Не опрашивайте кнопки слишком часто - появляется неустойчивость к дребезгу контактов. Источник: sanchos-iz.narod.ru
C этой схемой также часто просматривают: |
Программатор внутрисхемный для КР1878ВЕ1 Частотомер от Mars'a на КР1878ВЕ1 UART с помощью КР1878ВЕ1 Простой программатор для КР1878ВЕ1 Простая схема динамической индикации на КР1878ВЕ1 Простая схема динамической индикации на КР1878ВЕ1 Простой программатор для КР1878ВЕ1 UART с помощью КР1878ВЕ1 Частотомер от Mars'a на КР1878ВЕ1
| |
Подключение энкодера к микроконтроллеру PIC Счётчик людей в помещении, управляющий освещением Велокомпьютер на микроконтроллере PIC16F628A Устройство ввода-вывода на микроконтроллера Два термометра на PIC16F628A и DS18B20 Светодиодные часы с циферблатом Двоичные часы Два вывода микроконтроллера PIC управляют шестью светодиодами Цифровой программируемый таймер на микроконтроллере PIC16F628A Устройство рисования в воздухе на ATtiny2313 |