Sisukord:

Staatilise LCD -draiveri loomine I²C liidesega: 12 sammu
Staatilise LCD -draiveri loomine I²C liidesega: 12 sammu

Video: Staatilise LCD -draiveri loomine I²C liidesega: 12 sammu

Video: Staatilise LCD -draiveri loomine I²C liidesega: 12 sammu
Video: 30 товаров для автомобиля с Алиэкспресс, автотовары №22 2024, Juuli
Anonim
Kuidas teha staatilist LCD -draiverit I²C liidesega
Kuidas teha staatilist LCD -draiverit I²C liidesega

Vedelkristallekraane (LCD) kasutatakse laialdaselt kaubanduslikes ja tööstuslikes rakendustes nende heade visuaalsete omaduste, odavate hindade ja väikese energiatarbimise tõttu. Need omadused muudavad vedelkristallekraani standardlahenduseks patareitoitega seadmetele, nagu kaasaskantavad instrumendid, kalkulaatorid, kellad, raadiod jne.

LCD -ekraanil kuvatava nõuetekohaseks juhtimiseks peab vedelkristallekraani elektrooniline draiver genereerima LCD -tihvtidele sobiva pinge lainekuju. Lainekujud peaksid olema vahelduvvoolu (AC), sest alalisvoolu (DC) pinged kahjustavad seadet jäädavalt. Sobiv draiver tooks need signaalid LCD -ekraanile minimaalse energiatarbega.

Olemas on kahte tüüpi vedelkristallekraane, staatiline, millel on ainult üks tagaplaat ja üks tihvt üksikute segmentide juhtimiseks, ja multipleksitud, mitme tahvli ja iga tihvtiga ühendatud mitu segmenti.

Selles juhendis esitatakse ühe staatilise LCD -draiveri disain koos seadmega SLG46537V GreenPAK ™. Disainitud LCD -draiver sõidaks kuni 15 LCD -segmenti, kasutades toiteallikast mõningaid mikromeetreid voolu ja pakkudes juhtimiseks I²C -liidest.

Järgmistes jaotistes näidatakse:

● põhiteadmised LCD -ekraanide kohta;

● SLG46537V GreenPAK LCD draiveri detailne disain;

● kuidas juhtida seitsme segmendi, neljakohalist staatilist vedelkristallekraani kahe GreenPAK-seadmega.

Allpool kirjeldasime samme, mida on vaja mõista, kuidas lahendus on programmeeritud I²C liidesega staatilise LCD draiveri loomiseks. Kui aga soovite lihtsalt programmeerimise tulemust saada, laadige GreenPAKi tarkvara alla, et vaadata juba valminud GreenPAK disainifaili. Ühendage GreenPAK arenduskomplekt arvutiga ja vajutage programmi, et luua staatiline LCD -draiver koos I²C liidesega.

1. samm: vedelkristallkuvarite põhitõed

Vedelkristallkuvarite põhitõed
Vedelkristallkuvarite põhitõed
Vedelkristallkuvarite põhitõed
Vedelkristallkuvarite põhitõed

Vedelkristallkuvarid (LCD) on tehnoloogia, mis ei kiirga valgust, see juhib ainult välise valgusallika läbipääsu. See väline valgusallikas võib olla saadaval olev peegeldava ekraaniga ümbritsev valgus või taustvalgustuse või lambi valgus läbilaskva ekraaniga. LCD-ekraanid koosnevad kahest klaasplaadist (ülemine ja alumine), nende vahel on õhuke kiht vedelkristalle (LC) ja kaks valguspolarisaatorit (rakenduse märkus AN-001-LCD-tehnoloogia põhitõed, Hitachi, rakenduse märkus AN-005-ekraan Režiimid, Hitachi). Polarisaator on valguse elektromagnetvälja valgusfilter. Polarisaatorist läbivad ainult valguskomponendid õiges elektromagnetvälja suunas, samas kui teised komponendid on blokeeritud.

