Podstawy projektowania systemów mikroprocesorowych, cz. 5.pdf
(
150 KB
)
Pobierz
Podstawy projektowania systemów mikroprocesorowych, część 5
K U R S
Podstawy projektowania systemów
mikroprocesorowych, część 5
Miesi¹c temu zapowiedzieliúmy pokazanie
multipleksowego sposobu sterowania za pomoc¹
mikrokontrolera '51 wyúwietlaczy LED. Obietnicy
dotrzymujemy - zapraszamy do lektury!
Schemat uk³adu wykorzystuj¹-
cego tÍ zasadÍ sterowania wy-
úwietlaczami siedmiosegmentowymi
pokazano na
rys. 19
. W†uk³adzie
tym wykorzystano wyúwietlacze ze
wspÛln¹ anod¹, ktÛrych odpowia-
daj¹ce sobie katody po³¹czono
wspÛlnie z†odpowiednim wyprowa-
dzeniem mikrokontrolera. Rezysto-
ry ograniczaj¹ce pr¹d maj¹ mniej-
sze wartoúci niø w†uk³adach z†wy-
úwietlaniem statycznym w†zwi¹zku
z†koniecznoúci¹ zapewnienia odpo-
wiednio duøego pr¹du úredniego
(tutaj
1
/
4
natÍøenia pr¹du úwiec¹-
cego wyúwietlacza) gwarantuj¹cego
poø¹dan¹ jasnoúÊ úwiecenia - im
wiÍcej grup diod by³oby sterowa-
nych, tym rezystory te powinny
mieÊ mniejsz¹ wartoúÊ,
nie naleøy jednak prze-
kraczaÊ dopuszczalnego
pr¹du linii portu.
Anody wyúwietlaczy do³¹czo-
no oddzielnie do plusa zasilania
za poúrednictwem tranzystorÛw-
kluczy sterowanych przez mikro-
kontroler. Uk³ad ten dzia³a wed³ug
nastÍpuj¹cego algorytmu (dla jed-
nego wyúwietlacza):
- ustawienie stanÛw linii portu P1
odpowiadaj¹cych informacji wy-
úwietlanej przez wyúwietlacz W1
(kod odpowiadaj¹cy kszta³towi
wyúwietlanego znaku),
- w³¹czenie wyúwietlacza 1 (P3.3=0),
- odczekanie czasu, w†trakcie ktÛ-
rego wyúwietlacz úwieci,
- wy³¹czenie wyúwietlacza 1 (P3.3=1).
Powyøsze kroki naleøy powtÛ-
rzyÊ jeszcze trzykrotnie (dla wy-
úwietlaczy W2, W3 i†W4), a†na-
stÍpnie rozpocz¹Ê cykl od pocz¹t-
ku (od wyúwietlacza W1). Czas
trwania pojedynczego cyklu powi-
nien byÊ tak dobrany, aby czÍs-
totliwoúÊ zapalania pojedynczego
wyúwietlacza nie by³a mniejsza
niø 30...40 Hz (aby przekroczyÊ
moøliwoúci rejestrowania zmian
przez ludzkie oko), a†najlepiej os-
cylowa³a w†okolicach 100 Hz, co
pozwoli na wyúwietlanie pozba-
wione efektu migotania znanego
z†ekranÛw monitorÛw i†telewizo-
rÛw. Dalsze zwiÍkszanie czÍstotli-
woúci odúwieøania nie poprawia
juø jakoúci wyúwietlanej informa-
cji, powoduje za to wzrost iloúci
zak³ÛceÒ radioelektrycznych gene-
rowanych przez wyúwietlacz oraz
niepotrzebnie marnuje moc obli-
czeniow¹ mikrokontrolera. Warto
zauwaøyÊ, øe w†takim uk³adzie
moøna ³atwo sterowaÊ jasnoúci¹
úwiecenia poszczegÛlnych wyúwiet-
laczy - wystarczy dobraÊ odpo-
wiednio czasy trwania úwiecenia
danego wyúwietlacza - im d³uøszy
ten czas, tym jaúniejsze úwiecenie.
Czytelnicy zaznajomieni z†urz¹-
dzeniami wykonywanymi np.
w†technice TTL zauwaø¹, øe brak
pomiÍdzy wyprowadzeniami mik-
rokontrolera a†wyúwietlaczem uk³a-
Rys. 19. Schemat 4−cyfrowego wyświetlacza LED sterowanego multipleksowo wprost z programowym
generowaniem kształtu wyświetlanego znaku
Elektronika Praktyczna 7/2003
83
K U R S
List. 1. Przykładowy program sterujący działaniem 4−cyfrowego
wyświetlacza LED
;komórki pamięci od adresu 030h do 033h zawierają kombinację stanów
;segmentów wyświetlacza: 0 - oznacza segment zapalony
Program ten zapewnia dla
czÍstotliwoúci taktowania 12 MHz
odúwieøanie wyúwietlacza z†czÍs-
totliwoúci¹ oko³o 60 Hz. CzÍstotli-
woúÊ ta jest niezaleøna od sposo-
bu dzia³ania programu g³Ûwnego,
co pozwala na precyzyjne jej
okreúlenie.
W†obu przypadkach za³oøono,
øe dane przeznaczone do wyúwiet-
lenia zosta³y juø odpowiednio
przygotowane za pomoc¹ innego
podprogramu. W†zasadzie nic nie
stoi na przeszkodzie, aby na wy-
úwietlaczu zapaliÊ dowoln¹ kom-
binacjÍ segmentÛw - najczÍúciej
jednak chcemy, aby wyúwietlacz
siedmiosegmentowy wyúwietla³ cyf-
ry - odpowiednie przekodowanie
umoøliwi nam program pokazany
na
list. 4
.
Przedstawiony program korzys-
ta z†tablicy, w†ktÛrej zapisano stan
poszczegÛlnych wyprowadzeÒ por-
tu P1 koniecznych do uzyskania
na wyúwietlaczu siedmiosegmento-
wym odpowiednich cyfr. Podane
wartoúci liczbowe odpowiadaj¹ sy-
tuacji, w†ktÛrej wyprowadzenia
segmentÛw wyúwietlacza (a, b, c,
d, itd.) pod³¹czone s¹ kolejno do
linii portu P1.0, P1.1 do P1.6.
Wyprowadzenie kropki wyúwietla-
cza (oznaczane jako
h
lub
dp
) do-
³¹czone jest do linii P1.7. Oczy-
wiúcie nic nie stoi na przeszko-
dzie, aby linie mikrokontrolera by-
³y po³¹czone z†innymi segmentami
wyúwietlacza (np. w†sposÛb upra-
szczaj¹cy projektowanie p³ytki
drukowanej) - zmieni siÍ jedynie
reprezentacja liczbowa wyúwietla-
nych znakÛw (koniecznoúÊ innego
zakodowania). SposÛb uzyskania
odpowiednio zakodowanych liczb
pokazano na
rys. 20
. Kodowanie
polega na umieszczeniu w†tablicy
zera w†przypadku zapalenia seg-
mentu i†jedynki w†przypadku jego
zgaszenia - otrzymany w†ten spo-
sÛb ci¹g zer i†jedynek jest oúmio-
bitow¹ liczb¹ dwÛjkow¹, ktÛrej
najm³odszy bit odpowiada wypro-
wadzeniu P1.0. Przekszta³cenie na
postaÊ szesnastkow¹ jest tylko for-
malnoúci¹ skracaj¹c¹ i†zwiÍkszaj¹-
c¹ czytelnoúÊ zapisu. Tak otrzy-
man¹ liczbÍ naleøy wpisaÊ na od-
powiedni¹ pozycjÍ w†tablicy ko-
dÛw umieszczon¹ w†programie.
OprÛcz cyfr na wyúwietlaczu sied-
MOV P1,030H ;przesłanie danej do portu P1
CLR P3.3 ;włączenie pierwszego wyświetlacza
LCALL CZEKAJ ;wywołanie procedury opóźniającej
SETB P3.3
;wyłączenie pierwszego wyświetlacza
MOV P1,031H ;przesłanie danej do portu P1
CLR P3.2 ;włączenie drugiego wyświetlacza
LCALL CZEKAJ ;wywołanie procedury opóźniającej
SETB P3.2
;wyłączenie drugiego wyświetlacza
MOV P1,032H ;przesłanie danej do portu P1
CLR P3.1 ;włączenie trzeciego wyświetlacza
LCALL CZEKAJ ;wywołanie procedury opóźniającej
SETB P3.1
;wyłączenie trzeciego wyświetlacza
MOV P1,033H ;przesłanie danej do portu P1
CLR P3.0 ;włączenie czwartego wyświetlacza
LCALL CZEKAJ ;wywołanie procedury opóźniającej
SETB P3.0
;wyłączenie czwartego wyświetlacza
;koniec podprogramu wyświetlającego
List. 2. Procedura realizująca opóźnienie wykorzystywane przez
program z list. 1
CZEKAJ:
MOV R6,#0FFH ;ustawienie początkowej wartości rejestru
DJNZ R6,$
;pozostanie w pętli do chwili wyzerowania R6
RET
du dekodera, np. BCD/7-segmento-
wego wykorzystywanego w†urz¹-
dzeniach zbudowanych z†klasycz-
nych uk³adÛw cyfrowych. Zgodnie
z†regu³¹ maksymalnego upraszcza-
nia sprzÍtu operacjÍ dekodowania
informacji wykonuje tutaj mikro-
kontroler. Pozwala to jednoczeúnie
na zmniejszenie komplikacji uk³a-
du, jak i†na wiÍksz¹ liczbÍ moøli-
wych do wyúwietlenia znakÛw.
Przyk³adowy program steruj¹cy
dzia³aniem wyúwietlacza zgodnego
ze schematem z†rys. 19 przedsta-
wiono na
list. 1
. ProcedurÍ reali-
zuj¹c¹ opÛünienie pokazano na
list. 2
.
Powyøsza procedura opÛüniaj¹-
ca dla systemu taktowanego czÍs-
totliwoúci¹ 12 MHz zapewnia
czÍstotliwoúÊ odúwieøania wy-
úwietlacza oko³o 480 Hz. Wyda-
waÊ siÍ moøe, øe jest to wartoúÊ
zbyt duøa, jednak naleøy
uwzglÍdniÊ fakt, øe oprÛcz obs³u-
gi wyúwietlania w†g³Ûwnej pÍtli
programowej bÍd¹ wykonywane
teø inne zadania powierzone
mikrokontrolerowi, co spowoduje
obniøenie czÍstotliwoúci odúwie-
øania. W†zaleønoúci od konfigu-
racji programu wartoúÊ opÛünie-
nia moøe byÊ dobrana w†celu
uzyskania okreúlonych paramet-
rÛw odúwieøania. Dobrym sposo-
bem jest rÛwnieø umieszczenie
obs³ugi wyúwietlacza w†podpro-
gramie obs³ugi przerwania liczni-
kowego. SytuacjÍ tak¹ przedsta-
wiono na
list. 3
.
Rys. 20. Sposób tworzenia kształtów wyświetlanych znaków
84
Elektronika Praktyczna 7/2003
K U R S
Rys. 21. Multipleksowe sterowanie wyświetlaczy LED z wykorzystaniem rejestru 74164
miosegmentowym moøna uzyskaÊ
takøe wyúwietlanie niektÛrych li-
ter alfabetu oraz wielu znakÛw
umownych - w†zaleønoúci od za-
istnia³ych potrzeb.
W†sytuacji, gdy nie jest moøli-
we wykorzystanie ca³ego portu
mikrokontrolera do sterowania wy-
úwietlaczem LED (np. z†powodu
braku wolnych linii lub zbyt ma-
³ej ich obci¹øalnoúci), dobrym spo-
sobem na zbudowanie uk³adu wy-
úwietlaj¹cego jest zastosowanie re-
jestru szeregowo-rÛwnoleg³ego.
Schemat takiego uk³adu przedsta-
wiono na
rys. 21
. Wykorzystano
w†nim scalony rejestr szeregowo-
rÛwnoleg³y 74164, ktÛry wraz
z†dwoma tranzystorami i†dziesiÍcio-
ma rezystorami steruje linijk¹
úwietln¹ zbudowan¹ z†diod LED.
Ogromn¹ zalet¹ tego uk³adu jest
fakt, øe do sterowania szesnastu
diod LED potrzeba zaledwie 4†linii
mikrokontrolera! Dodatkowo po-
przez szeregowe po³¹czenie kilku
rejestrÛw '164 moøemy sterowaÊ
kolejn¹ grup¹ 16 diod przypadaj¹-
cych na kaødy do³¹czony uk³ad
bez koniecznoúci wykorzystywania
kolejnych wyprowadzeÒ mikrokont-
rolera. Niewielka liczba wykorzys-
tywanych linii portu wi¹øe siÍ jed-
nak z†nieco bardziej rozbudowan¹
czÍúci¹ programow¹ w†stosunku do
zwyk³ego wyúwietlacza multiplekso-
wanego z†bezpoúrednim sterowa-
niem diod z†linii portu. ChoÊ ogÛl-
na zasada programowania nie
zmienia siÍ - nadal jest to wy-
úwietlacz multipleksowany - to
nieco inaczej przebiega procedura
wystawiania sygna³Ûw odpowie-
dzialnych za zaúwiecenie siÍ lub
List. 3. Listing programu, w którym obsługę wyświetlacza umieszczono
w podprogramie obsługi przerwania licznikowego
;POZYCJA - zmienna bajtowa przechowująca numer wyświetlanej pozycji
;komórki pamięci 030H do 033H przechowują dane do wyświetlenia
{program główny - część inicjująca}
MOV POZYCJA,#1
;pozycja 1 będzie wyświetlana jako pierwsza
MOV TMOD,#0
;ustawienie trybu pracy licznika
MOV TL0,#0FFH
;i wpisanie wartości początkowych
MOV TL1,#00FH
SETB EA
;włączenie przerwań
SETB ET0
;zezwolenie na przerwanie od licznika T0
SETB TR0
;włączenie licznika 0
{program główny}
PRZERWANIE:
;podprogram obsługi przerwania licznika T0
PUSH PSW
;zapisanie na stos rejestru stanu
PUSH ACC
;i akumulatora
MOV TL0,#0FFH
;wpisanie do licznika
MOV TH0,#00FH
;wartości początkowych
MOV A,POZYCJA
;wpisanie do akumulatora aktualnej pozycji
CJNE A,#1,NIE_1
;sprawdzenie, czy wyświetlić pozycję pierwszą
SETB P3.0
;jeśli tak, to gasi wyświetlacz 4
MOV P1,030H
;przepisuje do portu daną dla wys. 1
CLR P3.3
;włącza wyświetlacz 1
MOV POZYCJA,#2
;następną pozycją będzie 2
SJMP KONIEC
;skok do końca procedury
NIE_1:
CJNE A,#2,NIE_2
;jeśli nie pierwsza, to sprawdza, czy druga
SETB P3.3
;jeśli tak, to gasi wyświetlacz 1
MOV P1,031H
;przepisuje daną dla wys. 2
CLR P3.2
;włącza wyświetlacz 2
MOV POZYCJA,#3
;następną pozycją będzie 3
SJMP KONIEC
;skok do końca procedury
NIE_2:
CJNE A,#3,NIE_3
;jeśli nie druga, to sprawdza, czy trzecia
SETB P3.2
;jeśli tak, to gasi wyświetlacz 2
MOV P1,032H
;przepisuje daną dla wys. 3
CLR P3.1
;włącza wyświetlacz 3
MOV POZYCJA,#4
;następną pozycją będzie 4
SJMP KONIEC
;skok do końca procedury
NIE_3:
;jeśli nie trzecia, to musi być czwarta
SETB P3.1
;gasi wyświetlacz 3
MOV P1,033H
;przepisuje daną dla wys. 4
CLR P3.0
;włącza wyświetlacz 4
MOV POZYCJA,#1
;następną pozycją będzie 1
KONIEC:
;koniec procedury wyświetlającej
{inne rozkazy wykonywane w przerwaniu}
POP ACC
;pobranie akumulatora
POP PSW
;i rejestru stanu ze stosu
RETI
;powrót z przerwania
Elektronika Praktyczna 7/2003
85
K U R S
K U R S
List. 4. Program odpowiadający za przekodowanie liczb BCD na
kody znaków wyświetlacza LED
;komórki 040H do 043H - wartości liczbowe z zakresu od 0 do 9 przeznaczone
;do wyświetlenia na odpowiednich pozycjach wyświetlacza
;komórki 030H do 033H - przekodowane dane, gotowe do wyświetlenia
PRZEKODUJ:
MOV R0,#040H ;wpisanie do rejestrów adresów pierwszej danej
MOV R1,#030H ;i pierwszego wyniku przekodowania
MOV DPTR,#KODY ;wpisanie do rejestru DPTR adresu tablicy kodów
MOV R7,#4
;wpisanie do rejestru liczby pozycji (4 pozycje)
PETLA:
MOV A,@R0 ;przesłanie danej do akumulatora
MOVC A,@A+DPTR ;pobranie odpowiednich kodów z tablicy
MOV @R1,A ;przesłanie informacji do komórki wyniku
INC R0 ;zwiększenie adresu komórki danych
INC R1 ;i wyniku
DJNZ R7,PETLA ;pozostanie w pętli w celu czterokrotnego wykonania
RET
;powrót do programu głównego
KODY:
;tablica przekodowań
DB 0C0H
;cyfra 0
DB 0F9H
;cyfra 1
DB 0A4H
;cyfra 2
DB 0B0H
;cyfra 3
DB 099H
;cyfra 4
DB 092H
;cyfra 5
DB 082H
;cyfra 6
DB 0F8H
;cyfra 7
DB 080H
;cyfra 8
DB 090H
;cyfra 9
List. 5. Program ilustrujący sposób wpisywania do rejestrów '164
kodów odpowiadających kształtom wyświetlanych znaków
MOV R7,#8
;liczba bitów do przesłania do rejestru
MOV A,030H
;przesłanie do akumulatora danej do wyświetlenia
;(z adresu wykorzystywanego wcześniej)
PETLA:
RLC A ;przesuń akumulator w lewo - najstarszy bit w C
MOV P1.4 ;wystaw bit na linię danych rejestru
CLR P1.5 ;generacja impulsu
SETB P1.5 ;zegarowego
DJNZ R7,PETLA ;pozostanie w pętli do czasu wysłania wszystkich bitów
;tutaj można już włączyć zasilanie danej grupy diod, np. CLR P1.7
zgaúniÍcie wybranej diody - za-
miast prostego wywo³ania pojedyn-
czego rozkazu MOV konieczna sta-
je siÍ sekwencja przes³aÒ (zak³ada-
my, øe po w³¹czeniu zasilania li-
nie portu P1 pozostaj¹ w†stanie
wysokim) pokazana na
list. 5
.
Pawe³ Hadam
86
Elektronika Praktyczna 7/2003
Plik z chomika:
militare
Inne pliki z tego folderu:
Podstawy projektowania systemów mikroprocesorowych, cz. 1.pdf
(113 KB)
Podstawy projektowania systemów mikroprocesorowych, cz. 10.pdf
(113 KB)
Podstawy projektowania systemów mikroprocesorowych, cz. 11.pdf
(152 KB)
Podstawy projektowania systemów mikroprocesorowych, cz. 12.pdf
(59 KB)
Podstawy projektowania systemów mikroprocesorowych, cz. 2.pdf
(119 KB)
Inne foldery tego chomika:
• Prostowniki i zasilacze
[CD14] - Dlaczego Hitler Kazał Zabić Ernsta Rohma
▣ Bardzo Ściśle Tajne
▣ Bitwa o Anglię
▣ Bohaterowie II Wojny Światowej lektor chomikuj
Zgłoś jeśli
naruszono regulamin