Tutorials - Elettronica

 

 

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.


 

 


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