6.6. Архитектура программируемого контроллера клавиатуры и индикации (ПККИ) КР580ВВ79

Микросхема КР580ВВ79 – программируемое интерфейсное устройство, которое предназначено для ввода и вывода информации в системах, выполненных на основе 8– и 16–разрядных микропроцессоров КР580ВМ80А и КМ1810ВМ86. Кроме того, микросхема может применяться и как самостоятельное устройство при выполнении требований, предъявляемых к электрическим и временным параметрам.

Микросхема состоит из двух функционально автономных частей: клавиатурной и дисплейной.

Клавиатурная часть обеспечивает ввод информации в микросхему через «линии возврата» RET7 – RET0 с клавиатуры (клавиатурная матрица объемом 8 слов x 8 разрядов с возможностью расширения до 4×8 слов x 8 разрядов) и матрицы датчиков (8 слов x 8 разрядов), а также ввод по стробирующему сигналу (8 слов х 8 разрядов). Для хранения вводимой информации в микросхеме предусмотрен обратный магазин – оперативное запоминающее устройство (ОМ–ОЗУ) емкостью 8 байт. Последний работает по принципу «первый вошел – первый вышел».

При наличии информации в ОМ–ОЗУ микросхема вырабатывает сигнал «Запрос прерывания» INT; а в случае ввода или чтения более восьми символов – сигналы (флаги) переполнения или переопустошения.

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

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

Дисплейная часть микросхемы обеспечивает вывод информации по двум 4–разрядным каналам DSPA3–DSPA0 и DSPB3–DSPB0 в виде двоичного кода на 8– и 16–разрядные цифровые или алфавитно–цифровые дисплеи.

Для хранения информации, подлежащей отображению в микросхеме, имеется оператив­ное запоминающее устройство отображения объемом 16 слов x 8 разрядов, которое также можно использовать как два устройства объемом по 16 слов x 4 разряда, одно устройство объемом 16 слов х 4 разряда или одно устройство объемом 8 слов x 8 разрядов.

Информация на дисплей может выводиться двумя способами: слева направо без сдвига или справа налево со сдвигом.

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

Программирование режимов работы, запись информации в ОЗУ отображения, чтение информации из ОМ–ОЗУ отображения, а также чтение внутреннего состояния микросхемы осуществляются через 8–разрядный двунаправленный канал данных D7–D0 при подаче соответствующих управляющих сигналов.

Микросхема обеспечивает также формирование кодированных или дешифрованных интерфейсных сигналов сканирования S3–S0 клавиатуры и дисплея, а также сигнала для межразрядного гашения  BD информации  на дисплее.

Наличие выходной линии запроса прерывания INT и режима чтения внутреннего состоя­ния позволяют использовать данную микросхему в системах с прерыванием и последова­тельным опросом внешних устройств. Микросхема допускает одновременное выполнение функций ввода/вывода и рассчитана по выводу INT на прямое подключение к шинам микропроцессоров КР580ВМ80А и КМ1810ВМ86.

Применение микросхемы КР580ВВ79 в системах позволяет полностью освободить микропроцессор от операций сканирования клавиатуры и регенерации отображения на дисплее.

Условное графическое обозначение микросхемы приведено на рис. 6.30, структурная схема показана на рис. 6.31.

Схема управления вводом/выводом вырабатывает сигналы, которые управляют обменом информации с микропроцессором (табл. 6.8), а также внутренними пересылками данных и команд к различным регистрам и буферным схемам микросхемы.

Команды или данные записываются в микросхему после перехода сигнала WR из состояния низкого в состояние высокого уровня.

Источником данных при чтении состояния микросхемы служит 8–разрядный регистр словосостояния (рис. 6.32), в котором содержится информация о состоянии ОМ–ОЗУ, ошибках и запрещении доступа к ОЗУ отображения. Регистр словосостояния переходит в 0 при поступлении команды «Сброс» (разряд D1 или D0), а также с помощью аппаратного сброса.

Буферные схемы канала данных D7–D0 предназначены для обмена информацией между микросхемой КР580ВВ79 и микропроцес­сором КР580ВМ80А. При подаче сигналов WR и CS осуществляется ввод информации в микросхему, а при подаче сигналов RD и CS – вывод информации из микросхемы. Если сигнал CS находится в состоянии высокого уровня, то через буферные схемы D7–D0 обмен информацией между микросхемой и микропроцессором не происходит.

Таблица 6.8

Сигналы на входах

Направление и вид информации

А0

RD

WR

CS

1

1

0

0

Канал данных – ПККИ

(команда)

0

1

0

0

Канал данных – ПККИ

(данные)

1

0

1

0

ПККИ – канал данных

