Innehållsförteckning:

Hur man gör en statisk LCD -drivrutin med I²C -gränssnitt: 12 steg
Hur man gör en statisk LCD -drivrutin med I²C -gränssnitt: 12 steg

Video: Hur man gör en statisk LCD -drivrutin med I²C -gränssnitt: 12 steg

Video: Hur man gör en statisk LCD -drivrutin med I²C -gränssnitt: 12 steg
Video: HELA NATTLEN MED POLTERGEIST I LÄGENHETSBYGGAN filmade jag den läskiga aktiviteten. 2024, November
Anonim
Hur man gör en statisk LCD -drivrutin med I²C -gränssnitt
Hur man gör en statisk LCD -drivrutin med I²C -gränssnitt

Liquid Crystal Displays (LCD) används i stor utsträckning för kommersiella och industriella applikationer på grund av deras goda visuella egenskaper, låga kostnader och låg strömförbrukning. Dessa egenskaper gör LCD-skärmen till standardlösningen för batteridrivna enheter, som bärbara instrument, räknare, klockor, radioer etc.

För att korrekt kontrollera vad LCD -skärmen visar måste LCD: s elektroniska drivrutin generera lämpliga spänningsvågformer till LCD -stift. Vågformerna bör vara växelström (växelström) eftersom DC (likström) spänningar permanent skadar enheten. Lämplig drivrutin skulle källa dessa signaler till LCD med ett minimum av strömförbrukning.

Det finns två typer av LCD -skärmar, den statiska, med bara ett bakplan och en stift för individuell segmentkontroll och, Multiplexed, med flera bakplan och flera segment anslutna för varje stift.

Denna instruktionsbok presenterar utformningen av en statisk LCD -drivrutin med SLG46537V GreenPAK ™ -enhet. Den designade LCD -drivrutinen skulle driva upp till 15 LCD -segment med hjälp av några mikroampere ström från strömförsörjningen och erbjuder ett I²C -gränssnitt för kontroll.

I följande avsnitt kommer att visas:

● grundläggande kunskapsinformation om LCD -skärmar;

● SLG46537V GreenPAK LCD -drivrutinsdesign i detalj;

● hur man kör en sjusegment, 4-siffrig statisk LCD med två GreenPAK-enheter.

Nedan beskrivs stegen som behövs för att förstå hur lösningen har programmerats för att skapa den statiska LCD -drivrutinen med I²C -gränssnitt. Men om du bara vill få resultatet av programmeringen, ladda ner GreenPAK -programvara för att se den redan färdiga GreenPAK -designfilen. Anslut GreenPAK Development Kit till din dator och tryck på programmet för att skapa den statiska LCD -drivrutinen med I²C -gränssnitt.

Steg 1: Grunderna i flytande kristallskärmar

Grunderna i flytande kristallskärmar
Grunderna i flytande kristallskärmar
Grunderna i flytande kristallskärmar
Grunderna i flytande kristallskärmar

Liquid Crystal Displays (LCD) är en teknik som inte avger ljus, den styr bara hur en extern ljuskälla passerar igenom. Denna externa ljuskälla kan vara tillgängligt omgivande ljus, i den reflekterande displaytypen eller ljuset från en bakgrundsbelysning eller en lampa, i transmissiv displaytyp. LCD-skärmar är konstruerade med två glasskivor (övre och nedre), ett tunt lager flytande kristall (LC) mellan dem och två ljuspolarisatorer (Application Note AN-001-Basics of LCD Technology, Hitachi, Application Note AN-005-Display Modes, Hitachi). Polarisatorn är ett ljusfilter för det ljuselektromagnetiska fältet. Endast ljuskomponenterna i rätt elektromagnetisk fältriktning passerar genom polarisatorn, medan de andra komponenterna är blockerade.

Flytande kristallen är ett organiskt material som roterar ljusets elektromagnetiska fält 90 grader eller mer. Men när ett elektriskt fält appliceras på LC roterar det inte längre ljuset. Med tillägg av transparenta elektroder i det övre och nedre displayglaset är det möjligt att styra när ljuset passerar genom, och när inte, med en extern källa till det elektriska fältet. Figur 1 (se ansökningsanmärkning AN-001-Grunderna i LCD-teknik, Hitachi) ovan illustrerar denna manöverkontroll. I figur 1 är skärmen mörk när det inte finns något elektriskt fält. Detta beror på att båda polarisatorerna filtrerar ljuset i samma riktning. Om polarisatorerna är ortogonala blir displayen mörk när det elektriska fältet är närvarande. Detta är den vanligaste situationen för reflekterande skärmar.

