Jste zde

Interface pro 2drátovou komunikaci s LCD displeji

Podrobný popis modulů a jejich funkce již byl mnohokrát publikován, tématem je trochu atypický

způsob komunikace s LCD moduly ? po sériové dvojdrátové synchronní lince lince. LCD disple lze tak za cen několika

omezení připojit k procesoru pouze dvěma vodiči.

Standardní komunikace s moduly probíhá paralelně. To ovšem vyžaduje poměrně značně širokou sběrnici, obsahující osm datových a tři řídící digitální linky plus jednu analogovou linku pro řízení kontrastu zobrazení, celkem tedy dvanáct vodičů.  Smíříme-li se pouze s jednosměrnou komunikací (kdy lze data do LCD pouze zapisovat), napevno nastaveným kontrastem a poněkud komplikovanějším komunikačním protokolem při využití pouze čtyřbitové komunikace (což řadiče LCD modulů typu HD44780 nebo jejich ekvivalenty umožňují), sníží se počet potřebných vodičů na šest. Pro jednoduché aplikace, které jsou řízeny některým typem mikroprocesoru s redukovaným počtem vývodů (např. 87C751, 89C2051 nebo některé z řady PIC), je však i toto řešení neúnosné. 

Například mikroprocesor 89C2051 má k dispozici jen patnáct vstupně-výstupních linek, to znamená, že LCD modul z nich spotřebuje plné dvě pětiny a to v nejpříznivějším případě. Vývody mikroprocesoru použité pro datovou sběrnici LCD modulu sice lze multiplexovat s jinými periferiemi, ale komplikuje to tvorbu software a navíc jsou většinou potřebné další podpůrné obvody. Ideální by bylo, kdyby LCD moduly komunikovaly sériově. Ty to sice přímo neumí, ale je možné vložit mezi řídící procesor a LCD modul sériový interface. Dále popsaný obvod umožňuje komunikaci s LCD moduly pomocí pouhých dvou vodičů a to včetně řízení kontrastu zobrazení LCD! Jediným omezením je, že komunikace probíhá pouze jednosměrně – data jsou do řadiče LCD jen zapisována a nelze je z LCD zpětně číst.

Pro vysílání sériových dat do LCD modulu jsou ideální mikroprocesory obsahující UART nebo SPI jako interní periferii. Sériové rozhraní je pak hardwarově řízeno přímo pomocí CPU mikroprocesoru a obslužný software je tedy velmi jednoduchý. Mezi takové mikroprocesory patří např. téměř všechny z typové řady xC51 a právě pro tento typ mikroprocesorů bude dále popsán způsob připojení a programové obsluhy. Mikroprocesory, které nemají vestavěn UART nebo SPI (87C751, některé z řady PIC apod.), musí sériovou komunikaci vytvářet softwarově. Pro průměrně zkušeného programátora to ale není žádný problém.
 
 

Popis zapojení a funkce obvodů


Obvodové schéma je na obrázku. Jádrem převodníku je posuvný registr IO1 se sériovým vstupem a paralelními výstupy. Jeho vnitřní struktura je zjednodušeně znázorněna na obrázku. Součástí integrovaného obvodu IO1 je výstupní osmibitový latch registr, který dovoluje příjem a posuv dat ze sériového vstupu, aniž by se měnily stavy paralelních výstupů. Teprve po ukončení sériového přenosu jsou náběžnou hranou impulsu na vstupu DCLK (Data Clock) zachycená data přenesena na třístavové výstupy QA až QH, které jsou uvolněny logickou nulou na hradlovacím vstupu G (Gate). Výstup QH‘ pro sériové rozšíření není v našem případě využit. Sériová data ze vstupu DS (Data Seriál in) jsou zachycována a posouvána náběžnou hranou impulsu na vstupu SCLK (Serial Clock). Celý obvod lze asynchronně nulovat logickou nulou na resetovacím vstupu R (Reset).

S obvody řídícího mikroprocesoru je kromě napájení (stabilizované napětí 5 voltů přiváděné do bodů X1-4 “VCC” a X1-1 “GND”) převodník propojen pouhými dvěma signály přiváděnými na vstupy X1-3 “DATA” a X1-2 “CLOCK”. Průběhy těchto a dalších důležitých signálů znázorňuje obrázek průběhů. Na obou vstupech jsou zapojeny ochranné diody D3, D4 resp. D5, D6 eliminující záporné napěťové špičky resp. napěťové špičky větší než VCC a keramické kondenzátory C4 a C5 filtrující rušivé zákmity. Tyto napěťové špičky a zákmity mohou vznikat na delším propojovacím vedení. Pokud je převodník s mikroprocesorem propojen jen krátkým vedením (cca do 20 cm), není nutné uvedené součástky používat. Odpory R7 a R8 definují jednoznačně logickou jedničku na vstupech hradel IO2F, IO2D a současně částečně zvyšují strmost náběžných hran signálů “DATA” a “CLOCK”.

Signál “DATA” je tvarován na přesné obdélníky průchodem přes invertory IO2F, IO2E vybavené na vstupu schmittovým klopným obvodem a poté přiveden na vstup dat DS obvodu IO1. Zpoždění signálu v řádu jednotek nanosekund vznikající průchodem přes dva invertory je pro náš případ zanedbatelné. Obdobně je pomocí invertoru IO2D tvarován i hodinový signál “CLOCK”, který je po úpravě přiváděn na hodinový vstup SCLK obvodu IO1. Náběžná hrana upraveného signálu posouvá data ve vnitřní struktuře IO1. Vytvarovaný a invertovaný signál “CLOCK” je dále přiveden na monostabilní klopný obvod tvořený součástkami IO2B, D2, R2, C2. Náběžná hrana signálu nabíjí skokem přes diodu D2 kondenzátor C2 a udržuje napětí na něm a tím i na vstupu invertoru IO2B na vysoké úrovni po celou dobu, kdy je vstupní signál v logické jedničce. Při změně stavu vstupního signálu na logickou nulu je kondenzátor C2 pomalu vybíjen přes odpor R2. Po ukončení zápisu všech osmi bitů do vstupních registrů IO1 již kondenzátor C2 není udržován v nabitém stavu a po době dané časovou konstantou článku C2/R2 napětí na něm poklesne na úroveň logické nuly. To způsobí překlopení invertoru IO2B do výchozí polohy. Náběžná hrana na výstupu IO2B (tj. na vstupu DCLK IO1) následně přepíše stav výstupů QA až QH obvodu IO1 nově přijatými daty. Vliv neurčité logické úrovně na vstupu IO2B vznikající během vybíjení kondenzátoru C2 je odstraněn schmittovým klopným obvodem na vstupu IO2B. Volba hodnot součástek monostabilního klopného obvodu je poměrně kritická a závisí především na kmitočtu vstupního hodinového signálu. Nejdůležitější podmínkou je, aby časová konstanta článku R2/C2 pro pokles napětí na úroveň VLO byla delší než polovina periody hodinového signálu – jinými slovy aby po celou dobu zápisu dat zůstávalo napětí na C2 nad rozhodovací úrovní schmittova klopného obvodu na vstupu IO2B – viz obr. 4. Nesmí být ale zas moc dlouhá, aby náběžná hrana zapisovacího signálu DCLK nebyla příliš zpožděna za daty, protože to by vyžadovalo vkládat do obslužného software delší prodlevy a celou komunikaci by to neúměrně zpomalovalo. Na místě D2 doporučuji použít schottkyho diodu přednostně před univerzálními typy. Je rychlejší a má menší napěťový úbytek v propustném směru, což je důležité zejména při použití integrovaných obvodů řady HC (viz dále).

Protože pro zápis dat do LCD modulu postačuje jen šest paralelních výstupů QA až QF obvodu IO1, lze zbývající dva výstupy využít pro řízení kontrastu zobrazení LCD. Jedná se o dvoubitovou regulaci, kontrast je tedy možné řídit ve čtyřech stupních. Kontrast se nastavuje analogově napětím na vstupu VO LCD modulu. Potřebné napětí je vytvářeno odporovým děličem R3/R4. K jeho středu jsou připojeny pomocné odpory R5 a R6, které řídící napětí zvyšují nebo snižují podle toho, zda jsou výstupy invertorů IO2A a IO2C na vysoké nebo nízké úrovni. Výsledné napětí je filtrováno kondenzátorem C3. Kontrast LCD je nepřímo úměrný řídícímu napětí VO, proto logická nula na vstupech IO2A a IO2C kontrast snižuje a logická jednička jej naopak zvyšuje. Vzorce pro přibližný výpočet napětí řídícího kontrast jsou uvedeny na obrázku s průběhem MKO.

