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).
|