Подключение PC AT клавиатуры к AVR
Особенности
- Подключается стандартная PC AT клавиатура
- Требуется только два I/O вывода. Один из них должен быть входом внешнего прерывания
- Не требуется внешних элементов
Введение
Большинство микроконтроллеров, должно иметь какой нибудь интерфейс с человеком. Это приложение описывает в качестве одного из вариантов, использование стандартной PC AT клавиатуры.
Физический интерфейс
Физический интерфейс между клавиатурой и микроконтроллером показан на рисунке 1. Используются две сигнальных линии - синхронизации и данных. Сигнальные линии с открытым коллктором и имеют подтягивающие резисторы, расположенные в клавиатуре. Это позволяет как микроконтроллеру, так и клавиатуре формировать на линиях низкий уровень. Существует два типа разъемов, 5-ти штырьковый DIN разъем типа 5D, и миниатюрный 6-ти штырьковый мини-DIN. Расположение выводов показано в таблице 1.
1. Интерфейс.
Таблица 1. Расположение контактов разьемов PC клавиатуры Разьем | | | | DIN41524 | 6-pin Mini DIN PS2 | Синхронизация | 1 | 5 | Данные | 2 | 1 | Не используются | 3 | 2, 6 | Земля GND | 4 | 3 | Питание +5 В | 5 | 4 | Экран | Оплетка | Оплетка |
Временный диаграммы
Временные диаграммы передачи данных от клавиатуры к микроконтроллеру показаны на рисунке 2. Протокол обмена следующий: один старт бит (всегда 0), восемь бит данных, один бит четности и один стоп бит (всегда 1). Данные действительны в течении низкого уровня сигнала синхронизации. Синхросигнал формируется клавиатурой с длительностью низкого и высокого уровней по 30-50 мкс. Микроконтроллер также может посылать команды в клавиатуру, устанавливая низкий уровень на линии синхронизации, затем формируя импульс низкого уровня на линии данных (старт бит). После чего линия синхронизации должна быть освобождена микроконтроллером. Затем клавиатура сформирует 10 синхроимпульсов. Данные на линии данных должны быть установлены микроконтроллером до формирования спада сигнала синхронизации. После 10-го бита, клавиатура проверяет наличие высокого уровня на линии данных (стоп бит), и если это так то, формирует низкий уровень. Это указывает микроконтроллеру, что данные приняты клавиатурой.
Скан-коды
Каждая клавиша АТ клавиатуры имеет свой скан-код. Этот код передается при нажатии клавиши. Если клавиша остается нажатой, то код начинает передаваться повторно. Частота повторения примерно 10 раз в секунду. Когда клавиша отпускается, после скан-кода клавиши передается код BREAK ($F0). Для большинства клавиш размер скан-кода составляет один байт. Некоторые клавиши, такие как Home, Insert и Delete имеют расширенный скан-код, от двух до пяти байт. Первый байт всегда $E0. Он также выдается и при формировании BREAK кода, значит E0 F0 xx … АТ клавиатуры могут поддерживать три набора скан-кодов, Второй из которых устанавливается по умолчанию. В примере используется только второй набор.
Алгоритм
Прием данных от клавиатуры обрабатывается прерыванием INT0. Прием будет происходить независимо от выполнения остальной программы. Алгоритм довольно прост: сохранение значения линии данных по спаду синхроимпульса. Это проще всего выполняется, если линия синхронизации подключена к INT0 или INT1. Прерывание будет выполняться по каждому фронту и спаду синхроимпульса, данные будут сохраняться по каждому спаду. После получения всех бит, данные можно декодировать. Это осуществляется вызовом функции decode. Для символьных клавиш эта функция сохраняет ASCII код клавиш в буфере. Это позволяет учитывать, удерживалась ли нажатой клавиша shift при нажатии данной клавиши. Другие функциональные клавиши вроде курсорных, ctrl и Alt и т.д. игнорируются. Карта соответствия скан-кодов ASCII кодам обрабатывается с помощью таблиц, одной для клавиш нажатых вместе с shift, а другой без.
Изменения и дополнения
Если микроконтроллер потеряет синхронизацию с клавиатурой, все остальные принятые биты будут неверны. Один из способов решения этой проблемы это использование таймаута. Если 11 бит не получены в течении 1,5 мс, значит произошла ошибка. Счетчик битов должен быть сброшен, а поврежденные данные удалены. Для установки таких параметров как скорость и период повтора нажатой клавиши, необходимо посылать данные в клавиатуру. Это можно сделать, как описано выше. Команды можно найти в спецификации производителя клавиатуры.
2. Временные диаграммы передачи данных клавиатурой в микроконтроллер.
Читайте далее: Регулируемые "LOW DROP" стабилизаторы положительного напряжения, Подставка для инструмента, Посеребрение металлов., В Интернет по электропроводке, Простой способ изготовления спутниковых антенн, Видеомодем на микросхеме PRACT от Siemens, Микроконтроллеры PIC16F84. Подробная документация для начинающих, Согласующий экспоненциальный трансформатор для спутниковых приемников, Два слова о тиристорах, Сотовый. Не грейте уши!, А знаете ли вы, что...,
|