Добавил:
kostikboritski@gmail.com Выполнение курсовых, РГР технических предметов Механического факультета. Так же чертежи по инженерной графике для МФ, УПП. Писать на почту. Дипломы по кафедре Вагоны Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

литература / Пухальский Проектирование микропроцессорных систем 2001

.pdf
Скачиваний:
334
Добавлен:
12.11.2017
Размер:
21.12 Mб
Скачать

320

 

 

 

 

 

 

Глава 3. Интерфейсные БИС

 

 

 

 

 

К514ИД1

КР514ИД1, M S D M 1

К514ИД2

КР514ИД2, MSD101

К514ПР1

 

 

~LT

 

i-

и г ■

 

 

 

 

и

 

 

' * Q . —

 

Е3

 

X l [

1

16

З ^ с с

X I С 1

14

З у с с

X l l

1

16

] V c c

X I [

1

14

 

X I С 1

16

IVcc

Х2С 2

15

 

xiZ 2

13

] f

s

Xll

2

15

1 f &

Х2[ 2

13

 

Х2С 2

15

> £

NCZ 3

14

] С 5

Ж 3

12

] g

$

/ V C L

3

14

1 g &

 

3

12

] g £

N cZ 3

14

]g $

щ

4

13

] Д 5

х з [ 4

11

] а $

 

4

13 1 л й

х з Г 4

11

1Я й

Ж 4

13 ]л$

wcC 5

12

] в 5

х о С 5

10

] в

$

w e d

5

12

ТВй

х о С

5

10

1вй

LZ 5

121 в &

х з О

6

11

] с < 5

g n d Z 6

9

] с

5

х з О

6

11

] C G

g n d Z 6

9

Пса

х з С 6

И

1с_й

х о С 7

10

 

<5 E l 7

8

Ъ<5

х о С 7

10

 

&

7

8

]£>£

х о С 7

10 1 о й

g n d L 8

9

 

 

 

 

 

g n d Z^8

9

1 Е й

 

 

 

 

g n d Z 8

9

IeH

 

г—

л*°1

 

 

 

 

 

л

 

j

 

7L

 

I

я

 

|

 

 

 

 

 

 

 

 

 

*

 

- -

 

*

 

- -

71

 

 

vcc

 

---A±G

 

 

 

 

Усс—t> H o - A te

vcc~O

H

a *g

ftc - D f - a - y u a

 

 

 

 

 

 

 

 

52/Vi |

133ПП4, SJV5449

176ИД2

 

о

 

 

■ a

 

X I [ 1

16 3 V Cc

d j 1

16 ] УDO

Х 2 [ 2

15

 

x iZ 2

15

I f

NCZ 3

14

] g g

X l G 3

14

1g

Ж 4

13 1а й

х з [ 4

13

1 e

NCZ 5

12

1 в й

x o [ 5

12

I d

х з С 6

И

1 с й

p i Z 6

11 ] c

х о [ 7

10

] D Q

BlZ 7

10

1 b

g n d Z 8

9 1 е & g n d Z 8

9 1a

176ИДЗ

LJ

i l

]

16

3

VoD

X 2 [

2

15

1 f $

г

3

14

H g

5

A I L

х з [

4

13

~]е Ъ

x o [

5

12

]

d

5

p i Z 6

il

 

 

 

b i Z 7

10

]

b

5

GNDii 8

9

]

a

$

564ИД4, CD4055

564ИД5, CD4056

 

u

 

 

16

 

p o Z 1

16

I vdd

l Z 1

] Vdd

