Innholdsfortegnelse:

Hvordan lage en statisk LCD -driver med I²C -grensesnitt: 12 trinn
Hvordan lage en statisk LCD -driver med I²C -grensesnitt: 12 trinn

Video: Hvordan lage en statisk LCD -driver med I²C -grensesnitt: 12 trinn

Video: Hvordan lage en statisk LCD -driver med I²C -grensesnitt: 12 trinn
Video: Сводные таблицы Excel с нуля до профи за полчаса + Дэшборды! | 1-ое Видео курса "Сводные Таблицы" 2024, November
Anonim
Hvordan lage en statisk LCD -driver med I²C -grensesnitt
Hvordan lage en statisk LCD -driver med I²C -grensesnitt

Liquid Crystal Displays (LCD) er mye brukt for kommersielle og industrielle applikasjoner på grunn av sine gode visuelle egenskaper, lave kostnader og lavt strømforbruk. Disse egenskapene gjør LCD-skjermen til standardløsning for batteridrevne enheter, som bærbare instrumenter, kalkulatorer, klokker, radioer, etc.

For å kontrollere hva LCD -skjermen viser, må den elektroniske driveren på LCD -en generere passende spenningsbølgeformer til LCD -pinner. Bølgeformene bør være vekselstrøm (vekselstrøm), fordi DC (likestrøm) spenning vil skade enheten permanent. Den riktige driveren vil kilden disse signalene til LCD med et minimum av strømforbruk.

Det finnes to typer LCD -skjermer, Statisk, med bare ett bakplan og en pinne for individuell segmentkontroll og Multiplexed, med flere bakplaner og flere segmenter koblet til hver pin.

Denne instruksen vil presentere designet til en statisk LCD -driver med SLG46537V GreenPAK ™ -enhet. Den designede LCD -driveren vil kjøre opptil 15 LCD -segmenter, ved å bruke noen få mikroampere strøm fra strømforsyningen og tilby et I²C -grensesnitt for kontroll.

I de følgende avsnittene vises:

● grunnleggende kunnskapsinformasjon om LCD -skjermer;

● SLG46537V GreenPAK LCD -driverdesign i detalj;

● hvordan du driver en syv segment, 4-sifret statisk LCD med to GreenPAK-enheter.

Nedenfor har vi beskrevet trinnene som trengs for å forstå hvordan løsningen er programmert til å lage den statiske LCD -driveren med I²C -grensesnitt. Men hvis du bare vil få resultatet av programmeringen, kan du laste ned GreenPAK -programvare for å se den allerede fullførte GreenPAK -designfilen. Koble GreenPAK Development Kit til datamaskinen din og trykk på programmet for å lage den statiske LCD -driveren med I²C -grensesnitt.

Trinn 1: Grunnleggende om Liquid Crystal Displays

Grunnleggende om Liquid Crystal Displays
Grunnleggende om Liquid Crystal Displays
Grunnleggende om Liquid Crystal Displays
Grunnleggende om Liquid Crystal Displays

Liquid Crystal Displays (LCD) er en teknologi som ikke avgir lys, den styrer bare hvordan en ekstern lyskilde passerer gjennom. Denne eksterne lyskilden kan være tilgjengelig omgivelseslys, i reflekterende displaytype, eller lys fra en bakgrunnsbelysning eller lampe, i transmissiv displaytype. LCD-skjermer er konstruert med to glassplater (øvre og nedre), et tynt lag med flytende krystall (LC) mellom dem og to lyspolarisatorer (Application Note AN-001-Basics of LCD Technology, Hitachi, Application Note AN-005-Display Modes, Hitachi). Polarisatoren er et lysfilter for det lyselektromagnetiske feltet. Bare lyskomponentene i riktig elektromagnetisk feltretning passerer gjennom polarisatoren, mens de andre komponentene er blokkert.

