Systemy wbudowane

Transkrypt

Systemy wbudowane
Systemy wbudowane
Zajęcia nr 3 – Wyświetlacze siedmiosegmentowe
Wprowadzenie do ćwiczeń
Wyświetlacz siedmiosegmentowy zbudowany jest z siedmiu diod LED ustawionych w
kształcie cyfry „8”. Wyświetlenie żądanego znaku wymaga zapalenia odpowiednich segmentów.
Budowa wyświetlacza została przedstawiona na rysunku.
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
dp
g
f
e
d
c
b
a
Segmenty wyświetlacza podłączone są do portu PORTB tak, jak pokazano na rysunku. Kod,
który należy wysłać do portu, aby wyświetlić żądany znak, określony jest za pomocą kombinacji
jedynek (segment zapalony) i zer (segment wygaszony). Na przykład do wyświetlenia cyfry 2
należy zapalić segmenty a, b, d, e i g, co daje kod B'01011011'.
Tablice konwersji służą do zamiany wartości, będącej indeksem tablicy, na kod. Są one
statyczne (ich zawartość nie zmienia się w trakcie wykonywania programu), przez co najlepiej
umieszczać je w pamięci programu. W przypadku mikrokontrolerów PIC najwygodniej jest
skorzystać z instrukcji retlw. Assembler środowiska MPLAB pozwala w prosty sposób takie tablice
za pomocą dyrektywy dt. Tworzy ona kod będący sekwencją instrukcji retlw, których argumentami
są kolejne wartości zapisane w dyrektywie.
Zamiana poprzez tablicę konwersji wymaga wykonania następujących kroków:
1. Stworzenie procedury konwersji, w której znajdzie się:
– instrukcja lub ciąg instrukcji powodujących skok do odpowiedniej instrukcji retlw
(realizowane do jest poprzez zwiększenie licznika rozkazów o wartość, którą
poddaje się konwersji); wartość, która jest poddawana konwersji najczęściej znajduje
się w rejestrze W;
– ciąg instrukcji retlw zrealizowany za pomocą dyrektywy dt.
2. Wywołanie procedury konwersji po uprzednim załadowaniu do rejestru W wartości, którą
należy poddać konwersji.
Wyświetlanie pojedynczej cyfry (3) na jednym wyświetlaczu z zastosowaniem tablicy
konwersji zrealizowano w programie z3_p1.asm.
Wyświetlanie multipleksowane (inaczej sekwencyjne) jest to taki sposób wyświetlania, w
którym w dowolnej chwili aktywny jest zawsze tylko jeden wyświetlacz. Wyświetlacze włączane są
po kolei na krótki czas. Ponieważ oko ludzkie wykazuje bezwładność i nie potrafi rozdzielić
obrazów zmieniających się z częstotliwością większą, niż 25 Hz, powstaje wrażenie obrazu
statycznego, w którym aktywne są wszystkie wyświetlacze.
Zaletą tego sposobu wyświetlania jest znaczące zmniejszenie ilości sygnałów niezbędnych
do wysterowania wyświetlaczy, wadą – migotanie, szczególnie widoczne podczas poruszania
głową. W układzie wyświetlania multipleksowanego sygnały sterujące poszczególnymi segmentami
wyświetlaczy są połączone ze sobą, dzięki czemu do wysterowania segmentów wszystkich
wyświetlaczy potrzeba 7 (lub 8, jeżeli używana jest kropka dziesiętna) sygnałów, po jednym dla
każdego segmentu. Dodatkowo potrzebne są sygnały, które odpowiadają za włączanie
poszczególnych wyświetlaczy, po jednym na każdy wyświetlacz. Na płytce zestawu
uruchomieniowego ZL4PIC potrzeba 12 sygnałów do wysterowania czterocyfrowego wyświetlacza
(8 sygnałów segmentów i 4 sygnały włączenia wyświetlaczy).
Wyświetlanie multipleksowane należy realizować w następujący sposób:
– na PORTB, który podłączony jest do segmentów wyświetlaczy, należy podać kod
aktywujący odpowiednie segmenty;
– ustawić w porcie PORTA odpowiedni bit aktywujący wyświetlacz (RA0, RA1, RA2 lub
RA3) pozostałe bity zerując;
– odczekać pewien czas i powtórzyć procedurę od początku dla kolejnych wyświetlaczy.
Czas, który należy odczekać wynosi t= 1 / (4⋅fR ), gdzie fR jest to częstotliwość
odświeżania obrazu (większa niż 25Hz).
Wyświetlanie liczby (1234) na wyświetlaczu z zastosowaniem tablicy konwersji oraz
wyświetlania multipleksowanego zrealizowano w programie z3_p2.asm.
Zadania:
1. Na podstawie programu z pliku z3_p1.asm napisz program który będzie co 1 sekundę
odliczał na wyświetlaczu wartości od 9 do zera.
2. Na podstawie programu z pliku z3_p2.asm napisz program odmierzający czas (stoper).
Zakres zliczania – 9 minut, 59 sekund, dokładność – 0,1 sekundy. Po przekroczeniu zakresu
zliczania wszystkie wyświetlacze mają migać z zapalonymi wszystkimi segmentami.