Det minsta elektriska fältet, eller spänningen, för att styra LCD -skärmen kallas ON -tröskeln. LC påverkas bara av spänningen, och det finns knappast ström i LC -materialet. Elektroderna i LCD bildar en liten kapacitans och detta är den enda belastningen för en förare. Detta är anledningen till att en LCD -skärm är en enhet med låg effekt för att visa visuell information.

Det är dock viktigt att notera att LCD -skärmen inte kan fungera med en likströmskälla (DC) för länge. Applicering av en likspänning kommer att orsaka kemiska reaktioner i LC-material och skada det permanent (ansökningsanmärkning AN-001-Basics of LCD Technology, Hitachi). Lösningen är att applicera en alternativ spänning (AC) i LCD -elektroder.

På statiska LCD -skärmar är en bakplanelektrod inbyggd i ett glas och enskilda LCD -segment eller pixlar sätts i det andra glaset. Detta är en av de enklaste LCD -typerna och den med det bästa kontrastförhållandet. Denna typ av display kräver dock vanligtvis för många stift för att styra varje enskilt segment.

I allmänhet källar en förarstyrenhet en fyrkantvågssignal för bakplanet och en klocksignal för segmenten i det främre planet tillsammans. När bakplansklockan är i fas med segmentklockan är rot-medelkvadrat (RMS) spänningen mellan båda planen noll och segmentet är transparent. Annars, om RMS -spänningen är högre än LCD ON -tröskeln, blir segmentet mörkt. Vågformerna för bakplanet, på och av-segmentet visas i figur 2. Som kan ses i figuren är ON-segmentet ur fas i förhållande till bakplanssignalen. Off-segmentet är i fas i förhållande till bakplanssignalen. Den applicerade spänningen kan vara mellan 3 och 5 volt för lågkostnadsskärmar med låg effekt.

Klocksignalen för LCD: s bakplan och segment ligger vanligtvis i intervallet 30 till 100 Hz, lägsta frekvens för att undvika en visuell flimmereffekt på LCD. Högre frekvenser undviks för att minska strömförbrukningen i det övergripande systemet. Systemet som består av LCD och drivrutiner förbrukar lite ström i storleksordningen mikroampere. Detta gör dem perfekta för applikationer med låg effekt och batteri.

I följande avsnitt presenteras utförandet av en statisk LCD -drivrutin med GreenPAK -enhet som kan generera backplane -klocksignalen och den individuella segmentklocksignalen för en kommersiell LCD -skärm i detalj.

Steg 2: GreenPAK Design Basic Block Diagram

GreenPAK Design Basic Block Diagram
GreenPAK Design Basic Block Diagram
GreenPAK Design Basic Block Diagram
GreenPAK Design Basic Block Diagram

Ett blockschema som illustrerar GreenPAK -designen visas i figur 3. De grundläggande blocken i konstruktionen är I²C -gränssnittet, utsegmentdrivrutinen, den interna oscillatorn och bakplansklockans källväljare.

I²C -gränssnittsblocket styr varje enskilt segmentutgång och LCD -skärmens bakplansklocka. I²C -gränssnittsblocket är den enda systemingången för segmentutgångskontroll.

När den interna segmentstyrlinjen är inställd (hög nivå) är respektive LCD -segment mörkt ogenomskinligt. När den interna segmentstyrlinjen återställs (låg nivå) är respektive LCD -segment transparent.

Varje intern segmentstyrningsledning är ansluten till en utdatadrivrutin. Utgångssegmentets drivrutin kommer att generera en i-fas-klocksignal med relation till bakplansklockan för transparenta segment. För mörka segment är denna signal ur fas med förhållandet till bakplansklockan.

Bakplansklockans källa väljs också med I²C -gränssnitt. När den interna bakplansklockans källa väljs slås den interna oscillatorn på. Den interna oscillatorn genererar en klockfrekvens på 48Hz. Denna signal kommer att användas av drivsegmentet för utgående segment och är adresserat till bakplanets klockutgångsstift (GreenPAK -stift 20).

När extern bakplansklocka väljs, stängs den interna oscillatorn av. Utgångssegmentets drivrutinsreferens är den externa bakplansklockans ingång (GreenPAK -stift 2). I det här fallet kan bakplanets klockutgångsstift användas som en ytterligare segmentstyrlinje, segmentet OUT15.

