Описание БИС контроллера клавиатуры/дисплея (ККД) КР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 можно вводить код клавиши в МК.