Wydział Elektroniki i Telekomunikacji
MIKROKONTROLER 8051
Wyświetlacz 7-segmentowy
Poznań 2009
Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji Wyświetlacz 7-segmentowy
_________________________________________________________________________________________________
I. Wyświetlacz 7-segmentowy.
Wyświetlacz 7-segmentowy sterowany jest poprzez 2 bufory - porty wyjściowe podłączone do szyny.
Bufor wyboru wskaźnika - dane wpisane do tego bufora określają, który wskaźnik ma być w danym momencie aktywny. Stosowane są tzw. kody 1 z 8, czyli każdy bit decyduje indywidualnie o świeceniu konkretnego wskaźnika. Typowo wybrany będzie faktycznie tylko 1 z 7 wskaźników. Ustawienie 1 na poszczególnym bicie powoduje świecenie odpowiedniego wskaźnika. Bit 0 decyduje o świeceniu wskaźnika 1, bit 1 decyduje o świeceniu wskaźnika 2 itd. Bit 6 decyduje o świeceniu diod świecących, które zostały podłączone jako wskaźnik 7.
Bit wyboru wskaźnika Wskaźnik
0
W1
1
W2
2
W3
3
W4
4
W5
5
W6
6
LED
Bufor danych wskaźnika - bajt umieszczony w tym buforze określa, które segmenty wyświetlacza będą zapalone w wybranym wskaźniku. Jedynka umieszczona na konkretnym bicie powoduje świecenie odpowiedniego segmentu lub diody świecącej zgodnie z opisem.
a
Bit danych
Segment
LED
wskaźnika
wskaźnika
0
a
F1
f
b
1
b
F2
g
2
c
F3
3
d
F4
4
e
ok
5
f
er
e
c
6
g
d
7
DP
DP
W poniższym przykładzie przedstawiony jest sposób zapisu danych do portów podłączonych do szyny mikrokontrolera. Po jego uruchomieniu można zaobserwować, że świecą wskaźniki wybrane stałą DISPLAY i segmenty wybrane stałą COD.
Dokonując zmian w tych stałych można decydować, które wskaźniki i które segmenty mają świecić.
UWAGA !
W przykładzie w stałej DISPLAY umieszczono dwie jedynki - wybrano dwa wskaźniki.
Ponieważ
w
systemie
DSM-51
wyświetlacz
7-segmentowy
przeznaczony jest do wyświetlania sekwencyjnego, dlatego przy świeceniu 1
Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji Wyświetlacz 7-segmentowy
_________________________________________________________________________________________________
statycznym należy wybierać co najmniej 2 wskaźniki, aby nie przekraczać dopuszczalnych prądów dla wskaźnika.
Po wpisaniu danych do buforów sterujących wyświetlaczem należy jeszcze wyzerować linię szóstą w porcie P1 mikrokontrolera. Linia ta, ustawiona na 1, blokuje wyświetlanie na całym wyświetlaczu 7-segmentowym. Jest ona doprowadzona do wyświetlacza po to, aby po włączeniu zasilania nie była wyświetlana na wyświetlaczu przypadkowa zawartość buforów - port mikrokontrolera jest automatycznie ustawiany na wartość 1.
Może ona też być wykorzystana przy sekwencyjnej obsłudze wyświetlacza do jego wygaszania w czasie zmiany wyświetlanego wskaźnika.
;*************************************************************
; WYŚWIETLACZ 7-SEGMENTOWY
;PRZYKŁAD
- ZAPIS DO PORTU
;*************************************************************
SEG_ON EQU P1.6
;włączenie wyświetlacza 7-segm.
;Pełne adresy urządzeń we/wy systemu DSM-51
F_CSDS EQU
0FF30H
;bufor wyboru wskaźnika
F_CSDB EQU 0FF38H
;bufor danych wskaźnika
;Stałe używane w programie
DISPLAY
EQU
00001001B
;wybrane wskaźniki - 1i4
COD
EQU
01011011B
;wybrane segmenty
LJMP START
ORG
100H
START:
MOV
DPTR,#F_CSDS
;adres bufora
;wyboru wskaźnika
MOV
A,#DISPLAY
MOVX @DPTR,A
;wpisz wybrane wskaźniki
MOV
DPTR,#F_CSDB
;adres bufora
;danych wskaźnika
MOV
A,#COD
MOVX @DPTR,A
;wpisz wybrane segmenty
CLR
SEG_ON
;włącz wyświetlacz 7-segm
SJMP $
W przedstawionym przykładzie sterowanie wyświetlacza wykonywane jest statycznie.
Przy tej metodzie na wszystkich wskaźnikach można wyświetlić to samo. Przyczyną tego jest fakt, że wyświetlacz 7-segmentowy w systemie DSM-51 został zaprojektowany do wyświetlania sekwencyjnego. W metodzie tej w danym momencie świeci się tylko jeden wskaźnik. Po upływie pewnego czasu jest on wyłączany i zapalny jest następny wskaźnik. Na każdym wskaźniku zapalany jest odpowiedni zestaw segmentów. Jeżeli czas świecenia pojedynczego wskaźnika zostanie odpowiednio dobrany, to dzięki bezwładności ludzkiego oka będzie widać (bez mrugania) odpowiednie znaki na wyświetlaczu.
2
Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji Wyświetlacz 7-segmentowy
_________________________________________________________________________________________________
II. Przebieg ćwiczenia.
1. Uruchomić przedstawiony powyżej program obsługi wyświetlacza 7-segmentowego.
2. Zmodyfikować program z punktu 1 tak, aby na wyświetlaczu pojawił się napis składający się z 6 różnych znaków (wyświetlanie sekwencyjne).
Niech czas świecenia jednego wskaźnika wynosi:
a) 1 ms,
b) 1 s.
3. W przedstawionym przykładzie bufory wyświetlacza 7-segmentowego adresowane są przy pomocy rejstru 16-bitowego DPTR. Ponieważ w mikrokontrolerze 8051 istnieje tylko jeden rejestr 16-bitowy, dobrą praktyką programowania jest używanie go tylko wtedy, kiedy pojawia się rzeczywista potrzeba.
W mikrokontrolerze 8051 istnieje druga możliwość adresowania zewnętrznego obszaru danych. Można to uczynić za pośrednictwem 8-bitowych rejestrów R0 lub R1. W rozkazie MOVX @R0,... zawartość tego rejestru jest wykorzystana jako młodszy bajt adresu (A0...A7). Starsza część szyny adresowej jest sterowana przez mikrokontroler poprzez linie portu P2. Jeżeli w rozkazie nie jest specyfikowany starszy bajt adresu to na szynie pozostaje wartość wprowadzona do portu P2.
System DSM-51 został tak zaprojektowany, aby dostęp do wszystkich urządzeń wejść/wyjść występujących w systemie mógł być realizowany przy stałej wartości starszego bajtu adresu równej 1111 XXXXB. Ponieważ po sygnale RESET w porcie P2 jest ustawiona wartość 1111 1111B, Jeśli ta wartość nie była modyfikowana, to można adresować układy wejść/wyjść za pomocą rejestrów R0 lub R1.
Zmodyfikuj program z punktu 2 tak aby bufory wyświetlacza 7-segmentowego adresowane były przy pomocy rejestrów R0 i R1.
3