Vedelkristall on orgaaniline materjal, mis pöörab valguse elektromagnetvälja 90 kraadi või rohkem. Kui aga LC -le rakendatakse elektrivälja, ei pööra see valgust enam. Läbipaistvate elektroodide lisamisega ekraani ülemisse ja alumisse klaasi on võimalik juhtida, millal valgus läbib ja millal mitte, elektrivälja välise allikaga. Joonis 1 (vt rakenduse märkus AN-001-LCD-tehnoloogia põhitõed, Hitachi) illustreerib seda toimingukontrolli. Joonisel 1 on ekraan pime, kui puudub elektriväli. Seda seetõttu, et mõlemad polarisaatorid filtreerivad valgust samas suunas. Kui polarisaatorid on ortogonaalsed, on ekraan elektrivälja olemasolul pime. See on peegeldavate kuvarite puhul kõige tavalisem olukord.

Minimaalset elektrivälja ehk pinget LCD juhtimiseks nimetatakse sisselülitatud läveks. LC -d mõjutab ainult pinge ja LC -materjalis pole peaaegu üldse voolu. LCD -elektroodid moodustavad väikese mahtuvuse ja see on juhi ainus koormus. See on põhjus, miks vedelkristallekraan on väikese energiatarbega seade visuaalse teabe kuvamiseks.

Siiski on oluline märkida, et vedelkristallekraan ei saa alalisvoolu (DC) pingeallikaga liiga kaua töötada. Alalispinge rakendamine põhjustab LC-materjalis keemilisi reaktsioone, kahjustades seda jäädavalt (rakendusmärkus AN-001-LCD-tehnoloogia põhitõed, Hitachi). Lahenduseks on vahelduvpinge (vahelduvpinge) rakendamine LCD -elektroodidele.

Staatilistes LCD -ekraanides on ühe klaasi sisse ehitatud tagaplaadi elektrood ja teise klaasi asetatakse üksikud LCD -segmendid ehk pikslid. See on üks lihtsamaid LCD -ekraane ja parima kontrastsusega. Seda tüüpi ekraan nõuab aga tavaliselt iga segmendi juhtimiseks liiga palju tihvte.

Üldjuhul saadab juhi kontroller tagaplaadi jaoks ruudukujulise kella signaali ja esitasandi segmentide kella signaali koos. Kui tagaplaadi kell on segmendikellaga ühes faasis, on ruutkeskmine pinge mõlema tasapinna vahel null ja segment on läbipaistev. Vastasel juhul, kui RMS -pinge on LCD sisselülituslävest kõrgem, muutub segment tumedaks. Tagaplaadi sisse- ja väljalülitatud segmendi lainekujud on näidatud joonisel 2. Nagu jooniselt näha, on sisselülitatud segment tagumise tasapinna signaali suhtes väljaspool faasi. Väljalülitatud segment on tagaplaadi signaali suhtes faasis. Madala hinnaga ja väikese võimsusega näidikute jaoks võib rakendatud pinge olla vahemikus 3 kuni 5 volti.

LCD taustplaadi ja segmentide kella signaal on tavaliselt vahemikus 30 kuni 100 Hz, mis on minimaalne sagedus, et vältida LCD -ekraanil visuaalset värelust. Kogu süsteemi energiatarbimise vähendamiseks välditakse kõrgemaid sagedusi. LCD -ekraanist ja draiveritest koosnev süsteem tarbiks mikroamperite järjekorras vähe voolu. See muudab need ideaalselt sobivaks väikese energiatarbega ja aku toiteallikaks.

Järgmistes osades on üksikasjalikult esitatud GreenPAK -seadmega LCD -staatilise draiveri disain, mis võib genereerida tagaplaadi kella signaali ja individuaalse segmendi kella signaali kaubandusliku LCD -ekraani jaoks.

2. samm: GreenPAK disaini põhiskeem

GreenPAK disaini põhiskeem
GreenPAK disaini põhiskeem
GreenPAK disaini põhiline plokkskeem
GreenPAK disaini põhiline plokkskeem

GreenPAK -i konstruktsiooni illustreeriv plokkskeem on näidatud joonisel 3. Kavandi põhiplokid on liides I²C, väljundsegmentide draiver, sisemine ostsillaator ja tagaplaadi kellaallika valija.

I²C liideseplokk juhib iga üksiku segmendi väljundit ja LCD -ekraani tagaplaadi kellaallikat. I²C liideseplokk on ainus süsteemi sisend segmendi väljundi juhtimiseks.

