Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kharakhnin / ПОСОБИЕ_Харахнин.doc
Скачиваний:
279
Добавлен:
08.03.2016
Размер:
17.89 Mб
Скачать

5.2.2. Матричные светодиодные индикаторы

В тех случаях, когда требуется вывод алфавитно-цифровой информации, часто используют матричные индикаторы. Такой индикатор выполнен в виде матрицы светодиодов размерностью M x N, где М – число строк матрицы, N – число колонок. Наибольшее распространение получили индикаторы с размерностью 7 х 5 и 9 х 7. Для зажигания одного светодиода необходимо пропустить ток 10 – 15 мА при напряжении 2.0 – 2.5 В. Рассмотрим конструкцию индикатора АЛ306, представленную на рис. 40, 41.

Рис. 40. Конструктивное исполнение матричного индикатора АЛ306

Рис. 41. Цоколевка матричного индикатора АЛ306(а,б,ж,и)

Конструкция индикатора представляет собой корпус, в котором расположены 36 светодиодов каждый над своим отверстием.

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

Для отображения символа на матричном индикаторе необходимо использовать принцип динамической индикации по колонкам, поскольку в статическом режиме такой индикатор будет потреблять значительный ток, так, например, для отображения цифры 0 на одном индикаторе ток составит 160 мА. Графический образ символа "набирается" из последовательности байтов индикации путем перебора колонок.

Разобьем мысленно индикатор на две тетрады по вертикали (при этом младшая тетрада находится внизу). Так, например, для отображения цифры 0 потребуется последовательность из 5 байт: 3ЕН, 41Н, 41Н, 41Н, 3ЕН, для отображения цифры 1 необходима последовательность: 00Н, 00Н, 10Н, 20Н, 7FH, для буквы А: 3FH, 44H, 44H, 44H, 7FH.

Рассмотрим функциональную схему линейного дисплея (используется принцип динамической индикации) на трех матричных индикаторах, представленную на рис.42. Схема содержит транзисторные ключи (КТ361А), предназначенные для усиления по току сигналов на разрядах порта Р1. Транзисторные ключи (p-n-p типа) открываются нулевыми сигналами, формируемыми на выходах инверторов К555ЛН1 в момент выдачи единичных сигналов в разряды Р1. Дешифратор К155ИД3 предназначен для активизации колонок матричных индикаторов. В данный момент активной (нулевой) может быть только одна выходная линия в зависимости от кода на адресных входах 1,2,4,8. Разряд Р0.7 управляет включением и выключением дешифратора К155ИД3, при Р0.7=Е1=1 дешифратор не активен, что соответствует гашению дисплея, при Р0.7=Е1=0 дешифратор активен.

Процедура вывода символа на матричный индикатор выполняется в виде двух частей: перекодировки и отображения. Представление исходного двоичного кода символа в виде последовательности кодов осуществляется таблично. Каждому символу в таблице соответствует 5 ячеек. Адрес первого кода колонки формируется по формуле: адрес начала таблицы + 5 * ( двоичный код символа) / 5 /.

Для обеспечения немерцающей и яркой индикации на матричном дисплее необходимо активизировать текущую колонку 1 раз за 1,3 мС. Удобнее всего это делать по прерыванию при переполнении таймера.

Алгоритмы работы однокристального МК при выводе информации на матричный дисплей представлены на рис. 43, 44.

Рис. 42. Функциональная схема подключения матричных индикаторов

Рис. 43. Алгоритм основной программы при выводе информации на матричный дисплей

Рис. 44. Алгоритм прерывания по переполнению таймера Т0

Рассмотрим программу управления матричным дисплеем.

BIN_COD EQU 20H ;Адрес расположения двоичных кодов.

WORD EQU 40H ;Начальный адрес раcположения кодов колонок.

N EQU 03H ;Количество матричных индикаторов в дисплее.

<1> ORG 0000H

<2> JMP START

<3> ORG 000BH

<4> JMP INT_T0 ;Вектор прерывания по переполнению таймера Т0.

<5>START:MOV TMOD,#00000001B;Настройка Т0 в таймер

