Z Znakovéé LCD displeje d - http://d doveda.b byl.cz/lcd d/ D Displeje se u nás objeevili koncem m 80 let. Tehdy T se považovali zza zázrak techniky. Dnes jsoou LCD zobbrazovací displeje d všudde okolo náás. Setkávám me se s nimii při koupi jízdenky j na autoobus neboo vlak, v telefonnícch automattech, na parkovištích p h ve faxeech atd. Každý displej má v sobě speeciální integgrovaný ob bvod - řadič, který ovvládá celý displej d a komunikuje s okolíím. Standarrtem se stal řadíč HD44 4780 od firm my HITACH HI. Všichnii výrobci používaají HD44780 nebo jeho o ekvivalennt. Proto je jedno, od jakého j výroobce displejj je. Pro dosaženní plné komppatibiliti disspleje, je zaapojení přív vodního kon nektoru stejnné. To zjedn nodušuje použití displejů v praxi. p Displej se vyrábíí v několikaa variantách h 8x2, 16x1 , 16x2, 16x x4, 20x2, 20x4, 224x2, 24x4,, 40x2, 40x x4, které see liší počtem sloupců a řádků. M Moduly se vyrábí s podsvíccením LED nebo výbojkou. D Displeje LC CD prodávaají firmy G GMe, Shop HW, Elatec, Powertipp a Koala kde k také najdete přehled displejů d a datasheetyy. Firma GMe G prodáává displejje označen né např. MC16002E-SYL (22x16 znaků)) od výrobcee Everbouq quet.
Zapoojení výývodů V tabullce je zobrrazeno zapo ojení vývoddů, název signálu a popis. Větššinou se vyskytuje v standarttní zapojeníí vývodů, ale již jsem se setkal u displeje LC CD 4x40 (nneznámý vý ýrobce) s jiným zapojením. výývod výv vod názeev staandard LCD4 4x40 1 13 Vsss 2 14 4 Vddd 3 12 2 Vo 4
11
RS
5 6 7
10 9 8
R/W W E DB00
popiss napájení GND G napájení +5V + kontraast 0V .. 5V V (typ. 0,8V) V) Register Select (0 0=instrukcee, 1=dataa) Read / Write (0=záápis, 1=čtenní) Enablee (1, hrana z 1 -> do 00) Data Bu us 0
8 9 10 11 12 13 14
7 6 5 4 3 2 1
DB1 DB2 DB3 DB4 DB5 DB6 DB7
15
-
A
16
-
K
-
15 16
E2 nc
Data Bus 1 Data Bus 2 Data Bus 3 Data Bus 4 Data Bus 5 Data Bus 6 Data Bus 7 podsvícení - anoda LED (jen některé typy) podsvícení - katoda LED (jen některé typy) Enable (1, hrana z 1 -> do 0) nezapojen
DB0 - DB3 (Data Bus), nižší bity 3-stavové sběrnice. Nevyužito při 4-bitovém ovládání. DB4 - DB7 (Data Bus), vyšší bity 3-stavové sběrnice
Komunikace s modulem Pro komunikaci s displejem je potřeba minimálně 6 vodičů až maximálně 11 vodičů a napájení +5V. Před zapojením s procesorem si musíme zvolit datovou komunikaci. Komunikace s modulem muže být po 8-bitové sběrnici (DB0-DB7) nebo 4-bitové sběrnici (DB4-DB7). Po zapnutí procesoru a displeje je nutné provést základní inicializaci displeje. Nastaví se počet bitů datové komunikace (8 nebo 4 bity), směr psaní znaků, posun řádku, pozice kurzoru a blikání kurzoru. Po této inicializaci je displej připraven na komunikaci. 8-bitová sběrnice (DB0-DB7). Pošle se 8 bitů a zapíšou se ENABLEM 4-bitová sběrnice (DB4-DB7). Tuto komunikaci je vhodné použít při nedostatku vývodů na procesoru. Komunikace bude 2x pomalejší, protože se data posílají nadvakrát. Nejdříve se pošlou vyšší 4 bity a zapíšou se ENABLEM a pak nižší 4 bity a zapíšou se ENABLEM. Nižší 4 bity (DB0-DB3) na displeji je potřeba spojit se zemí. Zapojení displeje s procesorem je na obrázku.
Zobrazení znaků Každý znak je zobrazován jako matice 5x8 bodů. Definice jednotlivých znaků je uložena napevno ve vnitřní paměti ROM code: A00. Dále je možno zobrazit kurzor, nastavit blikání kurzoru, definovat posouvání zobrazených znaků, smazat displej, zobrazovat na konkrétní pozici apod. Názorně si ukážeme zobrazení znaků na displeji 2x16 znaků. Data, která se mají zobrazit jsou uložena v paměti DDRAM (Display Data Random Acces Memory). Každý zobrazovaný znak má svojí adresu. Ve skutečnosti je adresa posazena o 80h. Hodnota pro 1 řádek 1znak je 80h pro 2 řádek 1 znak je C0h.
V tabulce jsou uvedeny pozice, na kterých jsou uloženy znaky pro zobrazení na řádcích. Jednořádkové displeje počet pozice v znaků DDRAM 1.řádek 1 x 16 00h..0Fh 1.řádek 1 x 24 00h..17h
Dvouřádkové displeje počet pozice v DDRAM znaků 1.řádek 00h..07h 2x8 2.řádek 40h..47h 1.řádek 00h..0Fh 2 x 16 2.řádek 40h..4Fh 1.řádek 00h..13h 2 x 20 2.řádek 40h..53h 1.řádek 00h..17h 2 x 24 2.řádek 40h..57h 1.řádek 00h..27h 2 x 40 2.řádek 40h..67h
Čtyřřádkové displeje počet pozice v DDRAM znaků 1.řádek 00h..0Fh 2.řádek 40h..4Fh 4 x 16 3.řádek 10h..1Fh 4.řádek 50h..5Fh 1.řádek 00h..13h 2.řádek 40h..53h 4 x 20 3.řádek 14h..27h 4.řádek 54h..67h 1.řádek 00h..17h 2.řádek 40h..57h 4 x 24 3.řádek 18h..6Fh 4.řádek 58h..6Fh Poznámka: Některé jednořádkové displeje 1x16 znaků se musí inicializovat jako dvouřádkové! Je to zjednodušení a šetření ze strany výrobce, protože jeden řadič LCD displeje umí ovládat 2x8 znaků. Bližší informace najdete v datasheetu každého displeje. DDRAM bez posuvu pozice LCD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 adresa 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F DDRAM adresa 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F DDRAM Pokud je nastaven posun displeje doleva , bude po provedení posunu zobrazeny následující adresy. Posun doleva pozice LCD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 adresa 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 DDRAM adresa 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 DDRAM
Pokud je nastaven posun displeje doprava , bude po provedení posunu zobrazeny následující adresy. Posun doprava pozice LCD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 adresa 27 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E
DDRAM adresa DDRAM
67 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E
Definování uživatelských znaků Prvních 8 znaků (znak 0 - 7) je možno nadefinovat uživatelem třeba jako české znaky nebo různé grafické symboly podle vlastního přání. Pro češtinu je osm znaků málo, proto se znaky můžou měnit v generátoru znaků před jejich zobrazením. Tento postup přepisování znaků nám ale přepíše i zobrazený znak (0 - 7) na displeji za nově nadefinovaný. Velikost znaku, které zapisujeme do paměti je 8x8 pixelů, ale zobrazí se jen 5x8 (šířka x výška) nebo 5x10 podle zvoleného nastavení displeje při inicializaci. Pro vytváření vlastních znaků napsal pěkný program Filip Zajíček s názvem LCDChar v.1.3.1.
Tabulka instrukcí Instrukce
Signál RS R/W D7 D6 D5 D4 D3 D2 D1 D0
Smazat displej
0
0
0 0 0
0
0
Návrat na pozici 0
0
0
0 0 0
0
0
Nastavení módu
0
0
0 0 0
0
0
Popis
čas **
Smaže displej a nastaví 0 0 1 1.64ms adresu DDRAM na 0. Nastaví adresu DDRAM na 0. Vrátí kurzor na pozici 0 a posune 0 1 * 1.64ms displej zpět do původní pozice. Obsah DDRAM zůstane zachován. Nastaví směr pohybu kurzoru, a specifikuje 1 I/D S posun 40us displeje. Operace jsou prováděny během
Kontrola displeje zap/vyp
0
0
0 0
Posun kurzoru, displeje
0
0
0 0
Nastavení funkce
0
0
0 0
Nastavení adresy CGRAM
0
0
0 1
Nastavení adresy DDRAM
0
0
1
Čtení příznaku Busy Flag a adresy
0
1
BF
zápisu a čtení dat. Zapne/vypne displej (D), zapne/vypne 0 0 1 D C B kurzor (C) a blikání kurzoru (B). Pohyb kurzoru a posun 0 1 S/C R/L * * displeje bez změny obsahu DDRAM. Délka rozhraní (DL), počet 1 DL N F * * řádek displeje (N) a velikost fontu (F). Nastaví adresu CGRAM. CGRAM adresa Data jsou přenesena po tomto nastavení. Nastaví adresu DDRAM. DDRAM adresa Data jsou přenesena po tomto nastavení. Čte příznak (BF), který indikuje provádění vnitřních operací a čte CGRAM / DDRAM adresu adresa CGRAM nebo DDRAM (v závislosti na předchozí instrukci).
40us
40us
40us
40us
40us
0us
Zápis dat do 1 CGRAM nebo DDRAM Čtení dat z CGRAM 1 nebo DDRAM
0
1
zápis dat
Zapíše data do CGRAM nebo DDRAM.
čtení dat
Přečte data z CGRAM 40us nebo DDRAM.
40us
Vysvětlivky: DDRAM - Display Data RAM. (paměť zobrazovaných znaků) CGRAM - Character Generator RAM. (paměť pro uložení vlastního znaku) * - Na hodnotě nezáleží. ** - Maximální čas při frekvenci oscilátoru 270KHz. Název bitu I/D 0 - Snížení S
0 - Není posun displeje
D C
0 - Vypnout displej 0 - Vypnout kurzor 0 - Vypnout blikání kurzoru 0 - Posun kurzoru 0 - Posun doleva 0 - 4bitová komunikace 0 - 1 řádek 0 - 5x8 bodů 0 - Operace je ukončena
B S/C R/L DL N F BF
Popis 1 - Zvýšení 1 - Posun displeje při zápisu dat 1 - Zapnout displej 1 - Zapnout kurzor 1 - Zapnout blikání kurzoru 1 - Posun displeje 1 - Posun doprava 1 - 8bitová komunikace 1 - 2 řádky 1 - 5x10 bodů 1 - Operace probíhá
Popis instrukcí
Smazat Displej (Clear Display) Smaže displej. Zapíše kód 20H (kód 20H je prázdný znak) do všech adres DDRAM. Potom nastavý DDRAM adresu 0 adresového čítače a návrat displej k jeho originálnímu stavu, jestliže byl posunutý. Jinými slovy, displej zmizí a kurzor nebo blikání směřuje displej doleva (v 1řádce 2řádkového displeje). To také nastaví I / D na 1 (zvýšení) v nastavovacím módu. S se v módu nastavení nezmění.
Vrátit se na začátek (Return Home) Vrátí se na začátek. Nastaví adresu DDRAM na 0 a vrátí displej do jeho originálnímu stavu jestliže byl posunut. Nezmění se obsah DDRAM. Kurzor nebo blikání směřuje displej doleva (v 1řádce 2řádkového displeje).
Vlož nastavení módu (Entry Mode Set) I / D: Zvětší (I / D = 1) nebo zmenší (I / D = 0) adresu DDRAM o 1, když kód znaku je zapsán do nebo čten z DDRAM. Kurzor nebo blikající pohyb doprava zvětšen o 1 a doleva zmenšený o 1. Stejné platí při zápisu a čtení z CGRAM. S: Posune celý displej o jeden znak doprava (I / D = 0) nebo doleva (I / D = 1), když S je 1. Displej se neposune jestliže S je 0. Jestliže S je 1, bude se zdát jako by se kurzor nepohyboval ale displej pracuje. Displej se neposune, když čte z DDRAM. Také psaní do nebo čtení z vnější CGRAM displej neposune.
Displej zap / vyp (Display on / off control) D: Displej zapnut když D je 1 a vypnut když D je 0. Když je vypnut, data displeje zůstanou v DDRAM, ale můžou být zobrazena okamžitě tím, že D je 1. C: Kurzor je zobrazen když C je 1 a nezobrazen když C je 0. Dokonce jestliže kurzor zmizí, funkce I / D nebo jiné specifikace nebudou se měnit během zápisu dat displeje. Kurzor je zobrazen pomocí 5 teček v 8-mé řádce pro 5x8 bodů a v 11-té řádce pro 5x10 bodů. B: Znak ukázaný kurzorem bliká když B je 1. Blikání je zobrazováno jako přepíná mezi celým prázdným místem a zobrazovaným znakem rychlostí 409,6 ms, když fcp nebo fosc je 250 kHz. Kurzor a blikání může být zobrazováno současně. (Frekvence blikání podle fosc nebo podobný z fcp. Například, když fcp je 270 kHz, 409,6 x 250 / 270 = 379,2 ms.)
Posun kurzoru nebo displeje (Cursor or display shift) Posun kurzoru nebo displeje změní místo kurzoru nebo displeje doprava nebo doleva bez psaní nebo čtení zobrazovaných dat. Tato funkce opravuje nebo hledá na displeji. Na 2řádek se kurzor přemístí z 1řádky, když bude přes 40-té číslo 1 řady. Poznamenávám, že první a druhá řádka displeje se posouvá zároveň. Když zobrazovaná data jsou posouvána opakovaně každá řádka se pohybuje jenom vodorovně. Z druhé řádky se neposune do první řádky. Čítač adres (AC) nebude měnit obsah jestliže se jenom vykonaná posun displeje.
Nastavení funkce (Function set) DL: Nastaví délku datového rozhraní. Data jsou poslaná nebo přijatá 8-bitově (DB7 DB0) když DL je 1, a 4-bitově (DB7 k DB4) když DL 0. Při vybrání 4-bitové délky, data musí být poslána nebo přijata dvakrát. N: Nastaví počet řádků displeje. F: Nastaví velikost znaku. Poznámka: Provádět Funkci u hlavy programu předtím, než vykonal nějaká instrukce (kromě čtení busy flag a instrukce adres). Od tohoto bodu, nastavení funkce instrukcí nemůže být vykonána změna délky datového rozhraní.
Nastavení adresy CGRAM (Set CGRAM address) Nastavením adresy CGRAM dá CGRAM binární adresu AAAAAA do adresového čítače. Data jsou pak zapsána nebo čtena od MPU pro CGRAM.
Nastavení adresy DDRAM (Set DDRAM address) Nastavením adresy DDRAM dá DDRAM binární adresu AAAAAAA do adresového čítače. Data jsou pak zapsána nebo čtena od MPU pro DDRAM. Nicméně, když N je 0 (1-řádkový displej), AAAAAAA může být 00H - 4FH. Když N je 1 (2-řádkový displej ), AAAAAAA může být 00H - 27H pro 1 řádek a 40H - 67H pro 2 řádek.
Číst busy flag a adresy (Read busy flag & address) Čtení busy flag a čtení adresy busy flag (BF) ukazuje, že systém vnitřně pracuje na předchozí přijaté instrukci. Jestliže BF je 1, vnitřní operace je v běhu. Příští instrukce nebude přijata do okamžiku než BF je 0. Kontrolovat BF stav před příštím zápisem operace. U stejný čas, hodnota adresový čítač v binární AAAAAAA je čten ven. Tento adresový čítač je použitý u obou CG a DDRAM adresy a jeho hodnota je předurčená předchozí instrukcí. Adresový obsah je stejný pokud jde o instrukce nastavení adresy CGRAM a nastavení adresy DDRAM.
Zapiš data do CG nebo DDRAM (Write data to CG or DDRAM) Zapisuje data do DDRAM nebo CGRAM.
Čti data z CG nebo DDRAM (Read data from CG or DDRAM) Čte data z CGRAM nebo DDRAM.
Poznámka: Popis instrukcí je přeložen z originální dokumentace obvodu HD44780U od firmy HITACHI.
Funkce resetu Vnitřní reset se automaticky inicializuje po zapnutí řadiče HD44780U a nastaví se takto: 1. Smazání displeje 2. Nastavení funkce: DL=1 8-bitový interface N=0 1-řádkový displej F=0 velikost znaku 5x8 bodů 3. Kontrola displeje zap/vyp: D=0 Displej: vyp C=0 Kursor: vyp B=0 Blikání kurzoru: vyp 4. Nastavení modu: I/D=1 zvýšení S=0 posun displeje: vyp Po zapnutí napájení a provedení vnitřního resetu se musí provést inicializace displeje. Nastaví se 8-bitová nebo 4-bitová komunikace a základní uživatelské nastavení. V následující tabulce je vypsána inicializace po jednotlivých instrukcích. Inicializace pro 8-bitovou komunikaci Zapnutí napájení (Power On) poznámka čekej minimálně 15 ms po náběhu Vcc nad 4,5V RS R/W D7 D6 D5 D4 D3 D2 D1 D0 nelze testovat BF, nastaven 8-bitový 0 0 0 0 1 1 interface čekej minimálně 4,1ms RS R/W D7 D6 D5 D4 D3 D2 D1 D0 nelze testovat BF, nastaven 8-bitový 0 0 0 0 1 1 interface čekej minimálně 100µs RS R/W D7 D6 D5 D4 D3 D2 D1 D0 nelze testovat BF, nastaven 8-bitový 0 0 0 0 1 1 interface čekej na BF=0 nebo 40us, RS R/W D7 D6 D5 D4 D3 D2 D1 D0 2-řádky, font znaku 5x8
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
1 0 0 0 0
1 0 0 0 0
N(1) 1 0 0 1
F(0) 0 0 1 1
0 0 I/D(1) 0
0 1 S(0) 0
Displej, kurzor, blikání vyp smazat displej posun kursoru do prava zapnout displej
konec inicializace
Inicializace pro 4-bitovou komunikaci Zapnutí napájení (Power On) poznámka čekej minimálně 15 ms po náběhu Vcc nad 4,5V RS R/W D7 D6 D5 D4 D3 D2 D1 D0 nelze testovat BF, nastaven 8-bitový 0 0 0 0 1 1 interface čekej minimálně 4,1ms RS R/W D7 D6 D5 D4 D3 D2 D1 D0 nelze testovat BF, nastaven 8-bitový 0 0 0 0 1 1 interface čekej minimálně 100µs RS R/W D7 D6 D5 D4 D3 D2 D1 D0 nelze testovat BF, nastaven 8-bitový 0 0 0 0 1 1 interface RS R/W D7 D6 D5 D4 D3 D2 D1 D0 čekej na BF=0 nebo 40us, nastaven 4-bitový 0 0 0 0 1 0 interface RS 0 0 0 0 0 0 0 0 0 0
R/W 0 0 0 0 0 0 0 0 0 0
D7 0 N(1) 0 1 0 0 0 0 0 1
D6 0 F(0) 0 0 0 0 0 1 0 1
D5 1 0 0 0 0 0 I/D(1) 0 0
D4 D3 D2 D1 D0 0 2-řádky, font znaku 5x8 0 Displej, kurzor, blikání vyp 0 0 smazat displej 1 posun kursoru do prava 0 S(0) zapnout displej 0 0
konec inicializace