LCD con caratteri a matrice
|
Il set dei comandi
Abbiamo detto che HD44780 è
un vero
e proprio microcontroller dedicato all' interfaccia tra un dispositivo
esterno e un pannello LCD a matrice di punti.
Quindi, come
ogni microcontroller dispone di un set di istruzioni, dette comandi,
accessibili dall' interfaccia.
Si tratta di istruzioni del tutto proprie, finalizzate esclusivamente ad
ottenere certe funzioni dall' LCD.
In effetti,
tutte le operazioni di gestione del display che consistono nella
presentazione del contenuto della DDRAM o CGRAM sono svolte in modo del
tutto trasparente per l' utente, che potrà però programmare modalità
per il cursore, cancellazione del display, spegnimento e accensione, ecc.,
oltre a quelle necessarie per configurare le modalità di accesso, il
numero di righe, le dimensioni della matrice.
La tabella
seguente raccoglie i codici dei comandi:
Istruzione |
Controllo |
Bus |
Funzione |
Tempo MAX |
RS |
R/W |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Clear display & Hpme |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
Cancella il
display e riporta il cursore alla posizione iniziale |
1,6 ms |
Cursor
Home |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
- |
Riporta il cursore alla posizione
iniziale, ma non cancella il display |
1,6 ms |
Direzione
cursore e scrolling testo |
0 |
0 |
0 |
0 |
0 |
1 |
I/D |
S |
Movimento del cursore (I/D) e
dei caratteri (S).
|
40 us |
Controllo cursore e display |
0 |
0 |
0 |
0 |
1 |
D |
C |
B |
Display
visibile-On
o no-Off
(D)
Cursore
visibile-On
o no-/Off (C)
Cursore
lampeggiante (B). |
Spostamento
cursore o scorrimento del display |
0 |
0 |
0 |
1 |
S/C |
R/L |
- |
- |
Movimento del cursore o scrolling del display (S/C) e direzione del movimento.
|
Interfaccia, font e linee |
0 |
0 |
1 |
DL |
N |
F |
- |
- |
Interfaccia (DL),
numero linee
(N) e
matrice (F). |
Indirizzo CGRAM |
0 |
1 |
CGRAM Address |
Indirizzo CGRAM per leggere o scrivere un dato. |
Indirizzo DDRAM |
1 |
DDRAM Address |
Indirizzo DDRAM per leggere o scrivere un dato. |
Scrittura dato |
1 |
0 |
Dato da scrivere |
Scrive un dato nella CGRAM o nella DDRAM |
40 us |
Lettura
BF e indirizzo |
0 |
1 |
BF |
AC - Address Counter |
Lettura Busy Flag e
Address Counter
della locazione corrente |
0 |
Lettura dato |
1 |
1 |
Dato da leggere |
Legge un dato dalla CGRAM o dalla DDRAM |
0 |
|
- indica che il valore del bit è indifferente (solitamente si
tiene a 0).
0 indica che le operazioni di lettura non richiedono attese
per essere completate.
Per capire meglio la struttura dei comandi, facciamo alcune
considerazioni:
-
Ogni comando ha una lunghezza di 8 bit
-
Un bit del comando, portato a 1, indica al controller
quale è il gruppo di comandi; per visualizzare meglio la cosa nella
tabella sopra sono stati evidenziati in grigio questi bit
-
Alcuni comandi sono costituiti da un singolo codice univoco
(Clear display,
Cursor Home)
-
Gli altri sono costituiti dal bit indicatore e da due o più bit di opzioni.
Nella tabella che segue sono descritti
questi bit:
Bit |
Valore
|
0 |
1 |
I/D |
Ad ogni
scrittura decrementa la posizione del cursore |
Incrementa la posizione del cursore |
S |
Ad ogni scrittura fa lo scrolling del display |
Nessuno scrolling |
D |
Display non visibile |
Display visibile |
C |
Cursore non visibile |
Cursore visibile |
B |
Cursore non lampeggiante |
Cursore lampeggiante |
S/C |
Movimento del cursore |
Movimento dei caratteri |
R/L |
Movimento verso sinistra |
Movimento verso destra |
DL |
Interfaccia a 4bit |
Interfaccia a 8bit |
N |
Una linea di caratteri |
Due o più linee |
F |
Matrice 5x7 |
Matrice 5x10 punti |
BF |
Controller libero di accettare un nuovo comando |
Controller impegnato ad eseguire il comando precedente |
|
Un caso a parte è costituito dal byte 30h che viene utilizzato per l'
inizializzazione
Dettaglio dei comandi
Questa struttura fa si che alcuni comandi abbiano in tabella
la possibilità di essere eseguiti con più codici binari, dato che uno o due
dei bit che compongono il comando può essere indifferentemente 1 o 0. Ad
esempio, inviando sia 02h che 03h il controller interpreta entrambi come un
Home.
In altri comandi, la scelta delle opzioni stabilisce il codice per il comando.
Ad esempio:
Istruzione |
|
Bus
|
Funzione
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Direzione
cursore e scrolling testo |
|
0 |
0 |
0 |
0 |
0 |
1 |
I/D |
S |
Movimento del cursore (I/D) e
dei caratteri (S).
|
avendo 2 bit (D1 e D0) variabili, occupa 4 bytes,
così composti:
Bus
|
Hex |
Funzione
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
0 |
0 |
0 |
0 |
0 |
1 |
I/D |
S |
|
Movimento del cursore (I/D) e
dei caratteri (S).
|
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
04 |
il cursore si muove da destra verso sinistra. |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
05 |
il cursore resta fisso nella sua posizione e il
testo scorre da sinistra a destra. |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
06 |
il cursore si muove da sinistra verso destra. |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
07 |
il cursore resta fisso nella sua posizione e il
testo scorre da destra a sinistra. |
Le celle in grigio indicano i bit (D7:2) che sono
fissi e determinano il gruppo dei comandi; i rimanenti due bit
(D1:0) identificano le opzioni.
Dunque, il codice di un comando è composto da una parte
fissa, che possiamo chiamare identificatore del gruppo dei comandi, e da una
parte variabile che imposta le opzioni.
Così il gruppo comandi Controllo cursore e display
occuperà 8 codici, tutti funzionali, mentre il gruppo Spostamento
cursore o scorrimento del display occuperà 16 codici,
ripetendo quattro volte le quattro variazioni delle opzioni con le quattro
possibili combinazioni dei bit indifferenziati.
E' importante capire questa struttura perchè permette poi di
comprendere quella che sarà usata da altri controller che, per mantenere la
compatibilità base con l' HD44780, usano una stessa forma, ma introducono poi
altre opzioni, o utilizzando i bit indifferenziati o inserendo uno switch che
commuta un set di comandi alternativo.
Le definizioni dei comandi non hanno nulla a che fare con quelle
correntemente in uso nel set dei microcontroller, in quanto sono
dedicate ad una specifica attività e i loro mnemonici sono relativi a
queste funzioni.
|