Cuprins:

Cum se face driver LCD static cu interfață I²C: 12 pași
Cum se face driver LCD static cu interfață I²C: 12 pași

Video: Cum se face driver LCD static cu interfață I²C: 12 pași

Video: Cum se face driver LCD static cu interfață I²C: 12 pași
Video: [Live] Lectia 6 - Ce este Unitatea de Stocare 2024, Iulie
Anonim
Cum se face driver LCD static cu interfață I²C
Cum se face driver LCD static cu interfață I²C

Afișajele cu cristale lichide (LCD) sunt utilizate pe scară largă pentru aplicații comerciale și industriale datorită proprietăților vizuale bune, costului redus și consumului redus de energie. Aceste proprietăți fac din LCD soluția standard pentru dispozitivele cu baterii, cum ar fi instrumentele portabile, calculatoarele, ceasurile, aparatele de radio etc.

Cu toate acestea, pentru a controla în mod corespunzător ceea ce arată LCD-ul, driverul electronic al acestuia trebuie să genereze forme de undă de tensiune corespunzătoare pinilor LCD. Formele de undă ar trebui să fie de natură alternativă (curent alternativ), deoarece tensiunile de curent continuu (curent continuu) vor deteriora permanent dispozitivul. Driverul corespunzător va furniza aceste semnale pe LCD la un consum minim de energie.

Există două tipuri de LCD-uri, Static, cu un singur backplane și un pin pentru controlul individual al segmentului și, Multiplexed, cu mai multe backplane și mai multe segmente conectate pentru fiecare pin.

Acest instructable va prezenta designul unui driver LCD static cu dispozitivul SLG46537V GreenPAK ™. Driverul LCD proiectat va conduce până la 15 segmente LCD, folosind câteva microamperi de curent de la sursa de alimentare și va oferi o interfață I²C pentru control.

În următoarele secțiuni vor fi afișate:

● informații de bază despre LCD-uri;

● proiectarea driverului SLG46537V GreenPAK LCD în detaliu;

● cum să conduceți un LCD static cu șapte segmente, format din 4 cifre, cu două dispozitive GreenPAK.

Mai jos am descris pașii necesari pentru a înțelege cum a fost programată soluția pentru a crea driverul LCD static cu interfață I²C. Cu toate acestea, dacă doriți doar să obțineți rezultatul programării, descărcați software-ul GreenPAK pentru a vizualiza fișierul de proiectare GreenPAK deja finalizat. Conectați kitul de dezvoltare GreenPAK la computer și apăsați programul pentru a crea driverul LCD static cu interfață I²C.

Pasul 1: Bazele afișajelor cu cristale lichide

Bazele afișajelor cu cristale lichide
Bazele afișajelor cu cristale lichide
Bazele afișajelor cu cristale lichide
Bazele afișajelor cu cristale lichide

Afișajele cu cristale lichide (LCD) sunt o tehnologie care nu emite lumină, controlează doar modul în care trece o sursă de lumină externă. Această sursă de lumină externă ar putea fi lumina ambientală disponibilă, în tipul afișajului reflectorizant, sau lumina unui led sau lampă de iluminare din spate, în tipul afișajului transmisiv. Ecranele LCD sunt construite cu două plăci de sticlă (superioară și inferioară), un strat subțire de cristal lichid (LC) între ele și doi polarizatori de lumină (Notă de aplicație AN-001 - Bazele tehnologiei LCD, Hitachi, Notă de aplicație AN-005 - Afișaj Moduri, Hitachi). Polarizatorul este un filtru de lumină pentru câmpul electromagnetic de lumină. Numai componentele ușoare din direcția dreaptă a câmpului electromagnetic trec prin polarizator, în timp ce celelalte componente sunt blocate.

Cristalul lichid este un material organic care rotește câmpul electromagnetic al luminii cu 90 de grade sau mai mult. Cu toate acestea, atunci când un câmp electric este aplicat la LC, acesta nu mai rotește lumina. Prin adăugarea de electrozi transparenți în sticla de afișare superioară și inferioară, este posibil să se controleze când trece lumina și când nu, cu o sursă externă a câmpului electric. Figura 1 (a se vedea Nota de aplicație AN-001 - Bazele tehnologiei LCD, Hitachi) de mai sus ilustrează acest control al operației. În Figura 1, afișajul este întunecat atunci când nu există un câmp electric. Acest lucru se datorează faptului că ambii polarizatori filtrează lumina în aceeași direcție. Dacă polarizatorii sunt ortogonali, atunci afișajul va fi întunecat atunci când câmpul electric este prezent. Aceasta este cea mai frecventă situație pentru afișajele reflectorizante.

Câmpul electric minim, sau tensiunea, pentru a controla ecranul LCD se numește prag ON. LC-ul este afectat doar de tensiune și nu există curent în materialul LC. Electrozii din LCD formează o capacitate mică și aceasta este singura sarcină pentru un șofer. Acesta este motivul pentru care un LCD este un dispozitiv cu putere redusă pentru a afișa informații vizuale.

Cu toate acestea, este important să rețineți că ecranul LCD nu poate funcționa cu o sursă de tensiune de curent continuu (DC) prea mult timp. Aplicarea unei tensiuni DC va provoca reacții chimice în materialul LC, deteriorându-l permanent (Nota de aplicare AN-001 - Bazele tehnologiei LCD, Hitachi). Soluția este de a aplica o tensiune alternativă (AC) în electrozii LCD.

În LCD-urile statice, un electrod din fundal este construit într-un pahar, iar segmentele LCD individuale sau pixelii sunt introduse în celălalt pahar. Acesta este unul dintre cele mai simple tipuri de LCD și cel cu cel mai bun raport de contrast. Cu toate acestea, acest tip de afișaj necesită de obicei prea mulți pini pentru a controla fiecare segment individual.

În general, un controler de driver generează un semnal de ceas cu undă pătrată pentru backplane și un semnal de ceas pentru segmentele din planul frontal împreună. Când ceasul planului din spate este în fază cu ceasul segmentului, tensiunea rădăcină-medie-pătrat (RMS) între ambele planuri este zero, iar segmentul este transparent. În caz contrar, dacă tensiunea RMS este mai mare decât pragul LCD ON, segmentul devine întunecat. Formele de undă pentru planul de fundal, segmentul pornit și oprit sunt prezentate în Figura 2. După cum se poate vedea în figură, segmentul PORNIT este defazat în raport cu semnalul planului de fundal. Segmentul oprit este în fază în raport cu semnalul planului de fundal. Tensiunea aplicată ar putea fi cuprinsă între 3 și 5 volți pentru afișaje cu cost redus și putere redusă.

Semnalul de ceas pentru panoul de fundal și segmentele LCD se situează de obicei între 30 și 100 Hz, frecvența minimă pentru a evita un efect de licărire vizuală pe ecranul LCD. Se evită frecvențe mai mari pentru a reduce consumul de energie al sistemului general. Sistemul compus din LCD și drivere ar consuma puțin curent, în ordinea microamperelor. Acest lucru le face perfect potrivite pentru aplicații sursă de alimentare cu energie redusă și baterie.

În secțiunile următoare, este prezentat în detaliu proiectarea unui driver static LCD cu dispozitiv GreenPAK care poate genera semnalul de ceas al planului de fundal și semnalul de ceas de segment individual pentru un LCD comercial.

Pasul 2: Schema bloc de bază de proiectare GreenPAK

Diagrama de bază GreenPAK Design
Diagrama de bază GreenPAK Design
GreenPAK Design Diagrama bloc de bază
GreenPAK Design Diagrama bloc de bază

O diagramă bloc care ilustrează designul GreenPAK este prezentată în Figura 3. Blocurile de bază ale designului sunt interfața I²C, driverul segmentului de ieșire, oscilatorul intern și selectorul sursei de ceas a planului de bază.

Blocul de interfață I²C controlează fiecare ieșire de segment individual și sursa de ceas a panoului de fundal al LCD-ului. Blocul de interfață I²C este singura intrare de sistem pentru controlul ieșirii segmentului.

Când linia de control a segmentului intern este setată (nivel înalt), segmentul LCD respectiv este opac întunecat. Când linia de control a segmentului intern este resetată (nivel scăzut), segmentul LCD respectiv este transparent.

Fiecare linie de control a segmentului intern este conectată la un driver de ieșire. Blocul driverului segmentului de ieșire va genera un semnal de ceas în fază cu relație cu ceasul din planul de fundal pentru segmente transparente. Pentru segmentele întunecate, acest semnal este defazat în raport cu ceasul din fundal.

Sursa ceasului planului de fundal este selectată și cu interfața I²C. Când este selectată sursa internă a ceasului planului de fundal, oscilatorul intern este pornit. Oscilatorul intern va genera o frecvență de ceas de 48Hz. Acest semnal va fi utilizat de blocul de driver al segmentului de ieșire și este adresat pinului de ieșire al ceasului din panoul de fundal (pinul 20 GreenPAK).

Când este selectată sursa externă a ceasului planului de fundal, oscilatorul intern este oprit. Referința driverului segmentului de ieșire este intrarea externă a ceasului planului de fundal (pinul 2 GreenPAK). În acest caz, pinul de ieșire a ceasului planului de fund ar putea fi folosit ca o linie de control suplimentară a segmentului, segmentul OUT15.

Mai multe dispozitive GreenPAK ar putea fi utilizate pe aceeași linie I²C. Pentru a face acest lucru, fiecare dispozitiv trebuie să fie programat cu o adresă I²C diferită. În acest fel este posibil să se extindă numărul de segmente LCD acționate. Un dispozitiv este configurat pentru a genera sursa de ceas a planului de fundal, conducând 14 segmente, iar celelalte sunt configurate pentru a utiliza o sursă de ceas de plan de fund extern. Fiecare dispozitiv suplimentar ar putea conduce mai mult de 15 segmente în acest fel. Este posibil să conectați până la 16 dispozitive pe aceeași linie I²C și apoi puteți controla până la 239 de segmente ale unui LCD.

În acest Instructable, această idee este utilizată pentru a controla 29 de segmente ale unui LCD cu 2 dispozitive GreenPAK. Funcționalitatea de fixare a dispozitivului este rezumată în Tabelul 1.

Pasul 3: Proiectați consumul curent

O preocupare importantă în acest design este consumul actual, care ar trebui să fie cât mai mic posibil. Curentul de repaus estimat al dispozitivului GreenPAK este de 0,75 µA pentru operația de alimentare de 3,3 V și 1,12 µA pentru operația de alimentare de 5 V. Consumul de curent al oscilatorului intern este de 7,6 µA și 8,68 µA pentru funcționarea sursei de alimentare de 3,3 V și respectiv 5 V. Nu este de așteptat să aibă o creștere semnificativă a consumului de curent din cauza pierderilor de comutare, deoarece acest design funcționează la o frecvență de ceas redusă. Curentul maxim estimat consumat pentru acest design este mai mic de 15 µA când oscilatorul intern este pornit și 10 µA când oscilatorul intern este oprit. Curentul măsurat consumat în ambele situații este prezentat în secțiunea Rezultate test.

Pasul 4: Schema dispozitivului GreenPAK

Schema dispozitivului GreenPAK
Schema dispozitivului GreenPAK

Proiectul proiectat în software-ul GreenPAK este prezentat în Figura 4. Această schemă va fi descrisă utilizând ca referință diagramele blocurilor de bază.

Pasul 5: Interfață I²C

Interfață I²C
Interfață I²C
Interfață I²C
Interfață I²C

Blocul de interfață I²C este utilizat ca bloc principal de control al comenzii de funcționare a dispozitivului. O vedere apropiată a conexiunilor de bloc și a proprietăților configurate sunt prezentate în Figura 5.

Acest bloc este conectat la PIN-ul 8 și PIN-ul 9, care sunt pinii I²C SCL și respectiv SDA. În interiorul dispozitivului, blocul I²C oferă 8 intrări virtuale. Valoarea inițială pentru fiecare intrare virtuală este afișată în fereastra de proprietăți (vezi Figura 5). Intrările virtuale de la OUT0 până la OUT6 sunt utilizate ca linii de control de segment. Aceste linii de control corespund ieșirii de segment 1 la ieșirii de segment 7 și sunt conectate la driverul de ieșire de segment. Intrarea virtuală OUT7 este utilizată ca control al liniei de selecție a sursei de ceas din backplane, cu numele net BCKP_SOURCE. Această plasă va fi utilizată de alte blocuri din design. Codul de control I²C este configurat cu o valoare diferită pentru fiecare IC din proiect.

În linia de ieșire Asynchronous State Machine (ASM) sunt disponibile încă 8 linii de control ale segmentului intern, așa cum se arată în Figura 6 de mai sus. Linia de ieșire segment 8 (SEG_OUT_8 în fereastra de proprietăți) prin linia de ieșire segment 15 (SEG_OUT_15) sunt controlate de ieșirea ASM pe starea 0. Nu există nicio tranziție de stare în blocul ASM, este întotdeauna în starea 0. Ieșirile ASM sunt conectat la driverele de ieșire de segment.

Driverele de ieșire segment vor genera semnalul de ieșire al dispozitivului.

Pasul 6: Driver de segment de ieșire

Driverul segmentului de ieșire este în esență o tabelă de căutare (LUT) configurată ca un port logic XOR. Pentru fiecare segment de ieșire, trebuie să fie un port XOR conectat la linia de control a segmentului și la ceasul planului de fundal (BCKP_CLOCK). Portul XOR este responsabil pentru generarea semnalului de ieșire în fază și în afara fazei. Când linia de control a segmentului este la un nivel ridicat, ieșirea portului XOR va inversa semnalul de ceas al planului de fundal și va genera un semnal în afara fazei la pinul segmentului. Diferența de tensiune între planul de fundal LCD și segmentul LCD, în acest caz, va seta segmentul LCD ca un segment întunecat. Când linia de control a segmentului este la un nivel scăzut, ieșirea portului XOR va urma semnalul de ceas al planului de fundal și apoi va genera un semnal în fază la pinul segmentului. Deoarece nu se aplică tensiune între panoul de fundal LCD și segment în acest caz, segmentul este transparent la lumină.

Pasul 7: Controlul sursei ceasului oscilatorului intern și a planului de fundal

Controlul sursei oscilatorului intern și a planului de fundal al ceasului
Controlul sursei oscilatorului intern și a planului de fundal al ceasului

Oscilatorul intern este utilizat atunci când semnalul BCKP_CLOCK din interfața I²C este setat la un nivel ridicat. O vedere apropiată a diagramei de control a sursei de ceas este prezentată în Figura 7 de mai sus.

Oscilatorul este configurat ca frecvență RC de 25 kHz, cu cel mai mare divizor de ieșire disponibil la oscilatorul OUT0 (8/64). Întreaga configurație este văzută în fereastra de proprietăți prezentată în Figura 7. În acest fel, oscilatorul intern va genera o frecvență de ceas de 48 Hz.

Oscilatorul este activ numai atunci când semnalul BCKP_SOURCE este la un nivel ridicat împreună cu semnalul POR. Acest control se face prin conectarea acestor două semnale la portul NAND al 4-L1 LUT. Ieșirea NAND este apoi conectată la intrarea pinului de control al puterii oscilatorului.

Semnalul BCKP_SOURCE controlează MUX-ul construit cu 3-L10 LUT. Când semnalul BCKP_SOURCE este la un nivel scăzut, sursa de ceas din planul de bază provine de la PIN2. Când acest semnal este la un nivel ridicat, sursa de ceas din panoul de fundal vine de la oscilatorul intern.

Pasul 8: Ieșirea ceasului planului de fund sau controlul pinului de ieșire Segment 15

Backplane Clock Output sau Segment 15 Output Control Pin
Backplane Clock Output sau Segment 15 Output Control Pin

Pinul 20 din acest design are o funcție dublă, care depinde de sursa de ceas selectată a planului de fundal. Funcționarea acestui pin este controlată cu un LUT de 4 intrări, așa cum se arată în Figura 8. Cu un LUT de 4 biți, este posibil să se asocieze funcționarea portului XOR cu un MUX de ieșire. Când semnalul BCKP_SOURCE este la un nivel ridicat, ieșirea LUT va urma ceasul oscilatorului intern. Apoi pinul 20 funcționează ca o ieșire de ceas din panoul de fundal. Când semnalul BCKP_SOURCE este la un nivel scăzut, ieșirea LUT va fi operația XOR între SEG_OUT_15, de la ieșirea ASM și semnalul de ceas al planului de fundal. Configurația LUT pe 4 biți pentru a face această operație este prezentată în Figura 8.

Pasul 9: Prototipul sistemului LCD

Prototipul sistemului LCD
Prototipul sistemului LCD
Prototipul sistemului LCD
Prototipul sistemului LCD

Pentru a demonstra utilizarea soluției de proiectare GreenPAK, un prototip de sistem LCD a fost asamblat pe o placă de calcul. Pentru prototip, un LCD static cu șapte segmente, format din 4 cifre, este acționat de două dispozitive GreenPAK pe placa DIP. Un dispozitiv (IC1) folosește oscilatorul intern pentru a conduce backplane-ul LCD, iar celălalt dispozitiv (IC2) folosește acest semnal ca referință de intrare a backplane-ului. Ambele circuite integrate sunt controlate prin interfață I²C de un microcontroler STM32F103C8T6 (MCU) într-o placă de dezvoltare minimă.

Figura 9 prezintă schema conexiunilor dintre cele două circuite integrate GreenPAK, afișajul LCD și placa MCU. În schemă, dispozitivul GreenPAK cu referință U1 (IC1) conduce cifrele LCD una și două (partea stângă LCD). Dispozitivul GreenPAK cu referință U2 (IC2) conduce cifrele LCD trei și patru, plus segmentul COL (partea dreaptă LCD). Sursa de alimentare pentru ambele dispozitive provine de la regulatorul de pe placa de dezvoltare a microcontrolerului. Două jumperi detașabile între sursa de alimentare și pinii VDD ai fiecărui dispozitiv GreenPAK sunt adăugați pentru măsurarea curentului cu un multimetru.

O imagine a prototipului asamblat este prezentată în Figura 10.

Pasul 10: Comenzi I²C pentru control LCD

Comenzi I²C pentru control LCD
Comenzi I²C pentru control LCD
Comenzi I²C pentru control LCD
Comenzi I²C pentru control LCD
Comenzi I²C pentru control LCD
Comenzi I²C pentru control LCD

Cele două dispozitive GreenPAK de pe panou sunt programate cu același design, cu excepția valorii Control Byte. Octetul de control al IC1 este 0 (adresa I²C 0x00), în timp ce octetul de control I²C este 1 (adresa I²C 0x10). Conexiunile dintre segmentele de afișare și driverele de dispozitiv sunt rezumate în tabelul de mai sus.

Conexiunile au fost selectate în acest mod pentru a crea o schemă mai clară și pentru a simplifica asamblarea conexiunilor din panoul de verificare.

Controlul ieșirii segmentului se face prin comenzi de scriere I²C în intrări virtuale I²C și registre de ieșire ASM. Așa cum este descris în nota de aplicație AN-1090 Controlere IOC simple I²C cu SLG46531V (consultați Nota de aplicație AN-1090 Controlere IOC simple I²C cu SLG46531V, Dialog Semiconductor), comanda de scriere I²C este structurată după cum urmează:

● Începeți;

● Octet de control (bitul R / W este 0);

● adresa cuvântului;

● Date;

● Opriți-vă.

Toate comenzile de scriere I²C sunt făcute la adresa Word 0xF4 (intrări virtuale I²C) și 0xD0 (ieșire ASM pentru starea 0). Comenzile pentru a scrie în IC1 și pentru a controla cifrele LCD 1 și 2 sunt rezumate în Tabelul 3. În reprezentarea secvenței de comandă, paranteză deschisă „[” denotă semnalul Start, iar paranteză închisă „]” denotă semnalul Stop.

Cei doi octeți de mai sus controlează segmente ale cifrei LCD 1 și cifrei 2 împreună. Aici, abordarea este de a utiliza un tabel de căutare individual (LUT) în software pentru fiecare cifră, luând în considerare segmentele din ambii octeți. Valorile de octeți din tabelul de căutare ar trebui să fie amestecate folosind o operație SAU bit și apoi trimise la IC. Tabelul 4 prezintă valoarea Byte0 și Byte1 pentru fiecare valoare numerică care ar trebui să fie scrisă în fiecare cifră afișată.

De exemplu, pentru a scrie în cifra 1 numărul 3, iar în cifra 2 numărul 4, Byte0 este 0xBD (0x8D bit bit SAU cu 0xB0) și Byte 1 este 0x33 (0x30 bit bit SAU cu 0x03).

Comanda de a scrie în IC2 și controlul cifrelor 3 și 4 sunt descrise în tabelul 5.

Logica de control a cifrelor 3 și 4 este asemănătoare controlului cifrelor 1 și 2. Tabelul 6 arată LUT pentru aceste două cifre.

Diferența în IC2 este segmentul COL. Acest segment este controlat de Byte1. Pentru a configura acest segment întunecat, ar trebui să se facă o operațiune SAU bit între Byte1 și valoarea 0x40.

Pasul 11: Comenzi I²C pentru test LCD

Comenzi I²C pentru test LCD
Comenzi I²C pentru test LCD

Pentru testarea LCD a fost dezvoltat un firmware în limbajul C pentru placa MCU. Acest firmware va trimite o secvență de comenzi către ambele circuite integrate de pe panou. Codul sursă pentru acest firmware se află în secțiunea Anexă. Întreaga soluție a fost dezvoltată folosind Atollic TrueStudio pentru STM32 9.0.1 IDE.

Secvența comenzilor și valorile respective afișate pe afișaj sunt rezumate în Tabelul 7 de mai sus.

Pasul 12: Rezultatele testelor

Rezultatele testului
Rezultatele testului
Rezultatele testului
Rezultatele testului

Testul prototipului constă în verificarea valorilor afișate după o comandă MCU și măsurarea chiuvetei curente de fiecare IC în timpul funcționării.

Imaginile LCD pentru fiecare valoare de comandă sunt prezentate în Tabelul 8 de mai sus.

Chiuveta de curent pentru fiecare dispozitiv a fost măsurată cu un multimetru, în intervalul său cel mai scăzut de curent de 200 µA. Imaginile curentului măsurat pentru fiecare dispozitiv, în timpul pornirii și funcționării normale, sunt prezentate în Tabelul 9 de mai sus.

Concluzie și discuții privind rezultatele

A fost prezentat designul unui driver LCD static cu putere redusă cu dispozitiv GreenPAK. Acest design arată clar una dintre cele mai mari caracteristici ale dispozitivelor GreenPAK: curentul lor de repaus redus. Deoarece dispozitivele GreenPAK sunt o soluție bazată pe hardware, este posibil să lucrați la o operațiune cu frecvență joasă, în acest caz, 48 Hz. O soluție bazată pe MCU va necesita o frecvență de funcționare mai mare, chiar și pentru perioade periodice scurte de timp, și apoi va atrage mai multă energie. Și, comparând dispozitivul GreenPAK cu un CPLD (Complex Programmable Logic Device), este clar să vedem că de obicei un CPLD are un curent de repaus mai mare de 20 µA.

Este interesant de menționat că acest design ar putea fi ușor modificat pentru a se potrivi mai bine cerințelor unui proiect specific. Un bun exemplu este segmentul de control pinout. Acestea ar putea fi ușor schimbate pentru a simplifica în același timp placa de circuite imprimate și dezvoltarea software-ului. Aceasta este o caracteristică interesantă atunci când dispozitivul este comparat cu un ASIC (Circuit integrat specific aplicației). De obicei, ASIC-urile sunt proiectate pentru a se potrivi pe o gamă largă de aplicații, iar o rutină software inițială ar trebui să fie scrisă pentru a configura IC-ul înainte de operație. Un dispozitiv configurabil ar putea fi proiectat pentru a porni gata de utilizare după pornire. În acest fel, este posibil să reduceți timpul de dezvoltare software pentru configurarea inițială IC.

Codul sursă al aplicației poate fi găsit aici în Anexa A.

Recomandat: