Kontroler LCD Hitachi HD44780
Kontroler Hitachi HD44780 LCD to alfanumeryczny kontroler z matrycą punktową ciekłokrystaliczny (LCD) opracowany przez firmę Hitachi w latach 80. Zestaw znaków kontrolera obejmuje znaki ASCII , japońskie znaki Kana i niektóre symbole w dwóch 40-znakowych wierszach. Używając sterownika rozszerzenia, urządzenie może wyświetlić do 80 znaków. Liczne wyświetlacze innych firm są kompatybilne z 16-pinowym interfejsem i zestawem instrukcji, co czyni go popularnym i tanim sterownikiem LCD.
Architektura
Kontroler LCD Hitachi HD44780 jest ograniczony do monochromatycznych wyświetlaczy tekstowych i jest często używany w kopiarkach , faksach , drukarkach laserowych , przemysłowych urządzeniach testowych i urządzeniach sieciowych, takich jak routery i urządzenia pamięci masowej .
Kompatybilne ekrany LCD produkowane są w kilku standardowych konfiguracjach. Typowe rozmiary to jeden rząd ośmiu znaków (8 × 1) oraz formaty 16 × 2, 20 × 2 i 20 × 4. Większe rozmiary niestandardowe są wykonywane z 32, 40 i 80 znakami oraz z 1, 2, 4 lub 8 wierszami. Najczęściej produkowana większa konfiguracja to 40 × 4 znaki, co wymaga dwóch indywidualnie adresowalnych kontrolerów HD44780 z układami rozszerzeń, ponieważ pojedynczy układ HD44780 może zaadresować tylko do 80 znaków.
Znakowe wyświetlacze LCD mogą mieć podświetlenie , które może być diodami LED , fluorescencyjnymi lub elektroluminescencyjnymi . Nominalne napięcie robocze dla podświetleń LED wynosi 5 V przy pełnej jasności, przy ściemnianiu przy niższych napięciach w zależności od szczegółów, takich jak kolor diody. Podświetlenie inne niż LED często wymaga wyższego napięcia.
Interfejs
Znakowe wyświetlacze LCD wykorzystują 16-stykowy interfejs, zwykle wykorzystujący styki lub połączenia krawędzi karty w odstępach co 0,1 cala (2,54 mm). Te bez podświetlenia mogą mieć tylko 14 pinów, pomijając dwa piny zasilające światło. Interfejs ten został zaprojektowany tak, aby można go było łatwo podłączyć do Intel MCS-51 XRAM, używając tylko dwóch pinów adresowych, co umożliwiło wyświetlanie tekstu na wyświetlaczu LCD za pomocą prostych poleceń MOVX, oferując opłacalną opcję dodawania wyświetlania tekstu do urządzeń. [ potrzebne źródło ]
Dominujący układ pinów jest następujący (istnieją wyjątki):
Szpilka# | Nazwa | Kierunek | Opis |
---|---|---|---|
1 | Vss | Moc | Uziemienie zasilania |
2 | Vcc | Moc | Zasilanie (+3,3 lub +5 V w zależności od modułu) |
3 | Vee | Wejście | Regulacja kontrastu (wejście analogowe) |
4 | RS | Wejście | Wybór rejestru (0 = polecenie, 1 = dane) |
5 | R/ W | Wejście | Odczyt/ zapis (0 = zapis do modułu wyświetlacza, 1 = odczyt z modułu wyświetlacza) |
6 | mi | Wejście | Włączanie zegara (wyzwalane opadającym zboczem) |
7 | DB0 | we/wy | Bit danych 0 (nie używany w trybie 4-bitowym) |
8 | DB1 | we/wy | Bit danych 1 (nie używany w trybie 4-bitowym) |
9 | DB2 | we/wy | Bit danych 2 (nie używany w trybie 4-bitowym) |
10 | DB3 | we/wy | Bit danych 3 (nie używany w trybie 4-bitowym) |
11 | DB4 | we/wy | Bit danych 4 |
12 | DB5 | we/wy | Bit danych 5 |
13 | DB6 | we/wy | Bit danych 6 |
14 | DB7 | we/wy | Bit danych 7 |
15 | LED+ | Moc | Anoda podświetlenia (+) (jeśli dotyczy) |
16 | LED− | Moc | Katoda podświetlenia (-) (jeśli dotyczy) |
Uwagi:
- Vee (również V0): Jest to wejście analogowe, zwykle podłączone do potencjometru. Użytkownik musi mieć możliwość kontrolowania tego napięcia niezależnie od wszystkich innych regulacji, aby zoptymalizować widoczność zmieniającego się wyświetlacza tj. A. z temperaturą i, w niektórych przypadkach, wysokością nad poziomem morza. W przypadku nieprawidłowej regulacji wyświetlacz będzie wyglądał na wadliwy.
- R/ W : W większości aplikacji odczyt z HD44780 nie jest konieczny. W takim przypadku pin ten można na stałe połączyć z masą i nie trzeba przydzielać pinów procesora do jego sterowania.
Wybór trybu
W trybie 8-bitowym wszystkie transfery odbywają się w jednym cyklu styku włączającego (E) ze wszystkimi 8 bitami na szynie danych i stabilnymi stykami RS i R/ W . W trybie 4-bitowym dane są przesyłane jako pary 4-bitowych „ półbajtów ” na górnych stykach danych, D7–D4, z dwoma impulsami włączającymi i stabilnymi stykami RS i R/ W . Najpierw należy zapisać cztery najbardziej znaczące bity (7–4), a następnie cztery najmniej znaczące bity (3–0). Sekwencja wysoki/niski musi być każdorazowo zakończona, w przeciwnym razie sterownik nie będzie poprawnie odbierał dalszych poleceń.
Wybór trybu 4-bitowego lub 8-bitowego wymaga starannego doboru poleceń. Istnieją dwa podstawowe względy. Po pierwsze, przy niepodłączonych D3-D0, linie te zawsze będą wyglądać na wysokie (binarnie 1111) dla HD44780, ponieważ istnieją wewnętrzne tranzystory MOSFET typu pull-up . Po drugie, wyświetlacz LCD może początkowo znajdować się w jednym z trzech stanów:
- Stan 1: tryb 8-bitowy
- Stan 2: tryb 4-bitowy, oczekiwanie na pierwszy zestaw 4 bitów
- Stan 3: tryb 4-bitowy, oczekiwanie na drugi zestaw 4 bitów
Stan 3 może wystąpić, na przykład, jeśli wcześniejsze sterowanie zostało przerwane po wysłaniu tylko pierwszych 4 bitów polecenia, gdy HD44780 był w trybie 4-bitowym.
Poniższy algorytm zapewnia, że wyświetlacz LCD znajduje się w żądanym trybie:
To samo polecenie jest wysyłane trzy razy, zestaw funkcji z 8-bitowym interfejsem D7 – D4 = binarnie 0011, cztery niższe bity to „bez znaczenia”, przy użyciu pojedynczych impulsów zezwolenia. Jeśli kontroler jest w trybie 4-bitowym, cztery niższe bity są ignorowane, więc nie można ich wysłać, dopóki interfejs nie znajdzie się w konfiguracji o znanym rozmiarze.
Uruchamianie w stanie 1 (konfiguracja 8-bitowa):
- Wyślij polecenie zestawu funkcji. Polecenie zostanie wykonane, ustaw tryb 8-bitowy.
- Wyślij polecenie zestawu funkcji. Polecenie zostanie wykonane, ustaw tryb 8-bitowy.
- Wyślij polecenie zestawu funkcji. Polecenie zostanie wykonane, ustaw tryb 8-bitowy.
Start w stanie 2 (konfiguracja 4-bitowa, oczekiwanie na pierwszy transfer 4-bitowy):
- Wyślij polecenie zestawu funkcji. Odebrano pierwsze 4 bity.
- Wyślij polecenie zestawu funkcji. Ostatnie 4 bity, polecenie przyjęte, ustaw tryb 8-bitowy.
- Wyślij polecenie zestawu funkcji. Polecenie zostanie wykonane, ustaw tryb 8-bitowy.
Start w stanie 3 (konfiguracja 4-bitowa, oczekiwanie na ostatni transfer 4-bitowy):
- Wyślij polecenie zestawu funkcji. Ostatnie 4 bity, wykonane nieznane polecenie.
- Wyślij polecenie zestawu funkcji. W trybie 8-bitowym polecenie zostanie wykonane, w przeciwnym razie odebrane zostaną pierwsze 4 bity.
- Wyślij polecenie zestawu funkcji. zostanie wykonane polecenie 8-bitowe lub ostatnie 4 bity poprzedniego polecenia; ustaw tryb 8-bitowy.
We wszystkich trzech przypadkach początkowych interfejs magistrali jest teraz w trybie 8-bitowym, 1 linia, 5×8 znaków. Jeśli wymagany jest inny tryb konfiguracji 8-bitowej, należy wysłać polecenie zestawu funkcji magistrali 8-bitowej, aby ustawić pełne parametry. Jeśli wymagany jest tryb 4-bitowy, binarne 0010 powinno zostać wysłane na D7–D4 za pomocą pojedynczego impulsu zezwolenia. Teraz sterownik będzie w trybie 4-bitowym i pełna 4-bitowa sekwencja poleceń zestawu funkcji magistrali (dwa zezwolenia z bitami poleceń 7–4 i 3–0 w kolejnych cyklach) zakończy konfigurację rejestru zestawu funkcji.
Zestaw instrukcji
Zestaw instrukcji HD44780 pokazano poniżej:
Instrukcja | Kod | Opis |
wykonania (max) (gdy f cp = 270 kHz) |
|||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
RS | R/W | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | |||
Wyczyść wyświetlacz | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | Czyści wyświetlacz i przywraca kursor do pozycji początkowej (adres 0). | 1,52 ms |
Kursor do domu | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * | Powrót kursora do pozycji wyjściowej. Przywraca również wyświetlanie przesunięte do pierwotnej pozycji. Zawartość DDRAM pozostaje niezmieniona. | 1,52 ms |
Tryb wejścia ustawiony | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | ID | S | Ustawia kierunek ruchu kursora (I/D); określa przesunięcie wyświetlacza (S). Operacje te są wykonywane podczas odczytu/zapisu danych. | 37 μs |
Sterowanie włączaniem/wyłączaniem wyświetlacza | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B | Ustawia włączenie/wyłączenie wszystkich wyświetlaczy (D), włączenie/wyłączenie kursora (C) i miganie znaku pozycji kursora (B). | 37 μs |
Przesunięcie kursora/wyświetlacza | 0 | 0 | 0 | 0 | 0 | 1 | S/C | P/L | * | * | Ustawia przesunięcie kursora lub przesunięcie wyświetlacza (S/C), kierunek przesunięcia (P/L). Zawartość DDRAM pozostaje niezmieniona. | 37 μs |
Zestaw funkcji | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * | Ustawia długość danych interfejsu (DL), liczbę wyświetlanych linii (N) i czcionkę znaków (F). | 37 μs |
Ustaw adres CGRAM | 0 | 0 | 0 | 1 | Adres GRAMU | Ustawia adres CGRAM. Dane CGRAM są wysyłane i odbierane po tym ustawieniu. | 37 μs | |||||
Ustaw adres DDRAM | 0 | 0 | 1 | adres DRAM-u | Ustawia adres DDRAM. Dane DDRAM są wysyłane i odbierane po tym ustawieniu. | 37 μs | ||||||
Odczyt flagi zajętości i licznika adresów | 0 | 1 | BF | Adres CGRAM/DDRAM | Odczytuje flagę zajętości (BF) wskazującą wykonywaną operację wewnętrzną oraz odczytuje zawartość licznika adresów CGRAM lub DDRAM (w zależności od poprzedniej instrukcji). | 0 μs | ||||||
Napisz CGRAM lub DDRAM | 1 | 0 | Zapisz dane | Zapisuj dane w CGRAM lub DDRAM. | 37 μs | |||||||
Odczyt z CG/DDRAM | 1 | 1 | Odczyt danych | Odczyt danych z CGRAM lub DDRAM. | 37 μs | |||||||
Nazwy bitów instrukcji — I/D – 0 = zmniejszanie pozycji kursora, 1 = zwiększanie pozycji kursora; S – 0 = brak przesunięcia wyświetlacza, 1 = przesunięcie wyświetlacza; D – 0 = wyświetlacz wyłączony, 1 = wyświetlacz włączony; C – 0 = kursor wyłączony, 1 = kursor włączony; B – 0 = kursor nie miga, 1 = kursor miga; S/C – 0 = przesuwanie kursora, 1 = przesuwanie wyświetlacza; P/L – 0 = przesunięcie w lewo, 1 = przesunięcie w prawo; DL – 0 = interfejs 4-bitowy, 1 = interfejs 8-bitowy; N – 0 = 1/8 lub 1/11 pracy (1 linia), 1 = 1/16 pracy (2 linie); F – 0 = 5×8 kropek, 1 = 5×10 kropek; BF – 0 = może przyjąć instrukcję, 1 = wewnętrzna operacja w toku. |
DDRAM to pamięć RAM wyświetlania danych, a CGRAM to pamięć RAM generatora znaków. DDRAM ma 80 bajtów (40 na wiersz) adresowanych z przerwą między dwoma wierszami. Pierwszy wiersz to adresy od 0 do 39 dziesiętnie lub od 0 do 27 szesnastkowo. Drugi rząd to adresy od 64 do 103 dziesiętnie lub od 40 do 67 szesnastkowo.
CGRAM to pamięć odczytu/zapisu używana do zakodowania do 8 znaków w generatorze znaków. Składa się z 64 pól pod adresami od 0 do 3F szesnastkowo. Każde pole ma 5 bitów odwzorowanych na rząd pikseli każdego znaku. Każde 8 pól w CGRAM jest używanych dla każdego znaku. Niższe 3 bity kodów znaków od 0 do 7 i od 8 do 15 wybierają grupy 8 pól w pamięci CGRAM.
Odczyt i zapis do DDRAM odbywa się poprzez ustawienie wejścia RS w stan wysoki podczas transferów magistrali. Pamięć DDRAM należy również wybrać za pomocą polecenia Ustaw adres DDRAM, które wybiera pamięć DDRAM do uzyskania dostępu, a także ustawia adres początkowy dostępu do pamięci DDRAM.
Podobnie odczyt i zapis do CGRAM odbywa się poprzez ustawienie wejścia RS w stan wysoki podczas transferów magistrali. CGRAM musi być również wybrany przez polecenie Ustaw adres CGRAM, które wybiera CGRAM do uzyskania dostępu, a także ustawia początkowy adres dostępu do CGRAM.
Czasy wykonania podane w tej tabeli są oparte na częstotliwości oscylatora 270 kHz. Arkusz danych wskazuje, że dla rezystora 91 kΩ przy V CC = 5 V oscylator może zmieniać się w zakresie od 190 kHz do 350 kHz, co daje czas oczekiwania 52,6 µs i 28,6 µs zamiast 37 µs. Jeśli wyświetlacz z zalecanym rezystorem 91 kΩ jest zasilany napięciem 3,3 V, oscylator będzie działał znacznie wolniej. Jeśli bit zajętości nie jest używany, a instrukcje są synchronizowane przez obwód zewnętrzny, należy to wziąć pod uwagę.
Czcionka
Oryginalna pamięć ROM generatora znaków HD44780 zawiera 208 znaków w matrycy punktowej 5 × 8 i 32 znaki w matrycy punktowej 5 × 10. Nowsze kompatybilne chipy są dostępne z wyższą rozdzielczością, dopasowaną do wyświetlaczy z większą liczbą pikseli. [ potrzebne źródło ]
Opracowano dwie wersje pamięci ROM:
- HD44780UA00, wersja standardowa (japońska), która zawiera znaki katakana oraz niektóre greckie litery i symbole matematyczne
- HD44780UA02, wersja europejska, która zawiera pełny zestaw znaków greckich, cyrylicy i zachodnioeuropejskich (ze znakami diakrytycznymi )
7-bitowy podzbiór ASCII dla wersji japońskiej jest niestandardowy: dostarcza symbol jena , w którym zwykle znajduje się znak ukośnika odwrotnego , oraz symbole lewej i prawej strzałki zamiast tyldy i znaku rubout .
Ograniczoną liczbę niestandardowych znaków można zaprogramować w urządzeniu w postaci mapy bitowej za pomocą specjalnych poleceń. Znaki te muszą być wpisywane do urządzenia przy każdym włączeniu, ponieważ są one zapisywane w pamięci ulotnej .
Zobacz też
- LCD Smartie — sterownik ekranu typu open source dla systemu Microsoft Windows
- JIS X 0201 — japoński standard kodowania znaków 7-bitowych i 8-bitowych
Dalsza lektura
- Huang, Han-Way (2009). HCS12 / 9S12: Wprowadzenie do interfejsu oprogramowania i sprzętu (wyd. 2). Nauka Delmara Cengage'a. ISBN 978-1-4354-2742-6 .
- Sanchez, Julio; Kanton, Maria P. (2007). Programowanie mikrokontrolerów: Microchip PIC . Prasa CRC. ISBN 978-0-8493-7189-9 .