Sei sulla pagina 1di 5

Uso degli LCD alfanumerici f.b.

02/2002

I display LCD alfanumerici sono usati in molteplici occasioni per la loro facilità di impiego e gestione; essi
hanno infatti un generatore di caratteri a bordo, per cui è sufficiente inviare il codice Ascii dei caratteri che si
desidera visualizzare.
Ne esistono di vari tipi: 1 riga da 16 caratteri, 2 da 16, 1 da 20, 2 da 20, 4 da 20, 2 da 40, ecc.
La dimensione del carattere può variare a seconda del modello, anche se normalmente la visualizzazione
avviene su una matrice 7x5. Possono inoltre avere una retroilluminazione per l’uso in ambienti poco luminosi.
I costruttori sono molteplici e a titolo di esempio si ricordano Sharp, Samsung, Datavision, Okaya, Hitachi,
Optrex, Sanyo, Varitronix, Epson, Densitron ed altri ancora. Ognuno di loro ha svariati modelli a catalogo.
Fortunatamente sono abbastanza standardizzati, almeno a livello di comandi e di pinout, così che sia il progetto
del circuito che la scrittura del programma sono spesso indipendenti dal modello prescelto.
La figura seguente riporta le dimensioni di un LCD Sharp mod. LM20A21 (20x2):

La disposizione dei pin può essere su doppia fila o su singola, così come riportato in figura. La numerazione e
la funzione rimangono comunque le stesse nei due casi; ovviamente i pin 15 e 16 sono presenti solo in caso di
retroilluminazione.

Come si vede, oltre ad Data Bus a 8 bit, i segnali in gioco sono solo RS, R/W ed E. Se poi si considera che
quasi sempre è richiesta la sola scrittura sull’LCD il segnale R/W può essere messo fisso a massa e i segnali da
gestire rimangono solo RS ed E.
1
A fianco è riportato il diagramma
delle temporizzazioni per una
operazione di scrittura. Da esso si può
desumere quale è la sequenza delle
operazioni da eseguire sui segnali RS,
R/W, E e DataBus per il corretto
funzionamento del display.
Sotto è invece riportata la tabella
riassuntiva delle istruzioni valide per
un LCD. Si può notare che tutti quelle
che hanno RS=0 sono dei “comandi”,
mentre le ultime due, con RS=1,
riguardano il trasferimento “dati” in
formato ascii. Tra parentesi quadra è riportato il tempo indicativo di esecuzione del comando; si deve stare attenti
a non inviare un nuovo comando prima che il precedente sia stato eseguito, perché altrimenti esso viene ignorato.

RS R/W B7 B6 B5 B4 B3 B2 B1 B0
0 0 0 0 0 0 0 0 0 1 Clear Display [1.64mS]
0 0 0 0 0 0 0 0 1 X Return Home [1.64mS]
0 0 0 0 0 0 0 1 D S Entry Mode Set [40uS]
D: 0=direction -, 1=direction +
S: 0=no shift, 1=shift
0 0 0 0 0 0 1 D C B Display on/off [40uS]
D: 0=disply off, 1=on
C: 0=cursor off, 1=on
B: 0=blink off, 1=on
0 0 0 0 0 1 S R X X Display or Cursor Shift [40uS]
S: 0=cursor only, 1=both
R: 0=left; 1=right
0 0 0 0 1 D N F X X Set data interface [40uS]
D: 0=4 bit, 1=8 bit
N: 0=F works, 1=F is ignored
F: 0=5x7 dots, 1=5x10 dots
0 0 0 1 A A A A A A Set char gen RAM address [40uS]
Lets you select one of 64 chars for loading a bit map
0 0 1 A A A A A A A Set display RAM address [40uS]
Lets you select an address in the display buffer.
With this you can write in a position that is off the
viewable display.
0 1 B A A A A A A A Read busy flag, address pointer [1uS]
If B=1, display is updating.
Also returns address of last data transfer.
1 0 D D D D D D D D Write Data [40uS]
Writes to Display if previous instruction was
SET DISPLAY RAM ADDR. Writes to char gen if
previous instruction was SET CHAR GEN RAM ADDR.
1 1 D D D D D D D D Read Data [40uS]
Reads from Display if previous instruction was SET
DISPLAY RAM ADDR. Reads from char gen if previous
instruction was SET CHAR GEN RAM ADDR.

2
Modalità operative nell’uso dell’LCD alfanumerico.
La prima cosa da fare, dopo aver dato alimentazione, è inizializzare l’LCD. E’ necessario “informarlo” su
come si intende operare e sulle funzionalità desiderate. Si può infatti operare con bus a 4 o 8 bit, scegliere lo
scorrimento verso destra o verso sinistra, scegliere se attivare o meno il cursore, scegliere se quest’ultimo deve
essere di tipo “sottolineato” o “pieno” in negativo, se deve essere fisso o lampeggiante, ecc. ecc.
Tutto questo si fa inviando dei “comandi” all’LCD, cioè degli opportuni byte tenendo RS=0. Qui sotto sono
riportate diverse sequenze, provenienti da diversi autori. E’ importante stabilire la giusta sequenza operativa in
base alle proprie esigenze di funzionamento.

1. Comando 01h ;Display clear


2. Ritardo 4ms
3. Comando 38h ;Function set: 2 linee, 8 bit dati
4. Ritardo 4ms
5. Comando 0Ch ;display ON, cursore OFF, blink OFF
6. Ritardo 1ms
7. Comando 06h ;entry mode set: Increment, Shift OFF
8. Ritardo 1ms

Dopo la sequenza iniziale, è subito possibile visualizzare le scritte desiderate sull’LCD.


Normalmente questo si fa puntando prima il cursore nella posizione desiderata e inviando poi i caratteri da
visualizzare in formato ascii; essi saranno mostrati in sequenza, con scorrimento automatico del cursore, se così si
è scelto nella inizializzazione. Il puntamento cursore viene fatto con il comando “Set display RAM address”.
A tale proposito è importante sapere una cosa: per comodità loro, i costruttori spesso usano lo stesso circuito
con la stessa Ram sia per display a una o due righe, sia per i 16 che per i 20 o i 40 caratteri. Il risultato è che la
locazione finale della prima riga non è contigua a livello di Ram con la prima locazione della seconda riga. Se ad
esempio mando la scritta “abcdefghilmnopqrstuvz” ad un display 2x16, vedrò i primi 16 caratteri
“abcdefghilmnopqr” sulla prima riga ma non vedrò “stuvz” sulla seconda. Questi ultimi 5 caratteri sembrano persi
nel nulla, ma in realtà sono andati a finire nelle locazioni Ram
17…21, che non sono poi portate fuori sul display vero e
proprio. Nel passare dalla prima alla seconda riga è quindi
sempre consigliabile fare un puntamento alla locazione giusta,
prima di inviare i caratteri.
A fianco sono riportati gli indirizzi delle locazioni per
display a due righe, che dovrebbero essere validi sia per le 16
colonne, che per le 20 o le 40 colonne.
Nella pagina seguente è riportato il Set di caratteri di un tipico LCD. Come si vede, oltre alle lettere del nostro
alfabeto e ai consueti simboli e segni di punteggiatura, vi sono anche una serie di caratteri giapponesi.
Rimane infine da sottolineare la possibilità di generare fino a 16 caratteri propri o simboli grafici, da utilizzare
poi nelle scritte, come se fossero dei caratteri ascii con valore da 0 a 15.

3
Set di caratteri di un tipico LCD. Quelli in colonna 0000 possono essere definiti dall’utente.

4
Nuovo Set Europeo di caratteri di un LCD. Quelli in colonna 0000 possono essere definiti dall’utente.

Potrebbero piacerti anche