Tutorials - Elettronica

 
 

Caratteri CGRAM nei display LCD
 a matrice


DDRAM e CGRAM. 

Ricordiamo ancora che la comunicazione con l' integrato che gestisce l'LCD avviene manipolando linee di controllo e linee dati. Infatti il controller dispone di una linea specifica per l' accesso in lettura o scrittura (RW) e una per la selezione tra comandi e dati (RS), più le 8 linee dati.
A riguardi di queste ultime, va tenuto presente che, anche nel caso in cui il collegamento con il microprocessore ne utilizzasse solo 4, per risparmiare i/o, un dato o comando si estende comunque su 8 bit.

Dal punto di vista fisico della mappa di memoria del controller, l' area RAM è occupata dalla DDRAM a partire dall' indirizzo 80h; bastano 7 bit per l' indirizzamento. Il comando di posizionamento ad un indirizzo in DDRAM è questo:

Comando

Controllo

 

Dato

Funzione Tempo di
esecuzione
Set DDRAM
address
RS RW   D7 D6 D5 D4 D3 D2 D1 D0

Imposta un indirizzo di DDRAM che potrà poi essere letto o scritto

37-100 us
0 0   1 indirizzo DDRAM

Dal punto di vista del codice, quindi:

bcf     RSpin          ; set RS = 0 for command
bcf     RWpin          ; set RW = 0 for write operation 
movlw   .5             ; DDRAM relative address 5
iorlw   b'100000000'   ; add DDRAM base address  
call    writechar      ; invio il comando al modulo

La CGRAM si trova ad occupare 64 locazioni a partire dall' indirizzo 40h, dunque si estende da 40h a 7Fh: sono sufficienti 5 bit per l' indirizzamento. Ne risulta che il comando ha questa forma:

Comando

Controllo

 

Dato

Funzione Tempo di
esecuzione
Set CGRAM
address
RS RW   D7 D6 D5 D4 D3 D2 D1 D0

Imposta un indirizzo di CGRAM che potrà poi essere letto o scritto

40 us
0 0   0 1 indirizzo CGRAM

Dal punto di vista del codice, quindi:

bcf     RSpin          ; set RS = 0 for command
bcf     RWpin          ; set RW = 0 for write operation 
movlw   .5           ; CGRAM relative address 5
iorlw   b'010000000'   ; add CGRAM base address  
call    writechar      ; invio il comando al modulo

porta l' indirizzo corrente del contatore di CGRAM a 05h.


Una nota.

Notiamo che è corrente utilizzare, per semplicità, l' indirizzo relativo della RAM; questo rende più semplice il collocamento dei caratteri nelle locazioni DDRAM corrispondenti alla visualizzazione sul display. Ad esempio, per un display da 1 riga di 16 caratteri:

il primo carattere visualizzato si trova all' estremo di sinistra (home), alla posizione 00 (carattere 1).

Il carattere Y si trova alla posizione 0Fh.

In effetti, nella memoria DDRAM, il primo carattere occupa la locazione 80h e l' ultimo la locazione 8Fh. 

Colonna
LCD

Posizione del simboli sul display Posizione del codice in DDRAM
hex bin
decimale hex bin
1 0 00h 00000000 80h 10000000
2 1 01h 00000001 81h 10000001
.. .. .. .. .. ..
15 14 0Eh 00001110 8Eh 10001110
16 15 0Fh 00001111 8Fh 10001111

Si può osservare che la posizione del codice in DDRAM è semplicemente la posizione del simbolo sul  display con il bit 7 = 1. Quindi, dal punto di vista del codice:

movlw   0x05           ; DDRAM relative address 5
iorlw   b'100000000'   ; add DDRAM base address  
call    writechar      ; invio il comando al modulo


 e

movlw   0x85           ; DDRAM address 5
call    writechar      ; invio il comando al modulo

producono lo stesso risultato.
 
Analogamente per la CGRAM, dove i due bit più significativi sono fissi a 01, per cui

movlw   0x05           ; CGRAM relative address 5
iorlw   b'100000000'   ; add CGRAM base address  
call    writechar      ; invio il comando al modulo


 e

movlw   0x45           ; CGRAM address 5
call    writechar      ; invio il comando al modulo

sono equivalenti.

Come ulteriore chiarimento, indichiamo nella tabella qui sotto, nel caso del messaggio visualizzato nell' immagine, il contenuto della DDRAM:  

Colonna LCD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Carattere visibile 1 x 1 6   L C D   D I S P L A Y
Contenuto DDRAM 31h 78h 31h 36h 20h 4Ch 43h 44h 20h 44h 49h 53h 50h 4Ch 41h 59h
Locazione DDRAM 80h 81h 82h 83h 84h 85h 86h 87h 88h 89h 8Ah 8Bh 8Ch 8Dh 8Eh 8Fh

La conversione da codice contenuto nella DDRAM e simbolo ASCII corrispondente è effettuata come descritto prima, ovvero utilizzando il codice come indirizzo della tabella del CG ed estraendo e trattando i 40 bit corrispondenti (operazione completamente trasparente per l' utente).

 


 

 

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