Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР 3 клавиатураи мышь.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
492 Кб
Скачать
☆

3. Принцип действия клавиатуры

Принцип действия клавиатуры поясняется на рис. 1. Независимо от то­го, как механически реализован процесс нажатия клавиш, сигнал при нажа­тии клавиши регистрируется контроллером клавиатуры (например, 8049) и передается в виде так называемого скэн-кода на материнскую плату. Скэн-код — это однобайтовое число, младшие 7 бит которого представляют иден­тификационный номер, присвоенный каждой клавише. На материнской плате PC для подключения клавиатуры также используется специальный контроллер. Для PC типа AT обычно применяется микросхема универсального периферийного интерфейса (Universal Peripheral Interface, UPI) 8049.

Когда скэн-код поступает в микросхему (8049), то инициализи­руется аппаратное прерывание (IRQ 1), процессор прекращает свою работу и выполняет процедуру, анализирующую скэн-код. Данное прерывание об­служивается специальной программой, входящей в состав ROM BIOS. При поступлении скэн-кода от клавиш <Alt>, <Ctrl> или <Shift>, <CapsLock> изменение статуса записывается в RAM. Во всех остальных случаях скэн-код трансформируется в код символа (так называемые коды ASCII или рас­ширенные коды). При этом обрабатывающая процедура сначала определяет установку клавиш и переключателей, чтобы правильно получить вводимый код ("а" или "А"). Затем введенный код помещается в буфер клавиатуры, представляющий собой область памяти, способную запомнить до 15 вводи­мых символов, пока прикладная программа не может их обработать. Буфер организован по принципу FIFO (первый вошел — первый вышел).

Для работы с клавиатурой используются порты и прерывания. В ответ на прерывание служебная процедура системы BIOS в ПЗУ считывает скэн-код клавиши из порта клавиатуры (порт номер 96) и затем пересылает в порт клавиатуры команду очистить буфер процессора клавиатуры. Если системный блок не реагирует на прерывания клавиатуры, то коды сканирования накапливаются в буфере процессора клавиатуры, хотя при нормальной работе этого не должно происходить. Специальный код сканирования255, шестнадцатиричное значение FF, используется блоком

клавиатуры, для сообщения, что его буфер заполнен.

Рис.1

 

Примечание   

Каждая клавиша генерирует два типа скэн-кодов: код нажатия, когда клавиша        нажимается, и код освобождения, когда клавиша отпускается. Для PC класса AT       используется одна и та же цепочка битов для кодов нажатия и кодов освобождения, но коды освобождения состоят из двух байтов, первый из которых всегда ра­вен 0F0H. Для PC XT-генерации код освобождения на 128 больше кода нажатия (седьмой бит 7 равен 1). Например, 7-битовый скэн-код клавиши <В> равен 48 или 110000 в двоичной системе счисления. Когда клавишу нажимают, на кон­троллер клавиатуры поступает код 10110000, а когда отпускают — код 00110000.

Контроллер 8049 отвечает не только за генерирование скэн-кодов, но и не­обходим для выполнения функций самоконтроля и проверки нажатых кла­виш в процессе загрузки системы. Процесс самоконтроля отображается однократным миганием трех индикаторов LED клавиатуры во время выпол­нения программы POST. Таким образом, неисправность клавиатуры выявля­ется уже на стадии загрузки PC.

 

Контроллер на материнской плате может не только принимать, но и переда­вать данные, чтобы сообщить клавиатуре различные параметры, например, частоту повтора нажатой клавиши и др.

 В табл. 1-2 представлены примеры скэн-кодов, которые соответствуют наиболее распространенной в настоящее время клавиатуре  со 102 клавишами.

Шестнадцатеричные скэн-коды функциональных клавиш

Таблица 1

Шестнадцатеричные скэн-коды клавиш ввода данных

Таблица 2

 

 Таким образом, процесс обработки клавиатурного ввода (рис.2) обеспечивают два микроконтроллера: один находится на материнской плате компьютера, второй встроен в саму клавиатуру.

Рис.2

Как видно на схеме, все горизонтальные линии матрицы клавиш подключены через резисторы к источнику питания. Встроенный чип клавиатуры имеет два порта – выходной и входной. Первый подключен к вертикальным (Y0–Y5) линиям матрицы, а второй – к горизонтальным (X0–X4).

Клавиатурный контроллер работает по следующему алгоритму. Устанавливая по очереди на каждой из вертикальных линий уровень напряжения, соответствующий логическому нулю, клавиатурный микро­компьютер непрерывно оценивает состояние горизонтальных линий – независимо от активности на центральном процессоре.

Если ни одна клавиша не нажата, уровень напряжения на всех горизонтальных линиях соответствует логической единице. Как только осуществляется нажатие, соответствующие клавише вертикальная и горизонтальная линии замкнутся. Когда процессор установит на вертикальной линии значение логического нуля, уровень напряжения на горизонтальной линии также будет соответствовать логическому нулю.

Если на одной из горизонтальных линий появится уровень логического нуля клавиатурный процессор зафиксирует нажатие на клавишу. Он отправит в компьютер (через внутренний 16-байтовый буфер) запрос на прерывание и номер клавиши в матрице (он называется скан-кодом – это случайное значение, выбранное компанией IBM еще тогда, когда она создавала первую клавиатуру для ПК). Обмен данными с компьютером повторится, когда ранее нажатая клавиша будет отпущена.

Скан-код однозначно связан с клавиатурной распайкой и не зависит напрямую от обозначений, нанесенных на поверхность клавиши. Но программе нужен не порядковый номер нажатой клавиши, а соответствующий символу на этой клавише ASCII-код. Важно понимать, что этот код не полностью зависит от скан-кода, ведь одной и той же клавише может быть присвоено несколько значений. Это зависит в том числе и от состояния других клавиш (например, кнопка 0 используется и для ввода символа), когда она нажата вместе с кнопкой) и системных настроек. Именно это позволяет варьировать раскладку клавиатуры (то есть порядок расположения клавиш на ней).

Все преобразования скан-кода в ASCII-код выполняются программными средствами. Как правило, данные функции берут на себя соответствующие модули BIOS. Для кодирования символов кириллицы эти модули расширяются клавиатурными драйверами (сейчас они включены в состав операционных систем).

Схема (рис.3) поясняет работу котроллера клавиатуры.

Г-генератор тактовых импульсов; СЧ- счетчик; С – селектор.

Рис.3. Простейшая структура клавиатуры

Дешифратор последовательно опрашивает состояние ключей, расположенных в столбцах X матрицы клавиатуры. Если какая-либо клавиша нажата, то сигнал через замкнутый контакт поступает на соответствующую горизонтальную шину Y и через селектор (регистр) поступает на вход ПЛМ (ПЗУ). Сигналы с дешифратора и селектора образуют адресный вход ПЛМ (ПЗУ), в ячейках которой записаны коды символов (их младшие разряды). Код символа записывается в выходной регистр. Старшие разряды кода определяются содержимым специального регистра, изменяющего своё значение только при нажатии клавиши изменения регистров (Shift, Alt и др.).