Tutorials - Elettronica

 
 

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.

 


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 04/12/12.