Лекция № Интерфейс клавиатуры

advertisement
Дополнительная лекция: Проектирование интерфейсных устройств
1. Типовые функции микропроцессорной системы
2. Интерфейс клавиатуры
3. Интерфейс устройств индикации
1. Типовые функции МП-систем
Сбор и обработка данных являются типичными задачами любой микропроцессорной системы, связанной с объектом управления или контроля.
Примерная структура такой системы изображена на рисунке 1. Система содержит ядро, состоящее из микропроцессора, системного контроллера и модуля памяти (рассмотрены на предыдущей лекции). Для связи с объектом
контроля (ОК) используется коммутатор каналов 4x1 и восьмиразрядный
аналого-цифровой преобразователь (АЦП).
Рисунок 1- Структура микропроцессорной системы
Индикация цифровой информации осуществляется на символьном индикаторе. Обмен данными между ядром системы и внешними устройствами
цифровыми кодами осуществляется через шину данных ШД и четыре однонаправленных восьмиразрядных порта КА, KB, КС, КD. Причем назначение
портов может быть изменено программным способом.
Система, имеющая структуру, изображенную на рисунке 1, может
обеспечить выполнение различных функций. Среди которых необходимо выделить следующие:
• коммутация каналов контролируемых параметров;
• ввод управляющей информации с клавиатуры;
• обслуживание аналого-цифрового преобразования;
• расчет величины контролируемого параметра;
• выполнение арифметических операций;
• вывод результатов вычислений (преобразований на индикатор);
• программирование временных задержек.
Далее рассмотрим способы решения наиболее важных из этих задач.
2. Интерфейс клавиатуры
Клавиатура является необходимым внешним устройством любой микро-ЭВМ и технологических контроллеров. С помощью клавиатуры можно
вводить программу в ЗУ контроллера, задавать различные режимы его работы: пуск управляющей программы с заданного адреса, остановку программы,
выполнение программы по машинным циклам и покомандно, вывод на дисплей и т.д.
Технически блок клавиатуры реализуется в виде матрицы однополюсных выключателей n  m , где n и m — соответственно число строк и столбцов, содержащих выключатели. Строки и столбцы выключателей запитываются от одного источника питания (рисунок 2, а). При нажатии выключателя
К с координатами (n,m) в соответствующем разряде шины данных будет записан лог. «0». Промышленностью выпускаются блоки клавиатур с различными типоразмерами.
Рисунок 2- Схема подключения клавиатуры
При организации ввода информации с клавиатуры необходимо решить
следующие основные задачи:
• определить факт нажатия клавиши на клавиатуре;
• определить номер нажатой клавиши;
• передать управление на подпрограмму, соответствующую нажатой клавише.
Все эти задачи решаются обычно в специальной обслуживающей программе «МОНИТОР» микроконтроллера. Причем первые две являются специфическими при организации ввода с клавиатуры и решаются на программно-аппаратном уровне, а третья решается программными средствами. Удельный вес каждой из этих задач зависит от выбранного аппаратного решения.
За счет расширенной аппаратной части можно сократить объем программно-
го обеспечения интерфейса, но это приводит к увеличению затрат и снижению надежности.
Из аппаратных интерфейсов клавиатуры наибольшее распространение
имеют устройства комбинационного и сканирующих типов. Эти устройства
строятся на основе шифраторов клавиатуры, позволяющих сформировать
двоичный код нажатой клавиши за счет схемотехнического решения. Функциональная схема шифратора клавиатуры приведена на рисунке 2, б. Матрица клавиатуры КЛ подключается на вход кодирующего устройства, которое
формирует на своем выходе многоразрядный двоичный код. Количество разрядов в двоичном коде зависит от количества клавиш клавиатуры. Так, для
клавиатуры, содержащей 64 клавиши, потребуется 6-разрядный двоичный
код. Кроме формирования кода нажатой клавиши, схема шифратора (СШ)
обычно дополняется схемой устранения эффекта «дребезга» контактов при
их замыкании и размыкании и схемой формирования управляющих сигналов
(СФС). Устранение «дребезга», возникающего при замыкании-размыкании
контактов (рисунке 3, а) достигается использованием в СФС тактирующих
триггеров (например, К155ТМ2).
Рисунок 3- Структура интерфейса клавиатуры с шифратором
Одновременно триггеры используются и для формирования сигнала
«ГОТ» — готовность к считыванию кода клавиши, что позволяет использовать режим прерывания для ввода клавиши в память МК.
На рисунке 3, б приведена структура одного из вариантов интерфейса
клавиатуры на основе шифратора. Для ввода кода клавиши используется канал КА параллельного адаптера ППА. При нажатии на одну из клавиш в
шифраторе СШ формируется код клавиши, а в схеме СФС - сигнал готовности ГОТ, который поступает на один из выводов запроса прерываний контроллера прерываний (на схеме не указан). Контроллер прерываний на своем
выходе формирует запрос прерывания и после получения подтверждения сообщает микропроцессору код команды CALL с адресом подпрограммы пре-
рывания. Микропроцессор, выполняя подпрограмму прерывания, вводит код
нажатой клавиши и переходит на выполнение основной подпрограммы,
определяемой функцией нажатой клавиши (очистить экран дисплея, вывести
на индикатор текущее значение контролируемого параметра, вызвать программу «МОНИТОР» и т.д.).
Недостатком рассмотренного интерфейса является громоздкость аппаратной части. Аппаратную часть можно уменьшить, если функции шифратора передать микропроцессору. На этом принципе строятся интерфейсы клавиатуры многих микро-ЭВМ и контроллеров. Наибольшее распространение
получил интерфейс сканирующего типа, когда матрица ключей подключена
на входы каналов параллельного адаптера, а все остальные задачи решаются
программными средствами. На рисунке 4 изображена упрощенная схема интерфейса клавиатуры сканирующего типа.
Рисунок 4- Схема интерфейса клавиатуры сканирующего типа
Ряды матрицы клавиатуры подключены в младшие разряды (C0-C3) канала
КС параллельного адаптера ППА, а столбцы — в старшие разряды (С4-С7)
канала КС ППА. Канал КС ППА запрограммирован так, что разряды C0-C3
работают в режиме вывода, а старшие разряды С4-С7 — в режиме ввода. К
столбцам матрицы подключен источник питания +5 В. Поэтому, если программно вывести в одну из строк потенциал лог. «0», то факт нажатия любой
из клавиш в этой строке можно определить по потенциалу в разрядах С4+С7
ППА. Действительно, если предположить, что в строку разряда С0 выведен
лог. «О», а кнопка К1, например, нажата, то в разряде С5 ППА окажется потенциал лог. «О», так как ключ К1 зашунтирует источник напряжения +5 В.
Во всех остальных разрядах С4, С6 и С7 канала КС уровень лог. «1» сохранится, так как ключи К0, К2 и КЗ разомкнуты. Если предположить далее, что
подпрограмма обслуживания клавиатуры поочередно будет выдавать в строки матрицы уровни лог. «О» и производить анализ состояния разрядов С4С7, то факт нажатия клавиши можно обнаружить по значению лог. «О» в од-
ном из старших разрядов С4-С7 канала КС.
Рассмотрим эту процедуру на алгоритмическом уровне. Напомним,
что обмен МП с ВУ возможен только через аккумулятор А микропроцессора
Схема алгоритма изображена на рисунке 5.
На первом шаге в аккумулятор А запишем двоичное число 11110000, в
младших разрядах которого содержатся нули. Это требуется для того, чтобы
на втором шаге это число переслать в канал КС ППА с тем, чтобы в строках
матрицы образовать сигналы с уровнем лог. «О». Далее на третьем и четвертом шагах содержимое канала КС ППА введем в аккумулятор и операцией
лог. «И» очистим младшие разряды. В результате этой операции в аккумуляторе сохранятся значения только старших разрядов канала КС, т.е. состояние
столбцов матрицы клавиатуры. На следующем шаге содержимое аккумулятора сравнивается с двоичным числом 11110000, в старших разрядах которого содержится лог. «1».
Рисунок 5- Блок-схема алгоритма обнаружения нажатой клавиши.
В результате сравнения может оказаться, что содержимое аккумулятора и
двоичного числа одинаково. Это произойдет в единственном случае: когда в
столбцах матрицы сохранится уровень лог. «1», т.е. ни один из ключей не замкнут. В этом случае процедуру обнаружения следует повторить до тех пор,
пока содержимое аккумулятора не будет равно двоичному числу, что означает содержание лог. «0» в одном (любом) из старших разрядов канала КС. Это
свидетельствует о факте замыкания одного (любого) из ключей клавиатуры.
Рассмотренный алгоритм определяет только факт нажатия одной из
клавиш, не определяя ее номер. Для определения номера нажатой клавиши
лог. «0» записывается последовательно в каждую строку с запоминанием ее
номера. Далее определяется факт нажатия клавиши в одном из рядов клавиатуры. Номер нажатой клавиши вычисляется по номеру строки и номеру
столбца.
Проблема защиты от «дребезга» в интерфейсе сканирующего типа решается также программными средствами за счет многократного повторения
процедуры обнаружения нажатой клавиши. Поскольку быстродействие микропроцессора намного выше скорости замыкания ключа, то процедура обнаружения повторяется несколько десятков раз.
Недостатком интерфейса сканирующего типа является снижение производительности микропроцессора. Поэтому в системах с критическими
условиями работы для обслуживания клавиатуры используют дополнительный контроллер например встраиваемый однокристальный МК серии
К1816ВЕ48. Такой прием позволяет разгрузить основной микропроцессор,
подключив к нему основные функции технологического контроллера.
3. Интерфейс устройств индикации
Контроль за состоянием технологического процесса, управляемого
микропроцессорной системой, осуществляется на цифровых дисплеях, построенных на базе семисегментных светодиодных индикаторов, матричных и
жидкокристаллических индикаторов, на индикаторных лампах. Наибольшее
распространение получили семисегментные индикаторы, как не требующие
сложной схемотехнической поддержки для согласования с устройством вывода МК.
В МК используются цифровые дисплеи двух типов: статические и динамические. Интерфейс дисплея статического типа строится на базе параллельного адаптера ППА, к выходным каналам которого подключаются дешифраторы цифрового кода и семисегментные индикаторы. Количество индикаторов определяется количеством десятичных разрядов дисплея, а для
высвечивания одной десятичной цифры требуется четыре разряда канала
ППА. Преобразование 4-разрядного двоичного кода каждой выводимой на
дисплей цифры в семисегментный код индикатора осуществляет дешифратор
цифрового кода. Таким образом, один 8-разрядный канал ППА может быть
использован для вывода двух десятичных цифр (рисунок 6). Вывод цифровой
информации осуществляется через аккумулятор МП командой вывода OUT
по адресу регистра канала ППА. Заметим, что каждая выводимая цифра программными средствами должна быть преобразована в двоично-десятичную 4разрядную цифру, после этого дешифратор ДШ обеспечит правильное высвечивание семи сегментов десятичной цифры. Процедура преобразования
кодов обычно выполняется специальной подпрограммой, выходными параметрами которой являются 4-разрядные двоично-десятичные цифры, размещенные в ячейках памяти.
Рисунок 6- Интерфейс индикатора статистического типа
Так, если результат обработки информации должен содержать, например, пять десятичных разрядов (два разряда — целые числа и три разряда —
дробные части десятичного числа), то для его размещения потребуется с учетом знака числа три 8-разрядные ячейки памяти. Поэтому для вывода цифровой информации потребуются три дополнительные команды пересылок из
ячеек памяти в аккумулятор МП. Выведенная таким образом на дисплей десятичная цифра будет индицироваться до тех пор, пока в регистр канала не
будет записан другой цифровой код. Недостатком интерфейса статического
типа является большое количество дешифраторов.
В интерфейсах сканирующего типа достаточно использовать только
один дешифратор, который подключается ко всем индикаторам одновременно, а индикаторы будут подключаться к дешифратору поочередно за счет
схемы управления. При большой частоте переключения на дисплее будет
наблюдаться устойчивое изображение. Упрощенная схема дисплея сканирующего типа изображена на рисунке 7.
Рисунок 7- Структура аппаратного интерфейса
Дешифратор ДШ1 семисегментного кода подключен одновременно ко
всем индикаторам HG1-HG4. На его входы поочередно коммутируется одна
из тетрад выводимого из каналов КА и KB параллельного интерфейса, работающих в режиме «0». Коммутация осуществляется мультиплексорами М1М4, которые управляются двоичным кодом с выхода счетчика СТ1 таким образом, что каждой комбинацией двоичного кода на входе ДШ1 будет подключена одна из следующих тетрад каналов ППА: А0-АЗ, А4-А7, B0-ВЗ или
В4-В7. Двоичный код с выхода счетчика СТ1 одновременно подается на вход
дешифратора ДШ2, который в зависимости от кода подключает через транзисторные ключи VT1- VT4 один из индикаторов. Таким образом, каждой
комбинации двоичного кода соответствует включение одного из индикаторов
и одной тетрады выводимого числа.
Генератор задает скорость переключения индикаторов и выводимой
информации. Изображение на индикаторах будет устойчивым, если частота
генерации не менее 50 Гц.
Аппаратную часть рассмотренного сканирующего интерфейса можно
существенно сократить, подчинив функции коммутации микропроцессору.
Структура программно-аппаратного интерфейса изображена на рисунке 8. В
структуре этого интерфейса полностью исключен дешифратор семисегментного кода, а функции мультиплексоров тетрад выводимого числа, дешифратора знакоместа индикаторов и счетчика отданы микропроцессору и будут
реализовываться программными средствами.
Рисунок 8- Структура программно-аппаратного интерфейса
Коммутация знакомест осуществляется разрядами С0-СЗ канала КС
ППА через транзисторные ключи К1-К4, а коммутация — сегментов разрядами В0-В6 канала KB ППА. Одинаковые сегменты индикаторов НG1-HG4
связаны общей шиной, которая соединена с одним из транзисторных ключей
Ка-Кg. Для вывода одной десятичной цифры в определенное знакоместо
необходимо указать адрес индикатора в разрядах С0-СЗ канала КС, а в разряды В0-В6 вывести семисегментный код индицируемой цифры.
В программной части интерфейса необходимо предусмотреть не только
коммутацию индикаторов, но и преобразование двоичного кода выводимого
числа в семисегментный код индикатора, что в аппаратном интерфейсе выполнялось специальным дешифратором. Программный модуль программноаппаратного интерфейса оформляется в виде подпрограммы, к которой передается управление после того, как результаты обработки информации, подлежащие выводу, размещены в последовательности ячеек ОЗУ МК. Схема
алгоритма вывода изображена на рисунке 9. Подпрограмма временной задержки используется для управления длительностью индикации каждой выводимой цифры в одном цикле вывода. После поочередного вывода на индикацию всех цифр, хранящихся в ОЗУ, цикл вывода начинается снова и повторяется столько раз, сколько указано во входном параметре подпрограммы
вывода.
Рисунок 9- Блок-схема алгоритма вывода на цифровой индикатор
Рассмотренные варианты интерфейсов цифрового индикатора имеют
скорее методический характер и нацелены на изучение способов вывода
цифровой информации, которыми должен владеть любой разработчик микропроцессорных систем. В разработках же практических систем управления
реальными объектами целесообразно использовать специальную БИС,
например, КР580ВВ79 — программируемый контроллер, предназначенный
для вывода информации на цифровые и алфавитно-цифровые дисплеи, а также ввод информации с клавиатуры и матрицы контактных датчиков.
Большой популярностью у специалистов пользуются алфавитноцифровые ЖКИ-модули на базе контроллера HD44780 фирмы Hitachi или его
аналогов производства других фирм: Epson, Philips, Samsung, Sanyo, Toshiba .
Контроллер HD44780 допускает подключение к микропроцессорам по четырёх битному или восьми битному интерфейсу. Выбор интерфейса производится пользователем исходя из ограничений на время, затрачиваемое на
обмен данными с котроллером, или количество используемых линий подключения к микро-ЭВМ.
Специалистами фирмы применялись различные схемы подключения
алфавитно-цифровых ЖКИ-модулей к микрo-ЭВМ. На рисунке 10 представлена схема подключения ЖКИ-модуля на базе контроллера HD44780 к микро-ЭВМ семейства MCS51 в режиме работы с внешней памятью, позволяющая оптимизировать процесс обмена данными по времени. Пересылка байта
осуществляется по командам:
MOVX A,@DPTR или MOVX A,@DPTR.
В этом случае в DPTR следует загружать адрес с учётом того, что младший
бит А0 будет обозначать направление передачи (запись/чтение), а бит А1 тип
передаваемой информации (команда/данные).
Рисунок 10 – Подключение ЖКИ-модуля
Ниже приведены исходные тексты подпрограммы на языке ассемблера
ASM51, позволяющие записывать данные, инструкции в контроллер, считывать данные. Приведен так же примерный текст подпрограммы инициализации контроллера в режим восьми битного интерфейса, при работе с двумя
строками. Отображение курсора и мигание отключено. Курсор установлен в
начало первой (верхней) строки.
WRC_LC EQU ХХХ0H
RDC_LC EQU ХХХ1H
WRD_LC EQU ХХХ2H
RDD_LC EQU ХХХ3H
;ИНИЦИАЛИЗАЦИЯ HD44780
LCDINIT: MOV A,#38H ; 8-BIT 2-LINES
ACALL WRC
MOV A,#0CH ; DISP-ON, CUR-OFF, FLASH-OFF
ACALL WRC
MOV A,#06H ; MOVE CURSOR RIGHT
ACALL WRC
CLS:
MOV A,#01H ; CLEAR SCREEN
ACALL WRC
RET
;ЧТЕНИЕ ДАННЫХ ИЗ HD44780 В ACC
RDD_LCD: MOV DPTR,#(RDC_LC)
WAITDD: MOVX A,@DPTR
JB ACC.7,WAITDD
MOV DPTR,#(RDD_LC)
MOVX A,@DPTR
RET
;ЗАПИСЬ ДАННЫХ В HD44780 ИЗ АСС
WRD: PUSH ACC
MOV DPTR,#(RDC_LC)
WAITRD: MOVX A,@DPTR
;ОЖИДАНИЕ
JB ACC.7,WAITRD ;ГОТОВНОСТИ
MOV DPTR,#(WRD_LC)
POP ACC
MOVX @DPTR,A
RET
;ЗАПИСЬ КОМАНДЫ В HD44780 ИЗ АСС
WRC: PUSH ACC
MOV DPTR,#(RDC_LC)
WAITRC: MOVX A,@DPTR
;ОЖИДАНИЕ
JB ACC.7,WAITRC ;ГОТОВНОСТИ
POP ACC
MOV DPTR,#(WRC_LC)
MOVX @DPTR,A
RET
При использовании данных подпрограмм изменяется содержимое
DPTR. Если там находится необходимая в дальнейшем информация, то для
её сохранения достаточно воспользоваться стеком.
Таким образом, нами были рассмотрены основные способы подключения таких внешних устройств как клавиатура и индикаторы. Вопросы, связанные с применением аналого-цифровых преобразователей будут детально
рассмотрены на одной из следующих лекций.
Download