POLITECHNIKA POZNAŃSKA |
---|
Laboratorium Programowanie Mikrokontrolerów Temat ćwiczenia: Obsługa wyświetlacza LCD |
Studia stacjonarne I st. Nr grupy : MCH4.2 |
Uwagi :
|
Wstęp:
Za sterowanie wyświetlaczem odpowiada driver (sterownik ). Driver pobiera odpowiednie piktogramy z pamięci. Wyświetlacz z zajęć posiada 2 linijki 0-15, oraz 64-79.
Obsługa wyświetlacza możliwa jest w oparciu o załączone funkcje które zostały skopiowane z pliku „lab5 – funkcjeLCD.c” :
void delay(unsigned int x); //programowa realizacja opóźnienia
void LCD_init(void); //inicjalizacja ekranu LCD
void LCD_char_position(unsigned char, unsigned char); //wyświetlanie znaku (pierwszy argument) na odpowiedniej pozycji (drugi argument).
Dodatkowo:
bit LCD_enabled; //zmienna bitowa – flaga zezwalająca na wyświetlenie napisu – w celu umożliwienia działania funkcji void LCD_char_position(…) należy ustawić:
LCD_enabled=1;
Programy:
program oparty na wymienionych wyżej funkcjach, który wyświetla dowolny napis na wyświetlaczu LCD
Pierwszym naszym zadaniem na zajęciach było wyświetlenie napisu mechatronika wiec po użyciu opisanych wyzej funkcji pierwszym krokiem było odblokowanie dostępu poleceniem „LCD_enabled=1” następnie należało zrobić inicjalizację poleceniem „LCD_init()”, następnym krokiem było określenie odpowiedniej litery na określonej pozycji np. LCD_char_position (‘M’,0) co oznacza ze litera M pojawi się na 1 pozycji w 1 linijce ponieważ liczenie pozycji zaczynamy od 0. Na zajęciach skorzystałem ze sposobu prostszego lecz trochę czasochłonnego, ponieważ napis mechatronika utworzyłem poprzez pisanie komend „LCD_char_position” z podaniem odpowiedniej litery na odpowiednim miejscu.
program liczący
Drugim naszym zadaniem było wykonanie licznika który liczył od 0 do 9.
Do wykonania takiego programu wykorzystaliśmy timer z obsługa przerwań
Komendy Timera które zastały użyte:
TMOD=0x01 – tryb 16 bitowy
EA=1 – włączenie obsługi przerwań
ET0=1 – zezwolenie na przerwanie z timera
TR0=1 – włączenie timera
Następnie w pętli należało do komendy odpowiedzialnej za pozycje znaków na wyświetlaczu wpisać „zmienna+48” w naszym przypadku wyglądało to w nastepujący sposób „LCD_char_position(sekundy+48,0). Dlatego do zmiennej dodawaliśmy 48 ponieważ został to wykorzystany 7-bitowy kod przyporządkowujący ANCII a cyfra 0 z tabeli ANCII posiada numer 48, cyfra 1 posiada 49 itp. Nastepnie uzyliśmy kodu przerwania timera „void timer0() interrupt 1” i wykorzystaliśmy pętle if określiliśmy aby zmienna „sekundy” po każdym przejsciu była dodana o 1 do wartości 10 (co odpowiada przedziału liczbowemu od 0 do 9). Całość programu przedstawia się następująco
Wnioski, spostrzeżenia, uwagi.
Procedura wyświetlania znaków na ekranie LCD opiera się na wielokrotnym wykonywaniu wielu operacji, znając w praktyce kilka głównych komend przy powielaniu funkcji „char_position” można w prosty sposób wykonać napis.
Przesłany napis może mieć do 16 liter ze względu na rozmiar wyświetlacza. Wyświetlanie dłuższych napisów można by zrealizować przez przesuwanie napisu.
Podczas wykonywania programów na liczbach należy pamiętać o kodzie ANCII ponieważ numer cyfry w tabeli nie pokrywa się z jej faktycznym stanem (np. dla 0 jest to wartość 48)