Caratteri CGRAM nei display
LCD
a matrice
|
Come funziona la CGRAM
Il funzionamento del generatore di caratteri in RAM è del tutto analogo a
quello del generatore in ROM. Il codice del carattere viene passato alla CGRAM, dalla quale si genera la
matrice che sarà trasferita alla DDRAM ed al display.
Quindi la CGRAM avrà la stessa struttura logica della CGROM;
semplicemente, il contenuto della CGROM è fisso e immutabile e quello della
CGRAM viene determinato dall' utente.
Come abbiamo visto prima, un carattere si compone di 8 linee da 5 bit
ciascuna, ovvero occupa 8 locazioni consecutive nella memoria CG.
La CGRAM tipicamente è costituita da 64 celle da 1 byte ciascuna e un gruppo di 8 celle consecutive determina un simbolo.
Se vogliamo ottenere la visualizzazione di una freccia verso l' alto,
occorrerà questa matrice:
Locazione |
Punti |
Contenuto |
binario |
hex |
1 |
0 |
0 |
1 |
0 |
0 |
00100 |
04h |
2 |
0 |
1 |
1 |
1 |
0 |
01110 |
0Eh |
3 |
1 |
0 |
1 |
0 |
1 |
10001 |
11h |
4 |
0 |
0 |
1 |
0 |
0 |
00100 |
04h |
5 |
0 |
0 |
1 |
0 |
0 |
00100 |
04h |
6 |
0 |
0 |
1 |
0 |
0 |
00100 |
04h |
7 |
0 |
0 |
1 |
0 |
0 |
00100 |
04h |
8 |
0 |
0 |
0 |
0 |
0 |
00000 |
00h |
Quindi, per la freccia vista sopra, si dovrà scrivere la sequenza di bytes
04h, 0Eh, 11h, 04h, 04h, 04h, 04h, 04h, 00h in 8 locazioni consecutive della
CGRAM.
Il meccanismo che consente la selezione della matrice in ROM o in RAM
dipende dal valore del byte passato in ingresso come indirizzo.
|
Torniamo ad osservare un tipico set di caratteri: questo a lato è il set di caratteri
A00 del controller HD44780. I codici di ingresso da 10h a 7Fh corrispondono a
lettere, numeri e simboli ASCII.
L' area tra A0h e FFh è occupata dai caratteri del giapponese
semplificato, da lettere dell' alfabeto greco ed altri simboli.
L' area di indirizzi tra 80h e 9Fh è inutilizzata e da origine
alla visualizzazione di uno spazio vuoto sul display. Anche l' area
tra 10h e 1Fh è inutilizzata in questa tabella..
Ma se inviamo come dato un valore compreso tra 00h e FFh ?
|
Nella tabella, questi valori non hanno alcun carattere
corrispondente, dato che essi vengono deviati alla tabella
della CGRAM, dove corrispondono ai caratteri introdotti dall' utente.
In altre parole, i simboli definiti dall' utente vanno ad occupare le prime
8 caselle della tabella: i simboli pre fissati in ROM risponderanno agli
indirizzi da 10h a FFh e quelli programmati dall' utente saranno richiamate dai codici tra 00h e 07h.
Questo consente comunque una corrispondenza della prima parte della tabella CG
con la tabella ASCII
standard, dato che i suoi primi valori non sono simboli stampabili, ma
caratteri di controllo.
Quindi, dal punto di vista dell' uso del carattere speciale programmato in
CGRAM non esiste alcuna differenza rispetto a quello di un carattere in CGROM:
la scrittura di un dato verso la DDRAM darà origine alla visualizzazione
del simbolo corrispondente al dato stesso, a seconda si trovi
in CGRAM o CGROM.
Di conseguenza:
movlw 0x41
call senddatatolcd
produce la presentazione del carattere A mentre
movlw 0x02
call senddatatolcd
produce la presentazione del carattere che l' utente ha programmato nella
locazione 02h della CGRAM.
1. - All' accensione del display, il controller provvede, tra le
altre cose, all' azzeramento del contenuto della RAM. Solitamente essa
viene riempita con il carattere 20h, che corrisponde nella tabella
ASCII ad uno spazio.
Questo serve a presentare il display inizialmente vuoto e pronto per
ricevere i caratteri dall' host.
L' azzeramento della RAM riguarda anche la CGRAM, per cui essa,
dopo l' arrivo della tensione di alimentazione, è vuota.
Quindi, nell' esempio precedente, alla
casella 02h non ci sarà alcun carattere visualizzabile.
Prima di usare i caratteri in CGRAM occorrerà scriverli !
2. - E occorrerà scriverli ogni volta che al controller viene a mancare l'
alimentazione, dato che una caduta della tensione di alimentazione cancella il
contenuto della RAM.
3. - Da osservare che, trattandosi di una RAM, qualsiasi locazione può essere
scritta, sovrascritta o letta a piacere. Quindi, volendo utilizzare solamente
il carattere al codice 02h, si potrà scrivere la corrispondente CGRAM
lasciando inutilizzato tutto il rimanente.
Per contro, avendo a disposizione solo 8 caratteri nel formato 5x8, se,
durante il lavoro, ne occorrono altri, sarà necessario scrivere quelli da
utilizzare, cancellando
uno o più dei precedenti.
|
|