Описание БИС контроллера клавиатуры/дисплея (ККД) КР580ВД79 приведено в приложении Ш. Использование ККД позволяет разгрузить МК от рутинных операций опроса клавиатуры и поддержания (рефре-ша) изображения на однострочном дисплее.
Одна из возможных схем подключения контроллера клавиатуры/ дисплея к МК51 показана на рис. 7.11. При таком подключении контроллер входит в адресное пространство ВПД. Линия Р1.0 соединяется с линией Aq контроллера и должна быть установлена/сброшена перед обращением МК к контроллеру в зависимости от типа обращения (управление/данные). Вход выборки контроллера соединен с общей точкой, и, таким образом, контроллер всегда готов к обмену с МК. Выход сигнала запроса прерывания (IRQ) контроллера соединен с линией Р1.1 МК и может быть программно опрошен для определения факта нажатия клавиши.
Шина данных и линии чтения/записи контроллера соединяются напрямую с соответствующими линиями МК51. На вход CLK подается сигнал
Рис. 7.11. Схема подключения ККД к МК51
частотой примерно 2 МГц с выхода ALE. Контроллер клавиатуры/ дисплея в нашем примере обеспечивает ввод в МК кода нажатой клавиши (одной из 20) и поддерживает изображение на восьмипозиционном однострочном дисплее. Для сканирования клавиатуры и дисплея дополнительно используется инвертирующий дешифратор на восемь выходов. Диоды на выходе дешифратора необходимы для защиты от короткого замыкания между собой его выходов при одновременном нажатии нескольких клавиш.
|
|
Дисплей показан на схеме условно; предполагается, что он снабжен необходимыми буферными схемами для обеспечения требуемых токов нагрузки. Сигнал 0 на входе R обеспечивает гашение всех индикаторов одновременно.
Матрица клавиш расположена таким образом, чтобы SCAN-код клавиши совпадал с двоичным кодом шестнадцатеричной цифры, нанесен- ной на клавишу. Входы SHIFT и CNTL заземлены. Клавиатура состоит из 16 цифровых клавиш (О—F) и 4 клавиш управления (функциональных), коды которых больше 0FH.
Для того чтобы настроить контроллер клавиатуры/дисплея на определенный режим работы, основная программа МК-системы должна загрузить в него управляющие слова инициализации (УСИ) и в требуемый момент выдать управляющее слово операции (УСО). Ниже приводится программа инициализации, которая настраивает контроллер на режим работы с восьмипозиционным дисплеем, распознавания одиночного нажатия клавиш и сканирования знакомест дисплея счетчиком:
Коэффициент деления входного синхросигнала (CLK) необходимо установить таким образом, чтобы внутренняя опорная частота контроллера получилась около 100 кГц. Так как частота сигнала ALE равна примерно 2 МГц, то коэффициент деления выбирается равным 20. Содержимое регистра R0 не имеет значения, так как в нашем примере контроллер "закрывает" собой все адресное пространство ВПД. После инициализации контроллер будет работать параллельно с МК и избавит его от необходимости выполнения программ опроса клавиатуры и поддержания изображения на дисплее.
|
|
Для ввода кода нажатой клавиши в МК необходимо выполнить следующие действия:
Как только контроллер клавиатуры/дисплея зафиксирует нажатие клавиши и определит ее SCAN-код (совпадающий с двоичным кодом шестнадцатеричной цифры клавиши), он сразу оповестит об этом МК, установив сигнал на выходе запроса прерывания (IRQ). После обнаружения сигнала 1 на входе Р1.1 МК может прочитать код клавиши из контроллера. Но для этого надо предварительно загрузить в контроллер УСО "Чтение", специфицирующее источник информации (буфер кодов клавиш) и адрес ячейки. После этого при Aq = 0 можно вводить код клавиши в МК.