<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title> LCD2L4P02A </title><meta name="keywords" content="LCD Hitachi HD44780 display tlačítka piezoelement"><meta name="description" content="Modul dvouřádkového LCD displeje se čtyřmi tlačítky a piezoelementem"><!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE --><link rel="StyleSheet" href="../../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl"><link rel="StyleSheet" href="../../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print"><link rel="shortcut icon" type="image/x-icon" href="../../../../../Web/PIC/MLAB.ico"><script type="text/javascript" src="../../../../../Web/JS/MLAB_Menu.js"></script><!-- AUTOINCLUDE END --></head><body lang="cs"><!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE --><!-- ============== HLAVICKA ============== --><div class="Header"><script type="text/javascript"><!--SetRelativePath("../../../../../");DrawHeader();// --></script><noscript><p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p></noscript></div><!-- AUTOINCLUDE END --><!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE --><!-- ============== MENU ============== --><div class="Menu"><script type="text/javascript"><!--SetRelativePath("../../../../../");DrawMenu();// --></script><noscript><p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p></noscript></div><!-- AUTOINCLUDE END --><!-- ============== TEXT ============== --><div class="Text"><p class="Title">Modul LCD displeje se čtyřmi tlačítky a piezoelementem</p><p class=Autor>Milan Horkel, Jakub Kákona</p><p class="Subtitle">Modul LCD2L4P obsahuje dvouřádkový LCD displej s obvyklým Hitachiřadičem a čtveřici tlačítek. Dále je vybaven piezoelementems oddělovačem 74HC04. Modul se používá jako univerzálníuživatelský interfejs při pokusech s mikroprocesorovýmikonstrukcemi.</p><p class="Subtitle"><img width="565" height="348" src="LCD2L4P02A_files/image001.jpg"alt="Pohled na modul displeje"></p><p><a href="../LCD2L4P02A.cs.pdf"><img class="NoBorder"src="../../../../../Web/PIC/FileIco_PDF.ico"alt="Acrobat"> PDF verze</a></p><h1> Technické parametry </h1><table><tr><th> Parametr </th><th> Hodnota </th><th> Poznámka </th></tr><tr><td> Napájení </td><td> +5V nebo +3V/-2V </td><td> Záporné napětí pro řízení kontrastu </td></tr><tr><td> Spotřeba </td><td> cca 1mA </td><td> Při +5V (dle displeje, bez zvuku) </td></tr><tr><td> Displej </td><td> LCD, 2 řádky po 16 znacích </td><td> Hitachi řadič </td></tr><tr><td> Tlačítka </td><td> 4 spínací tlačítka do země </td><td> Volitelný pull-up odpor </td></tr><tr><td> Piezoelement </td><td> 1ks </td><td> Buzený z obvodu 74HC04 protitaktně </td></tr><tr><td> Rozměry </td><td> 61 x 101 x 22 mm </td><td> Výška nad nosnou deskou </td></tr></table><h1> Popis konstrukce </h1><h2> Úvodem </h2><p>Na modulu je osazen obyčejný standardní dvouřádkový LCD displejs Hitachi řadičem (to jsou skoro všechny dostupné řádkovédispleje). Z displeje je vyveden jen 4 bitový interfejs apří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žimjen zápis (v obvyklých konstrukcích se z LCD displeje nic nečte,ušetří se vývod procesoru).</p><p>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 odporydo plusu (hodnota 10k).</p><p>Pod displejem je schovaný piezoelement, který je buzený protitaktněz obvodu 74HC04.</p><h2> Zapojení modulu </h2><p><img width="382" height="145" src="LCD2L4P02A_files/image002.png"alt="Schéma zdroje"></p><p>Dioda D1 je ochranná dioda proti přepólování napájení.</p><p><img width="805" height="408" src="LCD2L4P02A_files/image003.png"alt="Schéma displeje"></p><p>Standardní napájení je +5V, ale v případě potřeby může býtnapájení menší. Aby bylo na displeji něco vidět, je třeba dosáhnoutrozdí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 snadnonastří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ů nadispleji (dělič pro výrobu interních napětí pro displej, odpory jsouzapojené v sérii a někdy mají zbytečně malou hodnotu).</p><p>Odpory 1k jsou zapojeny proto, aby při experimentech nebylo tak snadnépoškodit výstupy z displeje. Pokud se do displeje jen zapisuje jetřeba uzemnit signál RW. Proto je J4 tam, kde je.</p><p>Podsvícení je jen propojeno na displej. Podsvícení bývá realizováno LEDdiodami zapojenými v sérii a je jej třeba budit zdrojem proudu.</p><p><img width="385" height="595" src="LCD2L4P02A_files/image004.png"alt="Schéma tlačítek"></p><p>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ě“.</p><p>Piezoelement (pod displejem) je buzen protitaktně přímo z výstupůobvodu U2. Aby volný vstup nechytal rušení (brum), je zapojení doplněnoodporem RX, který zajišťuje stabilní úroveň na vstupu, pokud není buzenz vnějšku.</p><p><img width="775" height="275" src="LCD2L4P02A_files/image005.png"alt="Schéma budiče piezoelementu"></p><h1> Osazení a oživení </h1><h2> Osazení </h2><p>Před osazením LCD displeje nezapomeneme osadit piezoelement. Ten selepí 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ř.</p><p><img width="202" height="210" src="LCD2L4P02A_files/image008.jpg"alt="Nalepené mezikruží"> <img width="219" height="210" src="LCD2L4P02A_files/image009.jpg"alt="Nalepený piezoelement"></p><p>Displej je přichycen šrouby M2.5 a mezi desku displeje a plošný spojmodulu 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.</p><p>Propojovací hřebínek na LCD je vhodné zapájet až po přišroubovánídispleje.</p><p><img width="230" height="210" src="LCD2L4P02A_files/image010.jpg"alt="Osazený rezistor RX"></p><p>Odpor RX bohužel nemá na plošném spoji plošky a musí se tak přibastlitpomocí kousku drátu. Obrázek napoví. Když se neosadí, bude piezoelementchytat brumy z nepřipojeného vstupu. Vyzkoušejte si to, CMOSobvody jsou proklatě citlivé.</p><p>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.</p><p><img width="539" height="329" src="LCD2L4P02A_files/image006.jpg"alt="Osazení, pohled ze strany součástek"></p><p><img width="542" height="135" src="LCD2L4P02A_files/image007.jpg"alt="Osazení, pohled ze strany spojů"></p><table class="Soupiska"><tr><th> Počet </th><th> Reference </th><th> Hodnota </th><th> Pouzdro </th></tr><tr><th colspan="4"> Odpory </th></tr><tr><td> 4x </td><td> R1, R2, R3, R4 </td><td> 1k </td><td> R0805 </td></tr><tr><td> 4x </td><td> R6, R7, R8, R9 </td><td> 10k </td><td> R0805 </td></tr><tr><td> 1x </td><td> R5 </td><td> 47k </td><td> R0805 </td></tr><tr><td> 1x </td><td> RX </td><td> 1M </td><td> R0805 </td></tr><tr><th colspan="4"> Odporové trimry </th></tr><tr><td> 1x </td><td> P1 </td><td> 47k </td><td> PT10V </td></tr><tr><th colspan="4"> Keramické kondenzátory </th></tr><tr><td> 1x </td><td> C1 </td><td> 100nF </td><td> C0805 </td></tr><tr><th colspan="4"> Tantalové kondenzátory </th></tr><tr><td> 1x </td><td> C2 </td><td> 4u7/16V </td><td> ELYTB </td></tr><tr><th colspan="4"> Polovodiče </th></tr><tr><td> 1x </td><td> D1 </td><td> 1N4004 </td><td> DO41 </td></tr><tr><td> 1x </td><td> U1 </td><td> LCD_MODULE </td><td> LCD_SC1602A </td></tr><tr><td> 1x </td><td> U2 </td><td> 74HC04/SO </td><td> SO14_150 </td></tr><tr><th colspan="4"> Mechanické součástky </th></tr><tr><td> 4x </td><td> SW1,SW2,SW3,SW4 </td><td> P-DT6GE </td><td> PUSH120 </td></tr><tr><td> 1x </td><td> J4 </td><td> JUMP1 </td><td> JUMP1 </td></tr><tr><td> 3x </td><td> J2, J5, J7 </td><td> JUMP2 </td><td> JUMP2 </td></tr><tr><td> 1x </td><td> J6 </td><td> JUMP3 </td><td> JUMP3 </td></tr><tr><td> 1x </td><td> J1 </td><td> JUMP2X3 </td><td> JUMP2X3 </td></tr><tr><td> 2x </td><td> J8, J9 </td><td> JUMP2X4 </td><td> JUMP2X4 </td></tr><tr><td> 1x </td><td> J3 </td><td> JUMP2X8 </td><td> JUMP2X8 </td></tr><tr><td> 1x </td><td> SP1 </td><td> KBI-2734 </td><td> JUMP2 </td></tr><tr><th colspan="4"> Konstrukční součástky </th></tr><tr><td> 2x </td><td> </td><td colspan="2"> Jumper </td></tr><tr><td> 4x </td><td> </td><td colspan="2"> Šroub M2.5x8, válcová hlava </td></tr><tr><td> 4x </td><td> </td><td colspan="2"> Matice M2.5 </td></tr><tr><td> 4x </td><td> </td><td colspan="2"> Matice M3 </td></tr><tr><td> 4x </td><td> </td><td colspan="2"> Šroub M3x12, křížový, válcová hlava </td></tr><tr><td> 4x </td><td> </td><td colspan="2"> Podložka M3 </td></tr><tr><td> 4x </td><td> </td><td colspan="2"> Sloupek M3x5 </td></tr></table><h2> Oživení </h2><p>Pokud je plošný spoj a součásti v pořádku, není co oživovat. Prootestová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.</p><h1> Ovládání LCD displeje s HD44780 </h1><h2> Úvodem o řadiči </h2><p>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 jehoklonů.</p><p>Řadič obsahuje paměť RAM (nazývanou DD RAM) pro zapisované znaky okapacitě 2x40 znaků.</p><p>Dále obsahuje paměť RAM (nazývanou CG RAM) pro definici 8uživatelských znaků.</p><p>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 veskutečnosti dvouřádkové (levá polovina displeje je první řádka a pravápolovina displeje je druhá řádka). Čtyřřádkové displeje jsou veskutečnosti dvouřádkové s tím, že segmenty jsou fyzicky na skleumístěny do dvou řádek.</p><p>Řadič samotný umí jen režim jednořádkový a dvouřádkový. Po resetu jenastaven jednořádkový režim a proto po zapnutí napájení u dvouřádkovéhodispleje svítí první řádka dokud nedojde ke správné inicializaci.</p><h2> Řízení </h2><p>LCD displej se ovládá zápisem do řídících registrů (RS=0), do pamětipro 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).</p><p>Zápis (i čtení) může buď probíhat najednou po 8 bitech nebo nadvakrátpo 4 bitech. Druhý způsob je výhodný z hlediska snížení počtuportů procesoru, ke kterému je displej připojen. Pozor, pro čtyřbitovýprovoz se používají vývody D7 až D4.</p><p>Obsah paměti DD RAM definuje (v ASCII kódu + japonské znaky), cose 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.</p><p>Uživatelsky definované znaky (celkem 8 kusů) jsou zobrazovány když sedo DD RAM zapíše kód 0 až 7 nebo 8 až 15. Tvar znaků je uložen vCG RAM po řádcích.</p><p>Je možné volit, zda se při zápisu znaků do DD RAM automatickyzvyš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.</p><p>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 dobuv čekací smyčce. Některé displeje mohou být o něco pomalejší a pakse nepovede inicializace. Rychlost displeje je také závislý na jehonapájení (5V nebo 3.3V). Konzervativní hodnoty časů jsou uvedenyv tabulce.</p><table><tr><th rowspan="2"> Instrukce </th><th colspan="2" class="Center"> Řízení </th><th colspan="8" class="Center"> Datová sběrnice </th></tr><tr><th> RS </th><th> RW </th><th> D7 </th><th> D6 </th><th> D5 </th><th> D4 </th><th> D3 </th><th> D2 </th><th> D1 </th><th> D0 </th></tr><tr><td> <b>Smaž displej a nuluj adresu DD</b> (2ms) </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 1 </td></tr><tr><td> <b>Nuluj adresu DD na 0 a zruš posunutí</b> (2ms) </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 1 </td><td> * </td></tr><tr><td> <b>Nastavení pohybu kurzoru</b> (40µs) </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 1 </td><td> ID </td><td> S </td></tr><tr><td> <b>Nastavení módu displeje</b> (40µs) </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 1 </td><td> D </td><td> C </td><td> B </td></tr><tr><td> <b>Okamžitý posuv kurzoru nebo textu</b> (40µs) </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 1 </td><td> SC </td><td> RL </td><td> * </td><td> * </td></tr><tr><td> <b>Nastavení funkce displeje</b> (40µs) </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 1 </td><td> DL </td><td> N </td><td> F </td><td> * </td><td> * </td></tr><tr><td> <b>Nastavení adresy CG</b> (40µs) </td><td> 0 </td><td> 0 </td><td> 0 </td><td> 1 </td><td> A5 </td><td> A4 </td><td> A3 </td><td> A2 </td><td> A1 </td><td> A0 </td></tr><tr><td> <b>Nastavení adresy DD</b> (40µs) </td><td> 0 </td><td> 0 </td><td> 1 </td><td> A6 </td><td> A5 </td><td> A4 </td><td> A3 </td><td> A2 </td><td> A1 </td><td> A0 </td></tr><tr><td> <b>Čtení adresy a busy bitu</b> </td><td> 0 </td><td> 1 </td><td> BF </td><td> A6 </td><td> A5 </td><td> A4 </td><td> A3 </td><td> A2 </td><td> A1 </td><td> A0 </td></tr><tr><td> <b>Zápis dat</b> (40µs) </td><td> 1 </td><td> 0 </td><td> D7 </td><td> D6 </td><td> D5 </td><td> D4 </td><td> D3 </td><td> D2 </td><td> D1 </td><td> D0 </td></tr><tr><td> <b>Čtení dat</b> (40µs) </td><td> 1 </td><td> 1 </td><td> D7 </td><td> D6 </td><td> D5 </td><td> D4 </td><td> D3 </td><td> D2 </td><td> D1 </td><td> D0 </td></tr></table><table><tr><th> Bit </th><th> Popis </th></tr><tr><td> S=1 </td><td> Při zápisu/čtení dat se bude posouvat celý displej (směr určuje bit ID) </td></tr><tr><td> S=0 </td><td> Při zápisu/čtení dat se bude posouvat jen kursor (směr určuje bit ID) </td></tr><tr><td> ID=1 </td><td> Při zápisu/čtení dat je ukazatel adresy inkrementován </td></tr><tr><td> ID=0 </td><td> Při zápisu/čtení dat je ukazatel adresy dekrementován </td></tr><tr><td> B=1 </td><td> Blikající znak na pozici kurzoru </td></tr><tr><td> B=0 </td><td> Znak nebliká </td></tr><tr><td> C=1 </td><td> Zapnutí kurzoru </td></tr><tr><td> C=0 </td><td> Vypnutí kurzoru </td></tr><tr><td> D=1 </td><td> Zapnutí displeje </td></tr><tr><td> D=0 </td><td> Vypnutí displeje </td></tr><tr><td> RL=1 </td><td> Okamžitý posuv doprava </td></tr><tr><td> RL=0 </td><td> Okamžitý posuv doleva </td></tr><tr><td> SC=1 </td><td> Okamžitý posuv textu </td></tr><tr><td> SC=0 </td><td> Okamžitý posuv kurzoru </td></tr><tr><td> F=1 </td><td> Znaky v rastru 5x10 </td></tr><tr><td> F=0 </td><td> Znaky v rastru 5x7 (běžné) </td></tr><tr><td> N=1 </td><td> Počet řádek displeje 2 nebo 4 </td></tr><tr><td> N=0 </td><td> Počet řádek displeje 1 (některé jednořádkové displeje jsoudvouřádkové – místo řádek mají levou a pravou polovinu) </td></tr><tr><td> DL=1 </td><td> Přenos dat 8 bitů </td></tr><tr><td> DL=0 </td><td> Přenos dat 4 bity (používají se vodiče D7 až D4) </td></tr><tr><td> BF=1 </td><td> Busy – probíhá vnitřní operace </td></tr><tr><td> BF=0 </td><td> Ready – je možné posílat instrukce </td></tr></table><h1> Programové vybavení </h1><p>Na tomto webu jsou připraveny knihovní funkce pro ovládání LCD displejepro procesory PIC a AVR napsané v jazyce C.</p></div><!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE --><!-- ============== PATIČKA ============== --><div class="Footer"><script type="text/javascript"><!--SetRelativePath("../../../../../");DrawFooter();// --></script><noscript><p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p></noscript></div><!-- AUTOINCLUDE END --></body></html>