Zachodniopomorski Uniwersytet Technologiczny WYDZIAŁ ELEKTRYCZNY Zakład Cybernetyki i Elektroniki LABORATORIUM TECHNIKA MIKROPROCESOROWA UKŁADY WY Ś WIETLANIA INFORMACJI Z WY Ś WIETLACZAMI 7-SEGMENTOWYMI LED Opracował: mgr inŝ. Andrzej Biedka
STATYCZNE WYŚ WIETLANIE INFORMACJI W trybie statycznym linie portu wykorzystane są do bezpoś redniego sterowania prą dem poszczególnych segmentów wyś wietlacza LED. Zatem wyś wietlacz N-cyfrowy wymaga zastosowania N 8-bitowych portów mikrokontrolera. Schemat ideowy układu przedstawia rysunek 4-1. uc 89S52 P0.0 R9 +5V P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 ULN 2803 R1 R8 h g f e d c b a Wsp. A Rys. 4-1. W układzie do sterowania segmentów wyś wietlacza wykorzystany jest port P2. Układ scalony ULN 2803 pełni funkcję wzmacniacza prą du segmentów, rezystory R1 R8 ograniczają prą d segmentów. Wspólna anoda wyś wietlacza przyłą czona jest trwale do ź ródła napię cia zasilania +5V. W tym celu w module ABC-03a konieczne jest przełą czenie modułu do pracy czterocyfrowej (w polach J1, J2 zwarte piny2-3) oraz ustwienie linii P0.0 w stan niski i ustawienie linii P0.1 P0.3 w stan wysoki. Algorytm programu wyś wietlania kolejnych cyfr od 0 do 9 przedstawiony jest na rysunku 4-2. START Inicjalizacja timera T0 i zmiennych programu Pobierz wzorzec znaku z tablicy Wyś wietl znak Czekaj 500ms Wybierz nastę pny Czy ostatni? N T Ustaw na pierwszy Rys. 4-2 2
ś 1: ; LISTING 4-1 2: ; Program wyś wietlania kolejnych cyfr od 0 do 9 metodą statyczną 3: ; z wykorzystaniem timera T0 w trybie 1 4: 5: ORG 0 6: 7: PODZIELNIK EQU 65535 46080 + 1 ; dla 50msek:65536-(50ms/1,085us) 8: ILOSC_ZNAKOW EQU 10 ; 10 cyfr do wyś wietlenia 9: 10: ; Inicjalizacja timera i zmiennych 11: MOV TMOD,#00000001B ; timer T0, tryb 1 12: MOV TL0,#LOW PODZIELNIK ; ładuj starszy bajt podzielnika 13: MOV TH0,#HIGH PODZIELNIK ; ładuj młodszy bajt podzielnika 14: 15: MOV DPTR,#TABLICA_ZNAKOW 16: MOV P0,#00001110B ; ustaw linie portu P0 dla właś ciwego 17: ; sterowania anod wyś wietlaczy 18: POCZATEK: 19: MOV R7,#0 ; zeruj licznik znaków 20: PETLA: 21: MOV A,R7 ; załaduj aktualny numer znaku 22: MOVC A,@A+DPTR ; pobierz z tablicy obraz znaku 23: MOV P2,A ; wyś lij do portu 24: 25: CALL CZAS_1SEK ; czekaj 1 sekundę 26: 27: INC R7 28: CJNE R7,#ILOSC_ZNAKOW,PETLA ; sprawdź czy koniec 29: SJMP POCZATEK 30: ;************************************************************** 31: ; pę tla opóź niają ca, 20 x 50msek. 32: CZAS_1SEK: 33: SETB RS0 ; ustaw bank rejestrów nr 1 34: MOV R7,#20 ; moŝ na wykorzystać rejestr R7 35: SETB TR0 ; startuj timer T0 36: CZAS_1: 37: JNB TF0,$ 38: CLR TF0 39: MOV TH0,#HIGH PODZIELNIK ; ładowanie starszego bajtu do timera 40: MOV TL0,#LOW PODZIELNIK ; ładowanie młodszego bajtu do timera 41: 42: DJNZ R7,CZAS_1 ; czy koniec odliczania 1 sekundy? 43: CLR TR0 ; zatrzymaj timer T0 44: CLR RS0 ; wróć do banku rejestrów nr 0 45: RET 46: ;************************************************************** 47: ; Tablica obrazów cyfr w kodzie 7-segmentowym, segment wieci dla sygnału HIGH 48: TABLICA_ZNAKOW: 49: ; hgfedcba - segmenty 50: DB 00111111B ; cyfra 0 51: DB 00000110B ; cyfra 1 52: DB 01011011B ; cyfra 2 53: DB 01001111B ; cyfra 3 54: DB 01100110B ; cyfra 4 55: DB 01101101B ; cyfra 5 56: DB 01111101B ; cyfra 6 57: DB 00000111B ; cyfra 7 58: DB 01111111B ; cyfra 8 59: DB 01101111B ; cyfra 9 60: 61: END 3
ZADANIA: 1. Wybór aktywnego wy ś wietlacza odbywa się przez wyzerowanie odpowiedniej linii portu P0. Pozostałe trzy spo ś ród czterech linii sterują cych anodami wy ś wietlaczy muszą być ustawione w stan wysoki. Napisać program wy ś wietlają cy metodą statyczną cyfry heksadecymalne (od 0 do F) kolejno na wy ś wietlaczach od pierwszego do czwartego: - krok 1: wy ś wietlacz 1, kolejne cyfry od 0 do F - krok 2: wy ś wietlacz 2, kolejne cyfry od 0 do F - krok 3: wy ś wietlacz 3, kolejne cyfry od 0 do F - krok 4: wy ś wietlacz 4, kolejne cyfry od 0 do F 2. Napisać program pełnią cy funkcje jak w zadaniu 1, z zastosowaniem przerwań od timera T0. Zmiany informacji na wy ś wietlaczach naleŝ y przenie ś ć do podprogramu obsługi przerwania. 4
DYNAMICZNE (MULTIPLEKSOWE) WY Ś WIETLANIE INFORMACJI Wyś wietlanie statyczne, ze wzglę du na koniecznoś ć stosowania osobnego dla kaŝ dej cyfry portu sterują cego oraz wynikają cą stą d duŝ ą iloś ć połą czeń w praktyce stosuje się rzadko. Wyją tkiem jest przypadek wyś wietlacza jednocyfrowego. Znacznie lepsze jest wyś wietlanie dynamiczne zwane teŝ multipleksowym. Schemat ideowy takiego rodzaju wyś wietlania moŝ liwego do zaprezentowania w module ABC-03a przedstawia rysunek 4-3. T1 T2 T3 T4 +5V P0.0 P0.1 P0.2 P0.3 R9 R12 uc 89S52 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 ULN 2803 R1 R8 h g f e d c b a Rys. 4-3 Cykl pracy wyś wietlacza przedstawiony jest na poniŝ szych przebiegach czasowych: T1 T2 T3 T4 P2 znak 1 znak 2 znak 3 znak 4 znak 1 znak 2 Rys. 4-4 5
Sygnały sterują ce kluczami anodowymi (tranzystorami Tx) są aktywne poziomem niskim. W kaŝ dym kroku cyklu pracy tylko jeden klucz anodowy moŝ e być załą czony i w tym kroku na liniach portu P2 muszą być ustawione bity właś ciwe dla utworzenia ś wiecą cego znaku na danej pozycji. Czę stotliwoś ć powtarzania cyklu naleŝ y dobrać tak, by utworzony obraz nie migotał. Znaki do wyś wietlenia na poszczególnych pozycjach wyś wietlacza najwygodniej jest zapisywać w kolejnych komórkach pamię ci RAM, w tzw. buforze znaków. Ze wzglę du na koniecznoś ć zachowania równych okresów wyś wietlania poszczgólnych znaków (dla równej jasnoś ci znaków) proces wyś wietlania znaków z bufora powinien być realizowany w podprogramie obsługi przerwania czasowego od timera. Dodatkowo moŝ e być on wtedy niezaleŝ ny od programu umieszczają cego dane w buforze. Algorytm podprogramu obsługi przerwania obsługują cego wyś wietlanie dynamiczne przedstawia rysunek 4-5. Inicjalizacja timera, układu przerwań i zmiennych programu musi być wykonana na począ tku programu głównego. INT T0 Ładowanie liczników timera Czy ostatni znak? T N Licznik znaków = 0 Zwię ksz licznik znaków Wybierz nastę pny klucz anodowy Odczytaj znak z bufora danych Pobierz wzorzec znaku Wyś lij do portu segmentów RETI Rys. 4-5 6
ZADANIA: 3. Na podstawie schematu ideowego modułu wyś wietlacza ustalić pozycje zwór właś ciwe dla pracy czteropozycyjnej. 4. Napisać program wyś wietlania czterech znaków (cyfr z zakresu 0-9) umieszczonych w czterobajtowym buforze w pamię ci RAM od adresu 30H. Przykładowe cyfry wpisać do pamię ci w programie głównym. 5. Napisać program licznika sekund. Jako wzorzec czasu przyją ć sygnał przerwań od wybranego timera. Program powinien wygaszać nieznaczą ce zera. Sygnał z przycisku P1 wykorzystać do zerowania licznika. 6. Napisać program licznika impulsów podawanych z przycisków P1 (zliczanie w dół) i P2 (zliczanie w górę ). 7
DYNAMICZNY WY Ś WIETLACZ DWUCYFROWY W urzą dzeniach elektronicznych czę sto stosowany jest wyś wietlacz dwucyfrowy. Sterowanie takiego wyś wietlacza jest moŝ liwe tylko z jednego 8-bitowego portu. Schemat ideowy takiego rozwią zania przedstawia rysunek 4-6. +5V R9 T1 T2 R10 uc 89S52 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 ULN 2803 R1 R8 h g f e d c b a Rys. 4-6 Przełą czanie wyś wietlaczy realizuje sygnał uzyskiwany z linii P2.7. Dodatkowy inwerter odwraca fazę sygnału wybierają cego wyswietlacz, dzię ki czemu klucze T1 i T2 są sterowane w przeciwfazie. Dla uzyskania takiego trybu pracy modułu ABC-03a naleŝ y ustawić połą czenia w polach J1, J2: zwarte piny 1-2. W tej metodzie nie moŝ na sterować programowo wyś wietlaniem punktu dziesię tnego (segment oznaczony h lub dp) wyś wietlacza. ZADANIA: 7. Napisać program wyś wietlania dwóch znaków (cyfr z zakresu 0-9) umieszczonych w dwubajtowym buforze w pamię ci RAM od adresu 30H. Przykładowe cyfry wpisać do pamię ci w programie głównym. 8. Napisać program dwucyfrowego licznika sekund. Jako wzorzec czasu przyją ć sygnał przerwań od wybranego timera. Program powinien wygaszać nieznaczą ce zera. Sygnał z przycisku P1 wykorzystać do zerowania licznika. 9. Napisać program dwucyfrowego licznika impulsów podawanych z przycisków P1 (zliczanie w dół) i P2 (zliczanie w górę ). 8