trust already work Подключение PC AT клавиатуры к AVR » Портал инженера

Подключение PC AT клавиатуры к AVR

Особенности

  • Подключается стандартная PC AT клавиатура
  • Требуется только два I/O вывода. Один из них должен быть входом внешнего прерывания
  • Не требуется внешних элементов

Введение

Большинство микроконтроллеров, должно иметь какой нибудь интерфейс с человеком. Это приложение описывает в качестве одного из вариантов, использование стандартной PC AT клавиатуры.

Физический интерфейс

Физический интерфейс между клавиатурой и микроконтроллером показан на рисунке 1. Используются две сигнальных линии - синхронизации и данных. Сигнальные линии с открытым коллктором и имеют подтягивающие резисторы, расположенные в клавиатуре. Это позволяет как микроконтроллеру, так и клавиатуре формировать на линиях низкий уровень. Существует два типа разъемов, 5-ти штырьковый DIN разъем типа 5D, и миниатюрный 6-ти штырьковый мини-DIN. Расположение выводов показано в таблице 1.

 

Рисунок 1. Интерфейс.

Таблица 1. Расположение контактов разьемов PC клавиатуры

Разьем  
 DIN415246-pin Mini DIN PS2
Синхронизация15
Данные21
Не используются32, 6
Земля GND43
Питание +5 В54
ЭкранОплеткаОплетка

 

Временный диаграммы

Временные диаграммы передачи данных от клавиатуры к микроконтроллеру показаны на рисунке 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. Временные диаграммы передачи данных клавиатурой в микроконтроллер.


Обсудить на форуме

Комментарии

Добавить комментарий
    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent

    Последовательный интерфейс

      Широко используемый последовательный интерфейс синхронной и асинхронной передачи данных, определяемый стандартом EIA RS-232-C и рекомендациями V.24 CCITT.

    Стандартный параллельный интерфейс на PC

      Основным назначением интерфейса Centronics (аналог-ИРПР-М) является подключение к компьютеру принтеров различных типов.

    Интерфейс CAN сервопривода СПШ-10

      CAN – (Controller Area Network) последовательная многомастерная шина, специально разработана для обеспечения взаимодействия промышленных управляющих контроллеров.

    Kemppi Коды Ошибки

    Err    2:   Силовой источник под напряжением (новый пуск)Err    3:   Силовое исходное перенапряжение  (новый пуск)

    Разъёмы ввода-вывода СЧПУ Сервокон 2000

    Разъем интерфейса CAN1. Разъем типа DB9-M.

    Описание интерфейса RS-485

    Интерфейс RS-485 - широко распространенный высокоскоростной и помехоустойчивый промышленный последовательный интерфейс передачи данных. Практически все современные компьютеры в промышленном исполнении, большинство интеллектуальных датчиков и