Для подключения клавиатуры предназначен последовательный синхронный интерфейс, состоящий из двух обязательных сигналов, KB-Data и KB-Clock. Необязательный сигнал KB-Reset сбрасывает клавиатуру низким уровнем сигнала. Интерфейс на системной плате XT реализован аппаратной логикой - регистром сдвига, параллельный выход которого подключается ко входам порта А системного интерфейса i8255.
По приему байта от клавиатуры вырабатывается аппаратное прерывание IRQ2, обработчик которого может прочитать принятый байт из порта 60h. С помощью бит 7 и 6 порта 61h возможны программная блокировка и сброс клавиатуры соответственно. Сброс клавиатуры XT осуществляется обнулением линии KB-Clock.
Интерфейс клавиатуры AT построен на микроконтроллере 18042, обеспечивающем, в отличие от XT, двунаправленный интерфейс с клавиатурой. Передача информации к клавиа туре используется для управления индикаторами ее состояния и программирования параметров (автоповтор, набор скан-кодов). Конструктивно воз можны два варианта разъема -обычная 5-контактная розетка DIN или малогабаритная розетка mini-DIN (PS/2).
Разьем
|
|
|
| DIN41524
| 6-pin Mini DIN PS2
| Синхронизация (KB-Clock)
| 1
| 5
| Данные (KB-Data)
| 2
| 1
| Не используются
| 3
| 2,6
| Земля GND
| 4
| 3
| Питание +5 В
| 5
| 4
| Экран
| Оплетка
| Оплетка
|
На этот же разъем через плавкий предохранитель поступает напряжение питания клавиатуры +5 В. Электрически и логически интерфейс клавиатуры PS/2 повторяет AT, поэтому для согласования типа разъема применяют специальные переходники. Предпочтительнее использовать переходники, выполненные в виде мягкого кабеля с разъемами. Монолитный переходник, особенно с АТ-клавиатуры на PS/2-разъем, хуже тем, что малейшее движение кабеля вызывает большой момент силы, выламывающий переходник из маленького гнезда PS/2. В последнее время наметилась тенденция отказа даже от малогабаритных разъемов PS/2, поэтому новейшие клавиатуры обзавелись интерфейсом USB. В беспроводных клавиатурах может использоваться инфракрасный порт.
Подключение PC AT клавиатуры к AVR
Временный диаграммы
Временные диаграммы передачи данных от клавиатуры к микроконтроллеру показаны на рисунке . Протокол обмена следующий: один старт бит (всегда 0), восемь бит данных, один бит четности и один стоп бит (всегда 1). Данные действительны в течении низкого уровня сигнала синхронизации. Синхросигнал формируется клавиатурой с длительностью низкого и высокого уровней по 30-50 мкс. Микроконтроллер также может посылать команды в клавиатуру, устанавливая низкий уровень на линии синхронизации, затем формируя импульс низкого уровня на линии данных (старт бит). После чего линия синхронизации должна быть освобождена микроконтроллером. Затем клавиатура сформирует 10 синхроимпульсов. Данные на линии данных должны быть установлены микроконтроллером до формирования спада сигнала синхронизации. После 10-го бита, клавиатура проверяет наличие высокого уровня на линии данных (стоп бит), и если это так то, в свою очередь формирует низкий уровень. Это указывает микроконтроллеру, что данные приняты клавиатурой.
Скан-коды
Каждая клавиша АТ клавиатуры имеет свой скан-код. Этот код передается при нажатии клавиши. Если клавиша остается нажатой, то код начинает передаваться повторно. Частота повторения примерно 10 раз в секунду. Когда клавиша отпускается, после скан-кода клавиши передается код "BREAK" ($F0). Для большинства клавиш размер скан-кода составляет один байт. Некоторые клавиши, такие как Home, Insert и Delete имеют расширенный скан-код, от двух до пяти байт. Первый байт всегда $E0. Он также выдается и при формировании "BREAK" кода, то есть E0 F0 xx … АТ клавиатуры могут поддерживать три набора скан-кодов, Второй из которых устанавливается по умолчанию. В примере используется только второй набор.
Прошивка в среде BASCOM-AVR, исходник прилагается. Так же вы можете скачать исходник, прошивку, проект в Proteus.
|