Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
микры и вмсс вместе.doc
Скачиваний:
36
Добавлен:
19.03.2015
Размер:
4.68 Mб
Скачать

13.Организация взаимодействия человека оператора с вычислительной системой.

Информационно-управляющие системы делятся на 2 класса:

  1. без вмешательства человека

  2. системы, требующие в процессе работы вмешательства человека-оператора – интерактивные

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

По функциональному назначению клавиатуры делят на:

  1. Простейшие клавиатуры, состоящие из функциональных клавиш.

  2. Цифровые клавиатуры, содержащие клавиши, обеспечивающие ввод цифр в шестнадцатеричном формате и функциональные клавиши.

  3. Алфавитно-цифровые, позволяющие вводить информацию в символьном виде.

  4. Многофункциональные клавиатуры, построенные на базе сменных панелей.

Каждому типу клавиатуры соответствует некоторое устройство отображения. Для простейших клавиатур таким устройством может быть лампочка; для цифровых клавиатур таким устройством служат индикаторы. Для алфавитно-цифровых клавиатур существуют алфавитно-цифровые или графические экраны.

По способу аппаратной реализации клавиатуры делят на: кодирующие и некодирующие

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

Работа с клавиатурой включает в себя 2 этапа: сканирование клавиатуры и опрос. Сканирование – это последовательная подача сигнала активного уровня (уровня логического нуля) на линии сканирования С3…С0 (SL3...SL0). Опрос выполняется в каждом такте сканирования и заключается в чтении кода опроса на линиях сканирования O3...O0 (RL3...RL0).

{За полный цикл сканирования формируется блок данных содержащий сведения обо всех нажатых (отпущенных) клавишах. Рассмотрим клавиатуру 3×3 клавиши:

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

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

Наиболее очевидный способ кодирования нажатой клавиши – это кодировать её кодом, состоящим из 2-х частей: из номера строки и номера столбца. Например

[R2R1R0] [C2C1C0]

S22 – код: [101] [101]

Можно перейти от позиционного кода к двоичному:[R1R0] [C1C0]

S22 – код [01] [01]

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

t1 – нажата клавиша S13

t2 – нажата клавиша S22

t3 – нажата клавиша S31

Продолжительность сигналов IRQ составляет порядка нескольких миллисекунд, поэтому пренебрегают формой переднего и заднего фронтов, следовательно, сигналы IRQ имеют прямоугольную форму.

При программировании клавиатуры необходимо реализовать две процедуры:

- обнаружение нажатия на клавишу

- ввод кода нажатой клавиши

Часто ввод кода нажатой клавиши происходит после её отпускания («освобождения»). Обнаружение может выполняться в программном режиме или в режиме прерывания. В программном режиме для обнаружения факта нажатия на клавишу можно одновременно активизировать все линии сканирования, при этом наличие «0» в коде опроса говорит о том, что нажата хотя бы одна клавиша. Ввод кода осуществляется в процедуре сканирования. Если клавиатура имеет небольшое количество клавиш, и ресурсы МК используются не полностью, возможно непосредственное подключение клавиатуры к МК; но наиболее часто на практике используют дешёвые МК, так называемые PIC-микроконтроллеры (характеризуются маленьким количеством выводов (24) и ограниченным набором команд (до 60)). Обмен МК с ЦП осуществляется, как правило, по последовательному интерфейсу (т.к. расстояния довольно велики, а требования к скорости обмена отсутствуют, потому что процессы довольно длительные). Существуют специализированные МК для построения пультов управления. Такие МК совмещают функции управления клавиатурой и индикации (на дисплеи).

Микросхема КР580ВД79 имеет параллельный интерфейс и может быть подключена к системной шине МК.

Процедура ввода кода нажатой клавиши состоит из следующих процедур:

  1. сканирование матрицы клавиш

  2. устранение дребезга контактов (если он есть)

  3. ожидание освобождения клавиши

  4. формирование скан-кода нажатой клавиши

Процедура 2) для некоторых типов клавиатур отсутствует. Такими клавиатурами являются сенсорные клавиатуры, в которых носителями информации являются емкости. Скан-код может быть сформирован в процедуре сканирования, в этом случае 4) процедура совмещается с 1)

Устранение дребезга контактов осуществляется путём введения задержки порядка 5…20 мс. Чтобы при повторном обращении к клавиатуре не был бы введён код той же самой клавиши, после антидребезговой задержки вводится процедура ожидания освобождения нажатой клавиши. При этом возможна ситуация «залипания» клавиши. Чтобы избежать этого, вводят предельное количество циклов ожидания освобождения; если это число превышается, следовательно, клавиши «залипла», что в свою очередь должно вызывать сообщение об ошибке. Это свойство зависит и от самой клавиатуры.

Процедура идентификации клавиши может быть оформлена отдельно от процедуры сканирования. Для сложных клавиатур осуществляется перекодировка скан-кодов в коды символов с помощью таблиц трансляции. Временные задержки можно формировать программно, с помощью таймера или с помощью процессора событий.

