Obsah:
1.
Úvod
2.
Stručná charakteristika
3.
Důležité maličkosti
4.
Význam jednotlivých vývodů displeje
5.
Připojení 8- a 4-bitovým interface k paralelnímu portu PC
6.
Komunikační protokoly
7.
Organizace paměti řadiče
8.
Znakový generátor
9.
Příkazy řadiče displeje
10.
Použité materiály
1. Úvod:
V následujícím článku zevrubně probereme řízení inteligentních displejů na bázi populárního řadiče HD44780 a jejich čtyřbitové a osmibitové připojení k PC.2. Stručná charakteristika:
LC displeje se vyskytují ve velkém množství aplikací. Obecně, jejich výhodou je malý odběr zobrazovací matice (řádově desítky mikroampérů), malé rozměry a nízká hmotnost ve srovnání s klasickou elektronovou obrazovkou, lepší geometrie a ostrost zobrazení, delší životnost, stálost obrazu (LC displeje mají mnohem vyšší kmitočet obnovení informace a jejich fyzikální princip umožňuje mnohem delší "dosvit", takže odpadá klasické blikání, nešvar to elektronových obrazovek a displejů) atd.Nevýhodou, která je však již u některých displejů odstraněna (na úkor ceny), je teplotní závislost, kdy kapalné krystaly při záporných a vysokých kladných teplotách ztrácejí své fyzikální vlastnosti a displej přestává dočasně pracovat.
Bavme se však nyní o řadě displejů s řadičem HD44780 a kompatibilními. Výhodou těchto displejů je rozšířenost mezi konstruktéry, relativně snadné ovládání, možnost definice až osmi uživatelských znaků (např. čeština), různorodost ve výběru velikosti (1x16 až 4x40 znaků) při zachování jednotného ovládání a v neposlední řadě se jejich specifikace zavádí jako průmyslový standard, včetně zapojení vývodů (*). To usnadňuje ladění na HW i SW úrovni a případnou výměnu displeje (např. za větší, podsvětlený apod.) Za cenu mírného zkomplikování protokolu lze s displejem komunikovat buď osmi- nebo čtyřbitově.
3. Podstatné maličkosti
Prvních osm znaků ve znakové sadě lze nastavit, což umožní na displeji tvořit různé efekty, grafické symboly, češtinu nebo animace. Pro češtinu však mnohdy osm znaků nepostačuje, což si vynucuje měnit dynamicky generátor znaků podle konkrétní potřeby grafických znaků.Použitá zobrazovací matice displeje a nastavený režim určují, zda k zobrazení uživatelsky definovaných znaků bude použit rastr 5x7 nebo 5x10 pixelů. Velikost znaku, které nahráváte je logicky 8x8 pixelů, takže v rozlišení 5 šířka x 7 výška se osmé slovo v generátoru znaků ignoruje a sedmé se používá i jako podtržení znaku. V módu 5x10 je k definici znaku použito 8 řádků, devátý se nepoužívá a desátý slouží k zobrazení kurzoru.
Displej lze nastavit (pokud to umožňuje hardware) do módu jednořádkového, dvou- nebo čtyřřádkového. Bohužel organizace paměti rozložení znaků neumožňuje i přes automatickou inkrementaci čítače přímý přechod mezi řádky, protože řádky na sebe přímo nenavazují. Díky tomu je scrollování textu po displeji nutno vždy obsluhovat softwarově.
4. Význam jednotlivých vývodů displeje:
Číslo vývodu |
Označení | V/V | Význam |
1 | Vss | - | 0V (napájení) |
2 | Vcc | - | +5V (napájení) |
3 | Vee | - | Nastavení kontrastu |
4 | RS | Vstup | 0 = vstup je instrukce 1 = vstup jsou data |
5 | R/W | Vstup | 0 = zápis dat do LCD 1 = čtení dat z LCD |
6 | E | Vstup | Aktivace displeje |
7 | DB0 | V/V | Data, bit 0 (nejnižší) |
8 | DB1 | V/V | Data, bit 1 |
9 | DB2 | V/V | Data, bit 2 |
10 | DB3 | V/V | Data, bit 3 |
11 | DB4 | V/V | Data, bit 4 |
12 | DB5 | V/V | Data, bit 5 |
13 | DB6 | V/V | Data, bit 6 |
14 | DB7 | V/V | Data, bit 7 (nejvyšší) |
15 (**) | - | Napájení podsvětlení, anoda | |
16 (**) | - | Napájení podsvětlení, katoda |
(*) Před prvním připojením displeje si zkontrolujte zapojení vývodů v
dokumentaci výrobce ke konkrétnímu displeji!
(**) Vývody nemusí být osazeny, nemá-li displej podsvětlení.
5. Připojení k PC
Zde uvedená připojení jsou pouze jednou z mnoha možností. Slouží však jako názorný příklad a návod pro konstrukci. Obě byla vyzkoušena a odladěna.Osmibitový interface
Autor: Tomáš DreslerPozn.: Zapojení bylo převzato z článku How to control HD44780-based Character-LCD Peera Ouwehanda a mírně upraveno.
Přiložený software obsahuje zazipovanou jednotku pro Borland Pascal verze 7.0. Jednotka je
koncipována jako objekt, což umožňuje její snadnou modifikaci a vícenásobné
použití. Komentována by měla být na úrovni zdrojového textu. Omluvte
prosím její nedokonalost :)
LCD_SRC.ZIP (3231
bytes)
Čtyřbitový interface
Autor: Jan Parkman Jan Parkman pro tento článek poskytl svůj software, který obsahuje program pro
interaktivní řízení displeje, editor uživatelsky definovaných znaků a několik utilit.
Balík obsahuje i zdrojové kódy výše uvedených programů. Naleznete jej zde:
PARKMAN.EXE (58 062
bytes)
6. Komunikační protokoly:
Čtyřbitová komunikace:
Posloupnost posílaných slabik při čtyřbitové komunikaci:
Pozn. Po zapnutí se displej nachází v režimu osmibitové komunikace. Aby bylo možné s ním komunikovat čtyřbitově, je nutné poslat mu nejdříve řídicí sekvenci (0100 xxxx) "jakoby osmibitově" a pak s ním lze komunikovat čtyřbitově.
7. Organizace paměti řadiče:
Paměť displeje pro uložení pozice znaků na zobrazovacím médiu se označuje jako DDRAM (Display Data Random Acces Memory). Níže jsou uvedeny pozice, na kterých jsou uloženy znaky pro zobrazení na řádcích (nižší adresa odpovídá znaku více vlevo).Jednořádkové displeje
Počet znaků | Pozice v DDRAM |
Pozn. Některé jednořádkové displeje se musí inicializovat jako dvouřádkové. Pak i pozice jednotlivých znaků se liší od klasického rozložení. Bližší informace najdete v datasheetu každého displeje.
Dvouřádkové displeje
Počet znaků | Pozice v DDRAM (po řádcích) | ||
|
|||
|
|||
|
|||
|
|||
|
Čtyřřádkové displeje
Počet znaků | Pozice v DDRAM (po řádcích) | ||||
|
|||||
|
8. Znakový generátor
Většina displejů používá zde uvedenou znakovou sadu, odlišují se mutace pro nejrůznější abeceny příliš odlišné od latinky (azbuka..), podrobné informace potom najdete v datasheetu ke konkrétnímu typu.
9. Příkazy řadiče displeje
Příkaz | Kód | Popis | Délka vykonání příkazu** | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 | |||
Smaže displej | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | Smaže displej a nastaví kurzor na pozici 0. | 1.64mS |
Nastaví kurzor na začátek | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * | Nastaví kurzor na pozici 0 a vynuluje posun displeje a | 1.64mS |
Nastaví vstupní režim | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S | Určí směr pohybu kurzoru (I/D) a posun displeje (S). Tyto operace se provádějí během čtení/zápisu. | 40uS |
Zapne/vypne displej, kurzor a jeho blikání | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B | Zapíná/vypíná displej (D), kurzor (C) a jeho blikání (B). | 40uS |
Nasatvií pojyb kurzoru/displeje | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | * | * | Nastaví pohyb kurzoru nebo displeje (S/C) a směr pohybu (R/L). Obsah DDRAM zůstane beze změny. | 40uS |
Nastavení interface | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * | Nastaví délku interface (DL), počet řádků displeje (N) a znakový font (F). | 40uS |
Nastaví pozici v CGRAM | 0 | 0 | 0 | 1 | Adresa v CGRAM | Po tomto příkazu jsou data ze vstupu zaznamenávána do CGRAM namísto DDRAM. | 40uS | |||||
Nastaví pozici v DDRAM | 0 | 0 | 1 | Adresa v DDRAM | Po tomto příkazu jsou data ze vstupu zapisována do a čtena z DDRAM. | 40uS | ||||||
Čte příznak BUSY a hodnotu adresového čítače | 0 | 1 | BF | DDRAM address | Čte příznak BUSY (BF) indikující, že displej ještě prování některou operaci, a pozici ukazatele adresy . | 0uS | ||||||
Zapíše do DDRAM nebo CGRAM. | 1 | 0 | data | Zapíše data ze vstupu DDRAM nebo do CGRAM. | 40uS | |||||||
Čte data z DDRAM nebo z CGRAM. | 1 | 1 | data | Čte data z aktuální adresy DDRAM nebo CGRAM. | 40uS |
Název bitu | Význam nastavení | |
---|---|---|
I/D |
0 = Pohyb kurzoru zpět
|
1 = Pohyb kurzoru dopředu
|
S |
0 = Posun displeje se neprovádí
|
1 = Displej se posouvá
|
D |
0 = Vypnutí displeje
|
1 = Zapnutí displeje
|
C |
0 = Vypnutí kurzoru
|
1 = Zapnutí kurzoru
|
B |
0 = Vypnutí blikání kurzoru
|
1 = Zapnutí blikání kurzoru
|
S/C |
0 = Pohyb kurzoru
|
1 = Pohyb displeje
|
R/L |
0 = Posun doleva
|
1 = Posun doprava
|
DL |
0 = 4-bit interface
|
1 = 8-bit interface
|
N |
0 = střída 1/8 nebo 1/11 (jednořádkový displej)
|
1 = střída 1/16 (dvouřádkový displej)
|
F |
0 = 5x7 bodů
|
1 = 5x10 bodů
|
BF |
0 = Řadič přijímá instrukce
|
1 = Řadič je zaneprázdněn vykonáváním
předchozí operace
|
10. Použitá literatura a dokumenty
Peer Ouwehand (C) , How to control HD44780-based Character-LCDwww.powertip.cz
Děkujeme Petru Novotnému a několika dalším lidem z konference HW-NEWS za podnětné připomínky.