До вузла статичної індикації входять: 4 регістри-фіксатори, струмообмежуючі резистори і чотири цифровий світлодіодний семисегментний дисплей. Схема їх увімкнення показана на рисунку 3.1. Зміст статичної індикації полягає у тому, щоб кожен індикатор постійно висвічувався від свого джерела інформації.
Число, яке виводиться на індикатор, фіксується відповідним регістром. Після запису числа в регістр, шина даних може приймати довільне значення, воно не буде впливати на значення, що висвічується на індикаторі. Хоча застосування статичної індикації і потребує відносно великих апаратних затрат, зате відпадає потреба в постійному переключенні індикаторів, як у випадку динамічної індикації, спрощується програмне забезпечення, контролер звільняється від необхідності постійної почергової передачі чисел на кожен індикатор, як у випадку динамічної індикації.
Коли потрібно засвітити сегмент індикатора, слід встановити відповідний біт регістра, рівний логічному нулю. Для того, щоб погасити відповідний індикатор, у регістр потрібно записати число 0FFh. Оскільки індикатори підключені без дешифраторів, то процес дешифрування слід проводити програмно. Програмне дешифрування дозволяє виводити на індикатор не тільки числа, а й деякі букви та інші символи.
Рисунок 3.1 – Схема позначення сегментів індикатора
Таблиця 3.1 – Дешифрування двійкового коду для семисегментного індикатора
Сегмент/цифра | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
Dat0 (a) | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
Dat1 (b) | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
Dat2 (c) | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Dat3 (d) | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
Dat4 (e) | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 |
Dat5 (f) | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
Dat6 (g) | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |
Dat7 (dp) | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Для засвічування десяткової коми (dp, decimal point) потрібно встановити біт 7 дешифратора, рівний 0.
Адреси цифр дисплея розміщені наступним чином:
для запису в перший (справа наліво) розряд адрес рівний 01h;
для запису в другий розряд Р2 адрес рівний 02h;
для запису в третій розряд Р2 адрес рівний 03h;
для запису в четвертий розряд Р2 адрес рівний 04h.
Запис відбувається згідно послідовності, вказаної в лабораторній рободі №2.
Приклад програми для лабораторної роботи №2
На семисегментному індикаторі почергово появляються цифри ‘1’, ‘9’, ‘8’, ‘8’.
dat EQU R0
adr EQU R1
Temp1 EQU R2
Temp2 EQU R3
Temp3 EQU R4
Segm EQU 0x02
CSEG
ORG 0x0000
JMP run
ORG 0x0033
run:
call off
call ldelay
call ldelay
mov dat, #11001111b
mov adr, #00000100b
call strob
call ldelay
mov dat, #10010000b
mov adr, #00000011b
call strob
call ldelay
mov dat, #10000000b
mov adr, #00000010b
call strob
call ldelay
mov dat, #10000000b
mov adr, #00000001b
call strob
call ldelay
petla:
jmp petla
strob:
setb P3.6
mov P0,dat
mov P2,adr
mov P2,#0x00
Ret
off:
mov dat, #11111111b
mov adr, #00000001b
call strob
mov dat, #11111111b
mov adr, #00000010b
call strob
mov dat, #11111111b
mov adr, #00000011b
call strob
mov dat, #11111111b
mov adr, #00000100b
call strob
ret
Delay:
mov Temp1, #0xFF
loop:
dec Temp1
mov Temp2, #0xFF
djnz Temp2, $
cjne Temp1, #0x00, loop
Ret
Ldelay:
call delay
call delay
call delay
call delay
call delay
call delay
call delay
call delay
call delay
call delay
RET
END