Коды нажатия и отжатия каждой клавиши отличаются на 80h. При нажатии (или отпускании) клавиши ее скан-код по кабелю передается 11 разрядным последовательным кодом в ПК на адаптер клавиатуры. Адаптер клавиатуры расположенный на системной плате помещает принятый код (1 байт) в регистр с адр. 60h и выдает аппаратный запрос прерывания IRQ1 с вектором 09h. Процессор прерывает свою работу и трансформирует скан-код в код символа клавиши с учетом признаков статуса клавиатуры (кл. Alt, Ctrl, Shift). То есть, например 'а' или 'А'. Этот код помещается в буфер клавиатуры, способный запомнить до 15 кодов. На время пока работает обработчик прерывания клавиатуры, прием новых кодов блокируется засылкой '0' в ст.разряд регистра с адр. 61h. После обработки зтот разряд уст. в '1'.

Буфер клавиатуры

Буфер клавиатуры находится в ОЗУ с адреса 0040:001E. Для хранения кода каждой нажатой клавиши в буфере отводится 2 байта памяти: в старшем байте хранится скан-код ; в младшем байте код символа клавиши. Для кодов символов используется американский стандарт ASCII (American Standard Code for Information Interchange). Поэтому такой код называется ASCII - кодом. Так хранятся коды всех символьных клавиш, а также клавиш Esc, Enter, Tab, BS. Все остальные клавиши считаются управляющими и ASCII-кодов не имеют. В буфер клавиатуры, при их нажатии, записывается скан-код, а вместо ASCII-кодов заносятся нули. Наконец, есть группа клавиш не имеющая ни скан-кода, ни ASCII -кода поэтому они вообще не заносятся в буфер, но зато изменяют признаки статуса клавиатуры. Это клавиши: Shift, Ctrl, Alt, ScrollLock, NumLock, CapsLock, Insert. Примечание: клавиша Insert имеет скан-код и заносится в буфер.

Указатель буфера

Коды в буфер заносятся вкруговую, то есть после записи в ячейку 003С следует занесение в 001Е и так далее, затирая ранее введенные коды. Чтобы знать какой код введен первым и сколько кодов в буфере, используется "Указатель буфера". Он занимает два слова, начиная с адреса 0040:001А, то есть непосредственно перед буфером клавиатуры (младший байт слов не используется). Указатель головы буфера - это адрес первого введенного в буфер символа, а указатель хвоста указывает адрес свободной ячейки в буфере для ввода очередного символа. Приведенный пример показывает, что в буфере содержится три пары кодов нажатых клавиш по адресам: 0024, 0026 и 0028, ячейка буфера 002А свободна. Как только программа прочтет код первой нажатой клавиши, указатель головы буфера автоматически увеличится и станет равным 0026, затем 0028, и, наконец, 002А. Равенство содержимого "головы" и "хвоста" означает,что бужер пуст. Чтобы очистить буфер без чтения, достаточно в ячейки 0040:001А и 0040:001В записать одинаковые числа.

Признаки статуса клавиатуры

При нажатии каждой клавиши, в буфер клавиатуры может быть занесен различный код в зависимости от содержимого ячеек статуса клавиатуры. Признаки статуса клавиатуры заносятся при нажатии клавиш: Shift, Ctrl, Alt, ScrollLock, NumLock, CapsLock, Insert. Хранятся эти признаки в ячейках 0040:0017 и 0040:0018.

0040:0017 7 6 5 4 3 2 1 0

L-+-+-+-+-+-+-+--

Включена кл. Insert ------ ¦ ¦ ¦ ¦ ¦ ¦ L--- нажата правая кл. Shift

Включена кл. CapsLock ------ ¦ ¦ ¦ ¦ L----- нажата левая кл. Shift

Включена кл. NumLock --------- ¦ ¦ L------- нажата кл. Ctrl

Включена кл. ScrollLock -------- L--------- нажата кл. Alt

0040:0018 7 6 5 4 3 -----

L-+-+-+-+-+-+-+--

Hажата кл. Insert ------ ¦ ¦ ¦ ¦

Hажата кл. CapsLock ------ ¦ ¦ L--- Включен режим Ctrl-NumLock

Hажата кл. NumLock --------- ¦

Hажата кл. ScrollLock --------

Обратите внимание:

- только кл. Shift может быть правой или левой;

- для кл. Insert, CapsLock, NumLock, ScrollLock фиксируется как нажатие, так и включение;

- для кл. Shift, Ctrl, Alt фиксируется только нажатие;

- нет никаких фиксируемых комбинаций клавиш, кроме Ctrl-NumLock;

- есть три свободных разряда для Ваших целей.

Управление клавиатурой

При каждом нажатии клавиши вызывается прерывание INT 9h. Эта программа только записывает код в буфер и изменяет указатель "хвоста". Когда буфер полностью заполнен, новых кодов не вводится, а звучит сигнал. Чтение кодов из буфера и вывод эхо-повтора на экран производится другими программами. Чтобы пользователю не писать своих программ, в BIOS и DOS предусмотрено несколько стандартных программ чтения из буфера клавиатуры, оформленных в виде программных прерываний.