Mer än en GreenPAK -enhet kan användas på samma I²C -linje. För att göra det måste varje enhet programmeras med en annan I²C -adress. På detta sätt är det möjligt att utöka antalet drivna LCD -segment. En enhet är konfigurerad för att generera bakplansklockans källa, som driver 14 segment, och den andra är konfigurerad för att använda en extern bakplansklocka. Varje ytterligare enhet kan driva fler 15 segment på detta sätt. Det är möjligt att ansluta upp till 16 enheter på samma I²C -linje och sedan är det möjligt att styra upp till 239 segment av en LCD.

I denna instruktionsbok används denna idé för att styra 29 segment av en LCD med 2 GreenPAK -enheter. Enhetens pinout -funktion sammanfattas i tabell 1.

Steg 3: Konstruera aktuell förbrukning

En viktig fråga i denna design är den nuvarande förbrukningen, som ska vara så låg som möjligt. GreenPAK -enhetens beräknade viloläge är 0,75 µA för 3,3 V matning och 1,12 µA för 5 V matning. Den interna oscillatorns strömförbrukning är 7,6 µA och 8,68 µA för 3,3 V respektive 5 V strömförsörjning. Det förväntas inte ha en signifikant ökning av strömförbrukningen från kopplingsförluster, eftersom denna design fungerar med en låg klockfrekvens. Den uppskattade maximala strömförbrukningen för denna konstruktion är lägre än 15 µA när den interna oscillatorn är på och 10 µA när den interna oscillatorn är avstängd. Den uppmätta strömmen som förbrukas i båda situationerna visas i avsnittstestresultat.

Steg 4: GreenPAK Device Schematic

GreenPAK Device Schematisk
GreenPAK Device Schematisk

Projektet som är utformat med GreenPAK -programvara visas i figur 4. Denna schema kommer att beskrivas med hjälp av de grundläggande blockdiagrammen som referens.

Steg 5: I²C -gränssnitt

I²C -gränssnitt
I²C -gränssnitt
I²C -gränssnitt
I²C -gränssnitt

I²C -gränssnittsblock används som huvudkontrollblock för enhetskontrollen. En närmare vy av blockanslutningarna och konfigurerade egenskaper visas i figur 5.

Detta block är anslutet till PIN 8 och PIN 9, det vill säga I²C SCL respektive SDA -stift. Inuti enheten erbjuder I²C -blocket 8 virtuella ingångar. Det initiala värdet för varje virtuell ingång visas i egenskapsfönstret (se figur 5). Virtuella ingångar från OUT0 till OUT6 används som segmentstyrlinjer. Dessa styrlinjer motsvarar segmentutgång 1 till segmentutgång 7 och är anslutna till segmentutmatningsdrivrutinen. Virtual Input OUT7 används som linjekontroll för klockkällan i bakplanet, med nätnamnet BCKP_SOURCE. Detta nät kommer att användas av andra block i designen. I²C -kontrollkoden är konfigurerad med ett annat värde för varje IC i projektet.

Ytterligare 8 interna segmentstyrlinjer finns tillgängliga i Asynchronous State Machine (ASM) -utgången, som visas i figur 6 ovan. Segmentutgångslinje 8 (SEG_OUT_8 i egenskapsfönstret) till segmentutmatningslinje 15 (SEG_OUT_15) styrs av ASM -utdata på tillstånd 0. Det finns ingen tillståndsövergång i ASM -block, den är alltid i tillstånd 0. ASM -utgångarna är ansluten till segmentutmatningsdrivrutiner.

Segmentutmatningsdrivrutinerna kommer att generera enhetens utsignal.

Steg 6: Output Segment Driver

Utgångssegmentdrivrutinen är i huvudsak en Lookup -tabell (LUT) konfigurerad som en XOR -logikport. För varje utgångssegment måste det vara en XOR -port ansluten till segmentstyrlinjen och till bakplansklockan (BCKP_CLOCK). XOR-porten är ansvarig för att generera in- och out-of-phase-signalen till utmatningssegmentet. När segmentstyrlinjen är på en hög nivå kommer XOR-portutgången att invertera bakplanets klocksignal och generera en out-of-phase-signal till segmentstiftet. Spänningsskillnaden mellan LCD -bakplan och LCD -segment, i detta fall, kommer att ställa in LCD -segmentet som ett mörkt segment. När segmentstyrlinjen är på en låg nivå kommer XOR-portutgången att följa bakplanets klocksignal och sedan generera en fasfas-signal till segmentstiftet. Eftersom ingen spänning appliceras mellan LCD -backplanet och segmentet i detta fall är segmentet transparent för ljus.

Steg 7: Intern källa för intern oscillator och bakplansklocka

Intern Oscillator och Backplane Clock Source Control
Intern Oscillator och Backplane Clock Source Control

