3 Sterowanie wyświetlaczem 7
Transkrypt
3 Sterowanie wyświetlaczem 7
Technika Mikroprocesorowa – C Materiały do ćwiczeń laboratoryjnych 1 3 Sterowanie wyświetlaczem 7-segmentowym LED. Zagadnienia do przygotowania: - zasada działania wyświetlacza multipleksowanego, - elementy języka C poznane dotychczas na zajęciach. Wstęp Celem ćwiczenia jest opracowanie programu obsługi wyświetlacza LED 7segmentowego w module DSM-51. Wyświetlacz LED składa się z sześciu wskaźników cyfrowych połączonych w konfiguracji wyświetlacza multipleksowanego. Oznacza to, że w danej chwili czasu można wyświetlać tylko jedną kombinację segmentów na jednym lub więcej wskaźnikach. Na rys.1 przedstawiono schemat blokowy umiejscowienia wyświetlacza w systemie. Rys.1. Umiejscowienie wyświetlacza LED w systemie DSM-51 Wyświetlacz jest sterowany poprzez dwa bufory: bufor wyboru wskaźnika odpowiedzialny za wybór wskaźników, które w danej chwili mają być załączone oraz bufor danych wskaźnika, do którego ładuje się kombinację segmentów, które mają zostać w danej chwili zapalone. Oba bufory podłączone są do wspólnej magistrali systemu, a wybierane są z dekodera adresów sygnałami oznaczonymi jako CSDS (bufor wyboru wskaźnika) oraz CSDB (bufor danych wskaźnika). 3.1. Ćwiczenia do wykonania Technika Mikroprocesorowa – C Materiały do ćwiczeń laboratoryjnych 2 3.1.1 Ustalenie adresów W celu opracowania programu sterowania wyświetlaczem należy ustalić adresy bufora wyboru wskaźnika oraz bufora danych wskaźnika. Na rys.2 pokazano fragment schematu ideowego modułu DSM-51, na którym widoczne są linie CSDS i CSDB. Zapis danych z magistrali danych do odpowiednich buforów następuje w chwili, gdy na linii WRB (zapis) pojawi się impuls oraz gdy uprzednio odpowiednie linia CSDS lub CSDB zostanie aktywowana stanem niskim L. Impuls WRB inicjowany jest przez mikrokontroler 8051 w chwili wykonywania instrukcji zapisu do pamięci zewnętrznej (MOVX). Linie CSDS lub CSDB są natomiast aktywowane poprzez wybór odpowiedniego adresu, który w tym ćwiczeniu należy ustalić. Rys.2. Fragment schematu ideowego modułu DSM-51 z dekoderem adresów Dekoder adresów składa się z układu UG (układ programowalny GAL), który realizuje m.in. następującą funkcję logiczną: oraz dekodera 1 z 8 wykonanego w oparciu o układ U7, który musi zostać wybrany (aktywowany) linią poprzez wystawienie 0 na linię CSIO. Ustalenie adresu jednego z buforów polega na wybraniu jednej z linii od Y0 do Y7 układu U7 po poprzednim wybraniu tego układu linią CSIO. Należy w tym celu określić zawartość magistrali adresowej A0-A15, przy czym linie A3-A5 służą do binarnego wyboru numeru linii Y (A3 jest najmłodszym bitem słowa 3-bitowego). Warto zauważyć, iż nie wszystkie linie magistrali zostają wykorzystane. Linie niewykorzystane mogą przyjąć stany dowolne (x). Po określeniu 16-bitowego adresu wybranej linii należy zamienić ten adres na postać szesnastkową. 3.1.2 Zapalenie wybranego wskaźnika Znając adresy buforów CSDS i CSDB opracować program, którego wykonanie spowoduje wyświetlenie przykładowej cyfry np. „4” na jednym wybranym wskaźniku. Przy tworzeniu projektu w środowisku Keil proszę wybrać mikrokontroler Atmel-AT89C51. Program musi zawierać następujące instrukcje: - zapis danej do bufora danych wskaźnika (CSDB) – rys.3 i 4, - zapis danej do bufora wyboru wskaźnika (CSDS), Technika Mikroprocesorowa – C Materiały do ćwiczeń laboratoryjnych 3 - odpowiednie ustawienie linii P1.6 portu mikrokontrolera – rys.5. W celu zapisu danych wykorzystać obszar pamięci zewnętrznej XBYTE zdefiniowany w pliku nagłówkowym <absacc.h>. Wykorzystać też (standardowo) plik nagłówkowy <REGX51.h>. Segmenty wskaźnika, które mają zostać zaświecone, wskazuje się poprzez wstawienie jedynek na bity reprezentujące te segmenty według rysunku 3 oraz 4. a f b g e c d DP Rys.3. Oznaczenie segmentów wskaźnika wyświetlacza Nr bitu Segment Wartość 7 DP 0 6 g 1 5 f 0 4 e 0 3 d 1 2 c 1 1 b 1 0 a 1 Rys.4. Wypełnienie poszczególnych bitów rejestru CSDB przy wyświetlaniu cyfry 3 Linia P1.6 musi być ustawiona tak, by możliwe było podanie napięcia na anodę wskaźnika. Z analizy rys.5 można wywnioskować, jak wysterować wspólny tranzystor T18, aby stan wysoki C5 na bazie tranzystora T4 spowodował załączenie tranzystora T5 i w konsekwencji zapalanie się wybranych segmentów wskaźnika W6. Rys.5. Układ podawania napięcia anodowego wskaźnika 3.1.3 Multipleksowane sterowanie wieloma wskaźnikami wyświetlacza Opracować program wyświetlający liczbę „1234” na wyświetlaczu. W tym celu skonstruować program, który będzie poszczególne cyfry wymaganej liczby wyświetlał cyklicznie w krótkich odstępach czasu (nie dłuższych niż 20ms) na poszczególnych wskaźnikach wyświetlacza. Program powinien być zbudowany w oparciu o pętlę while(), we wnętrzu której wykonywane są poszczególne kroki algorytmu wyświetlania kolejnych cyfr. Kroki te muszą być wywoływane w odstępach czasu (np. 20ms), stąd potrzebne jest wprowadzenie dodatkowych pętli opóźniających po każdym kroku algorytmu. Technika Mikroprocesorowa – C Materiały do ćwiczeń laboratoryjnych 4 3.1.4 Sterowanie jasnością świecenia wyświetlacza Opracować program, w którym można określić (np. na drodze zmiany stałej w programie) jasność świecenia wyświetlacza. Zastosować regulację jasności metodą zmiany współczynnika wypełnienia w algorytmie załączającym wyświetlacze. 3.2 Rozszerzenia ćwiczeń 3.2.1 Wykorzystanie timera i przerwań w sterowaniu wyświetlaczem Opracować program multipleksowanego sterowania wskaźnikami wykorzystujący timer i przerwania mikrokontrolera 8051 umieszczając procedury załączające kolejne wyświetlacze w procedurze obsługi przerwania timera. Skonfigurować timer w trybie 2 tak, aby zgłaszał przerwania co około 100µs. Wartość rejestru TH0/1 w trybie 2 oblicza się ze wzoru: TH0=256- czas[µs ] czas[µs ] = 256 − Tcyklu (12 / 11.0592[MHz ]) , gdzie Tcyklu = 12 / f rez (frez – częstotliwość rezonatora kwarcowego układu 8051, „12” – liczba cykli rezonatora kwarcowego potrzebna do wykonania pojedynczego rozkazu = cyklu maszynowego) 3.2.2 Uniwersalne sterowanie wskaźnikami wyświetlacza Napisać program załączający dowolne cyfry na dowolnie wybranych wskaźnikach. W tym celu należy zaprogramować specjalną funkcję do wyboru cyfry oraz wskaźnika. Należy wziąć pod uwagę również możliwość wyświetlania cyfry z kropką.