radzio.dxp.pl

Alfanumeryczny wyświetlacz LCD ze sterownikiem HD44780 - podstawy

Obecnie, ze względu na swoją niską cenę, alfanumeryczne wyświetlacze LCD są bardzo często stosowane w układach zbudowanych w oparciu o mikrokontrolery. Wygląd typowego modułu wyświetlacza 2 linie po 16 znaków przedstawiają poniższe fotografie :

HD44780

HD44780


Rozmieszczenie wyprowadzeń typowego modułu LCD przedstawia poniższa fotografia :

HD44780

Opis funkcji poszczególnych wyprowadzeń przedstawia poniższa tabela :


Po podłączeniu napięcia zasilającego oraz ustawieniu na wyprowadzeniu V0 odpowiedniego napięcia regulacji kontrastu na wyświetlaczu powinna ukazać się jedna linia wypełniona czarnymi prostokątami :

HD44780

Świadczy to o tym, że kontroler wyświetlacza nie został poprawnie zainicjowany oraz o tym, że napięcie regulacji kontrastu jest ustawione w przybliżeniu na właściwą wartość. Do regulacji napięcia kontrastu najlepiej wykorzystać potencjometr montażowy (widoczny na zdjęciu pod wyświetlaczem).  Większość wyświetlaczy do poprawnego wyświetlenia znaków wymaga napięcia kontrastu zbliżonego do 0V. Mogą się jednak zdarzyć wyświetlacze wymagające ujemnego napięcia kontrastu.
Sterowanie wyświetlaczem alfanumerycznym ze sterownikiem HD44780 odbywa się na zasadzie wysyłania odpowiednich komend oraz zapisu danych do wewnętrznej pamięci wyświetlacza. Komendy i dane są rozróżniane na podstawie stanu linii RS (0 - komendy; 1 - dane). Kierunek transmisji jest określany stanem linii R/W. Sterownik HD44780 posiada dwa rodzaje pamięci : pamięć generatora znaków (CGROM) oraz pamięć danych (DD RAM). Pamięć generatora znaków zawiera graficzną postać znaków wyświetlanych na wyświetlaczu (można porównać do czcionki). Oprócz znaków zdefiniowanych na stałe przez producenta sterownika do dyspozycji użytkownika pozostaje 8-znakowa pamięć RAM, w której można zdefiniować własne znaki (np. polskie znaki diakrytyczne). Pamięć danych DD RAM ma pojemność 80 bajtów (jeden sterownik HD4478 może obsłużyć maksymalnie 80 znaków, czyli np. 2 linie po 40 znaków, lub 4 linie po 20 znaków).

Zestawienie rozkazów kontrolera HD44780 przedstawia poniższa tabela.

HD44780

Display clear - (RS = 0, R/W = 0, dane = 00000001) -instrukcja ta powoduje wyczyszczenie wyświetlacza poprzez wypełnienie go spacjami, ustawienie trybu zapisu danych od pozycji w lewym górnym rogu wyświetlacza oraz wyłączenie trybu przesuwania okna; maksymalny czas trwania instrukcji - 1,64ms

Display/cursor home - (RS - 0, R/W = 0, dane = 0000001x) - instrukcja powoduje ustawienie kursora na pozycji pierwszego znaku w pierwszej linii; maksymalny czas trwania instrukcji 1,64ms

Entry mode set - (RS = 0; R/W = 0, dane = 000001IS) - określenie trybu pracy kursora/okna wyświetlacza :
- dla S = 1 po zapisaniu znaku do wyświetlacza kursor nie zmienia położenia, natomiast przesuwa się cała zawartość wyświetlacza
- dla S = 0 po zapisaniu znaku do wyświetlacza kursor zmienia położenie, a przesuwanie okna jest wyłączone
- dla I = 1 kursor lub okno wyświetlacza przesuwa się w prawo (inkrementacja adresu znaku)
- dla I = 0 kursor lub okno wyświetlacza przesuwa się w lewo (dekrementacja adresu znaku)
Maksymalny czas trwania instrukcji - 40us

Display ON/OFF - (RS = 0, R/W = 0, dane = 00001DCB)
- dla D = 1 - włączenie wyświetlacza
- dla D = 0 - wyłączenie wyświetlacza
- dla C = 1 - włączenie kursora
- dla C = 0 - wyłączenie kursora
- dla B = 1 - włączenie migania kursora
- dla B = 0 - wyłączenie migania kursora

Display cursor shift - (RS = 0, R/W = 0, dane = 0001SRxx)
- dla S = 1 - przesuwana jest zawartość okna
- dla S = 0 - przesuwany jest kursor
- dla R = 1 - kierunek przesuwu w prawo
- dla R = 0 - kierunek przesuwu w lewo

Function set (RS= 0,  R/W = 0, dane = 001DNFxx)
- dla D = 1 - interfejs 8-bitowy
- dla D = 0 - interfejs 4-bitowy
- dla N = 1 - wyświetlacz dwuwierszowy
- dla N = 0 - wyświetlacz jednowierszowy
- dla F = 1 - matryca znaków 5*10 punktów
- dla F = 0 - matryca znaków 5*7punktów

CG RAM set - (RS= 0, RW = 0, dane = 01AAALLL) - ustawia adres pamięci generatora znaków. AAA - 3-bitowy adres znaku, LLL - 3-bitowy numer linii składającej się na graficzne odwzorowanie znaku.

DD RAM set - (RS = 0, R/W = 0, dane = 1AAAAAAA) - ustawia adres pamięci wyświetlacza, pod który nastąpi zapis (bądź odczyt) danych operacją Data write lub Data read.

Busy flag read - (RS = 0, R/W = 1, dane = BAAAAAAA) - odczyt flagi zajętości i adresu pamięci wyświetlacza. B - flaga zajętości wyświetlacza, AAAAAAA - 7-bitowy adres pamięci.

Data read - (RS = 1, R/W= 1, dane = odczytywany bajt danych) - odczyt danych z pamięci wyświetlacza, bądź pamięci CG RAM (jeśli poprzednio wydano komendę CG RAM set)

Data write - (RS = 1, R/W = 0, dane = zapisywany bajt danych) - zapis danych do pamięci wyświetlacza, bądź pamięci CG RAM (jeśli poprzednio wydano komendę CG RAM set)

 
(c) Radosław Kwiecień