Подключение дисплея и клавиатуры к микро-ЭВМ
Цель работы: изучение программно-аппаратурных методов подключения дисплея и клавиатуры к микро-ЭВМ.
Краткие сведения из теории
В качестве устройства вывода информации, удобного для восприятия, часто используется дисплей. Рассмотрим метод подключения дисплея, состоящего из шести ячеек (семисегментных индикаторов), представляющих собой восемь светодиодов с общим анодом в одном корпусе. Каждый индикатор (рис. 8.13, а) имеет семь светодиодов для отображения сегментов цифр, а восьмой светодиод отображает десятичную точку (рис. 8.13, б). Индикатор может отображать цифры от 0 до 9, а также некоторые буквы.
Пронумеруем ячейки дисплея так, как показано на рис. 8.14.
Рис. 8.13. Внешний вид (а) и схема семисегментной светодиодной матрицы (б).
Рис. 8.14. Нумерация ячеек дисплея
Для уменьшения схемотехнического обеспечения, необходимого для подключения дисплея к микро-ЭВМ, часто применяют мультиплексный режим работы индикаторов.
Приведем простую программу включения сегментов пятой ячейки дисплея с помощью кода, задаваемого со входного устройства микро-ЭВМ (программа 8.21).
Программа 8.21
Адрес Машинный Метка Мнемокод Комментарий
код
0800 3Е 20 MVI А, 20 загрузить в аккумулятор число 0010 0000
0802 D3 28 OUT SCAN включить цифру 5
0804 DB 20 CNT IN 20 считать данные из входного устройства
0806 D3 38 OUT DSP записать их в регистр сегментов дисплея
0808 С3 0408 JMP CNT продолжить
Программа 8.21 позволяет за счет изменения кода на входном устройстве (адрес 2016) включать различные сегменты пятого индикатора дисплея.
Организация мультиплексного режима работы дисплея. При мультиплексном режиме работы вывод информации на каждый индикатор дисплея выводится микро-ЭВМ последовательно. Цифра или символ на индикаторе высвечивается некоторый промежуток времени, задаваемый подпрограммой задержки. При большой частоте сканирования индикаторов на цифровом дисплее получается устойчивое изображение.
Схема алгоритма программы, обеспечивающей мультиплексный режим работы дисплея, приведена на рис. 8.16 (программа 8.22). Код цифр для вывода на каждую ячейку дисплея хранится в последовательных ячейках памяти с адресами 0900—0905. При этом полагается, что код цифры для вывода на 0 индикатора дисплея записан по адресу 0900. Начальный адрес подпрограммы временной задержки 0430.
Рис. 8.16. Схема алгоритма программы мультиплексного режима индикации в микро-ЭВМ
Программа 8.22
Адрес Машинный Метка Мнемокод Комментарий
код
0800 01 0004 DSO LXI В, 0400 загрузить в регистры В, длительность задержки
803 AF XRA А очистить аккумулятор
804 21 0500 CNT 1 LXI H, 0905 указать на адрес кода цифры 5
0807 16 20 MVI D, 20 загрузить указатель цифры в регистр D
0809 7Е CNT 2 MOV A, M получить из ОЗУ код очередной цифры
080А D3 38 OUT DSP написать его в регистр сегментов дисплея
080С 7А MOV A. D загрузить в аккумулятор указатель цифры
080D D3 28 OUT SCAN включить нужную цифру
080F IF RAR указать на следующую цифру
0810 57 MOV D, Л сохранить указатель цифры и регистре 1)
0811 CD 3004 CALL DELB вызнать подпрограмму временной задержки
814 AF XRA А очистить аккумулятор
815 D3 28 OUT SCAN выключить цифру
0817 2D DCRL уменьшить на 1 содержание регистра L
0818 В2 ORA D все ли сообщение выведено?
0819 С2 0908 JNZ CNT 2 если нет, продолжать
081С СЗ 0408 JMP CNT 1 если да, то начать сначала
Подключение клавиатуры к микро-ЭВМ. Клавиатура является одним из широко распространенных устройств ввода данных и управляющих воздействий в микро-ЭВМ. С помощью клавиатуры можно вводить программу в ОЗУ, инициировать различные режимы работы микро-ЭВМ (пуск программы с заданного адреса, останов программы, выполнение программы по машинным циклам, вывод содержания регистров МП 8086 на дисплей и т. д.).
Во всех случаях при организации ввода информации с клавиатуры в микро-ЭВМ перед разработчиком ставится ряд задач, к основным из которых можно отнести: 1) определение факта нажатия клавиши на клавиатуре; 2) нахождение номера нажатой клавиши; 3) осуществление передачи управления на соответствующую подпрограмму.
Первые две задачи являются специфическими при организации ввода информации с клавиатуры, и именно им будет уделено внимание в данном разделе. Последняя, как правило, решается программными методами.
; This sample shows the
; use of keyboard functions.
; Try typing something to
; "User Screen".
;
; When "step delay" is too
; long, keyboard buffer
; is used.
;
; Try setting "step delay"
; to 1, for more realistic
; emulation.
;
; This code will loop until
; you press ESC key, other
; keys will be printed.
#make_COM#
; Used to print a message:
include 'emu8086.inc'
ORG 100h
; Print a welcome message:
LEA SI, msg1
CALL print_string
;============================
; Eternal loop to get
; and print keys:
wait_for_key:
; check for keystroke in
; keyboard buffer:
MOV AH, 1
INT 16h
JZ wait_for_key
; get keystroke from keyboard:
; (remove from the buffer)
MOV AH, 0
INT 16h
; print the key:
MOV AH, 0Eh
INT 10h
; press 'ESC' to exit:
CMP AL, 1Bh
JZ exit
JMP wait_for_key
;============================
exit:
RET
DEFINE_PRINT_STRING
msg1 DB 'Type anything...', 13, 10
DB '[Enter] - carriage return.', 13, 10
DB '[Ctrl]+[Enter] - line feed.', 13, 10
DB 'You will hear a beep', 13, 10
DB ' when buffer is overflown.', 13, 10
DB 'Press ESC to exit.', 13, 10, 0
END
Наиболее удобно организовывать клавиатуру в виде матрицы размером nХm, где n и m — соответственно число строк и столбцов. При таком способе организации к микро-ЭВМ можно подключать mХn клавиш. Сопряжение клавиатуры с микро-ЭВМ производят с помощью устройств ввода — вывода данных. Для иллюстрации метода сопряжения клавиатуры с микро-ЭВМ рассмотрим клавиатуру 3X3, представленную на рис. 8.17 (где СхДША — схема дешифрации адреса, УВв — устройство
Рис. 8.17. Схема подключения клавиатуры к микро-ЭВМ
ввода, УВыв — устройство вывода), ряды которой подключены к трем младшим разрядам устройства вывода УВыв (символьное обозначение адреса KBDOT), а столбцы подключены к трем младшим разрядам устройства ввода УВв (символьное обозначение адреса KBDIN).
При программном способе дешифрации нажатой клавиши определение факта нажатия на клавишу может быть осуществлено с помощью такой последовательности операций: 1. Записать нули в разряды выходного устройства. 2. Считать содержание разрядов входного устройства.
3. Повторить снова, если во всех разрядах входного устройства записаны единицы.
Программа 8.23, написанная в соответствии с приведенным алгоритмом, позволяет определить факт нажатия на одну из клавиш, но не указывает номер нажатой клавиши.
Программа 8.23
Адрес Машинный Метка Мнемокод Комментарий
код
0800 3Е F8 WAITK MVI А, 11111000 записать 0 в младшие три разряда аккумулятора
0802 D3 KBDOT OUT KBDOT записать 0 в выходное устройство (адресKBDOT)
0804 DB KBDIN IN KBDIN получить число со входного устройства (адрес KBDIN)
0806 Е6 07 ANI 00000111 очистить старшие пять разрядов аккумулятора
0808 FE 07 CPI 00000111 есть ли в младших трех разрядах аккумулятора 0
080А СА 0008 JZ WAITK если нет, то идти на WAITK
080D СЗ 0D08 DONE JMP DONE конец
Определить номер нажатой клавиши можно с помощью алгоритма, приведенного на рис. 8.18. Алгоритм основывается на последовательной записи нуля в каждый из рядов матрицы клавиатуры. При наличии нуля в каждом ряду микро-ЭВМ определяет факт нажатия на клавиши, находящиеся в столбцах клавиатуры, принадлежащих анализируемому ряду. Если какая-либо клавиша нажата, то определяется ее номер по номеру разряда, в котором записан ноль. Программа 8.24 реализует описанный выше алгоритм. Номер нажатой клавиши определяется по номеру ряда клавиатуры, в котором обнаружена нажатая клавиша, и номеру разряда входного устройства, в котором записан ноль.
Рис. 8.18. Схема алгоритма определения нажатой клавиши при сканировании клавиатуры микро-ЭВМ
Программа 8.24
Адрес Машинный Метка Мнемокод Комментарий
код
0800 0600 MVI В, 00 обнулить счетчик клавиш
0802 0Е FE MVI С, 11111110 начальная установка маски сканирования рядов
0804 603 MVI D. 03 установить счетчик рядов
0806 79 FROW MOV Л, С записать маску сканирования в аккумулятор
0807 D3 KBDOT OUT KBDOT записать маску сканирования в выходное устройство (адрес
KBDOT)
0809 07 rlc изменить маску сканирования
080А 4F MOV С, А сохранить маску
080B DB KBDIN IN KBDIN получит число со входного устройства (адрес KBDIN)
080D Е6 07 ANI 00000111 маскировать пять старших его разрядов
080F FE07 CPI 000001II есть ли в трех младших разрядах
00811 С2 1F08 JNZ FCOL если да, то идти на FCOL
0814 78 MOV А, В изменить содер-
0815 С6 03 ADI 3 жание счетчика
0817 47 MOV В, A J номера клавиш
0818 15 DCR D уменьшить содержимое счетчика рядов
0819 С2 0608 JNZ FROW если не последний ряд, то повторить для следующего ряда
081С СЗ 2708 JMP DONE идти на окончание
081F IF FCOL RAR определение но-
0820 D2 2708 JNC DONE мера разряда, в
823 04 INRB котором записан
824 СЗ 1F08 JMP FCOl 0, и определение номера нажатой клавиши
0827 С3 2708 DONE JMP DONF конец
Часто при работе микро-ЭВМ ее операционная система строится таким образом, что информация, вводимая с клавиатуры, отображается на дисплее.
Дата добавления: 2016-07-05; просмотров: 2598;