Resetovací signál pro IO1 je po připojení napájecího napětí generován článkem R1/C1. Dioda D1 urychluje vybití kondenzátoru C1 po odpojení napájecího napětí. Resetovací obvod není povinný, pro naprostou většinu aplikací stačí resetovací vstup R obvodu IO1 připojit přímo na napájecí napětí VCC, protože jednak jsou nulovány jen vstupní registry IO1 (viz vnitřní schéma obvodu) a na jeho výstupech QA až QH zůstávají po připojení napájení vždy náhodné úrovně a za druhé je beztak nutné umístit hned na začátek obslužného software převodníku inicializační sekvenci obsluhy LCD modulu, která vloží na výstupy IO1 definované hodnoty dat pro LCD modul.

Celý převodník včetně LCD modulu je napájen běžným stabilizovaným napětím 5 voltů filtrovaným kondenzátory C6 a C7. Keramický kondenzátor C6 by měl být umístěn co nejblíže k napájecím vývodům IC1.
 

Použité součástky


Na žádnou součástku nejsou kladeny zvláštní nároky, lze použít běžný sortiment komerčních výrobních řad. Obvody IO1 a IO2 mohou být libovolného provedení (LS, ALS, HC, HCT, ACT …), musí se však brát v úvahu jejich různé napěťové úrovně odpovídající logickým hodnotám 0 a 1. Při změně typu IO1 a IO2 bude zcela jistě třeba změnit hodnoty součástek C2 a R2 v monostabilním klopném obvodu. Jejich hodnoty  jsou současně závislé na kmitočtu hodinového signálu “CLOCK”, jak bylo uvedeno výše. Kmitočet hodinového signálu rovněž rozhoduje o velikost kapacity kondenzátorů C4 a C5 (jsou-li použity). Příliš velká kapacita kondenzátorů C4, C5 může signál znehodnotit až k nepoužitelnosti a naopak kondenzátory s příliš malou kapacitou se vůbec neuplatní. Hodnota odporů R3 až R6 řídících kontrast zobrazení je do jisté míry také ovlivňována provedením obvodu IC2, podstatně více však typem LCD modulu. Bohužel, každý typ LCD modulu má úplně jinou závislost skutečného kontrastu zobrazení na řídícím napětí. Při stejně velkém napětí na vstupu VO může jeden modul úplně zčernat a na druhém nebude naopak vidět nic. Zde není možné dát univerzální návod, hodnoty odporů R3 až R6 bude třeba odzkoušet individuálně pro daný typ LCD modulu. 
Hodnoty C2 a R2 uvedené ve schématu platí pro IO2 typu HCT a kmitočet signálu “CLOCK” 1,333 MHz, který odpovídá kmitočtu oscilátoru 16 MHz řídícího mikroprocesoru z řady xC51.

 

 

Hodnoty odporů R3 až R6 uvedené ve schématu byly odzkoušeny pro šestnáctiznakový dvouřádkový LCD modul typu MC1602J-TRV (jeden z nejlevnějších modulů dodávaný firmou GM Electronic). Volbu hodnot odporů pro jiné typy LCD modulů usnadňuje soubor pro tabulkový kalkulátor MS Excel-97 a vyšší verze, který je k dispozici na internetu.
 

Mechanická konstrukce


Převodník je výhodné konstruovat na spojové desce stejné velikosti jako má LCD modul a výstupy pro LCD umístit na přesně stejná místa, kde má odpovídající vývody i LCD modul. Oba bloky pak lze jednoduše mechanicky spojit distančními sloupky a rozebíratelné elektrické propojení realizovat pomocí dutinkových a kolíkových lišt.

 

 





Připojení k mikroprocesoru a obsluha


Již bylo zmíněno, že převodník je vhodný pro spolupráci s mikroprocesory řady xC51. UART těchto procesorů může být nastaven do čtyř odlišných pracovních módů pomocí bitů SM0 [9Fh] a SM1 [9Eh] registru SCON [98h]. Pro řízení převodníku je třeba zvolit mód 0 (SM0 = SM1 = 0), ve kterém se UART chová jako posuvný registr. Při vysílání datového byte z registru SBUF [99h] jsou pak na portu P3.0 s alternativní funkcí RxD k dispozici sériová data a na portu P3.1 s alternativní funkcí TxD synchronizační hodinový signál. Data se přivádějí na vstup “DATA” a hodinový signál na vstup “CLOCK” sériového převodníku. Rychlost komunikace a tedy i kmitočet hodinového signálu jsou odvozeny přímo od oscilátoru mikroprocesoru vydělením jeho kmitočtu dvanácti a nelze je programově ovlivnit.

 

 

