|
|
mikrokontrolery.net |
||||||||||||||||||||||||||
|
Procedury obsługi alfanumerycznego wyświetlacza LCD w trybie 4-bitowym z dowolnym przypisaniem linii sterujących Czasem zachodzi konieczność podłączenia wyświetlacza LCD do dowolnie wybranych portów mikrokontrolera (każda linia do różnych portów, bądź też nie do kolejnych wyprowadzeń). Chciałbym przedstawić w tym miejscu moje procedury obsługi wyświetlacza LCD, które wykorzystuję do programowania PECEL-a. Autor tego projektu poprowadził linie sterujące wyświetlaczem w dość nietypowy sposób. W większości układów linie danych są podłączone do kolejnych wyprowadzeń jednego portu, co pozwala na łatwe sterowanie tak podłączonym wyświetlaczem. Natomiast w tym układzie prawie każda linia jest podłączona do innego portu, co komplikuje sterowanie takiego wyświetlacza. Co prawda programując w Bascomie mamy swobodę w wyborze linii sterujących ale nie każdy chce pisać program akurat w Bascomie. W pliku lcdbit.h znajdują się definicje wyprowadzeń mikrokontrolera przypisanych do danej linii sterującej wyświetlacza, komend sterujących oraz funkcji znajdujących się w pliku lcdbit.c i stanowiących podstawowe funkcje obsługi wyświetlacza. Jedną linię sterującą definiujemy za pomocą 3 makrodefinicji :
Natomiast do prostego sterowania każdą linią zdefiniowano następujące makroinstrukcje (znajdujące się w pliku lcdbit.c) :
Dzięki takiemu rozwiązaniu wystarczy zmodyfikować definicje znajdujące się w pliku lcdbit.h aby zmienić wyprowadzenia przypisane danym liniom sterującym wyświetlacz. Podstawową funkcją zawartą w pliku lcdbit.c jest funkcja out_nibble(char x) wystawiająca na linie DB4-DB7 połówkę bajtu danych :
Na początku są zerowane wszystkie linie danych, a następnie w zależności od stanu danego bitu są ustawiane odpowiednie linie danych. Jest to trochę oszczędniejsze rozwiązanie jeśli chodzi o zajęte miejsce w pamięci programu w porównaniu do konstrukcji :
Gdy już mamy funkcję zapisującą połówkę bajtu możemy napisać funkcję wysyłającą cały bajt do wyświetlacza :
W pierwszej kolejności należy zapisać starszą połówkę bajtu danych a następnie młodszą. Zapis danych jest wywoływany opadającym zboczem na linii E. Po zapisaniu całego bajtu należy odczekać ok 1ms. Ponieważ do wyświetlacza możemy zapisać dane lub rozkazy postanowiłem napisać oddzielną funkcję do zapisu danej i oddzielną do zapisu rozkazu :
Zapis instrukcji następuje przy niskim stanie linii RS a zapis danej (znaku) następuje przy wysokim stanie na tej linii. Kolejną bardzo ważną funkcją jest funkcja zapisująca do wyświetlacza tekst (łańcuch znaków) :
Funkcja ta jako argument przyjmuje wskaźnik do tablicy znaków zakończonej znakiem 0 (czyli typowy łańcuch znaków w języku C) Pliki do pobrania / Files to download : |
Ostatnio na forum: |
|||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||
|
(c) 2004-2008 Radosław Kwiecień |