На главную |  Проекты |  Гостевая книга |  Добавить в избранное |  Сделать стартовой |  Обратная связь


Автор: ---

Здесь используется опрос клавиатуры "змейкой", то есть подается логический 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 ом (они ограничат сквозные токи).
Не опрашивайте кнопки слишком часто - появляется неустойчивость к дребезгу контактов.

на главную | проекты

Created by DAstudio
Hosted by uCoz