Tutorials - Elettronica

 

 

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.


 

 


  • Copyright © afg. Tutti i diritti riservati.
    Aggiornato il 12/01/13.