Flytende krystall er et organisk materiale som roterer lysets elektromagnetiske felt 90 grader eller mer. Imidlertid, når et elektrisk felt påføres LC, roterer det ikke lyset lenger. Med tilsetning av transparente elektroder i det øvre og nedre displayglasset, er det mulig å kontrollere når lyset passerer gjennom, og når ikke, med en ekstern kilde til det elektriske feltet. Figur 1 (se applikasjonsnotat AN-001-Grunnleggende om LCD-teknologi, Hitachi) ovenfor illustrerer denne operasjonskontrollen. I figur 1 er displayet mørkt når det ikke er et elektrisk felt. Dette er fordi begge polarisatorene filtrerer lyset i samme retning. Hvis polarisatorene er ortogonale, vil displayet være mørkt når det elektriske feltet er tilstede. Dette er den vanligste situasjonen for reflekterende skjermer.

Det minste elektriske feltet, eller spenningen, for å kontrollere LCD -en kalles PÅ -terskelen. LC påvirkes bare av spenningen, og det er knapt noen strøm i LC -materiale. Elektrodene i LCD danner en liten kapasitans, og dette er den eneste belastningen for en sjåfør. Dette er grunnen til at en LCD -skjerm er en lavenhetsenhet for å vise visuell informasjon.

Imidlertid er det viktig å merke seg at LCD -skjermen ikke kan fungere med en likestrøm (DC) spenningskilde for lenge. Påføring av likestrømsspenning vil forårsake kjemiske reaksjoner i LC-materiale og skade det permanent (applikasjonsnotat AN-001-Grunnleggende om LCD-teknologi, Hitachi). Løsningen er å bruke en alternativ spenning (AC) i LCD -elektroder.

På statiske LCD -skjermer er en bakplanelektrode bygd i det ene glasset og individuelle LCD -segmenter eller piksler settes i det andre glasset. Dette er en av de enkleste LCD -typene og den med det beste kontrastforholdet. Imidlertid krever denne typen skjerm vanligvis for mange pinner for å kontrollere hvert enkelt segment.

Generelt kilder en førerkontroller et firkantet bølgesignal for bakplanet og et klokkesignal for segmentene i frontplanet sammen. Når bakplanklokken er i fase med segmentklokken, er rot-middel-kvadrat (RMS) spenningen mellom begge flyene null, og segmentet er gjennomsiktig. Ellers, hvis RMS -spenningen er høyere enn LCD ON -terskelen, blir segmentet mørkt. Bølgeformene for bakplanet, på og av-segmentet er vist i figur 2. Som det kan sees på figuren, er PÅ-segmentet utfaset i forhold til bakplan-signalet. Off-segmentet er i fase i forhold til bakplan-signalet. Den påførte spenningen kan være mellom 3 og 5 volt for lavkostnadsdisplayer med lav effekt.

Klokkesignalet for LCD -bakplanet og segmentene er vanligvis i området 30 til 100 Hz, minimumsfrekvensen for å unngå en visuell flimmereffekt på LCD. Høyere frekvenser unngås for å redusere strømforbruket til det totale systemet. Systemet som består av LCD og drivere vil forbruke lite strøm, i størrelsesorden mikroampere. Dette gjør dem perfekt egnet for applikasjoner med lav strøm og batteristrømforsyning.

I de følgende avsnittene presenteres utformingen av en statisk LCD -driver med GreenPAK -enhet som kan generere bakplanets klocksignal og det individuelle segmentklokkesignalet for en kommersiell LCD i detalj.

Trinn 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

Et blokkdiagram som illustrerer GreenPAK -designet er vist i figur 3. De grunnleggende blokkene i designet er I²C -grensesnittet, utgangssegmentdriveren, den interne oscillatoren og bakplanklokkens kildevelger.

I²C -grensesnittblokken styrer hver enkelt segmentutgang og LCD -bakkeklokken. I²C -grensesnittblokken er den eneste systeminngangen for segmentutgangskontroll.

