Multipleksowanie wyświetlacza LED

Wyświetlacz siedmiosegmentowy LED jest często stosowany w układach mikroprocesorowych jednak ze względu na znaczną ilość sygnałów sterujących już przy dwóch wyświetlaczach problememstaje się brak wyprowadzeń procesora. Zawarte tutaj procedury dotyczą multipleksowania wyświetlaczy LED (w jednej chwili zaświecany jest tylko jeden na czas rzędu 4ms) dzięki której do pracy n wyświetlaczy potrzeba tylko 7 + n wyprowadzeń mikrokontrolera (8 + n gdy używamy kropki)

Język BASCOM 8051:

Poniższa procedura służy do obsługi dwóch wyświetlaczy LED. Musi być wywoływana co około 4ms:
Wyswietlanie:
Mux = Not Mux
If Mux = 1 Then
Set P1.6
Wysw10 = Wysw / 10
Wysw10 = Lookup(wysw10 , Tabela)
P3 = Wysw10
Reset P1.7
Else
Set P1.7
Wysw1 = Wysw Mod 10
Wysw1 = Lookup(wysw1 , Tabela)
P3 = Wysw1
Reset P1.6
End If
Return

Zmienna bitowa Mux po każdym wywołaniu tej procedury zmienia stan na przeciwny, przez co ustala który wyświetlacz ma aktualnie świecić. Do pinów P1.6 i P1.7 dołączone są (przez tranzystory) anody wyświetlaczy. Uruchomienie odpowiedniego wyświetlacza dokonuje się przez podanie stanu niskiego na tranzystor sterujący jego anodą. Do portu P3, przez rezystory ograniczające prąd włączone są katody dwóch wyświetlaczy połączone równolegle (segment a do segmentu a w drugim wyświetlaczu i tak dalej). Do poprawnej pracy konieczne jest jeszcze zdefiniowanie na końcu programu tabeli przeliczającej cyfry na kody wyświetlacza siedmiosegmentowego:

Tabela:
Data 65 , 207 , 82 , 70 , 204 , 100 , 96 , 79 , 64 , 68
‚znak: 0 1 2 3 4 5 6 7 8 9

Wartości w tabeli zależą od tego do których pinów portu podłączymy segmenty i w jakiej kolejności. Do odczytywania kodu odpowiedniej cyfry z tabeli służy funkcja Lookup. Wartość od 0 do 99 którą chcemy pokazać na wyświetlaczach wpisujemy do zmiennej Wysw. Zmienne Wysw10 i Wysw1 są pomocnicze i oznaczają cyfre dziesiątek i jednostek.

Post Author: swistak

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Potwierdz, że nie jesteś botem. *

This site uses Akismet to reduce spam. Learn how your comment data is processed.