Подключение PS/2 клавиатуры к MSX

[ index ]

На фото сверху выносная клавиатура MSX компьютера CPC-400S фирмы DAEWOO. Она типична для большинства компьютеров этого семейства. Изнутри верхняя панель клавиатуры выглядит так:

Под каждой клавишей расположен нормально разомкнутый переключатель, который замыкается при нажатии на эту клавишу. Все переключатели соединены в матрицу, состоящую из 8 строк и 11 колонок, вот по такой типичной схеме:

Диоды в матрице обеспечивают развязку префиксных переключателей (Shift, Ctrl, Graf, Code), которые требуется нажимать одновременно с алфавитными и цифровыми клавишами. Дополнительно на панели клавиатуры обычно присутствуют два индикатора, показывающие текущий режим ввода CAPS (строчные или прописные символы) и CODE (или РУС, KANA - режим выбора языка ввода). В некоторых моделях компьютеров на клавиатуре нет цифрового поля клавиш. В этом случае две колонки в правой части схемы отсутствуют и матрица состоит из 8 строк и 9 колонок.

Для опроса состояния переключателей в этой матрице, она, во всех моделях MSX, подключается к выводам микросхемы параллельного периферийного адаптера типа I8255 (или его аналога, смоделированного в системных чипах MSX), состоящего из 3-х 8-ми разрядных программируемых портов ввода/вывода. Состояние 8-ми строковых линий опрашивается через порт B (PB0..PB7), а сканирование колонок осуществляется через дешифратор 4-мя младшими линиями порта C (PC0..PC3) этой микросхемы. Используется опрос матрицы так называемым "бегущим нулем", при котором задается номер колонки, на которой устанавливается низкий логический уровень и считывается состояние строк. При нажатии клавиш, расположенных в этой колонке, на соответствующем входе порта B будет считан низкий уровень (0). Остальные линии, за счет обычно подключенных ко входам порта B подтягивающих резисторов, будут находится в состоянии высокого уровня (1). Опрос матрицы клавиатуры в MSX происходит по прерываниям с частотой кадровых импульсов видео-генератора. Состояние строк сохраняется в системной области в адресах с 0xFBE5 до 0xFBEF. Для контроля работы клавиатуры служит следующая простая программа:

100 DEFINT A-Z
110 SCREEN 1
120 LOCATE 0,0,0
130 FOR I=&HFBE5 TO &HFBEF
140 KY=PEEK(I): PRINT HEX$(I);" ";RIGHT$("0000000"+BIN$(KY),8)
150 NEXT I: GOTO 120

На экране в двоичном виде отобразится состояние ячеек памяти, соответствующих состоянию переключателей матрицы клавиатуры. "1" соответствует не нажатой клавише, "0" - нажатой.

Таким образом, для подключения панели клавиатуры к материнской плате, с учетом линий питания, требуется как минимум 8+11+2+2 = 23 проводника. Так сделано в большинстве моделей, со встроенной в корпус клавиатурой (а также, например в выносной клавиатуре компьютера Philips NMS8280). Контроллер PS/2 клавиатуры должен в этом случае отслеживать состояние 11-ти линий, подключенных к колонкам матрицы и 2-х линий CAPS и CODE. В зависимости от состояния клавиш в опрашиваемой колонке, на 8 линиях строк должен выдаваться код, в котором 0 соответствует нажатой клавише, 1 - не нажатой. Схема такого контроллера клавиатуры может быть выполнена например на микроконтроллере фирмы ATMEL типа ATMega48:

Такой контроллер можно подключать взамен неисправных встроенных клавиатур, либо параллельно с ними.

В большинстве выносных клавиатур, для того что бы уменьшить число проводников, идущих от системного блока, используется мультиплексирование адреса колонки, состоящего из 4-х линий, с 4-мя из 8-ми линий строки. Для управления мультиплексором используется дополнительный сигнал KBDIR. При этом требуется 8+1+2+2 = 13 проводников. Стандарта на такое мультиплексирование нет, поэтому клавиатуры разных производителей не совместимы, хотя чаще всего для подключения клавиатур к системному блоку используют один и тот же разъем типа DIN-13. Контроллер для такого варианта подключения может быть выполнен на более простом микроконтроллере той же фирмы ATMEL типа ATTiny2313:

[ index ]


Рейтинг@Mail.ru