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.