Modul LCD displeje se čtyřmi tlačítky a piezoelementem
Milan Horkel, Jakub Kákona
Modul LCD2L4P obsahuje dvouřádkový LCD displej s obvyklým Hitachi řadičem a čtveřici tlačítek. Dále je vybaven piezoelementem s oddělovačem 74HC04. Modul se používá jako univerzální uživatelský interfejs při pokusech s mikroprocesorovými konstrukcemi.
Parametr | Hodnota | Poznámka |
---|---|---|
Napájení | +5V nebo +3V/-2V | Záporné napětí pro řízení kontrastu |
Spotřeba | cca 1mA | Při +5V (dle displeje, bez zvuku) |
Displej | LCD, 2 řádky po 16 znacích | Hitachi řadič |
Tlačítka | 4 spínací tlačítka do země | Volitelný pull-up odpor |
Piezoelement | 1ks | Buzený z obvodu 74HC04 protitaktně |
Rozměry | 61 x 101 x 22 mm | Výška nad nosnou deskou |
Na modulu je osazen obyčejný standardní dvouřádkový LCD displej s Hitachi řadičem (to jsou skoro všechny dostupné řádkové displeje). Z displeje je vyveden jen 4 bitový interfejs a příslušné řídící signály. Pomocí propojek je možné připojit trimr pro řízení kontrastu displeje a trvale nastavit řídící signál RW na režim jen zápis (v obvyklých konstrukcích se z LCD displeje nic nečte, ušetří se vývod procesoru).
Pod displejem jsou umístěna 4 velká spínací tlačítka do země. Pomocí řady propojek označené „PULL UPS“ je možné připojit pull-up odpory do plusu (hodnota 10k).
Pod displejem je schovaný piezoelement, který je buzený protitaktně z obvodu 74HC04.
Dioda D1 je ochranná dioda proti přepólování napájení.
Standardní napájení je +5V, ale v případě potřeby může být napájení menší. Aby bylo na displeji něco vidět, je třeba dosáhnout rozdílu kladného napájecího napětí a napětí pro kontrast (označené Vo) cca 5V. Napětí pro kontrast pak bude záporné. Napájecí proud pro řízení kontrastu je velmi malý a dá se snadno nastřídat. Při sníženém napájecím napětí je podstatně snížena spotřeba. Spotřebu lze u některých displejů dále snížit zvětšením odporů na displeji (dělič pro výrobu interních napětí pro displej, odpory jsou zapojené v sérii a někdy mají zbytečně malou hodnotu).
Odpory 1k jsou zapojeny proto, aby při experimentech nebylo tak snadné poškodit výstupy z displeje. Pokud se do displeje jen zapisuje je třeba uzemnit signál RW. Proto je J4 tam, kde je.
Podsvícení je jen propojeno na displej. Podsvícení bývá realizováno LED diodami zapojenými v sérii a je jej třeba budit zdrojem proudu.
Zapojení tlačítek je přímočaré. Odpory R6 až R9 jsou volitelné (propojkami J9) pull-up odpory. Tlačítka jsou napevno zapojená „do země“.
Piezoelement (pod displejem) je buzen protitaktně přímo z výstupů obvodu U2. Aby volný vstup nechytal rušení (brum), je zapojení doplněno odporem RX, který zajišťuje stabilní úroveň na vstupu, pokud není buzen z vnějšku.
Před osazením LCD displeje nezapomeneme osadit piezoelement. Ten se lepí na mezikruží vystřižené z oboustranně lepící samolepky. Vznikne tak tlaková komůrka a výsledný zvuk je mnohem silnější. Mezikruží musí být nalepeno tak, aby dírka byla uvnitř.
Displej je přichycen šrouby M2.5 a mezi desku displeje a plošný spoj modulu musíme vložit distanční válečky, například 1 nebo 2 matičky M3. Displej nesmí být opřen o plošný spoj ani o piezoelement.
Propojovací hřebínek na LCD je vhodné zapájet až po přišroubování displeje.
Odpor RX bohužel nemá na plošném spoji plošky a musí se tak přibastlit pomocí kousku drátu. Obrázek napoví. Když se neosadí, bude piezoelement chytat brumy z nepřipojeného vstupu. Vyzkoušejte si to, CMOS obvody jsou proklatě citlivé.
Při mytí desky pozor na tlačítka. Pokud do nich zateče rozpuštěná kalafuna je třeba je opatrně rozebrat (snadné) a vyčistit.
Počet | Reference | Hodnota | Pouzdro |
---|---|---|---|
Odpory | |||
4x | R1, R2, R3, R4 | 1k | R0805 |
4x | R6, R7, R8, R9 | 10k | R0805 |
1x | R5 | 47k | R0805 |
1x | RX | 1M | R0805 |
Odporové trimry | |||
1x | P1 | 47k | PT10V |
Keramické kondenzátory | |||
1x | C1 | 100nF | C0805 |
Tantalové kondenzátory | |||
1x | C2 | 4u7/16V | ELYTB |
Polovodiče | |||
1x | D1 | 1N4004 | DO41 |
1x | U1 | LCD_MODULE | LCD_SC1602A |
1x | U2 | 74HC04/SO | SO14_150 |
Mechanické součástky | |||
4x | SW1,SW2,SW3,SW4 | P-DT6GE | PUSH120 |
1x | J4 | JUMP1 | JUMP1 |
3x | J2, J5, J7 | JUMP2 | JUMP2 |
1x | J6 | JUMP3 | JUMP3 |
1x | J1 | JUMP2X3 | JUMP2X3 |
2x | J8, J9 | JUMP2X4 | JUMP2X4 |
1x | J3 | JUMP2X8 | JUMP2X8 |
1x | SP1 | KBI-2734 | JUMP2 |
Konstrukční součástky | |||
2x | Jumper | ||
4x | Šroub M2.5x8, válcová hlava | ||
4x | Matice M2.5 | ||
4x | Matice M3 | ||
4x | Šroub M3x12, křížový, válcová hlava | ||
4x | Podložka M3 | ||
4x | Sloupek M3x5 |
Pokud je plošný spoj a součásti v pořádku, není co oživovat. Pro otestování je vhodné použít některý z příkladů z tohoto webu. Jsou připraveny příklady v jazyce C pro procesory PIC i AVR.
Většina jednořádkových, dvouřádkových a čtyřřádkových LCD displejů je řízena stařičkým Hitachi řadičem HD44780 nebo některým z jeho klonů.
Řadič obsahuje paměť RAM (nazývanou DD RAM) pro zapisované znaky o kapacitě 2x40 znaků.
Dále obsahuje paměť RAM (nazývanou CG RAM) pro definici 8 uživatelských znaků.
K řadiči může být připojen vlastní LCD displej (sklo) s různě zapojenými segmenty. Některé delší jednořádkové displeje jsou ve skutečnosti dvouřádkové (levá polovina displeje je první řádka a pravá polovina displeje je druhá řádka). Čtyřřádkové displeje jsou ve skutečnosti dvouřádkové s tím, že segmenty jsou fyzicky na skle umístěny do dvou řádek.
Řadič samotný umí jen režim jednořádkový a dvouřádkový. Po resetu je nastaven jednořádkový režim a proto po zapnutí napájení u dvouřádkového displeje svítí první řádka dokud nedojde ke správné inicializaci.
LCD displej se ovládá zápisem do řídících registrů (RS=0), do paměti pro zobrazovaný text (DD RAM) nebo do paměti definice znaků (CG RAM). Z pamětí DD RAM a CG RAM je možné rovněž číst ale tato funkce nebývá potřebná a je možné trvale čtení deaktivovat (RW=0).
Zápis (i čtení) může buď probíhat najednou po 8 bitech nebo nadvakrát po 4 bitech. Druhý způsob je výhodný z hlediska snížení počtu portů procesoru, ke kterému je displej připojen. Pozor, pro čtyřbitový provoz se používají vývody D7 až D4.
Obsah paměti DD RAM definuje (v ASCII kódu + japonské znaky), co se bude zobrazovat. První polovina paměti RAM je vyhrazena pro první řádku a druhá polovina pro druhou řádku. Není-li displej 2x40 znaků (nebo čtyřřádkový 4x20 znaků) je vidět jen kus, výřez, z celé DD RAM paměti.
Uživatelsky definované znaky (celkem 8 kusů) jsou zobrazovány když se do DD RAM zapíše kód 0 až 7 nebo 8 až 15. Tvar znaků je uložen v CG RAM po řádcích.
Je možné volit, zda se při zápisu znaků do DD RAM automaticky zvyšuje adresa do které se zapisuje nebo zda se posouvá okno. Posouvání okna je možné řídit nezávisle a je tak možné snadno realizovat běžící text.
Pozor na časování. Některé instrukce potřebují pro své provedení delší čas. Pokud nečteme stav busy bitu, je třeba počkat příslušnou dobu v čekací smyčce. Některé displeje mohou být o něco pomalejší a pak se nepovede inicializace. Rychlost displeje je také závislý na jeho napájení (5V nebo 3.3V). Konzervativní hodnoty časů jsou uvedeny v tabulce.
Instrukce | Řízení | Datová sběrnice | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
RS | RW | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
Smaž displej a nuluj adresu DD (2ms) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Nuluj adresu DD na 0 a zruš posunutí (2ms) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * |
Nastavení pohybu kurzoru (40µs) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | ID | S |
Nastavení módu displeje (40µs) | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B |
Okamžitý posuv kurzoru nebo textu (40µs) | 0 | 0 | 0 | 0 | 0 | 1 | SC | RL | * | * |
Nastavení funkce displeje (40µs) | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * |
Nastavení adresy CG (40µs) | 0 | 0 | 0 | 1 | A5 | A4 | A3 | A2 | A1 | A0 |
Nastavení adresy DD (40µs) | 0 | 0 | 1 | A6 | A5 | A4 | A3 | A2 | A1 | A0 |
Čtení adresy a busy bitu | 0 | 1 | BF | A6 | A5 | A4 | A3 | A2 | A1 | A0 |
Zápis dat (40µs) | 1 | 0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
Čtení dat (40µs) | 1 | 1 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
Bit | Popis |
---|---|
S=1 | Při zápisu/čtení dat se bude posouvat celý displej (směr určuje bit ID) |
S=0 | Při zápisu/čtení dat se bude posouvat jen kursor (směr určuje bit ID) |
ID=1 | Při zápisu/čtení dat je ukazatel adresy inkrementován |
ID=0 | Při zápisu/čtení dat je ukazatel adresy dekrementován |
B=1 | Blikající znak na pozici kurzoru |
B=0 | Znak nebliká |
C=1 | Zapnutí kurzoru |
C=0 | Vypnutí kurzoru |
D=1 | Zapnutí displeje |
D=0 | Vypnutí displeje |
RL=1 | Okamžitý posuv doprava |
RL=0 | Okamžitý posuv doleva |
SC=1 | Okamžitý posuv textu |
SC=0 | Okamžitý posuv kurzoru |
F=1 | Znaky v rastru 5x10 |
F=0 | Znaky v rastru 5x7 (běžné) |
N=1 | Počet řádek displeje 2 nebo 4 |
N=0 | Počet řádek displeje 1 (některé jednořádkové displeje jsou dvouřádkové – místo řádek mají levou a pravou polovinu) |
DL=1 | Přenos dat 8 bitů |
DL=0 | Přenos dat 4 bity (používají se vodiče D7 až D4) |
BF=1 | Busy – probíhá vnitřní operace |
BF=0 | Ready – je možné posílat instrukce |
Na tomto webu jsou připraveny knihovní funkce pro ovládání LCD displeje pro procesory PIC a AVR napsané v jazyce C.