(словосостояние)

0

0

1

0

ПККИ – канал данных

(данные)

Х

Х

Х

1

ПККИ в высокоомном состоянии

Схема управления и синхронизации кроме основных своих функций вырабатывает также выходной сигнал BD длительностью не менее 150 мкс, который используется для гашения отображения на дисплее во время смены цифр (букв) или при поступлении команды «Гашение отображения». Если в команде «Гашение отображения» разряды D1 и D0 равны нулю, то сигнал BD равен нулю в период всего времени действия команды. Если один из разрядов Dl, D0 команды «Гашение отображения» равен нулю, то сигнал BD равен нулю в течение не менее 150 мкс.

Счетчик сканирования вырабатывает сигналы сканирования клавиатуры, матрицы датчиков и дисплея и работает в двух режимах. В режиме кодированного сканирования он обеспечивает выдачу на выходы сканирования S3–S0 двоичного кода последних четырех разрядов счетчика синхронизации, который должен дешифрироваться внешним дешифратором для получения сигналов сканирования клавиатуры и дисплея. В режиме дешифрирован­ного сканирования счетчик сканирования дешифрирует внутри микросхемы два младших разряда счетчика сканирования и обеспечивает выдачу дешифрированных сигналов на выводы S3–S0.

Если запрограммирован режим дешифрированного сканирования клавиатуры, то в таком же режиме будет работать и дисплей. Это означает, что в данном режиме будут воспроизводиться только первые четыре символа ОЗУ отображения. Счетчик сканирования сбрасывается в исходное состояние аппаратным или программным сбросом.

Оперативное запоминающее устройство отображения объемом 16 слов x 8 разрядов можно организовать в сдвоенное ОЗУ объемом 16 слов х 4 разряда. ОЗУ отображения можно сбрасывать в 1,0 или шестнадцатеричное число 20 командой «Сброс».

Регистр адреса ОЗУ отображения предназначен для хранения адреса данных, которые в данный момент записываются или считыва­ются микропроцессором. Адрес в регистр адреса отображения записывается с помощью команды «Запись в ОЗУ отображения» или «Чтение ОЗУ отображения». Разряд D4 в этих командах может устанавливаться как с автоинкрементированием, так и без него. Регистр адреса отображения сбрасывается на нулевую строку сканирования аппаратным и программным сбросом, записью режима работы, а также разрядом D4=1 в команде «Сброс», когда дисплей устанавливается в 0,1 или шестнадцатеричное число 20.

Регистры ОЗУ отображения хранят дан­ные, которые в момент сканирования сигнала­ми S3–S0 отображаются на выходах DSPA3–DSPA0 и DSPB3–DSPB0. В соответствии с запрограммированной командой «Гашение–запрет записи отображения» выходы DSPA3–DSPA0, DSPB3–DSPB0 можно устанавливать одновременно или раздельно в код, который программируется командой «Сброс».

Входная информация D7–D0, записываемая в буферные схемы канала данных, соответствует информации на выходах DSPA3–DSPA0, DSPB3–DSPB0:

D7

D6

D5

D4

D3

D2

D1

D0

DSPA3

DSPA2

DSPA1

DSPA0

DSPB3

DSPB2

DSPB1

DSPB0

Ввод слева соответствует простейшему формату отображения, в котором каждой по­зиции дисплея соответствует определенная строка в ОЗУ отображения. Адресу 0 в этом ОЗУ соответствует крайний слева символ дис­плея, а адресу 15 в 16–разрядном дисплее или адресу 7 в 8–разрядном – крайний справа сим­вол дисплея. Ввод символов, начиная с нуле­вой позиции, вызывает заполнение дисплея слева направо. Символ        17 или 9 будет в этом случае вводиться снова в крайнюю слева позицию дисплея и т. д.                

Ввод в произвольную ячейку при установ­ке режима ввода слева не приводит к нежелательным побочным эффектам, и результат при этом предсказуем. В данном режиме используется как автоинкрементирование, так и ввод слева без автоинкрементирования.

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

Буферные схемы клавиатуры и датчиков хранят входную информацию в режимах сканирования клавиатуры, сканирования матрицы датчиков и ввода по стробирующему сигналу. В режиме сканирования клавиатуры информация, вводимая в ОМ–ОЗУ, соответствует позиции ключа в клавиатуре и состоянию входных сигналов SH и CO/STB:

C0/STB

SH

Номер строки

Номер столбца

D7

D6

D5

D4

D3

D2

D1

D0