X 2 [ 2

15 I f

X 2 [ 2

15 I f

X l [ 3

14

1 g

X I [ 3

14 1 g

х з 1 4

13 1 e

X 3 [ 4

13 1 e

xoZ 5

12

I d

x o Z 5

12 2 d

p i Z 6

11

3c

p i Z 6

11 1 c

NcZ 7

10 ] b

n c Z 7

10 1 b

g n d Z 8

9

1a

g n d Z 8

9 1 a

Рис. 3.149. Преобразователи X/1S кода 8 -4 -2 -1 в 7-сегментный код

Интегральные схемы 176ИД2, 176ИДЗ, 564ИД4 и 564ИД5 изготовляются по КМОП тех­ нологии и предназначены для управления 7-сегментными жидкокристаллическими индикато­ рами (LCD liquid-crystal display), а остальные ИС — по ТТЛ технологии и используются для управления 7-сегментными СИД-индикаторами. Эти ИС дополнительно имеют от одного до трех входов для подачи сигналов управления (5 = А G — сигналы управления сегментами):

B l (Blanking Input) — сигнал гашения 7-сегментного индикатора, который можно исполь­ зовать для импульсного управления его яркостью (S = B l - S’, где S = А + G — выходные сигна­ лы ИС, S’ = А' + G' — внутренние сигналы ИС, описываемые табл. 3.28, т. е. BI = 0 => S = 0);

L (Load) — сигнал загрузки кода Х3.0 во внутренний 4-разрядный асинхронный потенци­ альный регистр памяти, описываемый функциями Q* = DrL v QrL, Dr = Xn r = 0, 1, 2, 3 (если задать L= 1, то Q * ~ X r — “прозрачный” регистр памяти);

PI (Polarity Input) — сигнал коммутации полярности выходных сигналов А ^ G, исполь­ зуемый для формирования переменного напряжения управления сегментами жидкокристалли­ ческих индикаторов (S = BI ■S' ® PI или S = S ’ ® PI, где S = А + G — выходные сигналы ИС, S' = А' н- G' — внутренние сигналы ИС, описываемые табл. 3.28). Допустимая частота сигнала PI заключена в пределах 3 0 ... 1000 Гц (рабочая частота выбирается в соответствии с исполь­ зуемым типом жидкокристаллического индикатора).

Приведенные на рис. 3.149 ИС имеют назначение:

514ИД1 (MSD041 фирмы Monsanto Commercial Products) — преобразователь X/1S с пря­ мыми открытыми эмиттерными выходами А - G для СИД-индикаторов с общим катодом;

514ИД2 (MSD101 фирмы Monsanto Commercial Products) — преобразователи Х/7S с ин­ версными открытыми коллекторными выходами А G для СИД-индикаторов с общим анодом;

3.10. Программируемый контроллер клавиатуры и дисплея 8279

321

514ПР1 — преобразователь XI7S с инверсными открытыми коллекторными выходами

АG для СИД-индикаторов с общим анодом;

133ПП4 CS7V5449 фирмы Texas Instruments) — преобразователь ХП S с прямыми открыты­ ми коллекторными выходами А G для СИД-индикаторов с общим катодом;

176ИД2 — преобразователь ХП S для жидкокристаллических индикаторов (VDD = +9 В);

176ИДЗ — преобразователь ХПS с открытыми истоковыми выходами А + G для жидко­ кристаллических и люминесцентных индикаторов (VDD= +9 В). Допустимое напряжение между контактами VDD и А н - G равно 30 В, что необходимо для управления люминесцентными инди­ каторами (на контакты А + G через резисторы подается высокое отрицательное напряжение);

564ИД4 (CD4055 фирмы RCA Corp.) — преобразователь ХП S для жидкокристаллических индикаторов ( VDD = +3 ... +15 В, РО Polarity Output — сигнал PI, переданный на выход через повторитель);

564ИД5 (CD4056 фирмы RCA Corp.) — преобразователь X/1S для жидкокристаллических индикаторов (VDD= +3 ... +15 В).

16-разрядный дисплей будет представлять собой матрицу 7 х 16 СИД. Выпускаются также ИС (например, ИС КР514ИД5), преобразующие 4-разрядные двоичные числа в 16-ричные сим­ волы 0 + 9, А F в соответствии с рис. 3.145, в. Принципиальные схемы часов, построенных на жидкокристаллических, люминесцентных и СИД-индикаторах приведены в книге [8].

Программное управление БИС 8279. Для задания режимов работы и управления БИС в распоряжение программиста предоставлено 8 команд — CW7_0 (Command Word — разряды D-,D6D5 команд используются для адресации их получателя внутри БИС 8279):

CWU— команда установки режима работы клавиатуры и дисплея (рис. 3.150). Если уста­ новлен режим сканирования клавиатуры с внутренней дешифрацией, то на дисплей выдаются только первые четыре символа ОЗУ дисплея независимо от значения поля DD;

CW\ — команда программирования тактовой частоты (рис. 3.151). Для получения базовой частоты внутренней синхронизации f CY = 100 кГц следует установить коэффициент деления прескалера РРРРР = fcuclfcY (смРис- 3.140);

CW2 — команда чтения буферной памяти клавиатуры или матрицы датчиков (рис. 3.152). Эта команда подается в контроллер 8279 перед чтением данных из FIFO/Sensor RAM последо­ вательностью команд IN port при значении разряда адреса А0 = 0 (см. табл. 3.26). Действие ко­ манды CW2 остается в силе, пока не будет подана команда CW3 (команды CW2 и CW3 определя­ ют источник данных для чтения). В режиме сканирования клавиатуры флаг автоинкремента AI

иадрес ААА игнорируются (FIFO — безадресная память и данные выдаются в том же порядке,

вкаком они были занесены в FIFO при нажатиях клавиш). В режиме сканирования матрицы датчиков адресные разряды ААА выбирают один из 8 байтов ОЗУ датчиков. Если флаг AI = 1, то при каждом чтении адрес автоматически увеличивается на 1;

CW3 — команда чтения кода символа из ОЗУ дисплея (рис. 3.153). Эта команда подается в контроллер 8279 перед чтением данных из Display RAM последовательностью команд IN port при значении разряда адреса А0= 0 (см. табл. 3.26). Действие команды CW3 остается в силе, по­ ка не будет подана команда CW2. Адресные разряды Аа АА выбирают один из 16 байтов ОЗУ дисплея. Если флаг AI = 1, то при каждом обращении к ОЗУ дисплея (и при чтении, и при запи­ си) адрес автоматически увеличивается на 1;

CW4 — команда записи кода символа в ОЗУ дисплея (рис. 3.154). Эта команда задает зна­ чение флага A I и адреса АААА для записи кодов символов в ОЗУ дисплея последовательностью команд OUT port при значении разряда адреса А 0= 0 (см. табл. 3.26). Команда CW4 не влияет на задание источника чтения данных {FIFO/Sensor RAM или Display RAM), но изменяет значение флага AI и адреса АААА для чтения кодов символов из ОЗУ дисплея;

21 Г. И. Пухальский

322

 

 

 

 

 

 

Глава 3. Интерфейсные БИС

D1

D6

D5

D4

03

D2

D1

D0

 

0

0

0

D

D

К

К

К

D-iD(tD5 = ООО — Keyboard/Display Mode Set (CW0)

 

 

 

0

|1

0

0

$= RESET ■- 1 (Default after r e s e t)

 

 

 

 

 

 

000 •— Encoded Scan Keyboard, 2-Key Lockout

 

(сканирование клавиатуры с внешней дешифрацией и блокировкой нажатия двух клавиш)

 

 

 

 

 

 

001 — Decoded Scan Keyboard, Т.-Key Lockout

 

(сканирование клавиатуры с внутренней дешифрацией и блокировкой нажатия двух клавиш)

 

 

 

 

 

 

010 — Encoded Scan Keyboard, N-Key Rollover

 

(сканирование клавиатуры с внешней дешифрацией и одновременным нажатием N клавиш)

 

 

 

 

 

 

011 — Decoded Scan Keyboard, N-Key Rollover

 

(сканирование клавиатуры с внутренней дешифрацией и одновременным нажатием N клавиш)

 

 

 

 

 

 

100 •— Encoded Scan Sensor Matrix

 

(сканирование матрицы датчиков с внешней дешифрацией)

 

 

 

 

 

 

101 — Decoded Scan Sensor Matrix

 

(сканирование матрицы датчиков с внутренней дешифрацией)

 

 

 

 

 

 

110 — Strobed Input, Encoded Display Scan

 

(стробируемый ввод при сканировании дисплея с внешней дешифрацией)

 

 

 

 

 

 

111 — Strobed Input, Decoded Display Scan

 

(стробируемый ввод при сканировании дисплея с внутренней дешифрацией)

00 — 8 8-bit character display, Left entry

 

 

 

(8-разрядный дисплей с вводом 8-разрядных символов с левой стороны дисплея)

01 — 16 8-bit character display, Left entry

 

 

 

(16-разрядный дисплей с вводом 8-разрядных символов с левой стороны дисплея)

10 — 8 8-bit character display, Right entry

 

 

 

(8-разрядный дисплей с вводом 8-разрядных символов с правой стороны дисплея)

11 — 16 8-bit character display, Right entry

 

 

 

(16-разрядный дисплей с вводом 8-разрядных символов с правой стороны дисплея)

 

 

Рис. 3.150. Команда CW0 установки режима работы клавиатуры и дисплея

D l

Db

D5 i D4

D3

D2

Dl

DO

 

0

0

1

p

p

p

p

p

Di D(,D5= 001 — Program Clock (CW{)

 

 

 

1

1

1

1

1

 

 

 

 

 

 

 

PPPPP = 2 + 31-— коэффициент деления частоты сигнала CLK

 

 

 

Рис. 3.151. Команда CWi программирования тактовой частоты

 

D l

D6

D5 \ D4

D3

D2

Dl

DO

 

0

1

0

A l

X

A

A

A D-)D6DS= 010 — Read FIFO/Sensor RA M (CW2)

AAA = 0 * 7 — адрес буферной памяти ОЗУ датчиков

Auto-Incrementflag — флаг автоинкремента адреса буферной памяти

Рис. 3.152. Команда CW2 чтения буферной памяти клавиатуры и матрицы датчиков

 

 

 

 

3.10. Программируемый контроллер клавиатуры и дисплея 8279

323

 

 

D7

D6

D5

DA

D3

D2

D 1

D0

 

 

 

 

 

0

1

1

A l

А

А

А

А

D7D6D5 = 011 — Read Display R A M (CW3)

 

 

 

 

 

 

 

 

 

 

AAAA = 0 * 1 5 — адрес ОЗУ дисплея

 

 

 

 

 

 

Auto-Incrementflag — флаг автоинкремента адреса ОЗУ дисплея

 

 

 

 

 

Рис. 3.153. Команда CW3 чтения кода символа из ОЗУ дисплея

 

 

 

D1

D6

DS 1 D4

D3

D2

DI

D0

D7D6D5 =100 — Write Display R A M (CW4)

 

 

 

1

0

0

AI

А

А

А

А

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

AAAA = 0 * 1 5 — адрес ОЗУ дисплея

 

 

 

 

 

 

Auto-Incrementflag — флаг автоинкремента адреса ОЗУ дисплея

 

 

 

 

 

Рис. 3.154. Команда CW4 записи кода символа в ОЗУ дисплея

 

Dl

D6

D5

D4

D3

 

D2

Dl

 

D0

 

 

 

1

0

1

X

IWA IWB

BLA BLB

D7D6D5 =101 — Display Write Inhibit/Blanking (CW5)

 

 

 

 

 

 

 

 

Blanking nibble B3_0 (гашение тетрады 2?3_o ОЗУ дисплея)

 

 

 

 

 

 

 

Blanking nibble A3_o (гашение тетрады A3_o ОЗУ дисплея)

 

 

 

 

 

 

Inhibit Write nibble B3_o (блокировка записи в тетраду Bi 4} ОЗУ дисплея)

 

 

 

 

Inhibit Write nibble A3_o (блокировка записи в тетраду А3_() ОЗУ дисплея)

 

 

Рис. 3.155. Команда CW$ блокировки записи данных и гашения ОЗУ дисплея

Dl

D6

D5 ! DA

D3

D2

D\

DO

 

 

 

 

 

1

1

0

Cd CD CD c F CA

DnDffis = 110 — Clear (CW6)

 

 

 

 

 

 

 

 

 

<=

RESET = 1 (Default after reset)

 

Примеры:

 

 

 

 

1 — гашение 7-сегментнЬго дисйлея с общим катодом и очистка FIFO

 

 

 

 

 

 

 

0 — очистка FIFO

'

 

 

 

 

 

 

 

 

0

— гашение дисплея, построенного на матричных индикаторах 5 x 7

 

 

 

 

 

 

 

Clear All (очистка FIFO и ОЗУ дисплея, если разряд СА =

1)

 

 

 

 

 

 

Clear FIFO (очистка только FIFO, если разряд CF= 1)

 

 

 

 

 

Ox-

 

 

Код заполнения всех 16 ячеек памяти ОЗУ дисплея:

 

 

 

 

-А3^0В3_0 = ООН = 0000 0000 (гашение 7 -сегментного дисплея,

 

 

 

 

 

IO -

 

 

 

построенного на индикаторах с общим катодом)

 

 

 

 

-А3_ой3_о = 20h = 0010 0000 (ASCII-код пробела для гашения дисплея,

 

 

 

 

 

 

 

 

 

построенного на матричных индикаторах 5 x 7 )

 

 

 

 

1 1 ■ -А3_о5 3_о = FFh =1111 1111 (гашение 7 -сегментного дисплея,

 

 

 

 

 

 

 

 

 

 

построенного на индикаторах с общим анодом)

 

 

 

Enable Clear Display when = 1

— разрешение очистки дисплея, если разряд D4 = 1

Рис. 3.156. Команда CW6 очистки

21*

324

Глава 3. Интерфейсные БИС

CW5

команда блокировки записи данных и гашения ОЗУ дисплея (рис. 3.155). Разряды

IWA и IWB используются для раздельного запрета записи в старшую А3_0 и младшую 5 10 тетра­ ды ОЗУ дисплея, что позволяет производить независимую запись 4-разрядных кодов символов в ОЗУ дисплея при использовании двух 16-разрядных 7-сегментных дисплеев. Для раздельного гашения таких индикаторов предназначены флаги BLA и BLB. При использовании 8-разрядных кодов символов, а значит, и одного дисплея, для его гашения следует установить значения

BLA= 1 и BLB = 1;

CWb — команда очистки (рис. 3.156). По этой команде при значении D4 v D 0 = 1 во все 16 ячеек памяти ОЗУ дисплея записывается код гашения дисплея, заданный разрядами D3D2. Вре­ мя записи в одну ячейку памяти равно 10 мкс, поэтому на время 160 мкс ОЗУ дисплея недос­ тупно для записи данных, что фиксируется в слове состояния FIFO (см. рис. 3.158) значением разряда D-i - Б и = 1. После окончания записи кода гашения разряд Dv автоматически устанав­ ливается в 0. Этот разряд предназначен для квитирования вывода кодов символов в ОЗУ дис­ плея сразу после подачи команды очистки CW6. Если задано значение разряда D, - CF = 1, то выполняется очистка слова состояния FIFO (см. рис. 3.158), сбрасывается в 0 сигнал запроса прерывания IRQ и устанавливается указатель адреса ОЗУ датчиков на строку 0. Задание значе­ ния Do = Сд = 1 эквивалентно заданию значений разрядов D4 = D, = 1 (при этом производится еще и перезапуск внутренних цепей синхронизации);

CW-) — команда конца обработки прерывания и установки режима обнаружения ошибок (рис. 3.157). В режиме матрицы датчиков команда CW7 при значении разряда Е = 1 сбрасывает в 0 сигнал запроса прерывания IRQ и разрешает дальнейшую запись информации в ОЗУ датчи­ ков (после обнаружения изменения состояния датчиков сигнал IRQ устанавливается в состоя­ ние 1 и запрещается запись в ОЗУ датчиков). В режиме независимого ввода кодов N одновре­ менно нажатых клавиш команда CW7 при значении разряда Е = 1 включает специальный режим обнаружения ошибок (описание см. на с. 326).

Слово состояния FIFO. Слово состояния FSW (рис. 3.158) содержит информацию о со­ стоянии FIFO, ошибках и запрещении записи в ОЗУ дисплея.

Врежимах сканирования клавиатуры и стробируемого ввода слово состояния FSW ис­ пользуется для указания числа введенных в FIFO символов (разряды D2D tD0 = NNN = 0 ... 7), полного FIFO (разряд D3 = 1) и фиксации ошибок (разряд D4 = 1 — чтение данных из пустого FIFO, разряд D5 = 1 — запись данных в полное FIFO).

Разряд D7 = 1 указывает на недоступность ОЗУ дисплея для записи данных до тех пор, по­ ка команда CW6 не завершит операции очистки Clear Display или Clear All (см. рис. 3.156).

Врежиме сканирования матрицы датчиков разряд D6 = S/E - 1 указывает на изменение показаний, по крайней мере, одного датчика в содержимом ОЗУ датчиков. В режиме обнару­ жения ошибок разряд D6 = S/Е устанавливается в состояние 1 при одновременном нажатии (за­ мыкании) нескольких клавиш.

Ф орматы данных. Формат байта данных в режиме сканирования клавиатуры, поступаю­ щий в FIFO при нажатии клавиши показан на рис. 3.159. Разряды D5D4D3 принимают значение номера столбца, в котором обнаружена нажатая клавиша, а разряды D2D xDa — значение номера строки (линии возврата) RL?.о этой клавиши (см. рис. 3.143). Номера столбцов определяются номерами сигналов М7_0, получаемых декодированием линий сканирования SL2_jq. Например, клавиша, подключенная к столбцу М5 и строке RL2, будет иметь номер 101 010 = 2Аh = 42d (см. рис. 3.145, а). Номера клавиш необходимо знать для дальнейшего их преобразования про­ граммным способом в А5С//-коды с учетом значений разрядов D7 = CNTL и D6 = SHIFT, так как клавиши маркируются алфавитно-цифровыми символами для ввода в память МП-системы тек­ стовой информации.

 

 

 

3.10. Программируемый контроллер клавиатуры и дисплея 8279

325

07

D6

D5 ! D4

D3

D2

D1

DO

 

1

1

1 Е

X

X

X

X D?D6D$ =111 — End Interrupt/Error Mode Set (CW?)

 

1 — сброс в О сигнала IRQ в режиме матрицы датчиков или задание специального режима обнаружения ошибок в режиме одновременного нажатия N клавиш

Рис. 3.157. Команда CW7 конца обработки прерывания и установки режима обнаружения ошибок

D7

D6

D5

D4

D3

D2

DI

DO

 

 

 

Du

S/E

0

и

F

N

N

N

FIFO Status Word (FSW )

 

 

 

 

 

 

 

Т

 

 

 

 

 

 

 

 

Number o f Characters in FIFO (количество символов в FIFO)

 

 

 

 

1 — FIFO Full (FIFO полное)

 

 

 

 

 

1 — Error-Underrun (ошибка антипереполнения — чтение пустого FIFO)

 

 

1 — Error-Overrun (ошибка переполнения — запись символа в полное FIFO)

 

Sensor Closure/Error Flag fo r Multiple Closures — замыкание датчика/флаг ошибки

 

 

 

 

 

 

 

 

 

 

замыкания нескольких клавиш

1 — Display unavailable (ОЗУ дисплея недоступно для записи и чтения данных)

 

 

 

 

 

 

Рис. 3.158. Слово состояния FIFO

D1

D6

 

D5

D4

D3

D2

D1

DO

CNTL

SHIFT

 

i

SCAN

 

RETURN

Data Format

 

 

 

 

 

i

 

i

i

 

Номер линии возврата RL1A] нажатой клавиши Номер столбца сканирования М1(] нажатой клавиши (см. рис. 3.143)

Значение сигнала SHIFT на входе SHIFT PKDI

Значение сигнала CNTL на входе CNTL/STB PKDI (см. рис. 3.143)

Рис. 3.159. Формат данных в режимах сканирования клавиатуры

DI

D6

D5

D4

D3

D2

DI

DO

RL7

RLe

RL5

r l 4

r l 3

r l 2

RLi

RLo Data Format

Т

Данные на линиях RL?_0 опрашиваемого столбца матрицы датчиков или данные на линиях RL?_0, вводимые в FIFO по положительному фронгу сигнала STB

Рис. 3.160. Формат данных в режимах сканирования матрицы датчиков и стробируемого ввода

326 Глава 3. Интерфейсные БИС

Формат данных в режимах сканирования матрицы датчиков и стробируемого ввода пока­ зан на рис. 3.160:

RLjA) — байт данных опрашиваемого в данный момент столбца матрицы бинарных датчи­ ков, записываемый в ОЗУ датчиков по адресу, равному номеру этого столбца (сигналы CNTL и SHIFT в режиме сканирования матрицы датчиков игнорируются, а в качестве матрицы датчи­ ков к линиям возврата R L j^ можно подключить восемь 8-канальных мультиплексоров, на ад­ ресные входы А 2-о которых должны быть поданы сигналы SL2 Uдля сканирования каналов);

RL7-о — байт данных на линиях RL1{h поступающий от внешнего устройства и записывае­ мый в FIFO положительным фронтом сигнала STB, поданного на вход CNTUSTB.

Режим сканирования клавиатуры с блокировкой наж атия двух клавиш (Scanned Keyboard Mode, 2-Key Lockout). При обнаружении нажатой клавиши включается схема подав­ ления “дребезга” контактов (debounce) и производится обнаружение других нажатых клавиш в течение двух следующих циклов сканирования (время выполнения одного цикла сканирова­ ния клавиатуры равно 5,12 мс при базовой частоте f CY = 100 кГц, а время выполнения цикла de­ bounce равно 10,24 мс). Если других нажатых клавиш не обнаружено, то код нажатой клавиши (см. рис. 3.159) вводится в FIFO при ее отпускании. Если FIFO было пусто, то устанавливается значение сигнала запроса прерывания IRQ = 1, сообщающее МП о наличии в FIFO данных для ввода. Если FIFO было полно, то код нажатой клавиши в FIFO не вводится и в слове состояния FSW устанавливается в 1 значение флага переполнения О (см. рис. 3.158). Если будет нажато несколько клавиш с любым интервалом времени, то в FIFO вводится только код первой нажа­ той клавиши при условии, что она будет отпущена последней.

Если две клавиши нажаты в пределах цикла debounce, то это считается одновременным нажатием. В этом случае в FIFO вводится код последней отпущенной клавиши.

Режим сканирования клавиатуры с одновременным нажатием N клавиш (Scanned Keyboard Mode, N-Key Rollover). Каждая клавиша в этом режиме рассматривается независимо от всех остальных. При обнаружении нажатия клавиши ее состояние проверяется по истечении цикла debounce. Если клавиша все еще нажата, ее код вводится в FIFO.

Если одновременно нажаты несколько клавиш, то их коды будут введены в FIFO в после­ довательности, в которой они были обнаружены при сканировании.

Сканирование клавиатуры с обнаружением ошибок (Scanned Keyboard Special Er­ ror Modes). Для предыдущего режима командой CW7 можно задать специальный режим обна­ ружения ошибок. В этом случае при обнаружении в одном цикле debounce двух нажатых кла­ виш в слове состояния FSW устанавливается в 1 значение флага ошибки S/Е (см. рис. 3.158), что блокирует запись в FIFO кодов нажатых клавиш и задает значение сигнала запроса преры­ вания IRQ = 1 (если оно еще не было установлено). Сброс флага ошибки S/Е в 0 производится командой очистки CW6 при значении разряда CF= 1 (см. рис. 3.156).

Режим матрицы датчиков (Sensor Matrix Mode). В этом режиме схема debounce отклю­ чена. Состояние ключей датчиков (0 и 1) сенсорной матрицы 8 x 8 при сканировании непосред­ ственно вводится в ОЗУ датчиков размера 8 x 8 (периодически байт за байтом, появляющимися при сканировании на линиях возврата R L ,^ — см. рис. 3.160). Таким образом, ОЗУ датчиков хранит образ состояний ключей датчиков сенсорной матрицы и непрерывно отслеживает его изменения (например, снабдив шахматную доску герконовыми магнитными датчиками, можно отслеживать перемещение всех фигур).

При любом изменении состояния датчиков, обнаруженном в течение цикла сканирования клавиатуры, устанавливается значение сигнала запроса прерывания IRQ - 1. Если флаг автоин­ кремента AI = 0, то первая же операция чтения данных из ОЗУ датчиков сбросит сигнал IRQ в 0. Если флаг автоинкремента AI = 1, то сигнал IRQ сбрасывается в 0 только командой СЩ

3.10. Программируемый контроллер клавиатуры и дисплея 8279

3 2 7

конца обработки прерывания (см. рис. 3.157). Изменение состояния нескольких датчиков в ма­ трице при значениях сигналов SL2SLiSLq = ООО (SU, = 0 в декодированном режиме), может вы­ звать несколько прерываний (это же может вызвать и сброс БИС 8279 значением сигнала

RESET = 1).

Режим работы дисплея с вводом слева (Left Entry). Это самый простой режим работы дисплея — каждый разряд дисплея непосредственно соответствует байту (или тетраде) в ОЗУ дисплея. Адрес 0 в ОЗУ дисплея соответствует крайнему левому разряду дисплея, а адрес 15 (или адрес 7 в 8-разрядном дисплее) — крайнему правому разряду дисплея (рис. 3.161). Ввод символов слева с автоинкрементом, начиная с адреса 0, последовательно заполняет слева на­ право всю строку дисплея (следует помнить, что автоинкремент адреса 15 дает адрес 0).

При выводе коротких сообщений по центру дисплея целесообразно предварительно гасить его (стирать предыдущее сообщение) командой очистки CW6, а затем командой CW4 задавать режим записи с автоинкрементом и необходимым начальным адресом.

Адрес ОЗУ дисплея и номер разряда дисплея

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

 

♦♦♦

 

 

 

ФФФФФ

t v

ФФФФФ

ФФФФФ

ф-:-

-:-ф

■:■♦♦♦

 

 

 

 

 

ф

 

 

 

Ф-:-

 

:

:

•:.ф-;.

+

 

 

 

 

>-:-фф

 

 

 

ф-:-

 

ф-:-

ф-:- -:-ф

 

 

 

 

ф

 

 

•>

ф .;.

ф-:-

•;.ф-:-

ф.;.

: :

 

ФФФФФ

 

 

 

 

V

-> v

 

♦♦♦

ф-> •>

ф-> V

ф-:- v

ф->

•> •>ф.>->

Ф--.'

Ф

 

 

 

20h

4 Еh

4 Fh

 

♦ ♦ Ф Ф

ФФФФФ

ФФФФФ

ФФФФФ

ФФФФФ

 

 

фч- -:-ф

54 h

2Еh

20h

5 6 h

4 Fh

5 3 /i

45 h

ACh

5Аh

45h

56h

41 h 20h

ASCII-коды выводимых на дисплей символов

Рис. 3.161. Вывод сообщения на дисплей

Задача 1 (файл 3#10_01.asm). Для контроллера клавиатуры и дисплея, изображенного на рис. 3.144 и 3.145, а, произвести задание режимов работа клавиатуры (Encoded Scan Keyboard, 2-Key Lockout) и дисплея (16 8-bit character display, Left entry) с установкой модуля пересчета прескалера равным 26. Вывести на дисплей сообщение, приведенное на рис. 3.161, с предвари­ тельным гашением дисплея. Решение-.

defseg

d%219, start = 720h, class = Data

; Data Segment

seg

J8279

 

 

nov db

‘ NOVOSELZEVA T .\ 0 ; 4E 4F 56 4F 53 45 4C 5A 45 56 41 20 54 2E — ASCII

 

 

; 0 — задает конец строки (на дисплей не выводится)

defseg

IO_seg, start = 38h, class = IOspace

; I/O Segment

seg

IO_seg

; dat — порт данных (38h)

 

ds

1

 

ds

1

; com — порт команд и слова состояния FIFO (39h)

defseg

c_seg, start = ЮО/i, class = Code

; Code Segment

seg

c_seg

 

 

MVI

A, 8

-, A <- CW0 = 8 = 00001000 — режимы работы (см. рис. 3.150)

OUT

com

; 8279 <- CWQ

 

MVI

A, 26

; A <r- CWi = 26d — модуля пересчета прескалера (см. рис. 3.151)

OUT

com

; 8279 <- CWX

 

MVI

A, 0D8ft

; А <— CW6 = D9h = 11011000 — гашение дисплея (см. рис. 3.156)

OUT

com

; 8279 <- CW6

 

MVI

A, 91 h

; A <- CWA = 91 h = 10010001 — А /=

1 (см. рис. 3.154)

OUT

com

; 8279 <— CW4 (запись с автоинкрементом с адреса 1)

328

 

LXI

B, nov

L1:

IN

com

 

ANI

80h

 

JNZ

Ll

L3:

LDAX В

 

ANA

A

 

JZ

L2

 

OUT

dat

 

INX

В

 

JMP

L3

L2:

 

end

Глава 3. Интерфейсные БИС

BC 0720Й — адрес строки выводимых на дисплей символов

А<— FSW — слово состояния FIFO (см. рис. 3.158)

А<—D,■()()() 0000 — выделение флага D,,

Переход, пока Du = 1 — квитирование вывода

А<—ASCII-код выводимого символа

А<— А & А — обнаружение конца строки символов Переход, если А = 0

8279 <— символ строки NOVOSELZEVA Т.

End Program

1

2

3

4

5

6

7

8

9

10

И

12

13

14

15

 

0

<— Адрес ОЗУ

Введен

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ф■•■:

дисплея

символ 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

Ф

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ф .

 

2

3

4

5

6

7

8

9

10

11

12

13

14

15

0

 

I

<— Адрес ОЗУ

Введены

 

 

 

 

 

 

 

 

 

 

 

 

 

ф..ф.;..>

ф,....;.ф

дисплея

 

 

 

, •

 

 

 

 

 

 

 

 

 

 

-..'.ф

 

символы 1 и 2

 

 

 

 

 

 

 

 

 

 

 

 

Ф -

Ф

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ФФФ ФФФФФ

 

3

4

5

6

7

8

9

10

11

12

13

14

15

0

 

1

 

2

* - Адрес ОЗУ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'-ФФФ- ФФФФФ

дисплея

Введены

 

 

 

 

 

 

 

 

 

щ

щ

ф.'.ф...'.

ф.-.

--Ф

 

ф

 

 

 

 

 

 

 

 

 

 

 

ф ■..

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ф

■- Ф.

 

ф

 

символы 1 + 3

 

 

 

 

 

 

 

 

 

 

 

 

ф

ФФ

ф

Ф

 

 

 

 

 

 

 

 

1

■■■

 

 

Ii ;

ф

ф

 

Ф

 

 

 

 

 

 

 

 

 

 

 

ффф

ФФФФФ ФФФ

 

Введены

символы 1 + 9

и А + С

После ввода символа Н

После ввода символа /

0

 

1

 

2

3

 

4

 

 

5

 

 

6

 

 

 

7

 

8

 

9

 

10

 

и

 

12

13

 

14

 

15

 

<— Адрес ОЗУ

•:фф ■

 

ФФФ’•

ФФФФФ ..

•••••

 

ФФ . . . . . . . .

ф " ф

ФФФФФФФ

ффф

ФФФ

ффффф

ФФФФФ ■>ФФФ-:-

дисплея

 

 

ф : - *••••.

ФФ:■

 

 

 

 

ф :■•■

 

 

 

 

:

 

 

:

Ф Ф

:

:

ф'

ф

ф.

 

ф .

ф '

Ф '

 

Ф:■9

Ф: Ф. .

 

 

* Ф ФФФФ Ф: '

 

 

 

 

 

 

 

ф

ф Ф

Ф

Ф- :

Ф

:

 

:

 

ф

 

 

 

•: m

*»•••

 

:

 

.-ф Ф . 'Ф

 

 

 

 

Ф•••

•: Ф

 

 

Ф. . ■.Ф

 

 

 

 

 

ф'.' :■

ф. :• .

 

 

 

 

 

 

 

: ФФФ

 

 

 

 

'ФФФ:'

 

 

• -:--'Ф

 

 

-.-ФФФ

 

 

 

ФФФФФ

ф-'

 

 

 

 

 

1

2

 

3

4

 

5

 

 

6

 

 

1

 

 

 

8

 

9

 

10

 

11

 

12

 

13

14

 

15

 

0

 

Адрес ОЗУ

»•«

ффффф

' ■Ф ФФФФФ - '*•

'ффффф! ффф" ФФФ

■ФФФфффф

ффф

ФФФ

 

ффффф ФФФФФ

ФФФ Ф

 

 

дисплея

• •

 

ФФ Ф

•••

 

 

Ф

ф...

 

«

Ф'•■ФФ■:• . Ф{

ф

 

 

 

 

 

 

 

Ф

ф

 

ф Ф'--

•: Ф

 

•'

• •

•«•1

 

 

 

 

 

 

:

s фффф

ф

 

 

 

Ф-

 

»

 

 

 

■Ф

♦.

 

: ф

ф

ффф

ф

.

ФФФФФ

Ф

фффф

 

 

ФФФФ Ф ФФФФФФФ

 

•• фф "

 

 

 

 

 

■Ф. .

 

 

 

 

ФФФФФФ-.'

ф

 

 

Ф: :: ф

 

 

 

ф-.-

Ф'. • •

Фф-:--:--.-ф

 

ффффф

 

 

 

 

*...♦

 

 

 

: *■> .

 

 

 

 

 

 

 

 

Ф •

 

 

 

 

 

 

ффффф ф :• '

• и л

ф

-:-ф

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ф

 

 

 

 

 

 

 

Ф

 

Ф

 

2

3

 

4

5

 

6

 

 

7

 

 

8

 

 

 

9

 

10

 

11

 

12

 

13

 

14

15

 

0

 

1

 

<— Адрес ОЗУ

ффффф

••••#••

ФФФФФ

ф

 

 

 

:ффф"

 

ФФФ

 

 

ФФФ

ФФФФ

ффф

 

ФФФ

 

ффффф ФФФФФ

 

 

 

 

•V

 

дисплея

 

 

 

> • ...

 

 

 

*■■■■'ФФ-

 

Ф ф

 

Ф

:

s

ф -

ф Ф Ф

 

 

Ф:•

 

■■

 

 

:

 

 

«: Ф: «»•«

фффф

.

 

■.

Ф: : •.Фф

 

 

ФФ.'

 

 

 

г

:

фффф

ф

■: ■

:***• :

 

•: -.-ф

:■

 

1

 

ф :■

. : . ф

 

: ФФФ.

 

ФФФФ Ф

 

Ф

фффф

 

 

ФФФФ ф . фф!

 

 

 

ф

 

 

ФФФФФ

*•: . •••♦

 

ф .. . .

:

 

:

 

.

. ФФФФФФ

ф:- :• :-Ф

■'

ф.■

ф

 

 

ф.

 

 

 

 

 

 

 

:• .

 

 

 

 

 

ФФФ

:>ф

 

 

V.

ф,

Ф

,

Ф

 

ф-:--.ф .

 

 

 

 

vфффф|

П

 

 

 

 

 

 

 

 

 

 

 

 

 

ффф -

■■•ФФ'"

Ф- ' : ф ФФФФ:■

ФФФ ФФФ

 

ффффф ф :■

 

 

15

 

0

 

1

 

2

3

 

4

 

 

5

 

 

6

 

 

 

7

 

8

 

9

 

10

 

11

 

12

13

 

14

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дисплея

Рис. 3.162. Ввод символов справа

Режим работы дисплея с вводом справа (Right Entry). Этот режим используется в большинстве электронных калькуляторов. Каждый новый символ вводится в крайний правый разряд дисплея. Затем он сдвигается на один разряд влево следующим введенным символом и т. д. (рис. 3.162). Таким образом, при вводе каждого нового символа все содержимое строки сдвигается на один разряд влево, а крайний левый символ теряется.

В режиме ввода справа адрес ОЗУ дисплея и номер разряда дисплея не совпадают. Следо­ вательно, запись байта в ОЗУ дисплея по некоторому заданному адресу в режиме автоинкре­ мента может дать самый непредсказуемый результат. Для ввода справа последовательности символов рекомендуется использовать стартовый адрес 0.

Если запись символов в ОЗУ дисплея производить с низкой частотой (порядка 2 * 4 Гц), то сообщения на дисплей будут выводиться в режиме “бегущей” строки.

Г л а в а 4

МИКРОПРОЦЕССОРЫ 8086/8088 И СОПРОЦЕССОР 8087

4.1. Структурная схема МП 8086

Микропроцессор 8086 фирмы Intel (отечественный аналог 1810ВМ86) имеет 16-разряд- ную шину данных, содержит на кристалле около 29000 транзисторов и изготовляется по высо­ кокачественной и-канальной //МОЗ-технологии. В МП используется одно напряжение питания +5 В и однофазная синхронизация (сигнал CLK): 5 МГц в модели 8086, 8 МГц в модели 8086-2 и 10 МГц в модели 8086-1 (рис. 4.1). Выпущены также версии 80С86 (5 МГц) и 80С86-2 (8 МГц), изготовляемые по CHMOS технологии. Производительность этих МП значительно выше про­ изводительности 8-разрядных МП 8080/8085. Хотя и имеется определенная совместимость ар­ хитектуры МП 8086 с архитектурой МП 8085, разработчики не ставили перед собой цели дос­

тичь ее полностью. Число

линий адреса увеличено с 16 до 20, что позволяет адресовать

1 Мбайт памяти (220 = 1 М)

вместо 64 Кбайт. Увеличение объема памяти обеспечивает переход

к мультипрограммированию, поэтому в МП 8086 предусмотрено несколько мультипрограмм­ ных возможностей. Кроме того, в МП 8086 встроены некоторые средства, упрощающие реали­ зацию мультипроцессорных систем, что позволяет применять его с другими процессорами, например с арифметическим сопроцессором 8087 — NDCP (Numeric Data Coprocessor).

8086,1810ВМ86, 80С86

 

—I

и

 

L,

 

 

g n d L 1

40 Ь с

S

 

AD 1 4 [ 2

39 ] д я 1 5

|

 

A D 1 3 E 3

38 ] А 16/53

&

 

A D 1 2 [ 4

37 ] д 17/54

3

 

A D l l E 5

36 1 4 1 8/55

|

 

A D loE 6

35 Ил 19/56

1

 

/Ш 9[ 7

34

1BHE/S7

s

 

/Ш8[>

332 m n /m x

3

Корпус

AD7E 9

32]/?D ____

4

ЛОбЕ 10

31

1RQ/GT0

(HOLD)

типа

AD5E 11

30 lR Q /С П

(HLDA)

PD1P

AD4Е 12

2v lL O C K

( Щ _

 

 

AD3E13

2s]52

(Mild)

 

A D lL 14

27

]S1

(DT/R)

 

ADI E 15

26

]50

(DEN)

 

ADoE 16

25

]Q50