Kui sisemise segmendi juhtjoon on seatud (kõrge), on vastav LCD -segment tume läbipaistmatu. Kui sisemise segmendi juhtliini lähtestatakse (madal tase), on vastav LCD -segment läbipaistev.

Iga sisemise segmendi juhtimisliin on ühendatud väljunddraiveriga. Väljundsegmentide draiveriplokk genereerib läbipaistvate segmentide jaoks faasisiseselt kella signaali, mis on seotud taustplaadi kellaga. Pimedate segmentide puhul on see signaal väljaspool faasi, mis on seotud tagaplaadi kellaga.

Taustaplaadi kellaallikas on valitud ka I²C liidesega. Kui on valitud sisemise tagaplaadi kellaallikas, lülitatakse sisemine ostsillaator sisse. Sisemine ostsillaator genereerib taktsageduse 48 Hz. Seda signaali kasutab väljundsegmendi draiveriplokk ja see on adresseeritud tagaplaadi kella väljundpoldile (GreenPAK tihvt 20).

Kui on valitud välise tagaplaadi kellaallikas, lülitatakse sisemine ostsillaator välja. Väljundsegmendi draiveri viide on välise tagaplaadi kella sisend (GreenPAK pin 2). Sel juhul saab tagaplaadi kella väljundnõela kasutada täiendava segmendi juhtjoonena, segmendina OUT15.

Samal I²C liinil saab kasutada rohkem kui ühte GreenPAK -seadet. Selleks tuleb iga seade programmeerida erineva I²C -aadressiga. Sel viisil on võimalik laiendada juhitavate LCD -segmentide arvu. Üks seade on konfigureeritud genereerima tagaplaadi kellaallikat, juhtides 14 segmenti, ja teised on konfigureeritud kasutama välist tagaplaadi kellaallikat. Iga täiendav seade võib sel viisil sõita rohkem kui 15 segmenti. Samale I²C liinile on võimalik ühendada kuni 16 seadet ja seejärel on võimalik juhtida kuni 239 LCD -segmenti.

Selles juhendis kasutatakse seda ideed kahe GreenPAK -seadmega LCD -ekraani 29 segmendi juhtimiseks. Seadme pinout -funktsionaalsus on kokku võetud tabelis 1.

3. samm: kujundage praegune tarbimine

Selle disaini oluline mure on praegune tarbimine, mis peaks olema võimalikult väike. GreenPAK -seadme vaikne vool on 0,75 µA 3,3 V toiteallika korral ja 1,12 µA 5 V toite korral. Sisemise ostsillaatori voolutarve on vastavalt 3,6 V ja 5 V toiteallika korral 7,6 µA ja 8,68 µA. Eeldatavasti ei suurene lülituskaodest tulenev voolutarve märkimisväärselt, sest see disain töötab madala taktsagedusega. Selle konstruktsiooni hinnanguline maksimaalne vool on väiksem kui 15 µA, kui sisemine ostsillaator on sisse lülitatud, ja 10 µA, kui sisemine ostsillaator on välja lülitatud. Mõlemas olukorras tarbitud mõõdetud vool on näidatud jaotises Testi tulemused.

Samm 4: GreenPAK -seadme skeem

GreenPAK seadme skeem
GreenPAK seadme skeem

GreenPAK tarkvaras kavandatud projekt on näidatud joonisel 4. Seda skeemi kirjeldatakse, kasutades võrdlusena põhilisi plokkskeeme.

Samm: I²C liides

I²C liides
I²C liides
I²C liides
I²C liides

I²C liideseplokki kasutatakse seadme tööjuhtimise peamise juhtplokina. Blokeeritud ühenduste ja konfigureeritud atribuutide lähedane vaade on näidatud joonisel 5.

