Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа МП-5.doc
Скачиваний:
28
Добавлен:
02.05.2014
Размер:
153.6 Кб
Скачать

Лабораторная работа мп – 5. Программно – аппаратный интерфейс дисплея и клавиатуры микроЭвм.

1. Цель работы: Изучение программных и аппаратных способов

интерфейса дисплея и клавиатуры микроЭВМ.

2. Краткие теоретические сведения.

2.1. Дисплей.

Выходным устрйством, служащим для визуального наблюдения за внутренним состоянием микропроцессорной системы, в микроЭВМ являются шесть восьмисегментных индикаторов. Каждый индикатор содержит восемь светодиодов с общим анодом в едином корпусе. Семь светодиодов служат (рис.1) для отбражения сегментов символов, а восьмой светодиод отображает десятичную точку.

Рис.1. Внешний вид (а) и схема соединения светодиодов

восьмисегментного индикатора.

Индикаторы отображают информацию о данных, адресах в шестнадцатеричном коде. Для того, чтобы включить соответствующий символ на индикаторе, надо на анод подать "1", а на катоды код, соответствующий индицируемому символу.

При подключении дисплея к микроЭВМ применяются транзисторные ключи и два регистра: один Рг2 (рис.2) для записи восьмисегментного кода и Рг1 номера индикатора. Одинаковые сегменты каждой ячейки дисплея связаны общей шиной, которая соединена с одним из транзисторов VT1 – VT8. Общие аноды ячеек индикаторов подключены к транзисторным ключам VT9 – VT14.

Итак, коды номера индикатора дисплея и семисегментного кода подаются нсоответственно в Рг1 и Рг2. Соответственно разрядов регистров и выводов индикатора, а также номера индикатора дисплея приведено в таблице 1. Например, при индикации во втором индикаторе цифры 1 надо записать в Рг1 код 00000100, а в Рг2 – 00000110. Если программным путем высвечивать по очереди каждый индикатор, записывая код символов в Рг2 и включая необходимый индикатор с помощью регистра Рг1, то при большой частоте переключений можно получить устойчивое изображение информации на дисплее.

+5

ШД

VT4

VT9

D0 D0

D1 Q1

D2 Q2

D3 Q3

D4 Q4

D5 Q5

D6 Q6

D7 Q7

1

1

1

1

1

1

Pr1

n1

n2

n3

n4

n5

n0

D0 D0

D1 Q1

D2 Q2

D3 Q3

D4 Q4

D5 Q5

D6 Q6

D7 Q7

VT1

Pr2

VT8

h

a

Рис.2. Схема подключения индикаторов дисплея.

Таблица 1.

Номер разряда

7

6

5

4

3

2

1

0

Сегмент

h

g

f

e

d

c

b

a

Номер индикатора дисплея

-

-

5

4

3

2

1

0

Программа включения четвертого индикатора для индикации символа цифры имеет вид:

MVI A,10H ; загрузить в аккумулятор код 00010000 B

OUT PORT1 ; включить 4-й индикатор

MVI A,5BH ; вывести на дисплей

OUT PORT2 ; код цифры 2

2.2. Клавиатура.

Любая микроЭВМ имеет клавиатуру для ввода информации. С ее помощью можно вводить программу в ОЗУ, выполнять любые команды монитора, например, отображение ячейки памяти и ее модификация. При организации ввода данных с клавиатуры приходится решать следующие задачи:

  1. определение номера нажатой клавиши,

  2. определение вида нажатой клавиши: цифровой или функциональной,

  3. если клавиша функциональная, то передача управления на подпрограмму, соответствующей нажатой клавише.

Клавиатура представляет собой набор клавишей, организованных в виде матрицы 4х6. Опрос и обработка кодов клавиш производится программы монитора с помощью микросхемы программируемого параллельного интерфейса (ППИ). ППИ содержит три программируемых 8-разрядных порта РА, РВ, РС и может работать в различных, задаваемых программистом, режимах. ППИ осуществляет сопряжение клавиатуры смикроЭВМ. Схема такого сопряжения изображена на рис.3.

PA0

PA5

D PA

A1

A2 PC0

CSI PC1

RDI PC2

WRI PC3

RESET

PB

K580BB55

ЗК РГ КС РМ СТ П

ВП _ F E D C

B A 9 8 7 6

5 4 3 2 1 0

Рис.3. Схема подключения клавиатуры к системной шине микроЭВМ.

В изображенной схеме порт клавиатуры РА является портом вывода, а порт РС – портом ввода.

2.3. Мультиплексный режим работы дисплея.

Поскольку код засветки любого символа вводится на все индикаторы одновременно, а зажигается только тот индикатор, на анод которого подан положительный потенциал, то для того, чтобы вывести информацию на все индикаторы, надо последовательно выводить информацию на каждый индикатор, т.е. мультиплексировать вывод информации на дисплей.

