Tutorials - Elettronica

 
 

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.

 

 

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