<6> MOV IE,#02H ;Разрешение прерываний от Т0.

<7> SETB EA ;Разрешение всех разрешенных прерываний.

<8> MOV TL0,#0EBH ;Загрузка таймера для интервала 1.3 мС.

<9> MOV TH0,#0FAH; Загружаемое число 65535 – 1300 = 64235 (FAEBH).

<10>INIT: CALL COD_DISPL ;Вызов процедуры перекодировки.

<11> CALL INIT_REG ;Вызов подпрограммы инициализации.

<12> SETB TR0 ;Запуск таймера Т0.

<13>MAIN: ;Блок основной программы.

<14> CJNE R5,#15,GO ;Все ли колонки дисплея активизированы?

<15> JMP INIT; Если все колонки активизированы, то перейти на перекодировку.

<16>GO: JMP MAIN ;Выполнять основную прикладную программу.

<17>INT_T0: CLR TR0 ;Выключить таймер Т0.

<18> SETB P0.7;Гашение дисплея (дешифратор К155ИД3 в высокоимпедансном состоянии).

<19> MOV P1,@R1 ;Код колонки в порт Р1.

<20> MOV P0,R2 ; Включение дисплея и активизация колонки.

<21> INC R1 ;Инкремент адреса массива кодов колонок.

<22> INC R2 ;Инкремент кода текущей колонки.

<23> INC R5 ;Инкремент счетчика колонок дисплея.

<24> MOV TL0,#0EBH ;Перезагрузка регистра

<25> MOV TH0,#0FAH ;таймера Т0.

<26> SETB TR0 ;Включение таймера Т0.

<27> RETI ;Выход из прерывания в основную программу.

<28> COD_DISPL:MOV R0,#BIN_COD;Указание на начало массива двоичных кодов.

<29> MOV R1,#WORD ;Указание на начало массива кодов колонок.

<30> MOV R6,#N ;Загрузка счетчика количества индикаторов.

<31>BACK:CALL CODER ;Вызов подпрограммы перекодировки.

<32> INC R0 ; Инкремент адреса массива двоичных кодов.

<33> DJNZ R6,BACK ;Проверка на перекодировку всех кодов.

<34> RET ;Если все перекодированы, то выйти в основную программу.

<35>CODER: MOV DPTR,#TABLE; Указание на начало таблицы кодов колонок чисел.

<36> MOV A,@R0 ;Вычисление

<37> MOV B,#05 ;адреса первого

<38> MUL AB ;кода колонки.

<39> MOV R3,A ;Сохранение кода в R3.

<40> MOV R7,#5 ;Загрузка счетчика кодов колонок для матричного индикатора.

<41>AGAIN:MOV A,R3 ;Восстановление кода в А.

<42> MOVC A,@A+DPTR ;Выборка кода колонки из таблицы.

<43> MOV @R1,A ;Пересылка полученного кода в массив WORD.

<44> INC DPTR ;Продвижение по таблице.

<45> INC R1 ;Продвижение по массиву WORD.

<46> DJNZ R7,AGAIN ;Если все 5 кодов числа получены, то выйти в основную программу.

<47> RET ;

<48>INIT_REG:MOV R1,#WORD ;Инициализация регистров.

<49> MOV R2,#00 ;

<50> MOV R5,#00 ;

<51> RET ;

<52>TABLE: DB 3EH,41H,41H,41H,3EH; Коды колонок цифры 0

DB 0H,0H,10H,20H,0EFH; Коды колонок цифры 1

DB 21H,43H,45H,49H,31H; Коды колонок цифры 2

и так далее.

З а д а н и я д л я с а м о с т о я т е л ь н о й р а б о т ы

Задание 1. Разработать программу, обеспечивающую вывод слова "МИР" на матричный светодиодный дисплей.

Задание 2. Разработать программу, обеспечивающую работу устройства по следующему алгоритму. К разрядам порта Р2.0, Р2.1 подключены позиционные датчики D1 и D2. При включении D1 на матричный дисплей выводится слово "END", при включении D2 – t0C, при одновременном включении D1 и D2 – кПа.