Состояние входного сигнала C0/STB соответствует старшему разряду этого формата, а состояние входного сигнала SH – следующему по меньшинству разряду. Значения следу­ющих трех разрядов соответствуют трем младшим разрядам счетчика сканирования и номеру строки, в которой нажата клавиша. Значения трех последующих разрядов соответ­ствуют значениям трех разрядов, которые предшествуют трем младшим разрядам S2–S0 счетчика сканирования и номеру столбца, в котором нажата клавиша. В качестве клави­атуры, подключаемой к микросхеме, может использоваться любая клавиатура, подобная клавиатуре пишущей машинки с 64–контактной матрицей клавиш, которая может быть расширена до 256–контактной матрицы.

В режиме матрицы датчиков данные, по­ступающие с входов RET7–RET0, вводятся непосредственно в ту строку ОЗУ датчиков, которая соответствует сканируемой в данный момент строке матрицы. Следовательно, каж­дая позиция ключа в матрице соответствует определенной позиции ОЗУ датчиков. Входы SH и C0/STB при работе в режиме матрицы датчиков не используются. К буферным схе­мам клавиатуры и датчиков в этом режиме можно подключать не только ключи. Любая логическая схема, кото

рой можно управлять с помощью выходов сканирования S3–SO, вводит данные на входы RET7–RET0. Напри­мер, к входам RET7–RET0 можно подключать восемь мультиплексированных каналов ввода и сканировать их с помощью микросхемы КР580ВВ79. Информация, считанная с ОЗУ датчиков, будет инверсной.

В режиме ввода по стробирующему сигналу содержимое входов RET7–RET0 записывается в буферные схемы клавиатуры и датчиков строб–импульсом C0/STB. Вход SH в этом режиме не используется. Длительность строб–импульса должна быть не менее одного периода ТС.

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

В режиме сканирования клавиатуры с об­наружением 2–клавишных сцеплений ввод осу­ществляется по одной клавише, а при нажатии двух и более клавиш код ни одной из них не будет введен в ОМ–ОЗУ датчиков.

В режиме сканирования клавиатуры с об­наружением N–клавишных сцеплений при на­жатии нескольких клавиш все они опознаются и вводятся в ОМ–ОЗУ датчиков в соответст­вии с порядком сканирования.

В режиме сканирования клавиатуры с об­наружением N–клавишных сцеплений при про­граммировании команды «Сброс прерывания – установка обнаружения ошибок» ввод осуще­ствляется только по одной клавише. При од­новременном нажатии двух и более клавиш код ни одной из них не вводится в ОМ–ОЗУ датчиков, но при этом в слове состояния устанавливается флаг ошибки D6.

Обратный магазин – ОЗУ датчиков пред­назначено для хранения с последующим счи­тыванием кода позиции клавиш, состояния ключей в матрице датчика, а также информа­ции, вводимой по стробирующему сигналу. ОМ–ОЗУ датчиков представляет собой ОЗУ с организацией 8×8, которое может выпол­нять две функции. В режимах сканирования клавиатуры или ввода по стробирующему сиг­налу оно работает как ОМ–ОЗУ (обратный магазин, работающий по принципу «первым вошел – первым вышел»). Каждое вновь вво­димое значение данных в этом случае записы­вается в последующие ячейки ОЗУ и каждое из них впоследствии считывается в том же по­рядке, в каком оно вводилось. В режиме ска­нирования матрицы датчиков данное ОЗУ ра­ботает как ОЗУ датчиков. Каждая строка ОЗУ датчиков загружается состоянием соот­ветствующей строки датчиков в матрице дат­чиков. В этом режиме на выходе INT уста­навливается напряжение высокого уровня только в том случае, если обнаружено изме­нение состояния датчиков.

Схема анализа состояния ОМ–ОЗУ датчи­ков предназначена для отображения состояния ОМ–ОЗУ датчиков, т. е. следит за числом символов, содержащихся в ОМ–ОЗУ датчи­ков, и за тем, является ли он полным или пустым. Слишком большое число операций считывания из ОМ–ОЗУ или записи в ОМ–ОЗУ распознается как ошибка. Схема анали­за состояния ОМ–ОЗУ датчиков формирует также сигнал прерывания INT, если ОМ–ОЗУ содержит информацию. В режиме скани­рования матрицы датчиков схема анализа со­стояния ОМ–ОЗУ датчиков следит только за числом символов в нем (их может быть не более семи).

Программирование ПККИ.

Описанные ниже команды программируют режим работы микросхемы КР580ВВ79. Перед программированием режима работы необходи­мо установить микросхему в исходное состоя­ние. На вход SP следует подать напряжение высокого уровня

длительностью не менее 6ТС. ОМ–ОЗУ датчиков и ОЗУ отображения в нулевое состояние сигналом SR не устанав­ливаются.

