
- •2.2. Контроллер клавиатуры
- •2.3. Скэн-Коды
- •2.4. Интерфейс контроллера клавиатуры
- •2.5. Подключение клавиатуры
- •2.6. Драйвер клавиатуры
- •2.7. Обработка скэн-кодов, вывод символов на экран
- •Программа kbdscan
- •Программа kbdascii
- •2.8. Лицевая панель клавиатуры
- •2.9. Конструкция клавиш
- •2.10. Виды клавиатур, эргономические требования
- •Литература
клавиатура
ВВЕДЕНИЕ
В настоящее время клавиатура (Keyboard) является основным устройством ввода информации в PC, несмотря на сильную конкуренцию со стороны мыши. Ее главенствующее положение навряд ли изменится до тех пор, пока не будет создана надежная и недорогая система распознавания человеческой речи.
1. ЦЕЛЬ РАБОТЫ
Изучить конструкцию и принцип работы клавиатуры.
2. АРХИТЕКТУРА КЛАВИАТУРЫ
2.1. Принцип действия клавиатуры
Принцип действия клавиатуры объясняется структурной схемой представленной на рис. 1. Независимо от того, как механически реализован процесс нажатия клавиш, сигнал нажатия клавиши регистрируется контроллером клавиатуры типа 8049 и передается в виде скэн-кода на материнскую плату. Скэн-код – это однобайтовое число, младшие 7 бит которого представляют идентификационный номер, присвоенный каждой клавише (табл. 1 – 5). На материнской плате PC для подключения клавиатуры также используется специальный контроллер. Для PC типа AT обычно применяется микросхема периферийного универсального интерфейса UPI (Universal Peripheral Interface) типа 8042.
Когда скэн-код поступает в интерфейс UPI, то инициализируется аппаратное прерывание (IRQ1), и выполняется процедура анализирующая скэн-код. Данное прерывание обслуживается специальной программой, входящей в состав ROM BIOS. При поступлении скэн-кода от клавиш сдвига (<Alt>, <Ctrl>) или переключателя (<Shift>, <CapsLock>) изменение статуса записывается в RAM.
Во всех остальных случаях скэн-коды трансформируются в код символа (так называемые коды ASCII или расширенные коды). При этом обрабатывающая процедура сначала определяет установку клавиш и переключателей, чтобы правильно получить вводимый код («а» или «А»). Затем введенный код помещается в буфер клавиатуры, представляющий собой область памяти, способную запомнить до 15 вводимых символов, пока прикладная программа не может их обработать. Буфер организован по принципу FIFO (первый вошел – первый вышел). Интерфейс может не только принимать, но и передавать данные, чтобы сообщить клавиатуре различные параметры, например частоту повтора нажатой клавиши и др. Контроллер клавиатуры отвечает не только за генерирование скэн-кодов, но и выполняет функции самоконтроля и проверки нажатых клавиш в процессе загрузки системы. Процесс самоконтроля отображается однократным миганием трех индикаторов LED клавиатуры во время выполнения программы POST. Таким образом, неисправность клавиатуры выявляется уже на стадии загрузки РС.
Рис. 1. Структурная схема обработки информации, вводимой с клавиатуры
2.2. Контроллер клавиатуры
Коды символов, изображенных на клавишах, формирует контроллер клавиатуры (схема шифратора контроллера показана на рис. 2), последовательно опрашивающий все клавиши с частотой около 80 Гц. Для этого в контроллере предусмотрен счетчик DD2, DD3, подсчитывающий импульсы тактового генератора, собранного на триггере Шмитта DD1.1 и работающего на частоте около 20 кГц. Число, записанное в счетчике, определяет адрес клавиши в матрице клавиатуры, т. е. номер горизонтальной (соединенной с одним из входов А – Е мультиплексора DD6) и вертикальной (соединенной с одним из выходов 0 – 15 дешифратора DD5) линий, на перекрестии которых находится замкнутая пара контактов нажатой клавиши. Для опроса клавиатуры дешифратор четырех младших разрядов адреса DD5 поочередно устанавливает низкий уровень на одной из линий матрицы клавиатуры, а мультиплексор DD6 в соответствии со значением трех старших разрядов адреса подключает одну из линий матрицы к входу S триггера DD4.2.
Если пара контактов, адрес которой записан в счетчике, разомкнута, на выходе мультиплексора установится высокий уровень напряжения, следовательно, состояние триггера не изменится. Как только в процессе опроса будет найдена замкнутая пара контактов, на прямом выходе мультиплексора DD6 появится сигнал 0, который установит триггер DD4.2 в единичное состояние. Одновременно в текущем цикле опроса через транзистор VT1 разрядится конденсатор С4, заряженный до напряжения источника питания. В этот же момент буферный регистр DD8 запоминает код, соответствующий нажатой клавише.
Для преобразования адреса клавиши в стандартный код применено постоянное запоминающее устройство DD7 с прожигаемыми перемычками. В нем хранится таблица соответствия адреса клавиши, поступающего из счетчика контроллера клавиатуры, и значения разряда контроля четности. Применение ПЗУ для перекодирования позволяет подключать клавиши в матрице произвольно, исходя из удобства монтажа. Как только триггер DD4.2 будет установлен в состояние 1, низкий уровень напряжения на входе DS0 регистра DD8 разрешит запись в него кода клавиши. После записи кода на выходе INT регистра DD8 появится высокий уровень – сигнал OBF "Готовность", сигнализирующий о необходимости передачи кода из шифратора клавиатуры в устройство-приемник информации. В свою очередь, приемник информации считывает по линиям D0 – D7 код клавиши и по завершении операции выдает в контроллер импульс STR "Принято", означающий возможность приема следующего кода. Такой вид асинхронного обмена информацией называют обменом с квитированием. Для того чтобы запретить изменение кода на выходе контроллера до считывания его приемником, низкий уровень сигнала "Готовность" поступает через диод VD2 на вход инвертора DD1.2 и не позволяет принять следующий код нажатой клавиши до тех пор, пока приемник информации не ответит сигналом STR ("Принято"). Как уже упомянуто, таблица кодов клавиш записана в ППЗУ. Для упрощения формирования кодов верхнего и нижнего регистров клавиатуры в запоминающем устройстве есть две области (страницы), выбираемые значением разряда адреса А7, т. е. состоянием триггера DD4.1. На первой из них размещена таблица для символов верхнего, а на второй – нижнего регистра.