LCD con caratteri a matrice
|
Come funziona l' accesso al display
Abbiamo dato qualche cenno sulla struttura del modulo. Ora vediamo come sia
possibile utilizzarlo.
Di nuovo, sul WEB è disponibile una massa considerevole di informazioni.
Qui, cerchiamo in poche parole di evidenziare i punti essenziali per la
comprensione del funzionamento.
In primo luogo, occorre considerare che il display LCD, all' arrivo della
tensione, non fa nulla fino a quando non si trasmettono i comandi per
inizializzarlo.
Ovvero, il controller HD44780 è uno slave che non prende
iniziative, ma si limita ad eseguire i comandi che riceve attraverso la sua
interfaccia.
In effetti non è che non faccia nulla. L' arrivo della tensione, nei
termini indicati sul foglio dati, determina una serie di operazioni iniziali
di reset che impongono alcune condizioni di partenza:
- interfaccia a 8 bit
- display a 1 linea
- font 5x8
- display off
- cursore off
- blinking off
- AC incrementato
- no shift
- riempimento della DDRAM con il codice 20h
dopo di che si avvia il suo compito principale, che è quello di
presentare sul display il contenuto della DDRAM con le modalità specificate
nell' inizializzazione. Siccome all' inizio la DDRAM è riempita di 20h,
ovvero del carattere ASCII che indica uno spazio vuoto, il cursore è spento e
lo stesso pannello LCD è spento, sul display non appare nulla !
In effetti, regolando al massimo il contrasto, si potrà osservare la
linea attiva di caratteri un poco più visibile del fondo.
Se il controller può governare in completa
autonomia diverse combinazioni di linee/caratteri e di metodi di
visaulizzazione dei messaggi, è compito dell' utente programmarlo per la
modalità voluta: il modulo LCD richiede
obbligatoriamente una qualche inizializzazione. Anche se si
trattasse di un display ad una sola riga, che le condizioni di di default del
reset hardware per quello che riguarda cursore, font, ecc siano adeguate,
occorrerà per lo meno accendere il display, che, per ragioni di riduzione del
consumo, all' inizio è disattivato.
Si parla di inizializzazione hardware quando ci si basa sul POR (Power
On Reset- reset all' arrivo della tensione di alimentazione) che il controller
esegue automaticamente. Il POR avviene al momento dell'applicazione della
tensione. A questa segue una più o esteso invio di comandi per far assumere
al display le funzioni desiderate.
Si parla di inizializzazione software per una serie di comandi e
temporizzazioni che possono essere forniti in qualsiasi momento per far
variare le condizioni di lavoro del controller o resettarlo; questo è utile nel caso in cui occorra, durante il
funzionamento, riportare il display ad una situazione di partenza certa.
I controller prevedono per
default che i dati e i comandi necessari al
controllo del display siano passati dall' host attraverso una
interfaccia parallela a 8 bit.
Esistono anche controller
con accesso seriale clock+dati, SPI o I2C, ma la struttura di base è comunque la
medesima.
Il microcontroller host piazza il dato che vuole inviare al display sul bus
parallelo, assieme al corretto settaggio delle linee di controllo ausiliarie
RS e RW. Fatto questo,
viene comandato un impulso positivo sul pin E, che conferma il trasferimento
dei dati verso il display o permette la lettura dei dati emessi dal display
sul bus.
Dunque, l'interfaccia parallela del
controller, in modo nativo, è composta da:
- un
data bus a 8 bit
(D0.. D7)
si
può accedere al display con l' intero bus a 8 bit. Però è possibile
anche, dopo un opportuno comando, usare solamente
i pin da D4 a D7, con un bus a 4 bit. In questo caso i dati e le parole di
comando, essendo comunque lunghi 8 bit, vanno trasmessi in due tempi successivi.
- una linea di abilitazione E
Nella comunicazione parallela uno strobe (Enable) indica al
modulo che i dati sono stabilizzati sulle linee parallele e possono essere
recuperati, abilitando il display a riceverli. Il livello di abilitazione
è alto, mentre invece con E = 0 il display è disabilitato.
La cattura dei dati è effettuata sul fronte di discesa dell' impulso.
- una linea di selezione dei registri RS
indica se le linee di accesso portano un dato(RS
= 1) o un comando a un registro di controllo (RS = 0).
- una linea di selezione lettura/scrittura
R/W
seleziona se si vuole scrivere sul display (R
/ W = 0) o leggere dal display (R
/ W = 1). Questa linea, essendo i tempi di esecuzione dei comandi
più o meno determinati dal clock del controller, può non essere usata
nel caso in cui
non occorre leggere dal display, utilizzando delle temporizzazioni
adeguate. In queste condizioni, RW va collegato alla massa, in modo da
abilitare sempre una condizione di scrittura.
Questa struttura, assieme alla corrispondenza tra caratteri ASCII e font
del display, rende la scrittura del driver per queste periferiche assai facile e anche,
assieme al costo limitato, è una delle ragioni per la loro ampia diffusione.
Più complesso, però, è l' uso delle varie funzioni offerte dal controller, che
riguardano ad esempio il cursore (visibile, invisibile, lampeggiante) , la
direzione della scrittura (da destra a sinistra o viceversa), lo scrolling
delle righe, la scelta dei font, e, per controller più recenti (ad esempio
Sitronix ST7036), effetti grafici, di unione di linee, di inversione del
display, ecc.
Esiste un set di comandi specifico, standard dall'
HD44780 per le azioni basilari, mentre le funzioni extra sono
proprie di controller particolari e si basano sulla presenza di registri che
nel modello Hitachi di riferimento non esistono.
|