Команда «Установка режимов работы клавиатуры и дисплея» предназначена для задания режима работы микросхеме КР580ВВ79. На рис. 6.33 показано детальное раскодирование данной команды. Разряды D4 и D3 определяют код режима работы дисплейной части, а разряды D2–D0 – код режима работы клавиатурной части микросхемы.

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

Команда «Программирование синхрониза­ции» предназначена для обеспечения требуемой скорости сканирования клавиатуры–дисп­лея, а также согласования цикла синхронизации микропроцессора с внутренним циклом синхронизации микросхемы. Формат команды:

D7

D6

D5

D4

D3

D2

D1

D0

0

0

1

К = 2 – 31

D7–D5 – код команды «Программирование синхронизации»; D4–D0 – код программируе­мого коэффициента деления К.

Команда «Чтение ОМ–ОЗУ датчиков» используется для чтения данных из ОМ–ОЗУ датчиков. Формат команды:

D7

D6

D5

D4

D3

D2

D1

D0

0

1

0

А

Х

Адрес

где D7–D5 – код команды «Чтение ОМ–ОЗУ датчиков»; D4 – флат автоинкрементирования; D3 – разряд не используется; D2–D0 – адрес строки, читаемой микропроцессором.

В режиме сканирования матрицы датчиков используется флаг автоинкрементирования D4 и разряды адреса D2–D0. В клавиатурном режиме и режиме ввода по стробирующему сигналу для чтения ОМ–ОЗУ датчиков достаточно подать только код команды.

Команда «Чтение ОЗУ отображения» используется для чтения данных из ОЗУ отобра­жения. Формат команды:

D7

D6

D5

D4

D3

D2

D1

D0

0

1

1

А

Адрес

где D7–D5 код команды «Чтение ОЗУ отображения»; D4 – флаг автоинкрементирования; D3–D0 – адрес строки, читаемой микропроцессором.

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

Команда «Запись в ОЗУ отображения» ис­пользуется для записи информации в ОЗУ ото­бражения. Формат команды:

D7

D6

D5

D4

D3

D2

D1

D0

1

0

0

А

Адрес

где D7–D5 – код команды «Запись в ОЗУ отображения»; D4 – флаг автоинкрементирования; D3–D0 – адрес строки, в которую за­писывается информация.

Адресация и автоинкрементирование при записи в ОЗУ отображения аналогичны адре­сации и автоинкрементированию при чтении из ОЗУ отображения. Различие состоит в том, что команда «Запись в ОЗУ отображения» не влияет на выбор источника информации при чтении, т. е. микропроцессор будет производить чтение из того ОЗУ (ОЗУ отображения или ОМ–ОЗУ датчиков), которое было указано последним.

Команда «Гашение – запрет записи ото­бражения» используется для гашения отобра­жения на выходах DSPA3–DSPA0 и DSPB3– DSPB0 (в нули, единицы и шестнадцатеричное число 20), а также для запрещения записи в одну из половин ОЗУ отображения или обе половины одновременно. Формат команды:

D7

D6

D5

D4

D3

D2

D1

D0

1

0

1

Х

А

В

А

В

где D7–D5 – код команды «Гашение – запрет записи отображения»; D4 разряд не используется; D3 – запрет записи в ОЗУ отображения по входам D7–D4 для канала А; D2 – запрет записи в ОЗУ отображения по входам D3–D0 для канала В; D1 – гашение выходов DSPA3–DSPA0 для канала A; D0 – гашение выходов DSPB3–DSPB0 для канала В.

Гашение отображения или запрет записи информации в ОЗУ отображения осуществля­ется при записи 1 в соответствующий разряд команды «Гашение – запрет записи отобра­жения». После аппаратного сброса выходы DSPA3–DSPA0, DSPB3–DSPB0 и BD авто­матически устанавливаются в состояние низко­го  уровня.

Команда «Сброс» предназначена для осу­ществления программного сброса микросхемы, сброса слова состояния и прерывания сигнала INT, а также сброса ОЗУ отображения и вы­ходов DSPA3–DSPA0, DSPB3–DSPB0 в код, который определяется разрядами D3, D2 (см. рис. 6.34).

Команда «Сброс прерывания – установка режима обнаружения ошибок» предназначена для сброса сигнала INT в режиме матрицы датчиков и установки специ

ального режима обнаружения ошибок в клавиатурном режиме с N–клавишным сцеплением. Формат команды:

D7

D6

D5

D4

D3

D2

D1

D0

1

1

1

1

Х

Х

Х

Х

где D7–D5 – код команды «Сброс прерывания – установка режима обнаружения ошибок»; D4 – код установки режима обнаружения ошибок; D3–D0 – безразличное состояние.