Caratteri CGRAM nei display
LCD
a matrice
|
Alcune domande comuni.
Q.: Che funzione hanno gli indirizzi da 08h a 0Fh nella tabella del
CG ?
Per chi ha seguito con attenzione quanto detto, dovrebbe avere chiaro come
operare con la CGRAM, ma dovrebbe essere afflitto anche da un dubbio.
Rivediamo la tabella del CG.
Se osserviamo la prima colonna, vediamo che essa si compone di 16 elementi,
ovvero gli indirizzi tra 00h e 0Fh.
Abbiamo detto che i caratteri in CGRAM, 8 simboli nel formato 5x8, sono
richiamati dai codici da 00h a 07h. E i codici da 08h a 0Fh ?
Si tratta di una "copia" dei primi 8 bytes. Quindi, inviando in
DDRAM il codice 00h è lo stesso che inviare il codice 08h e così via.
Q.:Inizializzando il display si cancella la CGRAM?
L'inizializzazione via software non modifica il contenuto della CGRAM.
Solamente una caduta della tensione di alimentazione danneggia quanto scritto
nella RAM; la mancanza di tensione ed il suo ritorno, genera un reset
hardware che azzera il contenuto della RAM.
Q.: Tutti i controller dispongono della CGRAM descritta?
Non tutti i controller possono supportare le stesse caratteristiche di
CGRAM. Se il controller è dichiarato compatibile con Hitachi HD44780, allora
dovrà avere al minimo le stesse funzioni base, ma potrà avere anche u
superset di funzioni e una maggiore disponibilità sulla RAM.
Come al solito, occorre consultare il foglio dati del componente.
In particolare, è possibile che diverse versioni dello stesso controller
abbiano generatori di carattere diversi. In particolare, le versioni
realizzate OEM per un cliente particolare potranno essere differenti in
qualche modo da quelle standard commerciali.
Q.: Che differenza c'è nell' uso delle matrici 5x7 e 5x8 ?
Nessuna dal punto di vista dell' impiego: il controller, inizializzato per
matrici 5x7(8) utilizza 8 bytes consecutivi della CGRAM per visualizzare un
simbolo. Se l' ottavo byte è a 0 (matrice 5x7) viene presentata una riga
vuota; se contiene dei pixel attivi (5x8), essi saranno presenti sull' ottava
riga.
Quindi è possibile avere librerie di simboli in entrambi i formati e
mescolare in CGRAM le due modalità, che, dal punto di vista del controller,
sono la stessa cosa.
Q.: C'è qualche precauzione da adottare nella creazione di simboli
per la CGRAM ?
- E' sicuramente opportuno, la prima volta che si predispone il contenuto
della CGRAM, scrivere tutti i bytes, in quanto, all' accensione, la RAM
dovrebbe essere azzerata, ma è più sicuro assegnare il corretto valore a
tutti i bit interessati alla visualizzazione, onde evitare sorprese. E la
stessa operazione è consigliata anche dopo un reset software, dato che il
contenuto della RAM potrebbe essere stato alterato.
- Anche se è possibile scrivere singoli bytes in CGRAM, questa operazione
va compiuta solamente se si è sicuri di cosa si sta facendo, onde evitare
di ottenere simboli incomprensibili
- Però, la cosa senz'altro più importante nella creazione di un nuovo
simbolo è quella di realizzarne uno efficace, ovvero di immediata
comprensione. La matrice 5x7 o x8 non ha la stessa efficacia di un sistema
grafico e non è possibile rappresentare qualsiasi cosa. Una volta
disegnato un simbolo, provatelo sul pannello LCD e verificate con altri se
il suo significato è compreso senza ambiguità.
Q.: Quale rapporto c'è tra un dato in DDRAM e un carattere visibile
sul pannello LCD?
Un ulteriore dubbio può nascere dal rapporto tra la DDRAM e il pannello
LCD.
Un carattere in DDRAM può corrispondere ad una visualizzazione sul pannello,
ma può anche essere presente in DDRAM e non essere visualizzato in quel
momento.
Tra DDRAM e display c'è una relazione che dipende dalle dimensioni del
display. Ad esempio::
Modulo |
Caratteri visibili |
Linea 1 |
Linea 2 |
Linea 3 |
Linea 4 |
16 x 2 |
00h - 0Fh |
40h - 4Fh |
- |
- |
20 x 2 |
80h - 93h |
C0h - 13h |
- |
- |
40 x 2 |
00h - 27h |
40h - 67h |
- |
- |
20 x 1 |
00h - 13h |
- |
- |
- |
20 x 4 |
00h - 13h |
40h - 53h |
14h - 27h |
54h - 67h |
Nel primo caso, un carattere scritto all' indirizzo relativo 00h (indirizzo
assoluto di RAM 80h) sarà visualizzato nella prima posizione della prima
riga; uno all' indirizzo relativo 40h (indirizzo assoluto di RAM C0h) sarà
visualizzato nella prima posizione della seconda riga.
Un carattere scritto nella locazione relativo 10h (assoluto 90h) sarà
presente in memoria DDRAM, ma non sarà visibile se non facendo shiftare il
contenuto della linea a sinistra.
Per contro, la stessa situazione nel display da 20 caratteri su una riga
renderà visibile il simbolo nella posizione 17.
Questo permette, se non si usa mai lo shitft, di impiegare anche la DDRAM come
memoria per uso generico oppure consente di preparare messaggi che potranno
essere visualizzati con uno shift del display, anche per effetti di movimento.
|