See plokk on ühendatud PIN 8 ja PIN 9 -ga, mis on vastavalt I²C SCL ja SDA tihvtid. Seadme sees on I²C plokil 8 virtuaalset sisendit. Iga virtuaalse sisendi algväärtus on näidatud atribuutide aknas (vt joonis 5). Segmendi juhtjoontena kasutatakse virtuaalseid sisendeid OUT0 kuni OUT6. Need juhtjooned vastavad segmendi väljundile 1 kuni segmendi väljundile 7 ja on ühendatud segmendi väljunddraiveriga. Virtuaalsisendit OUT7 kasutatakse tagaplaadi kellaallika valija rea juhtnumbrina võrgunimega BCKP_SOURCE. Seda võrku kasutavad disaini teised plokid. I²C juhtkood on konfigureeritud projekti iga IC jaoks erineva väärtusega.

Asünkroonse oleku masina (ASM) väljundis on saadaval veel 8 sisemise segmendi juhtliini, nagu on näidatud ülaltoodud joonisel 6. Segmendi väljundrida 8 (atribuutide aknas SEG_OUT_8) kuni segmendi väljundrea 15 (SEG_OUT_15) kaudu juhitakse ASM -väljundit olekus 0. ASM -plokis pole ühtegi oleku üleminekut, see on alati olekus 0. ASM -i väljundid on ühendatud segmendi väljunddraiveritega.

Segmendi väljunddraiverid genereerivad seadme väljundsignaali.

6. toiming: väljundsegmendi draiver

Väljundsegmendi draiver on sisuliselt otsingutabel (LUT), mis on konfigureeritud XOR -i loogikaportina. Iga väljundsegmendi jaoks peab see olema XOR -port, mis on ühendatud segmendi juhtliini ja tagaplaadi kellaga (BCKP_CLOCK). XOR-port vastutab faasisiseste ja faasiväliste signaalide genereerimise eest väljundsegmentidele. Kui segmendi juhtjoon on kõrgel tasemel, pöörab XOR-pordi väljund tagumise plaadi kella signaali ümber ja genereerib segmendi tihvtile faasivälise signaali. Pinge erinevus LCD tagaplaadi ja LCD -segmendi vahel määrab sel juhul LCD -segmendi tumedaks segmendiks. Kui segmendi juhtjoon on madalal tasemel, järgib XOR-pordi väljund tagaplaadi kella signaali ja genereerib seejärel segmendi tihvti jaoks faasisignaali. Kuna sel juhul ei rakendata pinget LCD tagaplaadi ja segmendi vahele, on segment valguse suhtes läbipaistev.

7. samm: sisemine ostsillaator ja tagaplaadi kella allika juhtimine

Sisemine ostsillaator ja tagaplaadi kella allika juhtimine
Sisemine ostsillaator ja tagaplaadi kella allika juhtimine

Sisemist ostsillaatorit kasutatakse siis, kui I²C liidese signaal BCKP_CLOCK on seatud kõrgele tasemele. Kellaallika juhtimisskeemi lähivaade on näidatud ülaltoodud joonisel 7.

Ostsillaator on konfigureeritud 25 kHz RC sageduseks, kõrgeima väljundjagajaga, mis on saadaval ostsillaatori OUT0 (8/64) juures. Kogu konfiguratsiooni on näha joonisel 7 näidatud omaduste aknas. Sel viisil genereerib sisemine ostsillaator taktsageduse 48 Hz.

Ostsillaator on aktiivne ainult siis, kui BCKP_SOURCE signaal on kõrgel tasemel koos POR -signaaliga. See juhtimine toimub nende kahe signaali ühendamisega 4-L1 LUT-i NAND-porti. Seejärel ühendatakse NAND -i väljund ostsillaatori väljalülitamise juhtnupu sisendiga.

Signaal BCKP_SOURCE juhib 3-L10 LUT-iga ehitatud MUX-i. Kui BCKP_SOURCE signaal on madalal tasemel, pärineb tagaplaadi kellaallikas PIN2 -st. Kui see signaal on kõrgel tasemel, pärineb tagaplaadi kellaallikas sisemisest ostsillaatorist.

8. samm: tagaplaadi kella väljund või segmendi 15 väljundpinna juhtimine

Tagaplaani kella väljund või segmendi 15 väljundpoldi juhtimine
Tagaplaani kella väljund või segmendi 15 väljundpoldi juhtimine

