LCD con caratteri a matrice
|
Per questo proponiamo un rapido dettaglio di ogni comando.
Opcode |
Hex |
Funzione |
Clear & home |
01h |
Questo comando fa si che tutte le celle della DDRAM siano
sovrascritte con un carattere non visualizzabile, ad esempio
Space (20h).
Il contatore degli indirizzi della DDRAM viene azzerato e il
cursore si porta nella prima casella (in alto a sinistra),
detta Home, ovvero il primo carattere della prima riga.
Ovviamente se il cursore non è attivato, non sarà visibile. |
Home |
02h-03h |
Il cursore si porta nella prima casella (in alto a
sinistra), detta Home, ovvero il primo carattere della prima
riga. La differenza essenziale con la precedente è che il
contenuto della DDRAM non viene cambiato e quindi il testo
presentato resta non modificato.
Ovviamente se il cursore non è attivato, non sarà visibile,
ma in ogni caso l' indirizzo della DDRAM attivo sarà 00h. |
Entry
mode set |
04h
07h |
Questo comando contiene due bit di specificazione:
I / D (incremento / decremento) indica se il cursore, dopo
una scrittura di un dato in DDRAM, si sposterà verso destra
(orientamento della scrittura corrente) o verso sinistra
- I / D = 0 spostamento verso sinistra
- I / D = 1 spostamento verso destra
L' operazione, in sostanza, incrementa o decrementa l'
indirizzo del contatore AC.
Se si sta facendo riferimento alla CGRAM il display non sarà
interessato da questa selezione.
Il secondo bit S indica se a muoversi sarà il testo, con
il cursore che resta nella stessa posizione.
bit |
Funzione |
I/D |
S |
0 |
0 |
il cursore si muove da destra verso sinistra. L'
effetto è quello di un testo che viene scritto da
destra verso sinistra, come nella scrittura
araba. |
0 |
1 |
il cursore resta fisso nella sua posizione e il
testo scorre da sinistra a destra. L' effetto è
quello di un testo scritto al contrario che progredisce verso
destra, originandosi dal punto fisso del cursore. |
1 |
0 |
il cursore si muove da sinistra verso destra. L'effetto è quello di
un testo che viene scritto in modo ordinario. |
1 |
1 |
il cursore resta fisso nella sua posizione e il
testo scorre da destra a sinistra. L' effetto è
quello di un testo che ha origine dal cursore fisso e
che scorre da destra verso sinistra. |
Questi comandi sono programmabili anche durante l'
operatività normale del display e danno vita ad un certo
numero di "effetti speciali" che possono essere
utili in varie circostanze. Siccome a parole non è semplice
far comprendere esattamente gli effetti che si ottengono dal
movimento della riga oppure del cursore, una ottima
simulazione grafica si trova a http://www.dinceraydin.com/lcd/commands.htm
|
Display on/off control |
08h
0Fh |
Anche questo comando contiene bit di specificazione:
bit
D |
Funzione |
0 |
display non visibile |
1 |
display visibile |
Il display viene "spento", diventando invisibile
il testo, oppure "acceso", rendendo il testo
visibile. Il contenuto del testo non viene alterato.
bit
C |
Funzione |
0 |
cursore non visibile |
1 |
cursore visibile |
Il cursore viene "spento", diventando invisibile,
oppure "acceso", rendendolo visibile. Il cursore è
presente come un trattino che occupa i pixel della linea più
bassa della matrice. Il contenuto del testo non viene
alterato.
bit
B |
Funzione |
0 |
cursore fisso |
1 |
cursore lampeggiante |
Il cursore lampeggiante prende la forma di un blocco che
occupa tutta la matrice e si alterna nella presentazione al
carattere, dando l' impressione di lampeggio. Il contenuto del
testo presentato non viene alterato in quanto il
cursore viene sovrapposto solo durante sul display e non modifica il contenuto della DDRAM.
|
Cursor or display shift |
10h
1Fh |
Anche questo comando contiene due bit di specificazione:
bit
S/C |
Funzione |
0 |
shift del cursore |
1 |
shift del display |
Gestisce lo spostamento (shift) del cursore oppure dei
caratteri sulla linea. Il contenuto della DDRAM non viene
alterato, ma viene fatto variare solo il puntatore che
gestisce il refresh del video. La scelta è se far scorrere il
cursore sulla linea oppure mantenerlo fisso e far scorrere la
linea di caratteri.
bit
R/L |
Funzione |
0 |
shift a sinistra |
1 |
shift a destra |
Definisce la direzione dello spostamento.
Da notare che il valore dei due bit meno significativi del comando
è indifferente, per cui il comando occupa i codici da 10h a
1Fh.
|
Function set |
20h
3Fh |
Questo comando contiene tre bit di specificazione
bit
DL |
Funzione |
0 |
interfaccia 4 bit |
1 |
interfaccia 8 bit |
ovvero indica se l' interfaccia parallela è a 8 o 4 bit.
In questo
secondo caso sono usati i bit b7:4 (D7:4), cioè il nibble
alto, mentre
i rimanenti vanno connessi a massa.
Siccome comandi e dati sono comunque a 8 bit, nel modo a 4 bit
occorrono due passaggi per lettura o scrittura.
Evidentemente si utilizzeranno meno pin del microcontroller da
cui il modulo LCD dipende, ma le operazioni richiederanno più
tempo.
bit
N |
Funzione |
0 |
1 linea |
1 |
2 linee |
Specifica il numero di linee del display. 2 viene
selezionato anche per display a 4 linee.
bit
F |
Funzione |
0 |
font 5x8 |
1 |
font 5x11 |
Specifica la dimensione della matrice del carattere. La
matrice più grande permette una visualizzazione di un numero
minore di caratteri.
Da notare che il valore dei due bit meno significativi del comando
è indifferente, per cui il comando occupa i codici da 20h a
3Fh.
|
Set CGRAM Address |
40h
7Fh |
In effetti non si tratta di un vero e proprio comando, ma
della trasmissione al controller del display dell' indirizzo
di uno delle 64 locazioni della CGRAM.
L' indirizzo di CGRAM richiede 6 bit. D7:6 sono il selettore
del comando verso la CGRAM
|
Set DDRAM Address |
80h
FFh |
Anche qui si tratta della trasmissione al controller del
display dell' indirizzo di uno delle 80 locazioni della DDRAM.
L' indirizzo della DDRAM richiede 7 bit. D7 è ilo selettore
del comando verso la DDRAM.
|
Dobbiamo aggiungere, poi, che le operazioni di scrittura
nella RAM hanno come selettore i bit D6 e D7, a cui viene aggiunto l'
indirizzo a cui accedere. Che si tratti di una scrittura, questo è
stabilito dalla linea RW=0.
Che si tratti di una scrittura in RAM è indicato dalla linea RS=0:
Istruzione |
Controllo |
Bus |
Funzione |
RS |
R/W |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Indirizzo CGRAM |
0 |
0 |
0 |
1 |
CGRAM Address |
Indirizzo CGRAM per leggere o scrivere un dato. |
Indirizzo DDRAM |
0 |
0 |
1 |
DDRAM Address |
Indirizzo DDRAM per leggere o scrivere un dato. |
|
Questo è possibile perchè bastano 6 bit per indirizzare
la CGRAM e 7 bit per indirizzare la DDRAM. Ovviamente
il comando impegnerà tutti i codici da 40h a FFh, ma viene composto dalla
sovrapposizione dell' indirizzo e del valore dei bit 7 e 6 per la CGRAM e 7
per la DDRAM. Quindi, ad esempio, per chiamare l' indirizzo di CGRAM 34h
questa sarà la sequenza (istruzioni Assembly PIC):
; scrivere l' indirizzo 34h in CGRAM
movlw
0x34 ;
indirizzo
iorlw b'01000000'
; maschera comando CGRAM
bcf
RS ;
RS=0
bcf
RW ;
RW=0
call
Scrivi ;
scrivi sul display |
e per la DDRAM:
; scrivere l' indirizzo 34h in DDRAM
movlw
0x34 ;
indirizzo
iorlw b'10000000'
; maschera comando DDRAM
bcf
RS ;
RS=0
bcf
RW ;
RW=0
call
Scrivi ;
scrivi sul display |
Ovviamente si possono realizzare altre procedure; questa è indicata solo
come esempio per chiarire il concetto della formazione del byte.
|