(ALE)

 

N M ll

17

24

] q 5i

(INTA)

 

I N T R i 18

2 i lTEST

 

 

c l k Z 19

22 I r e a d y

 

 

GND\_20

21

^RESET

 

 

6

5

4

3

2

1

44

43

42

41

40

AD 10

7

 

 

 

 

 

 

 

 

 

 

AD9 □ 8

 

 

 

 

 

 

 

 

 

 

AD8

9

 

 

 

 

 

 

 

 

 

 

AD1

1

10

 

 

 

80C86

 

 

 

 

AD6 □ 11

 

Корпус типа P L C C

 

 

 

 

 

 

 

 

 

(P lastic L ea d ed C hip

 

AD3 Ь

14

 

 

 

C arrier)

 

 

 

AD2

15

 

 

 

 

 

 

 

 

 

 

ADI

16

 

 

 

 

 

 

 

 

 

 

ADO

17

 

 

 

 

 

 

 

 

 

 

 

 

18

19

20

21

22

23

24

25

26

27

28

39

С NC

38

L

A 19/56

37

С ВНЁ/S l

36

С MNIMX

35

С RD

34

С

RQ/GTO

33

С RQ /G Tl

32

С LOCK

3 1

С

5 2

зо С

S\

29

c

50

Рис. 4.1. Микропроцессоры семейства 8086