Selle kujunduse tihvtil 20 on topeltfunktsioon, mis sõltub valitud tagaplaadi kellaallikast. Selle tihvti tööd juhitakse ühe 4-sisendilise LUT-iga, nagu on näidatud joonisel 8. 4-bitise LUT-i puhul on võimalik seostada XOR-pordi töö väljundiga MUX. Kui BCKP_SOURCE signaal on kõrgel tasemel, järgib LUT väljund sisemist ostsillaatorikella. Seejärel töötab tihvt 20 tagaplaadi kella väljundina. Kui BCKP_SOURCE signaal on madalal tasemel, on LUT -väljund XOR -operatsioon SEG_OUT_15 vahel ASM -väljundist ja tagaplaadi kella signaalist. Selle toimingu tegemiseks mõeldud 4-bitine LUT-konfiguratsioon on näidatud joonisel 8.

9. samm: LCD -süsteemi prototüüp

LCD -süsteemi prototüüp
LCD -süsteemi prototüüp
LCD -süsteemi prototüüp
LCD -süsteemi prototüüp

GreenPAK disainilahenduse kasutamise demonstreerimiseks pandi leivaplaadile kokku LCD -süsteemi prototüüp. Prototüübi puhul juhivad seitsme segmendi 4-kohalist staatilist LCD-d kaks DIP-plaadil olevat GreenPAK-seadet. Üks seade (IC1) kasutab LCD -tagaplaadi juhtimiseks sisemist ostsillaatorit ja teine seade (IC2) kasutab seda signaali tagaplaadi sisendviidena. Mõlemat IC -d juhitakse I²C liidese kaudu STM32F103C8T6 mikrokontrolleri (MCU) abil minimaalses arendusplaadis.

Joonisel 9 on kujutatud kahe GreenPAK IC, LCD -ekraani ja MCU -plaadi vaheliste ühenduste skeem. Skeemil juhib GreenPAK -seade U1 (IC1) viitega LCD -numbrit üks ja kaks (LCD vasakul küljel). GreenPAK -seade U2 (IC2) viitega juhib LCD numbreid kolm ja neli, lisaks COL -segment (LCD paremal). Mõlema seadme toiteallikas pärineb mikrokontrolleri arendusplaadil olevast regulaatorist. Iga GreenPAK -seadme toiteallika ja VDD -kontaktide vahele on lisatud kaks eemaldatavat džemprit voolu mõõtmiseks multimeetriga.

Kokkupandud prototüübi pilt on näidatud joonisel 10.

10. samm: LCD -juhtimise I²C käsud

I²C käsud LCD juhtimiseks
I²C käsud LCD juhtimiseks
I²C käsud LCD juhtimiseks
I²C käsud LCD juhtimiseks
I²C käsud LCD juhtimiseks
I²C käsud LCD juhtimiseks

Leivalaual olevad kaks GreenPAK -seadet on programmeeritud sama kujundusega, välja arvatud kontrollbaidi väärtuse järgi. IC1 juhtbait on 0 (I²C aadress 0x00), samas kui I²C juhtbait on 1 (I²C aadress 0x10). Ekraanisegmentide ja seadme draiverite vahelised ühendused on kokku võetud ülaltoodud tabelis.

Ühendused valiti sel viisil, et luua selgem skeem ja lihtsustada leivaplaadi ühenduste kokkupanekut.

Segmendi väljundit kontrollitakse I²C kirjutamiskäskudega I²C virtuaalsisenditele ja ASM -väljundregistritele. Nagu on kirjeldatud rakenduse märkuses AN-1090 Simple I²C IO Controllers with SLG46531V (vt Application Note AN-1090 Simple I²C IO Controllers with SLG46531V, Dialog Semiconductor), on I²C kirjutamiskäsk üles ehitatud järgmiselt:

● Start;

● Juhtbait (R/W bit on 0);

● Wordi aadress;

● Andmed;

● Peatu.

Kõik I²C kirjutuskäsklused tehakse Wordi aadressile 0xF4 (I²C virtuaalsed sisendid) ja 0xD0 (oleku 0 ASM -väljund). Käsud, mis tuleb kirjutada IC1 -sse ja juhtida LCD -numbreid 1 ja 2, on kokku võetud tabelis 3. Käsujärjestuses on avatud sulg „[“tähistab käivitussignaali ja suletud sulg „]” tähistab stopp -signaali.