Při zápisu dat do LCD modulu je nutné dodržet předepsané časování podle obrázku Mikroprocesor s převodníkem proto musí vykonat pro zápis jedné instrukce do LCD modulu šest cyklů přenosu dat, vždy po jednom byte. V prvním cyklu je na vstupy DB4-DB7 LCD modulu přiveden vyšší nibble datového byte, na vstup RS potřebná úroveň a na vstup E logická nula. V druhém cyklu zůstávají vstupy DB4-DB7 a RS stejné a na vstup E je přivedena logická jednička. V třetím cyklu zůstávají vstupy DB4-DB7 a RS stále stejné, na vstup E je přivedena logická nula. Čtvrtý cyklus je obdobný prvnímu, ale na vstupy DB4-DB7 je přiveden nižší nibble datového byte. Pátý cyklus je shodný s druhým a šestý se třetím. Bity pro řízení kontrastu zobrazení QH, QG musí být přenášeny v každém cyklu stejné (není-li ovšem právě během přenosu dat požadována změna kontrastu). Pokud je třeba pouze změnit kontrast bez zápisu nových dat do řadiče LCD, stačí přenést jediný byte (v jednom cyklu), ve kterém bity QH, QG určují požadovaný kontrast a bit E je na nízké úrovni. Ostatní bity přenášeného byte jsou v tomto případě nevýznamné.

Předem upozorňuji případné experimentátory, že není vhodné vynechávat druhý a čtvrtý cyklus přenosu dat a logickou jedničku na vývod E přivádět současně s daty a RS. To koliduje s předepsaným časováním, doba tAS by pak místo požadovaných 140 ns byla nulová. Pro některé LCD moduly to fungovat může, ale jiné se budou chovat naprosto nedefinovaně.
Na časování instrukcí zápisu do LCD modulu je závislý maximální možný kmitočet hodinového signálu. Nejkritičtější je doba tPWEH, která koresponduje s druhým a pátým cyklem přenosu dat. Jeden přenosový cyklus sestává z osmi period hodinového signálu a jednoho kyvu monostabilního obvodu R2/C2/D2/IC2/D. Jeho trvání by se mělo rovnat asi dvěma až čtyřem periodám hodinového signálu. Celková doba jednoho přenosového cyklu (= tPWEH, tj. minimálně 450 ns) tedy nesmí být kratší než dvanáct period hodinového signálu, z toho vychází maximální kmitočet hodinového signálu 26,7 MHz. To je hodnota dostatečně velká umožňující s rezervou použití libovolného krystalu v obvodu oscilátoru mikroprocesoru řady xC51 (teoreticky až do 320 MHz). Směrem dolů není volba kmitočtu hodinového signálu nijak omezena, LCD moduly mohou pracovat i ve statickém režimu. Ovšem při extrémně nízkých kmitočtech pak vycházejí nepoužitelné hodnoty časovacích součástek monostabilního obvodu.

Příklad připojení převodníku s LCD modulem k mikroprocesoru typu 89C2051. Toto zapojení je také vhodné pro testování funkcí převodníku pomocí demonstračního programu “LCD_DEMO” (viz dále) a pro vývoj a zkoušení vlastních způsobů programového řízení převodníku.

Závěrem


Zapojení poskytuje mnoho možností spolupráce s různými typy LCD modulů a různými řídícími procesory, mění se pouze hodnoty použitých součástek. Všechny varianty převodníku ale mají společný způsob ovládání, jehož koncepci popisovala předchozí kapitola. Průměrný programátor si jistě snadno vytvoří vlastní software pro řízení převodníku, pro začátečníky je k dispozici archiv s příklady softwarových utilit a krátkým demonstračním programem “LCD_DEMO” pro řídící mikroprocesor. Archiv dále obsahuje soubor tabulkového kalkulátoru MS Excel určený pro výpočet hodnot odporů řídících kontrast zobrazení LCD.

 

 

Námětem pro další rozšíření možností převodníku může být např. pouze dvoustavové řízení kontrastu zobrazení LCD výstupem QH IO1 a využití výstupu QG IO1 pro řízení jasu LED u podsvícených LCD pomocí PWM regulace …
 

DOWNLOAD a odkazy


 


Jan David
Nedomice 10.11.2001
Hodnocení článku: