Kontroler LCD Hitachi HD44780

Kontroler LCD HD44780 i sterowniki HD44100 z tyłu modułu LCD 40266

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

Schemat blokowy modułu LCD opartego na HD44780U

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

Płytka rozwojowa projektu mikrokontrolera Dragon12-P Freescale HCS12 /9S12 wykorzystująca wyświetlacz LCD oparty na HD44780

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

Wyświetlacz 20×4 znaków

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:

Zestaw instrukcji oparty na HD44780U
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

Bursztynowe podświetlenie wyświetlacza HD44780 o rozdzielczości 8×2 znaków

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:

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 .