Den interna oscillatorn används när signalen BCKP_CLOCK från I²C -gränssnittet är inställd på en hög nivå. En nära vy av klockans källkontrollschema visas i figur 7 ovan.

Oscillatorn är konfigurerad som 25 kHz RC -frekvens, med den högsta utdelaren som finns tillgänglig på oscillatorn OUT0 (8/64). Hela konfigurationen ses i egenskapsfönstret som visas i figur 7. På så sätt genererar den interna oscillatorn en klockfrekvens på 48 Hz.

Oscillatorn är endast aktiv när BCKP_SOURCE -signalen är på en hög nivå tillsammans med POR -signalen. Denna kontroll görs genom att ansluta dessa två signaler till NAND-porten på 4-L1 LUT. NAND -utgången ansluts sedan till ingången på oscillatorns strömbrytare.

Signal BCKP_SOURCE styr MUX byggd med 3-L10 LUT. När BCKP_SOURCE -signalen är på en låg nivå kommer bakplansklockans källa från PIN2. När denna signal är på en hög nivå kommer bakplansklockans källa från den interna oscillatorn.

Steg 8: Backplane Clock Output eller Segment 15 Output Pin Control

Backplane Clock Output eller Segment 15 Output Pin Control
Backplane Clock Output eller Segment 15 Output Pin Control

Pin 20 i denna design har en dubbel funktion, som beror på den valda bakplansklockan. Funktionen för denna pin styrs med en 4 ingångs LUT, som visas i figur 8. Med en 4-bitars LUT är det möjligt att associera driften av XOR-porten med en MUX-utgång. När BCKP_SOURCE -signalen är på en hög nivå kommer LUT -utgången att följa den interna oscillatorns klocka. Därefter fungerar pin 20 som en backplane -klockutgång. När BCKP_SOURCE -signalen är på en låg nivå kommer LUT -utgången att vara XOR -operationen mellan SEG_OUT_15, från ASM -utgång och bakplanets klocksignal. 4-bitars LUT-konfigurationen för att utföra denna operation visas i figur 8.

Steg 9: LCD -systemprototyp

LCD -systemprototyp
LCD -systemprototyp
LCD -systemprototyp
LCD -systemprototyp

För att demonstrera användningen av GreenPAK -designlösningen monterades en LCD -systemprototyp på en brödbräda. För prototypen drivs en sjusegmenterad, fyrsiffrig statisk LCD av två GreenPAK-enheter på DIP-kortet. Den ena enheten (IC1) använder den interna oscillatorn för att driva LCD -bakplan, och den andra enheten (IC2) använder denna signal som inmatningsreferens för bakplan. Båda IC: erna styrs över I²C -gränssnittet av en STM32F103C8T6 mikrokontroller (MCU) i ett minimikort för utveckling.

Figur 9 visar schemat över anslutningarna mellan de två GreenPAK IC: erna, LCD -displayen och MCU -kortet. I schemat, driver GreenPAK -enheten med U1 (IC1) -referens LCD -siffra ett och två (LCD vänster sida). GreenPAK -enheten med U2 (IC2) -referens driver LCD -siffran tre och fyra, plus COL -segmentet (LCD -höger sida). Strömförsörjningen för båda enheterna kommer från regulatorn i mikrokontrollerutvecklingskortet. Två avtagbara hoppare mellan strömförsörjningen och VDD -stiften på varje GreenPAK -enhet läggs till för strömmätning med en multimeter.

En bild av den monterade prototypen visas i figur 10.

Steg 10: I²C -kommandon för LCD -kontroll

I²C -kommandon för LCD -kontroll
I²C -kommandon för LCD -kontroll
I²C -kommandon för LCD -kontroll
I²C -kommandon för LCD -kontroll
I²C -kommandon för LCD -kontroll
I²C -kommandon för LCD -kontroll

De två GreenPAK -enheterna på brödbrädan är programmerade med samma design, förutom med hjälp av Byte -värdet. Kontrollbyten för IC1 är 0 (I²C -adress 0x00), medan I²C -kontrollbyten är 1 (I²C -adress 0x10). Anslutningarna mellan bildskärmssegment och enhetsdrivrutiner sammanfattas i tabellen ovan.

Anslutningarna valdes på detta sätt för att skapa en tydligare schematisk och för att förenkla montering av brödbrädans anslutningar.

Kontrollen av segmentets utmatning sker med I²C -skrivkommandon till I²C Virtual Inputs och ASM -utmatningsregister. Såsom beskrivs i ansökningsanteckningen AN-1090 Simple I²C IO Controllers med SLG46531V (se Application Note AN-1090 Simple I²C IO Controllers with SLG46531V, Dialog Semiconductor), är I²C-skrivkommandot strukturerat enligt följande:

● Starta;

● Kontrollbyte (R/W -bit är 0);

● Ordadress;

● Data;

● Stoppa.

Alla I²C -skrivkommandon görs till Word Address 0xF4 (I²C Virtual Inputs) och 0xD0 (ASM Output for state 0). Kommandona för att skriva i IC1 och styra LCD -siffran 1 och 2 är sammanfattade i tabell 3. I kommandosekvensrepresentationen anger den öppna parentesen "[" betecknar startsignalen, och stängningsfästet "]" stoppsignalen.

De två byten ovan styr segmenten för LCD -siffra 1 och siffra 2 tillsammans. Här är metoden att använda en individuell uppslagstabell (LUT) i programvara för varje siffra, med tanke på segmenten i båda byte. Bytevärdena från uppslagstabellen bör blandas med en bitvis ELLER -operation och sedan skickas till IC: n. Tabell 4 visar Byte0 och Byte1 -värdet för varje numeriskt värde som ska skrivas i varje visningssiffra.

Till exempel, för att skriva i siffran 1 siffran 3 och i siffran 2 siffran 4 är Byte0 0xBD (0x8D bitvis ELLER med 0xB0) och byte 1 är 0x33 (0x30 bitvis ELLER med 0x03).

Kommandot att skriva i IC2 och kontrollerna siffran 3 och 4 beskrivs i tabell 5.

Kontrolllogiken för siffrorna 3 och 4 är som kontrollen för siffrorna 1 och 2. Tabell 6 visar LUT för dessa två siffror.

Skillnaden i IC2 är COL -segmentet. Detta segment styrs av Byte1. För att ställa in detta segment mörkt bör en bitvis ELLER operation mellan Byte1 och värdet 0x40 göras.

Steg 11: I²C -kommandon för LCD -test

I²C -kommandon för LCD -test
I²C -kommandon för LCD -test

För LCD -test utvecklades en firmware på C -språket för MCU -kortet. Den här fasta programvaran skickar en sekvens av kommandon till båda IC: erna på panelen. Källkoden för den här fasta programvaran finns i avsnittet Appendix. Hela lösningen utvecklades med Atollic TrueStudio för STM32 9.0.1 IDE.

Kommandosekvensen och respektive värden som visas på displayen sammanfattas i tabell 7 ovan.

Steg 12: Testresultat

Testresultat
Testresultat
Testresultat
Testresultat

Prototyptestet består av att verifiera visningsvärdena efter ett MCU -kommando och mäta strömflänsen för varje IC under drift.

Bilder av LCD -skärmen för varje kommandovärde visas i tabell 8 ovan.

Strömtvätten för varje enhet mättes med en multimeter i sitt lägsta strömintervall på 200 µA. Bilder av den uppmätta strömmen för varje enhet, under uppstart och normal drift, visas i tabell 9 ovan.

Slutsats och resultatdiskussion

Utformningen av en statisk LCD -drivrutin med låg effekt med GreenPAK -enhet presenterades. Denna design visar tydligt en av de största funktionerna hos GreenPAK -enheterna: deras låga vilande ström. Eftersom GreenPAK-enheter är en hårdvarubaserad lösning är det möjligt att arbeta med lågfrekvent drift, i detta fall 48 Hz. En MCU -baserad lösning kommer att kräva en högre driftsfrekvens, även under periodvis korta tidsperioder, och kommer sedan att dra mer ström. Och när man jämför GreenPAK -enheten med en CPLD (komplex programmerbar logisk enhet) är det tydligt att se att en CPLD vanligtvis har en vilande ström högre än 20 µA.

Det är intressant att notera att denna design enkelt kan modifieras för att bättre passa in i kraven för ett specifikt projekt. Ett bra exempel är segmentkontrollernas pinout. De kan enkelt ändras för att förenkla kretskortet och mjukvaruutvecklingen samtidigt. Detta är en intressant funktion när enheten jämförs med en ASIC (Application Specific Integrated Circuit) från hyllan. Vanligtvis är ASIC utformade för att passa på ett brett spektrum av applikationer, och en första programrutin bör skrivas för att korrekt konfigurera IC: n före operationen. En konfigurerbar enhet kan utformas så att den kan börja användas efter uppstart. På detta sätt är det möjligt att minska programutvecklingstiden för IC: s initiala konfiguration.

Källkod till ansökan finns här i bilaga A.

Rekommenderad: