Главная страница

5 Организация ввода и отображения данных в мпс


Скачать 0.52 Mb.
Название5 Организация ввода и отображения данных в мпс
АнкорP5d-i79.doc
Дата15.08.2018
Размер0.52 Mb.
Формат файлаdoc
Имя файлаP5d-i79.doc
ТипДокументы
#22978
страница2 из 3
1   2   3


5.3 Работа ПККИ К580ВВ79
Работу ПККИ рассмотрим раздельно для блоков интерфейса клавиатуры (датчиков) и интерфейса индикации.

Контроллер можно настроить на один из трех базовых режимов работы клавиатуры (таблица 5.4, рисунок 5.8) и один из двух базовых режимов работы индикации (таблица 5.5).

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

В режиме стандартной клавиатуры осуществляется ввод только одной единственной клавиши из всего набора (этот режим также часто называют с запрещением ввода кодов двух и более одновременно нажатых клавиш). Если после анализа схемой устранения дребезга контактов (СУДК) на протяжении двух циклов сканирования матрицы (10,24 мс) других сработавших клавиш не было обнаружено, то в ПККИ формируется код клавиши, в разряд D7 которого может помещаться единица - признак кода КОИ-8, а единица в разряде D6 может выступать в роли признака верхнего/нижнего регистра клавиатуры. Разряды D7 и D6 (C0/

STB - управление и SH - верхний/нижний регистр) отражают состояние двух дополнительных клавиш, подключенных непосредственно к входам C0/STB (D7) и SH (D6).


СУДК выполняет преобразование унитарного кода строки и столбца в двоичный и в разряды D5-D3 помещается номер строки матрицы замкнутой клавиши - значение S2-S0 счетчика сканирования, а в разряды D2-D0 - номер столбца матрицы замкнутой клавиши. Код данного слова заносится в FIFO (М-ОЗУ клавиатуры). При этом вырабатывается сигнал запроса на прерывание INT, информирующий о наличии информации в FIFO, если М-ОЗУ до этого было пусто. При каждом считывании из FIFO на выходе INT появляется сигнал низкого уровня, а затем, если очередь еще не пуста, - вновь запрос на прерывание INT.

Если М-ОЗУ (FIFO) полностью загружено, то запись нового слова не производится, а устанавливается признак переполнения (разряд D4) в слове состояния контроллера (рисунок 5.7).

Следует отметить, что в общем случае разряды D7 и D6 вводимого кода могут использоваться при вводе с расширенной клавиатуры, число клавиш которой может быть увеличено до 256.

В режиме стандартной клавиатуры схема анализа и устранения дребезга контактов выполняет следующие функции:

  1. Определяет факт нажатия клавиши и формирует код этой клавиши, не записывая его в М-ОЗУ клавиатуры, а фиксируя в отдельном буферном регистре.

  2. Затем в течение двух циклов сканирования (10,24 мс) проверяет, замкнута ли данная клавиша. Если замкнута, то ее код вводится в М-ОЗУ клавиатуры по адресу указателя стека записи.

  3. В случае, если обнаружены другие нажатия клавиш, проверяет, отжаты ли они раньше, чем данная. При соблюдении этого условия нажатие считается одиночным и код этой клавиши вводится в М-ОЗУ. В противном случае, когда данная клавиша отжата раньше других, ее код игнорируется.

  4. Если одновременно нажаты две или более клавиш, матрица сканируется до тех пор, пока не обнаружится ситуация, когда одна из клавиш остается прижатой, а остальные отжаты (пункты 1-3).

В режиме “игровой” клавиатуры (с разрешением ввода кодов N одновременно нажатых клавиш) коды клавиш вводятся в FIFO (М-ОЗУ) в том порядке, в котором они обнаружены при сканировании клавиатуры после двух циклов сканирования устранения дребезга контактов.

Существует разновидность режима “игровой” клавиатуры, который устанавливается при записи в контроллер CW7 “Снятие запроса на прерывание - подключение средств обнаружения ошибок”. В этом режиме контроллер дополнительно формирует сигнал ошибки, записываемый в бит D6 слова состояния ПККИ, в том случае, если во время одного из циклов проверки на дребезг контактов будет обнаружено две и более одновременно нажатых клавиш. Установка флага ошибки S/E в слове состояния запрещает запись информации в М-ОЗУ (FIFO) и устанавливает сигнал прерывания INT=1. При обнаружении одиночного срабатывания код клавиши вводится в М-ОЗУ и также формируется сигнал запроса на прерывание INT. Как видно данный режим является модификацией режима стандартной клавиатуры, но с запретом записи в М-ОЗУ и выработкой сигнала INT в двух случаях: при вводе кода клавиши в М-ОЗУ при одиночном нажатии и при обнаружении одновременного срабатывания нескольких клавиш. Данный режим удобно использовать для формирования звукового сигнала при обнаружении факта игнорирования ввода нажатых клавиш в М-ОЗУ. В ППОП предварительно необходимо прочитать в МПр слово состояния ПККИ и, если его бит D6=0 выполнить процедуру чтения кода клавиши в микропроцессор, иначе (D6=1) выдать на динамик звуковой сигнал и сбросить флаг ошибки в слове состояния ПККИ путем загрузки управляющего слова CW6 с битом D1=1 (сброс интерфейса клавиатуры), после чего снова разрешается запись в М=ОЗУ.

  1. В режиме анализа матрицы датчиков сигналы, снимаемые с матрицы датчиков (состояния датчиков) через входы RET7-RET0, минуя СУДК , поступают непосредственно в М-ОЗУ в унитарном коде, доступ к которому разрешен в каждом цикле сканирования матрицы датчиков. Ввод состояний датчиков в М-ОЗУ осуществляется в обратном коде (с инверсией). Таким образом, в этом режиме схема анализа и устранения дребезга контактов отключена, а М-ОЗУ работает в режиме произвольного доступа, при этом в качестве источника адреса записи в М-ОЗУ выступает счетчик сканирования, а чтения - регистр адреса ОЗУ индикации.

Состояния датчиков, подключенных ко входам C0/STB и SH ПККИ, в этом режиме игнорируются. Так как состоянию каждого датчика соответствует один разряд, то в М-ОЗУ в каждом цикле опроса хранится отображение всей матрицы датчиков в виде бит-карты (в унитарном коде).

Сигнал прерывания INT=1 вырабатывается, если в конце цикла сканирования матрицы датчиков (СТS=7 или 15 при кодированном выходе или CTS=0111 - при декодированном) обнаружится, что хотя бы один датчик изменил свое состояние на противоположное по сравнению с предыдущим циклом сканирования. При этом дальнейшая запись в М-ОЗУ запрещается и в слове состояния PSW ПККИ устанавливается бит D6=1, а при чтении PSW в разрядах D3-D0 отображается номер строки матрицы в момент чтения (содержимое RgA ОЗУИ).

Работа ПККИ в этом режиме имеет ряд особенностей:

  • при срабатывании двух и более датчиков в одной строке матрицы вырабатывается один сигнал запроса на прерывание INT, а если произошло несколько срабатываний в разных строках матрицы - вырабатывается К сигналов INT, где К - число строк, кроме нулевой, в которых хотя бы один датчик изменил свое состояние на противоположное;

  • исключение составляет нулевая строка, в которой множественные изменения датчиков вызывают такое же число сигналов прерывания L и запретов записи в М-ОЗУ.

Таким образом, число сигналов INT составляет К срабатываний в строках с первой по седьмую плюс число сработавших датчиков в нулевой строке и минимум может составлять от одного до максимум К=7, L=8, т.е. N=K+L=15.

Сигнал INT может быть снят и запись в М-ОЗУ разрешена в следующих ситуациях:

  1. при загрузке управляющего слова CW7 независимо от значения признака автоинкрементирования установленного в CW2;

  2. после выполнения первой команды чтения IN в микропроцессор, если в RgA при загрузке CW2 режим автоинкрементирования не был установлен;

  3. после выполнения N команд чтения IN в микропроцессор, если в RgA при загрузке CW2 режим автоинкрементирования был установлен, т.е. число команд чтения должно равняться числу сигналов прерывания, выработанных при вводе нового состояния матрицы датчиков.

При снятии сигнала запроса на прерывание бит D6 в PSW автоматически сбрасывается. Эти свойства необходимо учитывать при составлении ППОП в зависимости от области применения и количества датчиков в матрице. Кроме матрицы датчиков, ко входам порта ввода RET7-RET0 можно подключать любые логические схемы, работающие под управлением сигналов счетчика сканирования (например, до 8 мультипликсированных портов ввода сигналов с объекта управления, состояние которых будет периодически анализироваться контроллером (рисунок 5.10).

  1. Режим ввода по стробу предназначен для работы с матрицами клавиатуры, использующих эффект Холла или явления ферромагнетизма, для снятия информации с которых требуются стробирующие импульсы.




В этом режиме с выходов матрицы клавиатуры снимается код клавиши и через линии RET7-RET0 записывается в буфер возврата по срезу сигнала на входе C0/STB, длительность которого должна быть не меньше периода сигнала синхронизации CLK, а по фронту импульса строба вводимый код переписывается в М-ОЗУ, минуя схему анализа и устранения дребезга контактов в инверсном коде. В этом режиме обращение к М-ОЗУ происходит также по принципу очереди FIFO на 8 слов и при записи кода клавиши в М-ОЗУ формируется сигнал запроса на прерывание INT. При этом вход C0/STB используется для подачи стробимпульса, а вход SH не используется.

Таким образом, выделим особенности формирования сигнала запроса на прерывание INT в различных режимах:

  • в режимах стандартной, “игровой” клавиатуры и ввода по стробу высокий уровень сигнала INT является признаком того, что в М-ОЗУ, работающем по принципу FIFO, есть информация, которую надо прочитать микропроцессором. В режиме программного опроса (прерывания в МПр запрещены) наличие информации в М-ОЗУ можно проанализировать путем чтения слова состояния ПККИ (биты D3-D0), а при аппаратной реакции на прерывание, например, с использованием БИС ПКП К1810ВН59А;

  • при считывании кода клавиши из FIFO в этих режимах сигнал INT сбрасывается и снова становится активным, если в FIFO имеется еще непрочитанная информация;

  • в режиме “Анализа матрицы датчиков” появление сигнала INT указывает на изменение состояния датчиков, а в режиме “Подключение средств обнаружения ошибок” на ввод кода клавиши в М-ОЗУ или одновременное срабатывание двух и более клавиш. При этом в обоих режимах запись в М-ОЗУ блокируется (в последнем случае только при обнаружении двух и более одновременно нажатых клавиш).

В этих режимах целесообразно использовать сигнал INT в качестве сигнала прерывания для запуска подпрограммы анализа возникшей ситуации.

Также отметим, что при чтении слова состояния ПККИ в МПр разряды D4 и D5 автоматически сбрасываются.

При работе блока интерфейса клавиатуры микропроцессор параллельно может выполнять загрузку управляющих слов CW2, CW3, CW4 (таблица 5.3) и по командам OUT и IN выполнять операции обмена информацией с клавиатурой и дисплеем.
Рассмотрим функционирование блока интерфейса индикации.

Дисплейная часть (индикаторы) рассчитана на обслуживание “мультиплексированных секций без встроенной памяти”, например, цифровой индикатор калькулятора. Каждая дисплейная секция имеет информационные входы и разрешающий вход (рисунок 5.2). Информация на индикаторе отображается в виде знака только при подаче разрешающего сигнала (анод).

Необходимый для отображения знака код на информационных входах секции определяется типом дисплейной секции (рисунки 5.2 и 5.4).

Мультиплексированные дисплейные секции позволяют использовать один информационный канал для поочередного обслуживания всех дисплейных секций (рисунок 5.3) путем подачи кода символа параллельно на входы всех индикаторов, а выбор отображаемого символа осуществляется сигналом выбора индикатора с декодированных выходов счетчика сканирования (регенерация изображения), что за счет инерционности зрения создает эффект непрерывной работы всех индикаторов.

Отображаемые коды хранятся в ОЗУ индикации (регенерации), из которого циклически считываются и передаются на входы индикаторов коды символов под управлением счетчика сканирования (источником адреса чтения ОЗУИ и регенерации изображения на индикаторе является счетчик сканирования).

В структуре контроллера ВВ79 можно выделить ОЗУ индикации емкостью 16 слов х 8 бит (рисунок 5.6), регистр адреса RgA и выходные регистры OUTA и OUTB. Выходные сигналы счетчика сканирования управляют выборкой информации из ОЗУИ и после каждого обращения инкрементируют код адреса CTS, что обеспечивает процесс регенерации изображения на индикаторах. В моменты изменения состояния CTS вырабатывается сигнал гашения (BD) длительностью 160 мкс, используемый для гашения индикатора при смене символов.

Заметим, что ОЗУИ не связано аппаратно по данным с клавиатурной частью контроллера. Обмен данными с ОЗУ индикации возможен только через МПр при выполнении команд обмена данными (А0=0) с контроллером. Из М-ОЗУ данные считываются в микропроцессор в виде кода клавиши, а в зависимости от решаемой задачи код клавиши необходимо преобразовать программными средствами в требуемый код символа для отображения на индикаторе. Код отображаемого символа может быть представлен в одном из следующих вариантов:

  • в семисегментном коде символа, не требующего дальнейшего преобразования для вывода на индикатор;

  1. в виде кода клавиши (код клавиши и символа совпадают);

  2. в стандартном коде представления символов в микроЭВМ - код КОИ-8;

  3. в виде любого двоично-десятичного или шестнадцатеричного кода символа (цифровой код).

Преобразования кода клавиши или выводимой из МПр выходной информации в код символа выполняются в микропроцессоре программно с помощью специальной программы кодогенератора или аппаратно при записи данных из МПр в ОЗУИ на основе ПЗУ кодогенератора или при чтении кода клавиши из М-ОЗУ в МПр. В зависимости от способа представления кода символа в ОЗУИ используются и различные способы подключения линеек индикаторов к выходным линиям OUTA, OUTB контроллера (рисунки 5.11-5.13).




В первом случае (рисунок 5.11) код символа записывается из МПр в ОЗУИ в семисегментном коде и схема не требует наличия на выходах OUTA, OUTB знакогенератора. Во втором случае (рисунок 5.12) код символа представлен любым 8-разрядным кодом (КОИ-8, кодом клавиши и т.д.), что требует на выходах OUTA, OUTB знакогенератора емкостью 256 байт для преобразования кода символа в семисегментный код. И в третьем случае используются две линейки индикаторов и коды символов должны быть представлены любым кодом от одного до четырех бит (в двоичной, восьмиричной, шестнадцатеричной системах счисления или в любом двоично-десятичном коде). При этом запись кодов символов в ОЗУИ из МПр осуществляется раздельно по старшей или младшей тетраде с запретом записи в одну из половинок ОЗУИ (с загрузкой CW5), а на каждом из выходов OUTA, OUTB необходимо иметь по знакогенератору емкостью по 16 байт для преобразования кода символа в семисегментный код.

Коды символов из ОЗУИ выдаются синхронно с работой счетчика сканирования, и существует жесткое соответствие кода счетчика сканирования и адреса ячейки ОЗУИ, из которой выдается информация. Так как счетчик сканирования дешифрируется для выработки сигналов включения индикаторов дисплейных секций, то это обеспечивает отображение в каждой из секций содержимого одной и той же ячейки ОЗУИ (для вывода информации на индикатор со старших разрядов).

Настройка блока интерфейса индикации осуществляется при загрузке управляющего слова CW0 в зависимости от содержимого разрядов D4, D3 на режим 8-разрядной индикации, сканируемой за 5,12 мс, или 16-разрядную, сканируемую за 10,24 мс при внутренней частоте генератора 100 кГц. Также при настройке задается способ выдачи кодов со счетчика сканирования (выходы S3-S0) (таблица 5.4). При декодированном режиме линий сканирования S3-S0 информация появляется только в первых четырех разрядах дисплея, отменяя режим вывода на 8- и 16-разрядную индикацию. Также задается один из двух режимов вывода символов: слева направо (начиная со старшего разряда индикатора) или справа налево (начиная с младшего разряда индикатора).

Программным путем (загрузкой CW5 “Запрет записи в ОЗУ индикации - гашение”) можно запретить выдачу любой одной или обеих тетрад содержимого выходных регистров индикации OUTA, OUTB. При этом в случае запрета выдачи обеих тетрад сигнал низкого уровня на выходе BD будет оставаться на время действия управляющего слова (режим гашения индикатора), а запрет записи в старшую или младшую тетрады ОЗУИ используется для организации вывода данных на две линейки индикаторов.

В режиме заполнения дисплея со стороны старших разрядов (вывод слева направо) каждому адресу ОЗУ индикации имеется прямое соответствие номера индикатора в секции.

Нулевой адрес ОЗУИ соответствует старшему разряду дисплея, а адрес 15 (или 7 - при отображении 8 символов) - младшему разряду дисплея (рисунок 5.14а). Последовательная запись информации в ячейки ОЗУИ с адреса 0 вызывает последовательное заполнение дисплейных секций со стороны старших разрядов. После заполнения всех 16 (8) ячеек ОЗУИ новая информация записывается опять в ячейку с адресом 0 и эта информация вновь отображается в старшем разряде дисплея и т.д.

Режим заполнения со стороны младших разрядов дисплея (справа налево) применяется в большинстве калькуляторов. Первая вводимая цифра помещается в младшем разряде дисплея, следующая - туда же, а ранее введенная цифра сдвигается в сторону старших разрядов (влево) и т.д. (рисунок 5.14б). Цифры, сдвигаемые из старшего разряда дисплея, теряются. При установке режима заполнения дисплея справа теряется прямое соответствие адресов ячеек ОЗУ индикации и номеров (позиции) индикаторов дисплея, в которых отображается информация, так как адрес чтения из ОЗУИ определяется как CTS + N, где N - число введенных символов в ОЗУ индикации.



При каждом вводе новой цифры в ОЗУИ в режиме автоинкрементирования адреса код RgA ОЗУИ изменяется на единицу, поэтому дисплей работает правильно только после предварительной установки адреса на нулевую ячейку ОЗУИ. Запись кода цифры в произвольную ячейку ОЗУИ в режиме вывода с младших разрядов индикатора с автоинкрементированием не рекомендуется, так как может вызвать непредсказуемый результат.

Запись данных в ОЗУИ без автоинкрементирования ведется в одну и ту же ячейку и отображается в одном и том же разряде дисплея.

Если запись в ОЗУИ начать не с адреса 0, то заполнение дисплея начинается с разряда, соответствующего адресу ячейки ОЗУИ, установленному CW4 “Запись в ОЗУИ”. Новые разряды будут появляться именно в этой позиции дисплея (для вывода справа налево), а ранее введенные будут сдвигаться по кольцу через старший разряд в нулевой разряд дисплея и пропадать при переходе к позиции, в которой появляются новые разряды (рисунок 5.14в), а при выводе слева направо новые разряды будут появляться в следующей позиции дисплея, а ранее введенные будут затираться новой информацией.
1   2   3


написать администратору сайта