Каждый индикатор засвечивается в течение короткого промежутка времени, но при большей частоте сканирования индикаторов получается устойчивое изображение. Рассмотрим программу, обеспечивающую мультиплексный режим работы. При разработке программы воспользуемся программой задержки, записанной в ПЗУ по адресу 035В, дающей задержку 10 мс. Коды засветки цифр для вывода на каждую ячейку (индикатор) дисплея хранятся в последовательных ячейках памяти с адресами 03В2. Схема алгоритма программы приведена на рис.4 Программа в соответствии с алгоритмом рис.4 имеет вид:

0800

0803

0805

0806

0808

0809

080В

080Е

0810

0812

0813

0814

0815

0816

0819

MI: LXI H,03AD

MVI B,20H

M2: MOV A,B

OUT 0F8H

MOV A,M

OUT 0F9H

CALL 035B

MVI A,0

OUT 0F8H

MOV A,B

RRC

MOV B,A

INX H

INC M2

JMP M1

; адрес таблицы кодов

; №5 индикатора в (В)

; вывод номера индикатора

; в порт А

; вывод кода символа

; в порт В

; задержка 10 мс

; выключение

; индикатора

;

; переход к следующему

; номеру индикатора

;

; если не все индикаторы зажжены,

; то включить след. индикатор

; иначе начать сначала

Рис.4. Блок – схема алгоритма работы дисплея в мультиплексном режиме.

2.4. Сканирование клавиатуры и программное определение номера нажатой клавиши.

На рис.3 изображена схема клавиатуры микроЭВМ, организованная в виде матрицы 4х6. Будем считать порт РА ППИ сканирующим портом, а порт РС – читающим. За один цикл считываются данные с одного столбца из четырех кнопок. Для простоты рассмотрим только один столбец, т.е. клавиши "ЗК", "ВП", В, 5. Чтение столбца клавиши представляет собой двухшаговую операцию: запись данных в сканирующий порт и чтение байта данных читающим портом.

Чтобы выбрать определенный столбец клавиш, соответствующий бит сканирующего порта (РА5  РАО) устанавливается в лог. 0, другие биты остаются равными лог. 1. Таким образом, чтобы выбрать столбец клавиш "ЗК", "ВП", В, 5, нужно послать в порт РА код 11011111 (DFH), чтобы выбрать клавиши "РГ", "_", А, 4 – код 11101111 (EFH) и т.д.

После вывода сканирующего байта в порт РА производится чтение входным портом РС для сбора информации о состоянии клавиш. Налличие нуля во входном байте, считанным портом С, свидетельствует о том, что нажата клавиша в соответствующем столбце, т.е. том, на который был подан портом РА лог. 0. Номер нажатой клавиши определяется по формуле:

Nклав = Nст + Nряд  6

где Nст, Nряд, - номера столбца и ряда, на пересечениях которых находится нажатая клавиша.

Алгоритм определения номера нажатой клавиши приведен на рис.5. Программа, написанная в соответствии с алгоритмом, изображенным на рис.5, имеет вид:

KLAW: MVI B,11011111B ; запись маски сканирования

MVI C,5 ; счетчик столбцов

KL1: MVI D,3 ; счетчик рядов

MOV A,B ; вывод маски сканирования

OUT PORTA ; в порт РА

IN PORTC ; чтение состояния клавиш

KL2: RRC ; если в столбце есть нажатая

JC KL4 ; клавиша, то перейти

DCR D ; иначе декрементировать

JP KL2 ; счетчик рядов и цикл

MOV A,B ; изменение маски

RRC ; сканирования

MOV B,A ; хранение маски

DCRD ; декеркмент счетчика столбцов

JP KL1 ; если С0, то перейти к новому

; выводу маски

JMP KLAW ; иначе начать сначала

KL4: MVI E,32H ; борьба

CALL DELAY ; с дребезгом

DCR E ;

JNZ KL4 ;

MOV A,D ; вычисление номера

RLC ; нажатой клавиши

ADD D ; Nкл = (C) + (D)6

RLC ;

ADD C ;

RET ;

Да

Определение номера нажатой клавиши

Нет

D = D - 1

С = С - 1

Модификация маски сканирования

Рис.5. Алгоритм определения номера нажатой клавиши.

В программе сканирования учитывается "дребезг" клавиши, т.е. он программно устраняется. Как известно, клавиши при нажатиии не выдают чистый импульс – они звенят, как показано на рис.6.

Рис.6. "Дребезг" клавиши.

Продолжительность "дребезга" 1 – 50 мс в зависимости от конструкции клавиши. "Дребезг" надо учмтывать, так как он может пивести к тому, что вместо одного нажатия клавиши будет зафиксировано несколько нажатий. "Дребезг" можно исключить путем введения программной задержки на время "дребезга", т.е. чтение читающего порта после определения факта нажатия клавиши прекращается на время "дребезга".