Display LCD alfanumerico
(LM016L, LTN221, ecc.)
(agg. al 19-05-2002)

Introduzione

   Innanzi tutto in quest’articolo si parlerà di display del tipo alfanumerico e pertanto ne sono esclusi quelli grafici e a "sette segmenti".

   Il mercato ne offre diversi modelli che si differenziano soprattutto per il numero dei caratteri visualizzabili e la presenza della retroilluminazione; in ogni caso essendo garantita la compatibilità hard/software, sono accomunati da analoghe caratteristiche tecniche.

   Caratteristiche tecniche:

   In un certo senso, lavorare con questi dispositivi è come utilizzare un terminale o meglio una stampante. E' sufficiente inviare il codice del carattere richiesto per mezzo dell’interfaccia parallela e tutto il resto è per così dire automatico.

   L'unico ostacolo è rappresentato dal fatto che l'apparecchiatura posta al comando del display dovrà essere del tipo a microprocessore e difficilmente potrà essere sostituita con una a componentistica discreta.

   Una caratteristica su cui si deve porre molta attenzione: 'il tempo di esecuzione dei comandi'. Tale variabile deve essere tenuta molto in considerazione, sopratutto quando vengono inviate rapide sequenze di comandi. In teoria, prima di ogni comando dovrebbe essere testato il cosiddetto bit di stato 'busy', che riflette lo stato di 'pronto' del processore grafico.

   In genere tale procedura viene omessa, a favore di altre che favoriscono un codice più snello e veloce.

Tavola comandi

Istruzione

code

Descrizione
tempo
esecuz.

RS
R/W

D7

D6

D5

D4

D3

D2

D1

D0
Clear

0

0

0

0

0

0

0

0

0

1
Cancella tutto il display e posiziona il cursore in posizione Home

80us/
1,5ms
Return
Home

0

0

0

0

0

0

0

0

1

x
Il cursore e la pagina del display vengono posizionati nella posizione di Home. Il contenuto della DDRAM non viene alterato.

40us/
1,5ms
Setta
movimenti

0

0

0

0

0

0

0

1

I/D

S
"I/D: direz. cursore (1=increm.) (0=decrem.)
S: shift display (1= abilita shift)"

40us
Controlli
Display

0

0

0

0

0

0

1

D

C

B
D: enable display (0=OFF) (1=ON)
C: enable cursore (0=OFF) (1=ON)
B: blink cursore (0=OFF) (1=ON)"

40us
Shift cursore
e display

0

0

0

0

0

1

S/C

R/L

x

x
S/C: (0=muove cursore) (1=muove display)
R/L: (0=muove sinistra) (1=muove destra)

40us
Setta
Interfaccia

0

0

0

0

1

DL

N

F

x

x
DL: bit interfaccia (0=4bit) (1=8bit)
N: n. linee display (0=1 linea) (1=2 linee)
F: font carat. (0=5x7) (1=5x10)"

40us
Setta indiriz.
CG RAM

0

0

0

1

indirizzo CG RAM
Abilita la RD/WR sulla CG RAM all'indirizzo specificato

40us
Setta indiriz.
DD RAM

0

0

1

indirizzo DDRAM
Abilita la RD/WR sulla DD RAM all'indirizzo specificato

40us
Legge busy
e counter

0

1

BF

indirizzo counter
Legge il flag di busy e la posizione attuale del cursore

1us
Write data

1

0

write data
Write data nella memoria CG RAM o DDRAM

40us
Read data

1

1

read data
Read data nella memoria CG RAM o DDRAM

40us

Schema connessioni

1
 massa

7

 D0

2
aliment. 5 Volt

8

 D1

3
Vo (polarizz. display)

9

 D2

4
 RS

10

 D3

5
W/R (write / read)

11

 D4

6
E (enable)

12

 D5
 

13

 D7
   

14

 D8

Retro-illuminazione

   Anche se la connessione tipica di questi display è di 14 terminali, in alcuni casi si possono trovare due pin aggiuntivi per l'alimentazione della retroilluminazione.

   Per l'alimentazione della retroilluminazione vengono utilizzati due sistemi:

Schema interfaccia

   Gli schemi sottostanti si riferiscono ad un interfacciamento con micro serie ST62xx. Tale configurazione non permette l'utilizzo di comandi di lettura, sacrificati per rendere il software più snello e risparmiare un 'pin'.

   In genere il comando di lettura è utilizzato unicamente per testare il bit di 'busy', che permette di testare se il processore del display è in grado di accettare ulteriori scritture. Con un buon progetto dei tempi di esecuzione del software è possibile evitare eventuali accavallamenti di comandi.

   Nel caso di interfacciamento a 4 bit, il software dovrà essere in grado di trasmettere il byte di comando in due tempi. Si allungano leggermente i tempi di esecuzione, ma si riesce a risparmiare n. 4 'pin'.

   Utilizzando un interfaccia a 8 bit, come è ovvio aspettarsi, avremo un codice programma più ridotto, ma a fronte di un hardware più 'sprecone'. Tale soluzione in genere è sconsigliata, in quanto il guadagno di tempo così ottenuto, verrà vanificato dalle pause che dovranno essere introdotte per sincronizzare il trasferimento dei dati.

Programmazione

   Configurazione

   Prima poter utilizzare il display è necessario configurare il processore grafico che sovraindende la visualizzazione, e pertanto dovranno essere trasmessi in sequenza i seguenti comandi:

Gestione

by C. Michieletto