Når den interne segmentkontrollinjen er satt (høyt nivå), er det respektive LCD -segmentet mørkt ugjennomsiktig. Når den interne segmentstyrelinjen tilbakestilles (lavt nivå), er det respektive LCD -segmentet gjennomsiktig.

Hver intern segmentkontrollinje er koblet til en utgangsdriver. Utgangssegmentdriverblokken vil generere et in-fase klokkesignal med forhold til bakplanklokken for transparente segmenter. For mørke segmenter er dette signalet ut av fase med forholdet til bakplanets klokke.

Bakplanklokkekilden er også valgt med I²C -grensesnitt. Når den interne bakplanklokkilden er valgt, slås den interne oscillatoren på. Den interne oscillatoren vil generere en klokkefrekvens på 48Hz. Dette signalet vil bli brukt av utgangssegmentdriverblokken og er adressert til bakplanets utgangspinne (GreenPAK -pin 20).

Når ekstern bakplansklokke er valgt, slås den interne oscillatoren av. Utgangssegmentdriverreferansen er den eksterne bakplanets klokkeinngang (GreenPAK pin 2). I dette tilfellet kan utgangspinnen for bakplanet klokke brukes som en ekstra segmentkontrollinje, segmentet OUT15.

Mer enn én GreenPAK -enhet kan brukes på samme I²C -linje. For å gjøre det må hver enhet være programmert med en annen I²C -adresse. På denne måten er det mulig å utvide antall drevne LCD -segmenter. Én enhet er konfigurert til å generere bakplanklokkilden, som kjører 14 segmenter, og den andre er konfigurert til å bruke en ekstern bakplansklokkilde. Hver ekstra enhet kan kjøre flere 15 segmenter på denne måten. Det er mulig å koble opptil 16 enheter på samme I²C -linje, og deretter er det mulig å kontrollere opptil 239 segmenter av en LCD.

I denne instruksen brukes denne ideen til å kontrollere 29 segmenter av en LCD med 2 GreenPAK -enheter. Enhetens pinout -funksjonalitet er oppsummert i tabell 1.

Trinn 3: Utform nåværende forbruk

En viktig bekymring i denne designen er dagens forbruk, som skal være så lavt som mulig. GreenPAK -enhetens estimerte hvilestrøm er 0,75 µA for 3,3 V forsyning og 1,12 µA for 5 V forsyning. Det nåværende forbruket til den interne oscillatoren er 7,6 µA og 8,68 µA for henholdsvis 3,3 V og 5 V strømforsyning. Det forventes ikke å ha en betydelig økning i strømforbruket fra byttetap, fordi denne designen opererer med en lav klokkefrekvens. Den estimerte maksimale strømforbruket for dette designet er lavere enn 15 µA når den interne oscillatoren er på, og 10 µA når den interne oscillatoren er slått av. Den målte strømmen som forbrukes i begge situasjoner er vist i seksjonstestresultater.

Trinn 4: GreenPAK Device Schematic

GreenPAK Device Diagram
GreenPAK Device Diagram

Prosjektet designet i GreenPAK -programvare er vist i figur 4. Denne skjemaet vil bli beskrevet ved hjelp av de grunnleggende blokkdiagrammene som referanse.

Trinn 5: I²C -grensesnitt

I²C -grensesnitt
I²C -grensesnitt
I²C -grensesnitt
I²C -grensesnitt

I²C grensesnittblokk brukes som hovedkontrollblokk for enhetskontrollen. En nærmere oversikt over blokkforbindelsene og de konfigurerte egenskapene er vist i figur 5.

Denne blokken er koblet til PIN 8 og PIN 9, som er henholdsvis I²C SCL og SDA pins. Inne i enheten tilbyr I²C -blokken 8 virtuelle innganger. Den opprinnelige verdien for hver virtuelle inngang er vist i egenskapsvinduet (se figur 5). Virtuelle innganger fra OUT0 til OUT6 brukes som segmentkontrollinjer. Disse kontrollinjene tilsvarer segmentutgang 1 til segmentutgang 7 og er koblet til segmentutgangsdriveren. Virtual Input OUT7 brukes som linjestyring for bakre klokkevelger, med netto navn BCKP_SOURCE. Dette nettet vil bli brukt av andre blokker i designet. I²C -kontrollkoden er konfigurert med en annen verdi for hver IC i prosjektet.

8 flere interne segmentkontrollinjer er tilgjengelige i Asynchronous State Machine (ASM) -utgangen, som vist i figur 6 ovenfor. Segmentutgangslinje 8 (SEG_OUT_8 i egenskapsvindu) til segmentutgangslinje 15 (SEG_OUT_15) styres av ASM -utgang på tilstand 0. Det er ingen tilstandsovergang i ASM -blokk, den er alltid i tilstand 0. Utgangene til ASM er koblet til segmentutgangsdrivere.

Segmentutgangsdriverne vil generere utgangssignalet til enheten.

Trinn 6: Utgangssegmentdriver

Utgangssegmentdriveren er i hovedsak en oppslagstabell (LUT) konfigurert som en XOR -logikkport. For hvert utgangssegment må det være en XOR -port koblet til segmentkontrollinjen og til bakplanklokken (BCKP_CLOCK). XOR-porten er ansvarlig for å generere in-fase og out-of-phase signal til output segment. Når segmentkontrollinjen er på et høyt nivå, vil XOR-portutgangen invertere bakplanets klocksignal og generere et out-of-phase-signal til segmentpinnen. Spenningsforskjellen mellom LCD -bakplan og LCD -segment, i dette tilfellet, vil sette LCD -segmentet som et mørkt segment. Når segmentkontrollinjen er på et lavt nivå, vil XOR-portutgangen følge bakplanets klokkesignal og deretter generere et in-fase signal til segmentpinnen. Fordi det ikke påføres spenning mellom LCD -bakplanet og segmentet i dette tilfellet, er segmentet gjennomsiktig for lys.

Trinn 7: Intern Oscillator og Backplane Clock Source Control

Intern Oscillator og Backplane Clock Source Control
Intern Oscillator og Backplane Clock Source Control

Den interne oscillatoren brukes når signalet BCKP_CLOCK fra I²C -grensesnittet er satt til et høyt nivå. Et nærbilde av klokkildestyringsdiagrammet er vist i figur 7 ovenfor.

Oscillatoren er konfigurert som 25 kHz RC -frekvens, med den høyeste utgangsdeleren tilgjengelig på oscillator OUT0 (8/64). Hele konfigurasjonen ses i egenskapsvinduet vist i figur 7. På denne måten vil den interne oscillatoren generere en klokkefrekvens på 48 Hz.

Oscillatoren er bare aktiv når BCKP_SOURCE -signalet er på et høyt nivå sammen med POR -signalet. Denne kontrollen utføres ved å koble disse to signalene til NAND-porten på 4-L1 LUT. Utgangen fra NAND kobles deretter til inngangen til oscillatorens ned -kontrollpinne.

Signal BCKP_SOURCE styrer MUX bygget med 3-L10 LUT. Når BCKP_SOURCE -signalet er på et lavt nivå, kommer bakkeklokken fra PIN2. Når dette signalet er på et høyt nivå, kommer bakkeklokken fra den interne oscillatoren.

Trinn 8: Klokkeutgang i bakplanet eller Segment 15 utgangskontroll

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

Pin 20 i denne designen har en dobbel funksjon, som avhenger av den valgte bakkeklokken. Driften av denne pinnen styres med én 4 inngang LUT, som vist i figur 8. Med en 4-bits LUT er det mulig å knytte driften av XOR-porten til en MUX-utgang. Når BCKP_SOURCE -signalet er på et høyt nivå, vil LUT -utgangen følge den interne oscillatorklokken. Deretter fungerer pin 20 som en bakplan -klokkeutgang. Når BCKP_SOURCE -signalet er på et lavt nivå, vil LUT -utgangen være XOR -operasjonen mellom SEG_OUT_15, fra ASM -utgang og bakplan -klokkesignal. 4-bits LUT-konfigurasjonen for å utføre denne operasjonen er vist i figur 8.

Trinn 9: LCD -systemprototype

LCD -systemprototype
LCD -systemprototype
LCD -systemprototype
LCD -systemprototype

For å demonstrere bruken av GreenPAK -designløsningen, ble en LCD -systemprototype satt sammen på et brødbrett. For prototypen drives et syv segment, 4-sifret statisk LCD av to GreenPAK-enheter på DIP-kortet. Den ene enheten (IC1) bruker den interne oscillatoren til å drive LCD -bakplan, og den andre enheten (IC2) bruker dette signalet som inngangsreferanse for bakplan. Begge IC -ene styres over I²C -grensesnittet av en STM32F103C8T6 mikrokontroller (MCU) i et minimumsutviklingskort.

Figur 9 viser skjematisk tilkoblingen mellom de to GreenPAK IC -ene, LCD -displayet og MCU -kortet. I skjematikken driver GreenPAK -enheten med U1 (IC1) -referanse LCD -siffer ett og to (LCD -venstre side). GreenPAK -enheten med U2 (IC2) referanse driver LCD -siffer tre og fire, pluss COL -segmentet (LCD høyre side). Strømforsyningen til begge enhetene kommer fra regulatoren i mikrokontrollerutviklingskortet. To flyttbare hoppere mellom strømforsyningen og VDD -pinnene på hver GreenPAK -enhet er lagt til for strømmåling med et multimeter.

Et bilde av den sammensatte prototypen er vist i figur 10.

Trinn 10: I²C -kommandoer for LCD -kontroll

I²C -kommandoer for LCD -kontroll
I²C -kommandoer for LCD -kontroll
I²C -kommandoer for LCD -kontroll
I²C -kommandoer for LCD -kontroll
I²C -kommandoer for LCD -kontroll
I²C -kommandoer for LCD -kontroll

De to GreenPAK -enhetene på brødbrettet er programmert med samme design, bortsett fra Control Byte -verdien. Kontrollbyten til IC1 er 0 (I²C -adresse 0x00), mens I²C -kontrollbyten er 1 (I²C -adresse 0x10). Tilkoblingene mellom skjermsegmenter og enhetsdrivere er oppsummert i tabellen ovenfor.

Tilkoblingene ble valgt på denne måten for å lage en tydeligere skjematisk og for å forenkle montering av brødbrettforbindelsene.

Kontrollen av segmentets utgang utføres av I²C skrivekommandoer til I²C virtuelle innganger og ASM utgangsregistre. Som beskrevet i applikasjonsnotatet AN-1090 Simple I²C IO Controllers with SLG46531V (se Application Note AN-1090 Simple I²C IO Controllers with SLG46531V, Dialog Semiconductor), er I²C skrivekommandoen strukturert som følger:

● Start;

● Kontrollbyte (R/W -bit er 0);

● Ordadresse;

● Data;

● Stopp.

Alle I²C -skrivekommandoer utføres til Word -adresse 0xF4 (I²C virtuelle innganger) og 0xD0 (ASM -utgang for tilstand 0). Kommandoene for å skrive i IC1 og kontrollere LCD -siffer 1 og 2 er oppsummert i tabell 3. I kommandosekvensrepresentasjonen angir den åpne braketten “[“betegner startsignalet, og lukkebraketten “]” stoppsignalet.

De to bytene ovenfor kontrollerer segmenter av LCD -siffer 1 og siffer 2 sammen. Her er tilnærmingen å bruke et individuelt oppslagstabell (LUT) i programvare for hvert siffer, med tanke på segmentene i begge byte. Byteverdiene fra oppslagstabellen bør blandes ved hjelp av en bitvis ELLER operasjon, og deretter sendes til IC. Tabell 4 viser Byte0 og Byte1 -verdien for hver numerisk verdi som skal skrives i hvert visningssiffer.

For eksempel, for å skrive i siffer 1 tallet 3, og i siffer 2 tallet 4, er Byte0 0xBD (0x8D bitvis ELLER med 0xB0) og byte 1 er 0x33 (0x30 bitvis ELLER med 0x03).

Kommandoen for å skrive i IC2 og kontroller siffer 3 og 4, er beskrevet i tabell 5.

Kontrolllogikken til sifrene 3 og 4 er som kontrollen med sifrene 1 og 2. Tabell 6 viser LUT for disse to sifrene.

Forskjellen i IC2 er COL -segmentet. Dette segmentet er kontrollert av Byte1. For å sette opp dette segmentet mørkt, bør det gjøres en bitvis ELLER operasjon mellom Byte1 og verdien 0x40.

Trinn 11: I²C -kommandoer for LCD -test

I²C -kommandoer for LCD -test
I²C -kommandoer for LCD -test

For LCD -test ble det utviklet en fastvare på C -språk for MCU -kortet. Denne fastvaren sender en rekke kommandoer til begge IC -ene på brødbrettet. Kildekoden for denne fastvaren er i vedleggsseksjonen. Hele løsningen ble utviklet ved hjelp av Atollic TrueStudio for STM32 9.0.1 IDE.

Kommandosekvensen og de respektive verdiene vist i displayet er oppsummert i tabell 7 ovenfor.

Trinn 12: Testresultater

Testresultater
Testresultater
Testresultater
Testresultater

Prototypetesten består av å verifisere visningsverdiene etter en MCU -kommando og måle gjeldende synke for hver IC under drift.

Bilder av LCD -skjermen for hver kommandoverdi er vist i tabell 8 ovenfor.

Strømvasken for hver enhet ble målt med et multimeter, i sitt laveste strømområde på 200 µA. Bilder av den målte strømmen for hver enhet, under oppstart og normal drift, er vist i tabell 9 ovenfor.

Konklusjon og resultater Diskusjon

Designet til en statisk LCD -driver med lav effekt med GreenPAK -enhet ble presentert. Denne designen viser tydelig en av de største egenskapene til GreenPAK -enhetene: deres lave hvilestrøm. Fordi GreenPAK-enheter er en maskinvarebasert løsning, er det mulig å arbeide med en lavfrekvent drift, i dette tilfellet 48 Hz. En MCU -basert løsning vil kreve en høyere driftsfrekvens, selv i periodisk korte perioder, og vil deretter trekke mer strøm. Og når vi sammenligner GreenPAK -enheten med en CPLD (Complex Programmable Logic Device), er det klart å se at en CPLD vanligvis har en hvilestrøm som er høyere enn 20 µA.

Det er interessant å merke seg at dette designet enkelt kan endres for bedre å passe til kravene til et bestemt prosjekt. Et godt eksempel er segmentkontrollene pinout. De kan enkelt endres for å forenkle kretskortet og programvareutviklingen samtidig. Dette er en interessant funksjon når enheten sammenlignes med en ASIC (Application Specific Integrated Circuit) på hyllen. Vanligvis er ASIC designet for å passe på et bredt spekter av applikasjoner, og en innledende programvarerutine bør skrives for riktig konfigurering av IC før operasjonen. En konfigurerbar enhet kan være designet for å starte klar til bruk etter oppstart. På denne måten er det mulig å kutte programvareutviklingstiden for første konfigurasjon av IC.

Kildekoden til applikasjonen finner du her i vedlegg A.

Anbefalt: