Ifrim Valentin Personal Web Page
 


Software / Lcd control

 

 

Come controllare un display LCD (matrice di punti) con il controller HD44780 tramite la porta LPT del PC

 
   
  Software  
   

Per pilotare un display con il controller HD44780 tramite la porta parallela di un PC viene presentata di seguito un'applicazione software, accompagnata da un circuito elettronico di interfaccia.

 
    Il programma è scritto in Visual Basic 6 e può essere scaricato insieme al codice sorgente da qui.  
         
   

Sulla descrizione del software non insisto perché è facile da usare per un utente che ha studiato la documentazione di un display LCD (il controllore HD44780).

 
    Per utilizzare il software avete bisogno di:
- runtime da Visual Basic 6 - Msvbrun6.0 (è incluso nel Kit di installazione per il programma del Plotter)
- il file " inpout32.dll " (20Kb)- che si deve trovare nella cartella radice dell'applicazione o nella cartella "Windows\System "(lo copiate in questa cartella). Questo file, più molte altre informazioni potete trovarli all'indirizzo http://www.lvr.com.
 
   

Il programma è testato sui PC con sistemi operativi Win95, Win98. E' possibile che sui PC più veloci appaiano dei problemi generati dai tempi di trasmissione dei comandi alla porta parallela.

 
         
  Interfaccia Hardware  
   

Lo schema del circuito è semplicissimo e può essere realizzato su una sheda per prototipi (mille fori). Il crcuito è alimentato con una tensione continua tra 7V e 12V separata galvanicamente dalla rete. Può essere utilizzata anche una sorgente stabilizzata 5V (DC), in questo caso si rinuncia al IC1. Siccome il programma fa solo la scrittura verso il LCD è necessario che il jumper J1 sia messo in posizione 1-2. In questo modo il pin R/W è messo al valore '0'(scrittura).
Ci sono dei casi in cui il modulo LCD ha bisogno di una tensione negativa (rispetto al GND) al pin di regolazione contrasto. Personalmente a questo tipo di modulo ho dovuto costruire un convertitore di tensione negativa, mettendo l'uscita (-5V) al pin 1 del potenziometro che viene scollegato dal GND.
Se il modullo LCD non ha retro illuminazione IC1(7805) può essere sostituito con il circuito 78L05 perché il consumo del LCD è di alcuni mA in questo caso.

 
     
   

Il trimer R1 può avere 10K ma vanno bene anche valori tra 1K e 20K;
C1 0.1uF/25V;
R2 serve per limitare la corrente del LED (Back Light) e può essere tra 10 e 50 ohm (0.5W), dipende dall'intensità luminosa desiderata.

 
         
  Breve descrizione di un modulo LCD con il controller HD44780  
         
   
PIN ASSIGNMENT
Pin number
Symbol
Level
Data Direction
Function
1
Vss
-
-
Power supply (GND)
2
Vcc
-
-
Power supply (+5V)
3
Vee
-
-
Contrast adjust
4
RS
0/1
I
Register select
5
R / W
0/1
I
Read / Write
6
E
0/1
I
Enable signal
7
DB0
0/1
I/O
Data bus line 0 (LSB)
8
DB1
0/1
I/O
Data bus line 1
9
DB2
0/1
I/O
Data bus line 2
10
DB3
0/1
I/O
Data bus line 3
11
DB4
0/1
I/O
Data bus line 4
12
DB5
0/1
I/O
Data bus line 5
13
DB6
0/1
I/O
Data bus line 6
14
DB7
0/1
I/O
Data bus line 7 (MSB)
15
A
-
-
Power supply for LED (+)
16
K
-
-
Power supply for LED (-)

E' possibile che la dispozizione dei pin sia differente da un produttore all'altro (specialmente i pin 15 e 16).

 
    REGISTRI    
   

HD44780 ha due registri da 8 bit, un registro di istruzioni (IR) e un registro di dati(DR).
- IR Immagazzina il codice delle istruzioni (tipo Clear, Cursor shift), e gli indirizi per display data ram (DD RAM) e character generator ram (CG RAM). Il registro IR puo essere scrito dal esterno ma nonpuo essere letto.
- DR Immagazzina temporaneamente i dati che devono essere scritti in DD RAM o CG RAM e i dati che vengono letti dall'esterno. I dati scritti in DR dal MPU sono automaticamente scritti in DD RAM o CG RAM con una operazione interna.
Il pin Register selector (RS) fa la selezione tra questi due registri IR e DR.

 
    Busy Flag    
   

Busy Flag è '1' quando HD44780 sta eseguendo un'operazione interna, e in questo tempo non può essere accettata nessun'altra instruzione. Il busy flag si trova alla porta DB7 quando RS=0 e R/W=1. L'istruzione seguente deve essere scritta alla porta dopo di che siamo sicuri che Busy Flag è '0'.

 
    Contatore di indirizzi(AC)    
   

Il contatore di indirizzi (AC) definisce gli indirizzi per DD RAM e CG RAM. Quando un'istruzione per indirizzi è scritta nell'IR, questa è mandata dall'IR verso AC. La selezione tra DD RAM e CG RAM si trova nello stesso comando. Dopo la scrittura (o lettura) del dato mostrato sullo schermo, AC è automaticamente incrementato o decrementato di un'unità. La lettura dell'AC avviene quando RS=0 e R/W=1.

 
    Display Data RAM (DD RAM)    
   

 Il Dispalay Data RAM memorizza i pixel di un carattere e viene rappresentato dal codice del carattere nel formato di 8 bit. La sua capacità è di 80x8 bits cioè 80 caratteri.
La corrispondenza tra gli indirizzi DD RAM e la posizione sullo schermo viene presentata di seguito. Gli indirizzi DD RAM sono inseriti in Address Counter (AC) e sono espresse in esadecimali.

Indirizzi DD RAM per un modulo LCD di 40 caratteri x 2 righe
 
1
2
3
4
- - - - - - - - - - - -
39
40
<-Posizione Carattere(dec)
Riga 1->
00
01
02
03
- - - - - - - - - - - -
26
27
<-Indirizzo DD RAM (hex)
Riga 2->
40
41
42
43
- - - - - - - - - - - -
66
67
<-Indirizzo DD RAM (hex)
 
    Character Generator ROM (CG ROM)    
   

Spazio di memoria rom dove si trovano i caratteri scritti dal produttore. Questi sono in numero di 192 e sono accessibili all'indirizzo corrispondente nella tabella ascii.

 
    Character Generator RAM (CG RAM)    
   

In questo spazio di memoria ram vengono memorizzati i caratteri costruiti dall'utente. Si possono memorizzare 8 caratteri (di 5x7 punti ognuno) che sono accessibili come i caratteri trovati in CGROM.

 
    Link    
   

http://www.ekenrooi.net/lcd/lcd.shtml
Per informazioni dettagliate si può scaricare da qui il manuale per il modulo utilizzato da me per questo esperimento. Per sviluppare il proprio progetto con un modulo LCD deve essere studiata con attenzione la tabella di istruzioni della pagina 39.

 
         
         
Inizio della pagina
Termini e condizioni
Copyright ©2013 Ifrimv      Site designed by Ifrim Valentin