Caratteri CGRAM nei display
LCD
a matrice
|
Visualizare caratteri dalla CGRAM.
Abbiamo descritto l' operazione di scrivere la CGRAM.
Abbiamo detto che al reset la CGRAM è vuota e che, comunque, la caduta
della tensione di alimentazione determina la perdita del contenuto della RAM.
Quindi è indispensabile caricare nella cella la maschera
necessaria per la presentazione a display del carattere voluto prima
di poterlo utilizzare.
MA questo NON
E' la presentazione del carattere stesso sul display.
Come i caratteri della CGROM sono fissati in memoria, ma sono presentati
sul display solamente quando il loro codice viene richiamato con una scrittura
della DDRAM, così anche per i caratteri creati dall' utente in CGRAM il loro
apparire sul video è determinato dalla scrittura in DDRAM del loro codice.
Fino a qua, ci siamo limitati solamente a caricare un'
area programmabile del CG con nuovi caratteri da noi decisi e
che non sono presenti nella ROM. Con il caricamento di bytes in CGRAM, sostanzialmente, abbiamo reso
potenzialmente disponibili alcuni caratteri extra, ampliando la tabella di
CGROM;
la scrittura della CGRAM è analoga all'aver fatto la spesa al market
e riempito il frigorifero. I cibi saranno disponibili per essere
cucinati quando desidero (ma non si cucineranno da soli...).
Se abbiamo caricato gli otto simboli in CGRAM come visto prima, possiamo visualizzarli
tutti con un semplice loop.
Il programma utilizza un contatore inizializzato a 0 e incrementato ad ogni
loop fino ad 8. Il valore del contatore è utilizzato come dato da inviare
alla DDRAM
per visualizzare i caratteri in CG da 00h a 07h:
; display 8 symbols from
CGRAM - address 00h to 07h
LCDCLR
; display clear and home
movlw
0 ;
from symbol 0
movwf temp1
; initialize code counter
lcdcgl:
movf temp1, w
; move code to W
call LCDWrDat
; write code
incf temp1,f
; inc code counter
btfss temp1,3
; if bit 3 set = 8
bra lcdcgl
; n - another loop
Ovviamente posso visualizzare un solo simbolo inviando il dato
corrispondente, compreso tra 00h e 07h, esattamente come si fa con un
qualsiasi altro simbolo definito nella tabella del CG.
Note
Per evitare possibili confusioni occorre ribadire ancora una volta la
struttura del generatore di caratteri in RAM:
- 8 blocchi da 8 bytes ciascuno sono disponibili per contenere 8 caratteri
nel formato a matrice 5x8
- la struttura dei simboli e il caricamento della matrice sono stati
descritti prima
- ogni blocco da 8 bytes, corrispondente ad un simbolo, ha un codice di
accesso che corrisponde ai bytes da 00h a 07h della tabella dei caratteri
- quando invio in scrittura nella DDRAM un dato di valore compreso tra 00h
e 07h, visualizzo il simbolo corrispondente in CGRAM
Inoltre:
- Esiste la possibilità di sbagliare il caricamento del simbolo in CGRAM:
basta iniziare da una locazione di memoria diversa da quelle di ingresso
degli 8 simboli. Ad esempio, se punto l'indirizzo relativo di CGRAM
04h e non a 00h e poi scrivo 8 bytes consecutivi, questi si posizioneranno
a cavallo dei due simboli richiamati rispettivamente dal dato 00h e 01h,
dando origine a presentazioni incomprensibili.
- Non esiste invece nessuna possibilità di richiamare un simbolo
"sbagliato" in quanto, inviando ad esempio il dato 05h in DDRAM,
il simbolo sarà tratto dalla CGRAM, con gli 8 bytes consecutivi che sono
stati caricati negli indirizzi relativi di CGRAM da 20h e 27h.
|