Кнопки (ключи) на схеме рис. П7.1 обозначены символом (цифровая клавиша) или словом (командная клавиша) в кавычках (именно такое обозначение выгравировано на соответствующей клавише). Кнопки в матрице подключаются между соответствующими строкой и столбцом матрицы. Например, кнопка "0" подключена к строке РА0 и столбцу РС4, а кнопка "RUN" - к строке РА4 и столбцу РС6. Место кнопки в матрице уникально, что позволяет однозначно определять факт ее нажатия.
Порт А запрограммирован на ввод, а порт С - на вывод. Если ни одна кнопка не нажата, то чтение порта А даст результат FFH, поскольку на строки матрицы через соответствующий резистор Ri подается высокий потенциал от источника питания +5В.
Идея определения факта нажатия какой-либо клавиши заключается в следующем. Необходимо на линии РС6...РС4 выводить код, который содержит единицы и один нуль (эта линия называется активной), например, РС6 = РС5 = 1, РС4 = 0. Если после этого ввести данные из порта А, то можно определить была ли нажата одна из клавиш "0"..."7", поскольку при этом соответствующий бит введенного кода окажется в нуле через соответствующий замкнутый ключ. Нетрудно видеть, что нажатая клавиша "0" даст код FEH, a клавиша "7" - 7FH. Если введен код FFH, то это может означать, что либо нажата клавиша не пренадлежащая столбцу РС4, либо, что не нажата никакая клавиша.
Выдавая код РС6 = 1, РС5 = 0, РС4 = 1, можно определить факт нажатия клавиш "8"..."F", a код PC6 = 0 , PC5 = PC4 = 1 - клавиш "MEM"..."CLR". Определение бита нажатой клавиши называется сканированием активной линии.
Совершенно очевидно, что подобным образом подключенная клавиатура нуждается в программной поддержке.
П7.2. Программное обеспечение
Из п. П7.1 следует, что факт нажатия клавиши определяется по отличию введенного из порта А кода от FFH. Тип нажатой клавиши определяется по ее скан-коду. Скан-код клавиши - это ее произвольный, но уникальный номер, назначаемый программистом. Лучшая система скан-кодов такая, коды которой проще вычисляются. Например, можно предложить систему скан-кодов, в соответствии с которой клавишам "0" ... "F" соответствуют коды 0...15, а клавишам "MEM"..."CLR" - 16...23. В настоящей лабораторной работе скан-коды используются для вывода визуального образа нажатой клавиши на дисплей (индикатор). Для этого код визуального образа располагается в таблице кодов визуальных образов на расстоянии значения скан-кода соответствующей клавиши от начала таблицы.
С учетом сказанного, алгоритм функционирования программного обеспечения клавиатуры может иметь вид, представленный на рис. П.7.2.
Алгоритм представляет собой бесконечный цикл, в который входят блоки 1...3.
|
Предполагается, что в блоке 1 один раз активизируются (по очереди) все столбцы, если ни одна из клавиша не нажата, или все столбцы, включая столбец, на котором обнаружена нажатая клавиша (после этого выход из блока 1 без активизации следующих столбцов). Кроме этого, при выходе из блока 1 подпрограмма, которая его реализует, должна возвращать признак нажатой/не нажатой клавиши. Например, через флажок С МП. Нажатотой клавише может соответствовать сброшенный флаг, не нажатой - установленный (или наоборот). Если клавиша нажата, подпрограмма, реализующая блок 1 алгоритма должна возвращать скан-код нажатой клавиши.
В блоке 2 проверяется признак нажатия клавиши (состояние флажка С). Если клавиша не нажата, то следует переход на новое сканирование клавиатуры, в противном случае - на блок 3.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.