home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca
 
DISPLAY LCD tipo: livello:
Nel tutorial verranno trattati i display Hitachi LCD HD44780 e tutti quelli compatibili
 
 



 

DISPLAY LCD "INTELLIGENTI"


© Enrico Strocchi - http://digilander.iol.it/strocchi


1.1 Introduzione

Molti dipositivi a microcontrollore usano un display LCD per mostrare delle informazioni. Qui di seguito verranno trattati i display Hitachi LCD HD44780 e ovviamenti tutti quelli compatibili. Questi display sono poco costosi, facili da usare e permettono di utilizzare fino a 8 righe da 80 caratteri. I display Hitachi hanno un set di caratteri ASCII più simboli giapponesi, greci e matematici.
Ognuno dei 640 caratteri è accessibile singolarmente utilizzando un driver/controllor montato sul retro del display. Questo permette di non utilizzare un numero enorme di fili, ma è possibile pilotarli attraverso un bus a 8 bit o a 4 bit. Nel primo caso servono oltre all'alimentazione di +5Vcc 11 linee di I/O, nel secondo solo 7 più l'alimentazione. Inoltre quando il display non e' abilitato le uscite vengono messe in alta impedenza ed è possibile utilizzare il bus per altri scopi.

1.2 Piedinatura

La piedinatura della tabella 1.2.1 è riferita a un display di massimo 80 caratteri.
La piedinatura della tabella 1.2.2 è riferita a un display con più di 80 caratteri.
NB La piedinatura và sempre prima controllata sul data-sheet del componente.

tab. 1.2.1

Pin
Simbolo
Livello
I/O
Funzione
1
Vss
-
-
Alimentazione (GND)
2
2
Vcc
-
-Alimentazione (+5V)
3
Vee
-
-
Regolazione contrasto
4
RS
0/1
I
0 = Input istruzioni; 1 = Input Data
5
R/W
0/1
I
0 = Scrivi sul display ; 1 = Leggi da display
6
E
1, 1-->0
I
Enable
7
DB0
0/1
I/O
Linea 0 bus dati (LSB)
8
DB1
0/1
I/O
Linea 1 bus dati
9
DB2
0/1
I/O
Linea 2 bus dati
10
DB3
0/1
I/O
Linea 3 bus dati
11
DB4
0/1
I/O
Linea 4 bus dati
12
DB5
0/1
I/O
Linea 5 bus dati
13
DB6
0/1
I/O
Linea 6 bus dati
14
DB7
0/1
I/O
Linea 7 bus dati (MSB)

tab 1.2.2
Pin
Simbolo
Livello
I/O
Funzione
1
DB7
0/1
I/O
Linea 7 bus dati (MSB)
2
DB6
0/1
I/O
Linea 6 bus dati
3
DB5
0/1
I/O
Linea 5 bus dati
4
DB4
0/1
I/O Linea 4 bus dati
5
DB3
0/1
I/O
Linea 3 bus dati
6
DB2
0/1
I/O
Linea 2 bus dati
7
DB1
0/1
I/O
Linea 1 bus dati
8
DB0
0/1
I/O
Linea 0 bus dati (LSB)
9
E1
1, 1-->0
I
Enable riga 0 e 1
10
R/W
0/1
I
0 = Scrivi sul display ; 1 = Leggi da display
11
RS
0/1
I
0 = Input istruzioni; 1 = Input Data
12
Vee
-
-
Regolazione contrasto
13
Vcc
-
-
Alimentazione (+5V)
14
Vss
-
-
Alimentazione (GND)
15
E2
1, 1-->0
I
Enable riga 2 e 3
16
nc




Ci sono di solito 14 pin per display fino a 80 caratteri (se ce ne sono di più fate riferimento al datasheet, ma dovrebbero servire per la retroilluminazione), di cui i primi 3 sono di alimentazione (Vcc,Vss e Vee per il contrasto), 3 di controllo e 8 per il bus dati.
Le 3 linee di controllo utilizzate sono:
Enable (E): Permette di utilizzare il display attraverso RS e R/W. Se E = 0 il display e' disabilitato, mentre se E = 1 il display è disponibile per ricevere le istruzioni dall'esterno.
Read/Write (R/W): Imposta se DB è in INPUT o in OUTPUT. Se R/W = 0 il display legge, altrimenti scrive sul bus.
Register Select (RS): Quando è 0 significa che una istruzione sta per essere scritta sul bus, se è a 1 significa che un sta per essere scritto un carattere.

1.3 Invio di dati

Una volta inviato il dato sul bus, il riconoscimento del display avviene durante il fronte di salita di enable.
Nel caso si interfacci il display usando 8-bit, il riconoscimento del dato avviene con un singolo impulso di enable. Invece nel caso in cui si utilizzino 4-bit, bisogna usare i 4 bit msb del display e usare due impulsi di enable: il primo per il riconoscimento dei 4 bit più significativi del carattere, mentre il secondo enable per gli altri 4 bit del dato.
In figura è mostrato l'andamento delle forme d'onde:

fig 1.3.1
Waves

1.4 Inizializzazione

    Il data-sheet del display HD44780U fornisce il seguende diagramma di flusso per inizializzare il display dopo l'accensione:

fig. 1.4.1
Initialize

Per il significato di N,F,I/D e S si veda il capitolo precedente.   

1.5 Set Istruzioni

tab. 1.5.1

Istruzione RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
Descrizione
Tempo
Pulisci Display
0
0
0
0
0
0
0
0
0
1
Pulisce il display e riporta il cursore nella posizione 0.
1,64ms
Cursore in posizione 0
0
0
0
0
0
0
0
0
1
X
Riporta il cursore nella posizione 0. Il display è traslato nella posizione originale (il contenuto DDRAM non cambia).
1,64ms
Set Mode
0
0
0
0
0
0
0
1
I/D
S
Imposta la direzione del cursore (I/D) e specifica lo shift del display(S). Queste operazioni vanno eseguite durante la lettura/scrittura
40us
Controllo ON/OFF display
0
0
0
0
0
0
1
D
C
B
Setta ON/OFF il display (D), ON/OFF il cursore (C) e ON/OFF il lampeggio del cursore (B).
40us
Cursore / Traslazione
0
0
0
0
0
1
S/C
R/L
X
X
Imposta il movimento del cursore o la traslazione del display (S/C) e la direzione (R/L). Il contenuto DDRAM non varia.
40us
Function Set
0
0
0
0
1
DL
N
F
X
X
Imposta il numero di bit dell'interfaccia, la lunghezza delle righe e i fonts.
40us
Imposta indirizzo CGRAM
0
0
0
1
Indirizzo CGRAM
Imposta l'indirizzo CGRAM. I dati CGRAM possono essere ricevuti e inviati dopo questa istruzione.
40us
Imposta indirizzo DDRAM
0
0
1
Indirizzo DDRAM
Imposta l'indirizzo DDRAM. I dati DDRAM possono essere ricevuti e inviati dopo questa istruzione.
40us
Lettura busy Flag e contatore indirizzo
0
1
BF
Indirizzo CGRAM / DDRAM
Leggi il busy flag (BF) che indica se l'istruzione è stata eseguita e leggi il contenuto del contatore dell'indirizzo CGRAM o DDRAM (dipende dall'istruzione precedente).
0us
Scrivi CGRAM o DDRAM
1
0
Dato da scrivere
Scrive un dato su CGRAM o DDRAM.
40us
Leggi CGRAM o DDRAM
1
1
Dato da leggere
Legge un dato da CGRAM o DDRAM
40us


DDRAM = Display Data RAM.
CGRAM = Character Generator RAM (memoria che contiene i caratteri).
Indirizzo DDRAM è la posizione del cursore.

tab. 1.5.2

1 = Lampeggio cursore acceso1 = Lampeggio cursore acceso
Bit
Impostazioni
I/D
0 = Decrementa posizione cursore
1 = Incrementa posizione cursore
S
0 = Nessuna traslazione display
1 = Traslazione display
D
0 = Display spento
1 = Display Acceso
C
0 = Cursore spento
1 = Cursore acceso
B
0 = Lampeggio cursore spento

S/C
0 = Sposta il cursore
1 = Trasla il display
R/L
0 = Trasla a sinistra
1 = Trasla a destra
DL
0 = Interfaccia a 4 bit
1 = Interfaccia a 8 bit
N
0 = 1/8 o 1/11 "Duty" (1 riga)
1 = 1/16 "Duty" (2 righe)
F
0 = 5x7 punti
1 = 5x10 punti
BF
0 = Disponibile
1 = Operazione in corso

1.6 Indirizzi DDRAM

Questo indirizzo rappresenta la posizione attuale del cursore nel display.

Display a 1 riga:
tab. 1.6.1

Dimensione Display
Posizione carattere (dec)
Indirizzo DDRAM (hex)
1x8
00..07
00..07
1x16
00..15
00..0F
1x20
00..19
00..13
1x24
00..23
00..17
1x32
00..31
00..1F
1x40
00..39
00..27

Display a 2 righe:
tab. 1.6.2
Dimensione Display
Posizione carattere (dec)
Indirizzo DDRAM (hex)
2x16
00..15
1° riga: 00..0F
2° riga: 40..4F
2x20
00..19
1° riga: 00..13
2° riga: 40..53
2x24
00..23
1° riga: 00..17
2° riga: 40..57
2x32
00..31
1° riga: 00..1F
2° riga: 40..5F
2x40
00..39
1° riga: 00..27
2° riga: 40..67

1.7 Caratteri

In figura 1.7.1 la tabella dei caratteri standard presente nel display.

fig. 1.7.1
Tabella Caratteri  


2.UTILIZZO DEI PIC

2.1 Interfaccia

E' possibile interfacciare il display a un PIC16F84 utilizzando solamente 6 bit: 4 bit per il bus dati, 1 bit di ENABLE e 1 bit per RS. R/W può essere forzato a massa (cioè in lettura) perchè scrivendo oppurtanemente il programma è possibile gestire le temporizzazioni internamente al pic senza dover andare a leggere col pic il busy flag del display (BF).

fig. 2.1.1

Schematic 4-bit interface    

2.2 Ciao Mondo!

La libreria  liblcd4.lib fornisce una serie di subroutine per la gestione del display e funziona utilizzando il collegamento di figura 2.1.1.
La libreria fornisce le seguenti subroutine:
  • init - Per inizializzare il display all'accensione si esegua lo procedura mostrata nel diagramma di flusso di figura 1.4.1;
  • cp (Cursor Position) - Permette di posizionare il cursore. I primi 4 bit permettono di scegliere la riga, gli altri 4 la posizione del cursore nella riga;
  • cl (Clear) - Pulisce il display inviando il comando B'00000001';
  • sd (Send Data)- Invia un carattere al display. RS = 0 e viene inviato il dato al display come in figura 1.3.1;
  • sc (Send Command) - Invia un comando al display. RS = 1 e viene inviato il dato al display come in figura 1.3.1;
Qui di seguito un esempio che scrive sul display "Ciao Mondo!" attraverso questa libreria:

  hello.asm


3. Riferimenti



 


 

 





  il parere della community
esprimi il tuo voto approvi questa pagina? promo


  non sei autenticato, per questo non puoi visualizzare i commenti sulla pagina. Se sei registrato accedi oppure registrati.


difficoltà
costo
informazioni
Questa pagina è stata creata da grix [pagine pubblicate]
il 19/01/2006 ore 00:24
ultima modifica del 16/02/2006 ore 22:12
la pagina è stata visitata 12805 volte




Lo staff di www.grix.it non si assume responsabilità sul contenuto di questa pagina.
Se tu sei l'autore originale degli schemi o progetti proposti in questo articolo, e ritieni che siano stati violati i tuoi diritti, contatta lo staff di www.grix.it per segnalarlo.

   
 

 
 
indietro | homepage | torna su copyright © 2004/2020 GRIX.IT - La community dell'elettronica Amatoriale