Kaks ülaltoodud baiti kontrollivad LCD -numbri 1 ja numbri 2 segmente koos. Siin on lähenemisviisiks kasutada iga numbri jaoks tarkvaras individuaalset otsingutabelit (LUT), arvestades mõlema baidi segmente. Otsingutabeli baitväärtused tuleks segada bitite VÕI operatsiooni abil ja seejärel saata IC -le. Tabelis 4 on näidatud bait0 ja bait1 väärtus iga numbrilise väärtuse kohta, mis tuleks kirjutada igale kuvari numbrile.

Näiteks selleks, et kirjutada number 1 numbrisse 3 ja numbrisse 2 numbrisse 4, on bait0 0xBD (0x8D bitti VÕI 0xB0) ja bait 1 on 0x33 (0x30 bitti VÕI 0x03).

IC2 -sse kirjutamise käsk ja numbrite 3 ja 4 juhtimine on kirjeldatud tabelis 5.

Numbrite 3 ja 4 juhtimisloogika on nagu numbrite 1 ja 2 juhtimine. Tabelis 6 on toodud nende kahe numbri LUT.

IC2 erinevus on COL segment. Seda segmenti juhib bait1. Selle segmendi tumedaks seadistamiseks tuleks teha baiti1 ja väärtuse 0x40 vahel bitine VÕI toiming.

11. samm: LCD -testi I²C käsud

I²C LCD -testi käsud
I²C LCD -testi käsud

LCD -testi jaoks töötati MCU -plaadi jaoks välja C -keeles püsivara. See püsivara saadab käskude jada mõlemale leivalaua IC -le. Selle püsivara lähtekood on jaotises Lisa. Kogu lahendus töötati välja Atollic TrueStudio abil STM32 9.0.1 IDE jaoks.

Käskude jada ja ekraanil kuvatud vastavad väärtused on kokku võetud ülaltoodud tabelis 7.

12. samm: testitulemused

Testi tulemused
Testi tulemused
Testi tulemused
Testi tulemused

Prototüübi test koosneb kuvari väärtuste kontrollimisest pärast MCU käsku ja voolu neeldumise mõõtmisest iga IC poolt töö ajal.

Ekraanipildid iga käsuväärtuse kohta on toodud ülaltoodud tabelis 8.

Iga seadme voolutugevust mõõdeti multimeetriga, selle madalaim vooluvahemik 200 µA. Tabel 9 on näidatud iga seadme mõõdetud voolu pildid käivitamise ja normaalse töö ajal.

Järeldus ja tulemuste arutelu

Esitati GreenPAK -seadmega väikese võimsusega staatilise LCD -draiveri disain. See disain näitab selgelt GreenPAK -seadmete ühte suurimat omadust: nende vähest vaikivat voolu. Kuna GreenPAK-seadmed on riistvarapõhine lahendus, on võimalik töötada madala sagedusega, antud juhul 48 Hz. MCU -põhine lahendus nõuab suuremat töösagedust isegi perioodiliselt lühikese aja jooksul ja võtab siis rohkem energiat. Ja kui võrrelda GreenPAK -seadet CPLD -ga (kompleksne programmeeritav loogikaseade), on selge, et tavaliselt on CPLD puhkevool suurem kui 20 µA.

Huvitav on märkida, et seda disaini saab hõlpsasti muuta, et see vastaks paremini konkreetse projekti nõuetele. Hea näide on segmendi juhtelementide pistikupesa. Neid saab hõlpsasti muuta, et lihtsustada trükkplaati ja tarkvaraarendust samal ajal. See on huvitav omadus, kui seadet võrrelda riiulil oleva ASIC-iga (Application Specific Integrated Circuit). Tavaliselt on ASIC -id kavandatud nii, et need sobiksid paljude rakendustega ja enne operatsiooni tuleks IC -i nõuetekohaseks konfigureerimiseks kirjutada esialgne tarkvara. Konfigureeritav seade võiks olla loodud käivitamiseks pärast sisselülitamist. Sel viisil on võimalik lühendada IC esialgse konfigureerimise tarkvaraarendusaega.

Rakenduse lähtekoodi leiate siit A lisast.

Soovitan: