LCD driver a bordo di microcontrollori

Una panoramica di alcune interessanti soluzioni presentate dalle principali case produttrici oggi sul mercato, preceduta da una breve introduzione sul principio di funzionamento e sulle modalità di controllo di uno schermo LCD.

I display LCD sono la tecnologia di visione attualmente più diffusa sul mercato, con un fatturato annuo che dal 2007 supera costantemente  i 100 mila milioni di dollari. Tra i vantaggi principali vi sono l’alta risoluzione, la maggiore brillantezza dell’immagine, le dimensioni e la dissipazione di potenza più contenute. Sono caratterizzati tuttavia da un tempo di risposta maggiore rispetto, ad esempio, ai dispositivi al plasma e da un angolo di visione limitato, oltre a presentare effetti di motion blur (immagini sfocate con oggetti in movimento). Vista l’elevata diffusione degli schermi LCD anche nelle più semplici applicazioni embedded, sono sempre di più i microcontrollori  che oggi integrano interfacce per pilotare direttamente tali periferiche.

Cenni sulla tecnologia LCD

Il principio di funzionamento di uno schermo LCD è, almeno a parole, piuttosto semplice. Come mostrato in figura 1, due lastre realizzate su substrato di vetro racchiudono dei cristalli liquidi.

Figura 1: struttura di uno schermo LCD.

Figura 1: struttura di uno schermo LCD.

La superficie interna dei vetri è trattata con dei polimeri così da imporre una direzione di polarizzazione ai cristalli; le direzioni che vengono imposte in prossimità dei due diversi vetri sono tra loro perpendicolari. Di conseguenza, lungo l’intercapedine tra le lastre, i  cristalli finiscono per creare una struttura elicoidale, ruotando gradualmente di 90° la direttrice di allineamento da un lato all’altro dello schermo. Sulle superfici esterne dei vetri sono invece disposti degli elettrodi in ITO (Indium Tin Oxide). L’intera struttura è infine racchiusa da due filtri con polarizzazioni perpendicolari tra loro. In condizioni normali la luce incidente viene polarizzata in una certa direzione dal primo filtro, quindi viene ruotata di 90° dalla struttura elicoidale creata dal cristallo liquido. Può attraversare così anche il secondo filtro e lo schermo appare illuminato. Applicando una opportuna tensione di polarizzazione agli elettrodi è possibile modificare la struttura elicoidale del cristallo; in questo caso la luce polarizzata dal primo filtro non viene quindi ruotata e viene assorbita dal secondo filtro. Lo schermo appare allora scuro. Utilizzando elettrodi opportunamente sagomati è possibile modificare localmente la struttura del cristallo, così da creare delle celle e realizzare schermi a segmenti (si pensi ad esempio ai display a carattere) o vere e proprie matrici di pixel per display grafici. Per indirizzare i singoli pixel o i segmenti di un LCD esistono tipicamente due metodi: di tipo statico e di tipo dinamico (o multiplexato). In un’architettura statica è previsto un elettrodo per ogni pixel/segmento presente sulla lastra esterna dello schermo, ma questi elettrodi sono riferiti a un unico piano di riferimento realizzato sulla lastra interna. Una soluzione simile produce immagini della migliore qualità, ma richiede un elevato numero di connessioni, in particolare per display a matrici di pixel di maggiore risoluzione. In un’architettura dinamica invece, da un lato, sono realizzati diversi elettrodi di riferimento (chiamati backplane) e, dall’altro, diversi pixel/segmenti sono connessi a uno stesso elettrodo (chiamato line). In questo modo ogni pixel/segmento viene attivato in corrispondenza di una precisa combinazione di eccitazione di line e backplane. L’intero schermo viene infine controllato con uno schema TDM (time division multiplex).  I segnali di attivazione dei pixel/segmenti devono in ogni caso essere di natura AC. Un segnale DC produrrebbe infatti delle reazioni chimiche nel cristallo che ne comprometterebbero irreversibilmente la funzionalità. La tensione di polarizzazione a ogni elettrodo ha pertanto tipicamente un andamento a scala, con una serie di livelli aventi tra loro una differenza in tensione costante. Nelle architetture statiche sono sufficienti solo due tensioni di segno opposto; nel caso invece di schermi con duty ratio 1/2 (2 linee di backplane) sono necessarie 3 tensioni (si parla in questo caso di architetture 1/2 bias). Negli schermi più complessi con rapporto di multiplexing fino anche a 1/64, si può arrivare ad aver bisogno di 6 diversi punti di polarizzazione (configurazione 1/5 bias) per far funzionare correttamente lo schermo.

LCD driver a bordo di microcontrollori

Sul mercato sono oggi disponibili schermi LCD che integrano  il pannello e l’elettronica di driving dei segmenti. Tali schermi presentano interfacce digitali di controllo di tipo seriale o parallelo. In molte applicazioni, tuttavia, soprattutto in quelle a basso costo e a ridotta dissipazione di potenza, e dove siano richiesti schermi di risoluzione non elevata, può essere più conveniente disporre soltanto del pannello. In questo caso vi sono sul mercato alcuni microcontrollori che integrano driver appropriati per poterli controllare direttamente. Uno di questi è il microcontrollore LPC2157/2158 di NXP che integra al suo inter no una periferica PCF8576D (disponibile anche come soluzione singlechip); la CPU di cui dispone il microcontrollore è un processore ARM7TDMI-S, un RISC general purpose a 32 bit che offre elevate prestazioni con ridotta dissipazione di potenza. La periferica PCF8576D, il cui schema a blocchi è riportato in figura 2, è in grado di controllare schermi di tipo statico o dinamico con fino a 4 backplane e 32 segmenti.

Figura 2: schema a blocchi della periferica PCF8576D integrata nei microcontrollori LPC2157/2158.

Figura 2: schema a blocchi della periferica PCF8576D integrata nei microcontrollori LPC2157/2158.

In funzione del numero di uscite attive richieste per il controllo dei backplane, sono supportate diverse configurazioni del display. Ad esempio, nel caso di schermi con 4 backplane, possono essere controllati display a carattere a 7 segmenti con fino a 128 segmenti/16 digit, oppure display alfanumerici a 14 segmenti con fino a 8 caratteri o, ancora, schermi a matrice con fino a 128 pixel. Le diverse tensioni di polarizzazione necessarie per generare la forma d’onda AC di controllo dei segmenti sono ricavate internamente mediante un divisore di tensione che consiste di una serie di tre resistori connessi tra la tensione di alimentazione dello schermo e il riferimento  di questa. La tensione di alimentazione deve essere compensata esternamente in temperatura ove richiesto dalla particolare applicazione. La periferica integra una RAM che consente di memorizzare localmente la configurazione on/off dei vari segmenti/pixel; questo consente di ridurre il carico della CPU, richiedendone l’intervento solo nel caso in cui si voglia modificare l’immagine che viene visualizzata. La periferica dispone di interfaccia di controllo I2C cui accede la CPU; la stessa interfaccia è disponibile anche esternamente attraverso due pin del microcontrollore per garantire una maggiore flessibilità d’impiego. Interessante, considerati anche i  costi davvero bassi, è anche la gamma di microcontrollori con driver LCD offerta da Microchip. I  dispositivi si basano su CPU PIC18F. Il recente PIC18F8xJ90,  ad esempio, supporta LCD di tipo statico o dinamico con fino a 192 pixel in una configurazione a 48 segmenti e 4 backplane. Un insieme di registri accessibili direttamente nello spazio di indirizzamento della CPU consente di definire lo stato on/off di ogni pixel/segmento dell’immagine. La frequenza di frame dello schermo viene derivata mediante prescaler programmabile da un segnale di sincronizzazione a 1 kHz (frequenza nominale) generato direttamente dall’oscillatore di sistema, da uno dei timer interni o da una sorgente di interruzione. Analogamente al dispositivo di NXP, il PIC18F8xJ90 integra i circuiti per la generazione delle tensioni di bias dello schermo nelle configurazioni statica, 1/2 bias e 1/3 bias. Diverse sono le modalità supportate, tra queste vi è l’impiego di un regolatore di tensione interno (con eventualmente capacità di boost fino a 3,6 V) o di una rete di divisione di tensione mediante resistori esterni nel caso in cui la corrente richiesta dallo schermo superi la capacità di driving del microcontrollore. In questo secondo caso, la tensione di riferimento del circuito ladder può essere fissata direttamente a massa o generata mediante regolatore interno, così da rendere possibile  il controllo mediante software del contrasto dello schermo. L’intero circuito di driving e controllo dell’LCD può essere configurato in modo da restare attivo anche nel caso in cui la CPU sia forzata in modalità di sleep. La periferica è in grado di generare un segnale di interruzione all’inizio di ogni frame; tale segnale può essere usato per risvegliare la CPU o richiedere l’aggiornamento, sincronizzato, dei registri dati che definiscono lo stato on/off dei singoli pixel/segmenti. Piuttosto simili a quelle descritte finora sono anche le caratteristiche dei driver LCD presenti nei microcontrollori a 8 bit della serie HCS08 di Freescale. A seconda del modello selezionato, sono supportate diverse configurazioni dello schermo, fino a quelle a 8 backplane e 24 segmenti o 4 backplane e 28 segmenti. Il driver supporta inoltre le diverse modalità di polarizzazione fino a quella 1/3 bias (vedi figura 3).

Figura 3: segnali di controllo di un LCD con un micro H8S nella modalità 1/4 duty - 1/3 bias.

Figura 3: segnali di controllo di un LCD con un micro H8S nella modalità 1/4 duty - 1/3 bias.

Le tre tensioni, in questo caso, sono derivate, al solito, da un circuito charge pump interno o mediante una rete di resistori esterni; la sorgente di alimentazione per il  circuito charge-pump può essere selezionata mediante registri di configurazione accessibili da parte della CPU. E’ possibile così alimentare l’LCD direttamente dalla tensione di alimentazione del microcontrollore, da una tensione regolata generata internamente o da una tensione di alimentazione separata esterna. In questo modo sono supportati sia schermi a 3 V che a 5 V. Nel caso in cui si utilizzi la tensione regolata internamente, è poi possibile controllare a software il contrasto dello schermo. Aumentando la tensione di alimentazione dello schermo, infatti, i  segmenti sono maggiormente energizzati diventando così più opachi. Il driver LCD opera con un clock di riferimento a 32.768 kHz interno derivato, per applicazioni a bassa dissipazione di potenza, direttamente da un cristallo esterno; supporta schermi con frequenza di frame compresa tra 28 e 58 Hz. Come per gli esempi visti in precedenza, i valori di on/off dei singoli segmenti sono configurabili direttamente dalla CPU mediante accesso a opportuni registri. Una linea di interruzione può essere inoltrata alla CPU in corrispondenza della visualizzazione di un frame sul display. Driver per LCD sono integrati anche nei microcontrollori della famiglia H8 di Renesas. La periferica integrata, in particolare, nei dispositivi della serie H8/3854 è in grado di gestire display a 8, 16 o 32 backplane e fino a 56 segmenti (per un numero massimo di punti pari a 1280). Supporta le varie modalità di bias fino a quella 1/6 bias; integra amplificatori operazionali per il pilotaggio  di schermi che richiedano correnti più elevate e un circuito step-up 3x. La tensione di alimentazione dello schermo può essere generata internamente mediante tale circuito o ricevuta dall’esterno; supporta l’uso di una rete di resistori di bleeder esterna (vedi figura 4).

Figura 4: impiego del circuito step-up 3x interno e di una rete di resistori di bleeder esterni con il controller LCD dei micro H8/3857.

Figura 4: impiego del circuito step-up 3x interno e di una rete di resistori di bleeder esterni con il controller LCD
dei micro H8/3857.

Il  contrasto dello schermo può essere controllato mediante software. La periferica non è direttamente accessibile nello spazio di indirizzamento del microcontrollore, ma dispone di un’interfaccia dedicata connessa alla CPU e di tipo parallelo per il controllo e la configurazione. Include una memoria da 64x32 bit bit-mapped di tipo dual-port che contiene l’immagine da visualizzare sullo schermo. La periferica può funzionare in modalità carattere (nella quale soltanto 5 bit di byte dati sono usati in uscita, così da supportare efficientemente  display con dimensioni del carattere pari a 5x8 punti) e in modalità grafica. Supportata le funzionalità di scrolling del display e di blinking di un’area dello schermo configurabile dinamicamente. Dispone inoltre di una modalità di standby nella quale i circuiti step-up integrati e gli amplificatori operazionali sono spenti al fine di ridurre la dissipazione di potenza; il contenuto della memoria dati, tuttavia, non è alterato. Driver per LCD non potevano mancare neanche nei micro AVR di Atmel. La periferica integrata supporta display con fino a 40 segmenti e 4 backplane e controllo di tipo statico, 1/2 e 1/3 bias. Ha identica capacità di source e sink di corrente per massimizzare  il tempo di vita dello schermo; genera on-chip le tensioni di polarizzazione intermedie, richiedendo un solo condensatore di bypass esterno per operare correttamente. La frequenza di clock che determina direttamente  il periodo di frame dello schermo può essere configurata mediante selezione tra una sorgente esterna e il clock di sistema. I  dati del display sono memorizzati localmente; una sorgente di interruzione può essere inoltrata alla CPU per richiedere l’aggior namento dei dati o risvegliare il processore  dalla modalità di sleep. Dispone di una funzionalità di blanking dello schermo, con la quale gli elettrodi connessi ai segmenti e ai backplane sono cortocircuitati a massa per consentire di scaricare completamente il pannello.  Tale operazione viene tipicamente eseguita prima di disabilitare lo schermo per evitare che una tensione DC residua sui segmenti produca la visualizzazione di un’immagine che sbiadisce lentamente.

 

 

6 Commenti

  1. Giovanni Di Maria Giovanni Di Maria 8 febbraio 2019
  2. Andrea Garrapa Andrea Garrapa 8 febbraio 2019
  3. Roberta Fiorucci Roberta Fiorucci 8 febbraio 2019
  4. Stefano Lovati Stefano Lovati 8 febbraio 2019
  5. Adriano Gandolfo Adriano Gandolfo 8 febbraio 2019
  6. Giordana Francesca Brescia Giordana Francesca Brescia 8 febbraio 2019

Scrivi un commento

EOS-Academy
Abbonati ora!