Caratteri CGRAM nei display
LCD
a matrice
|
Dot-matrix LCD.
Per prima cosa, rivediamo la struttura interna del controller che gestisce il
modulo LCD:
Dallo schema a blocchi osserviamo che i circuiti integrati del genere HD44780 hanno tre differenti aree di
memoria:
- CGROM, ovvero generatore di caratteri in ROM (memoria a sola
lettura, non cancellabile)
- CGRAM, ovvero generatore di caratteri in RAM, memoria
modificabile
- DDRAM, che è l' area di memoria che corrisponde ai caratteri
visualizzati sul display
Alcuni controller compatibili implementano una ulteriore zona di memoria:
- SEGRAM, cioè un' area programmabile per visualizzare icone a
segmenti
Tutti questi controller, comunque, gestiscono caratteri nel formato 5x8 o 5x11
punti (5 colonne x 8 linee o 11 linee), le cui matrici sono disponibili nel generatore di caratteri in ROM (CGROM).
Il procedimento di presentazione di un carattere sul display è composta da alcune
semplici azioni:
- Il controller, attraverso il bus dati (DB0-DB7) riceve dall' host un codice
esadecimale che viene posto in un buffer di ingresso. Lo stato della linea
RS stabilisce se si tratta di un comando o di un dato da visualizzare.
- Se si tratta di un dato, il codice viene salvato nella DDRAM, della capacità
tipica di 80 celle da 8 bit
ciascuna. Tutte o parte di queste celle, a seconda delle dimensioni del
pannello LCD, corrispondono ai caratteri visualizzati.
- Per la visualizzazione vera e propria, il controller invia i dati in
DDRAM come indirizzi di un generatore di caratteri (CG),
la cui uscita è composta da 40 bit.
- Questi bit sono trattati da un sistema di shift register parallelo-seriale, che, attraverso le
opportune temporizzazioni, il controller utilizza per l'accensione di
punti sul pannello LCD. I 40 bit di uscita dal CG vengono organizzati come
matrice di 8 linee e 5 colonne. I bit a 1 corrispondono ad un punto
visualizzato, i bit a zero sono punti vuoti.
Nell' esempio qui sotto, il generatore di caratteri utilizza i codici ASCII,
per cui byte 41h in ingresso come dato, corrisponde alla visualizzazione della
lettera A maiuscola.
Quindi, l' operazione di scrittura di un carattere consiste
semplicemente nell' inviare un dato corrispondente al carattere desiderato
nella DDRAM ed il controller si occupa autonomamente delle complesse
operazioni di gestione del pannello LCD. Volendo scrivere sul
display la lettera 'A', basterà la sequenza di istruzioni:
movlw 0x41
call senddatatolcd
dove senddatatolcd è una
subroutine che trasferisce il dato dall'accumulatore W alla DDRAM del
controller.
Durante questa operazione le linee RS e RW dovranno assumere il
giusto livello, comunicando al controller che si tratta di una scrittura dati:
Comando |
Controllo |
|
Dato |
Funzione |
Tempo di
esecuzione |
Write data to DDRAM |
RS |
RW |
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Invia un dato alla DDRAM per la
visualizzazione |
37-100us |
1 |
0 |
|
dato alla DDRAM |
Come accennato, la DDRAM ha una ampiezza di 80 bytes, a cui corrisponde
un carattere nell' area visibile sul pannello LCD a seconda del
numero di linee e caratteri per linea disponibili.
Ad esempio, per un display
da 4 linee di 20 caratteri ciascuna, tutti e 80 i bytes in memoria DDRAM
saranno visibili. In un display da 1 riga per 8 caratteri, solamente 8
locazioni DDRAM saranno visualizzate.
|