LCD

Téměř každé zařízení je nutno nějak ovládat a sledovat jeho činnost. Pro tyto účely jsou přístroje vybaveny různými tlačítky, led diodami, 7-seg displeji či LCD displeji. Někdy stačí pouhá ledka pro stav ON/OFF nebo její rozsvícení u popisu, co dané zařízení právě provádí. V dnešní době se však používají častěji znakové nebo grafické LCD displeje. V pokročilejších a složitějších aplikacích pak barevné grafické a dotykové displeje. Můžeme je spatřit všude kolem nás, např: mobilní telefony, pračky, ledničky, mp3 přehrávače, dálkové ovladače, dokonce je můžeme vidět i na oblečení, kde nám budou promítat hodiny nebo obrázky.

Každý displej má v sobě speciální integrovaný obvod - řadič, který ovládá celý displej a komunikuje s okolím. Standartem se stal řadič HD44780 od firmy Hitachi. Všichni výrobci používají HD44780 nebo jeho ekvivalent. Proto nezáleží na výrobci displeje. Pro dosažení plné kompatibility displeje, je zapojení přívodního konektoru stejné. To zjednodušuje použití displejů v praxi.

Displeje s tímto řadičem se vyrábí v několika variantách. 8x2, 16x1, 16x2, 16x4, 20x2, 20x4, 24x2, 24x4, 40x2, 40x4, které se liší počtem sloupců a řádků. Displeje se 4x40 znaky se od ostaních trochu liší. HD44780 má totiž DDRAM (RAM, ve které je uložen obsah displeje) jen na 80 znaků, což stačí jen na 2x40 nebo 4x20 znaků. Tyto displeje proto mají 2 řadiče a mimo vývody E mají všechny ostatní vývody spojeny paralelně. Vývody E jsou pak označeny E1 a E2 a každý z nich ovládá polovinu displeje.

Displeje mají nejčastěji 16 pinový konektor, když jsou podsvíceny nebo 14 pinový bez něj. U 4x40 je to 17 nebo 15, zde je navíc E2. Navíc jsem se setkal že poslední dobou výrobci prohazují některé vývody, například A a K podsvícení na začátek a podobně přitom však na DPS displeje vytisknou čísla 1-16 aby jsme věděli kde které piny jsou.

Popis konektoru LCD :

Vývod Název Popis
1 GND Napájení 0V
2 VCC Napájení +5V
3 V0 Kontrast (GND=max)
4 RS Register Select (0=instrukce, 1=data)
5 R/W Read / Write (0=zápis, 1=čtení)
6 E Enable
7 DB0 Data Bus 0
8 DB1 Data Bus 1
9 DB2 Data Bus 2
10 DB3 Data Bus 3
11 DB4 Data Bus 4
12 DB5 Data Bus 5
13 DB6 Data Bus 6
14 DB7 Data Bus 7
15 A Anoda
16 K Katoda

Paměťový prostor má dvě části DDRAM a CGRAM. DDRAM je paměť obsahující znaky aktuálně zobrazené na displeji a CGRAM obsahuje znakovou sadu, tu jde rozšířit o 8 znaků dle svého přání.

Znaková sada displeje :


Komunikace s displejem může být 8-bitová nebo 4-bitová. Nejprve provedeme inicializaci, při 8-bitové komunikaci je využito všech 8 datových vodičů. Po odeslání dat nebo instrukcí se provede potvrzení krátkým pulzem na E. U 4-bitové jsou využity jen 4 datové vodiče DB4-DB7 a zbytek je uzemněn. Data nebo instrukce jsou vyslány vždy nadvakrát. Nejprve se na DB4-DB7 pošle horní polovina bytu, vygeneruje se kladný pulz na E, na sběrnici se pošle spodní polovina bytu a generuje se druhý pulz na E. Vyjímku tvoří první instrukce, která inicializuje displej jako 4-bitový. Zde se pošle jen horní polovina inicializačního bytu a jen jeden pulz na E. Celý byte se pak vyšle znovu, ale už 4-bitovým způsobem, aby se nastavily i spodní 4 bity slova (počet řádků a font).

Instrukce pro ovládání a nastavení displeje :

Význam instrukce RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 Délka
smaže disp. a nastaví kurzor na začátek 0 0 0 0 0 0 0 0 0 1 1,52 ms
nastaví kurzor na začátek 0 0 0 0 0 0 0 0 1 x 1,52 ms
posuv textu S (0=ne, 1=ano)
směr posuvu kurzoru I/D (0=<--, 1=-->)
směr posuvu textu I/D (1=<--, 0=-->)
0 0 0 0 0 0 0 1 I/D S 37 us
D - zapne displej, C - zapne kurzor,
B - zapne blikání kurzoru
0 0 0 0 0 0 1 D C B 37 us
1x posune (S/C=0 kurzor, S/C=1 text) směrem (R/L=0 vlevo, R/L=1 vpravo) 0 0 0 0 0 1 S/C R/L x x 37 us
inicializace:
DL=0 4-bit, DL=1 8-bit mód
N=0 jednořádkový, N=1 dvouřádkový disp.
F=0 font 5x8, F=1 font 5x10
0 0 0 0 1 DL N F x x 37 us
přepnutí na zápis do CGRAM 0 0 0 1 adresa v CGRAM 37 us
přepnutí na zápis do DDRAM 0 0 1 adresa v DDRAM 37 us
čtení příznaku BF (BF=0 příjem povolen, BF=1 řadič zaneprázdněn),
čtení adresy v DDRAM
0 1 BF adresa v DDRAM 0 us
zápis dat do CGRAM nebo DDRAM 1 0 data 37 us
čtení dat z CGRAM nebo DDRAM 1 1 data 37 us

Předchozí tabulka je kopie tabulky z datasheetu který lze nalést v sekci download - datasheet. Je přeložená do češtiny a liší se jen v jedné věci a to ve třetím řádku. Narazil jsem na jeden docela podstatný problém a to ten, že pokud chci posunout celý text o jednu pozici vlevo fungují příkazy opačně než u kurzoru ikdyž výrobce uvádí, že jak u kurzoru, tak u textu, jsou příkazy totožné. Liší se tedy jen v bitu S. Doma mám asi 4 různé displeje s tímto řadičem a všechny to mají jinak, než uvádí výrobce. Proto pokud budete pracovat s posuvným textem vyzkoušejte jestli i váš displej trpí tímto "postižením" nebo se jen výrobce v datasheetu nebo v ovladači řadiče překlepl.

Rozvržení displeje je podle následující tabulky :

00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh
40h 41h 42h 43h 44h 45h 46h 47h 48h 49h 4Ah 4Bh 4Ch 4Dh 4Eh 4Fh


Pokud však chceme začít psát na displeji od určitého políčka (segmentu,pozice) musíme k danému číslu přičíst číslo 1000 0000 B. Toto číslo displeji říká že se jedná o zápis na určitou pozici. Toto číslo je nutné displeji poslat jako data nikoliv znak. Další odeslané znaky budou začínat na této pozici a pokračovat směrem námi zvoleným. Pokud jsme směr nevolili je přednastaven doprava.

V sekci download - 8051 si můžete stáhnout zkušební program, po mikropočítače řady xx51 a krystal 18MHz (při použití nižší frekvence program pojede akorát pomaleji). Program je určen pro 2 řádkové displeje a znacích 5*8 bodů. Je napsán ve dvou verzích pro 4-bitovou a 8-bitovou komunikaci. Otestuje oba řádky, zápis do CGRAM, posuv textu. Testovací programy jsou v HEX, asm sem nedávám schválně aby jste si taky něco skusili napsat sami.

Zapojení konektoru 4-bit k mikropočítači je :

Pin Funkce
p1.2 reg
p1.3 en
p1.4-p1.7 db4-db7


Zapojení konektoru 8-bit k mikropočítači je :

Pin Funkce
p3.0 reg
p3.1 en
p1.0-p1.7 db0-db7



Testovací program v akci.


A tradáááááááá je hotovo.

Created by Mipi :)