|
|
PILOTAGGIO DISPLAY LCD
4x20 PER MPXPLAY
Il programma che ho
realizzato pilota un display lcd a matrice di punti del tipo 4x20, esso
ricava le informazioni da visualizzare direttamente da MPXPLAY,
un player di file MP3 che lavora sotto DOS. Questa caratteristica lo rende
utilissimo a questo tipo di applicazioni, tanto che in rete si trovano
decine di programmi TSR come il mio. Ho deciso di svilupparlo da solo
perche' nel mio caso gli altri non mi fornivano le adeguate specifiche
giuste. Il programma non e' configurabile, nel senso che dovrete utilizzarlo
cosi' com'e' senza poter scegliere dove visualizzare il titolo della canzone
o le altre informazioni.
Il display che ho
utilizzato e' appunto un 4x20 a led verdi, anche se in futuro verra'
sicuramente sostituito con un 4x40, quindi troverete piu' avanti la nuova
versione del programma.
- Download
Lcd per Mpxplay : 1_LCD.ZIP
4x20 funzionante con
MPXPLAY 1.42
( porta parallela con indirizzo H378 !)
- NOTE IMPORTANTI : Il
programma che ho realizzato non dovrebbe dare problemi
sotto DOS, io l'ho testato anche sotto Windows98 e non ho incontrato
particolari
problemi, naturalmente bisogna aprire una finestra prompt
MS-DOS, Lanciare
il file 1_LCD.EXE
e successivamente
lanciare l'MPXPLAY. E' consigliabile
automatizzare il tutto con un file batch che faccia le due operazioni
in automatico
dato che il programma 1_LCD "blocca"
il cursore in una certa
posizione e quindi
non permette di "vedere"
in maniera completa cio'che si sta'digitando.
I TASTI da
usare sono SOLO quelli dell' MPXPLAY, dato che 1_LCD non riceve
alcun comando specifico dalla tastiera, esso legge solo quello che
succede su
schermo, quindi vi rimando al file di testo dell' MPXPLAY che
si trova nel sito
ufficiale (tutti i link sono a fine pagina).
Questo e' lo schema elettrico per collegare il display alla porta PARALLELA,
in effetti questo e'
forse il modo piu' facile per gestire il display anche se si puo' utilizzare
qualsiasi cosa, anche i microcontroller PIC , ovviamente fare un programma
in linguaggio assembler non e' semplice e soprattutto non e' utile
per il nostro fine.
In rete potete trovare progetti in cui i collegamenti sono diversi, sta' a
voi scegliere che programma utilizzare e di conseguenza utilizzare
circuitazioni diverse.
Pin Porta Parallela
PIN
Parallel Port
PIN Display LCD
2
------------------------------------- 7 =>
DB0
3
------------------------------------- 8
=>
DB1
4
------------------------------------- 9
=>
DB2
5
------------------------------------- 10
=>
DB3
6
------------------------------------- 11
=>
DB4
7
------------------------------------- 12
=>
DB5
8
------------------------------------- 13
=>
DB6
9
------------------------------------- 14
=>
DB7
16-------------------------------------
6
=>
E
17-------------------------------------
4
=>
RS
Ground 18
- 25 ---------------------------+-- 5
=>
R/W
|
+-- 1
=>
VSS 0
Volt
Variable
Resistor
2 =>
Vdd +5 Volt 3.0 mA Max
Ground 18 -
25 ------------/\/\/\/\---------
3 =>
Vo
Contrast
Per quanto riguarda il pin 3, potete collegarlo con un potenziometro da 10k
Ohm
direttamente con il ground della porta parallela per regolare il contrasto
7 6
5 4 3 2 1 0
Porta I/O
+---+---+---+---+---+---+---+---+
DATA
|DB7+DB6+DB5+DB4+DB3+DB2+DB1+DB0+ Base
= 278/378/3BC
+---+---+---+---+---+---+---+---+
STATUS
| X + X + X + X + X + - + - + - + Base + 1
+---+---+---+---+---+---+---+---+
CONTROL
| - + - + - + - +RS + E + X + X + Base + 2
+---+---+---+---+---+---+---+---+
-Come Controllare Il Display-
Grazie al chip HD44780
dell'Hitachi inviare dati al display e' semplice, lavorando poi con un PC
come nel nostro caso il lavoro e' facilitato perche' i codici dei caratteri
di base del dispay (quelli dell'alfabeto) coincidono con i codici Ascii del
PC: per far scrivere cosi' una frase tipo "ciao" bastera' inviare
proprio i codici Ascii delle lettere usate. Le funzioni che sono a nostra
disposizione sono riassunte qui :
I codici dei caratteri nella memoria del HD44780 sono :
Una cosa importante da tenere presente sono i tempi di esecuzione che
impiega il display per le varie operazioni, ad esempio l'operazione di Clear
Display e quella di Cursor
Home richiedono 1.64 msec mentre le altre sono
nell'ordine del microsec.
In un programma che prenda i dati dall' MPXPLAY questo si traduce in
dispendio di Risorse CPU per attendere che il display legga correttamente i
comandi ricevuti.
Qui di seguito riporto un listato semplice delle varie operazioni in
linguaggio Pascal
per scrivere una semplice frase :
program LCD; { Pilotaggio
LCD 4x20 }
uses crt;
const Data = $378;
Status =
data+1;
Control =
data+2;
var pausa, i :integer;
pippo
: char;
Procedure Pausa; {Pausa
per permettere al display di accettare l'istruzione }
begin
for pausa:=1 to 10000 do
end;
Procedure Istruz(ins:byte); {
Invia un'istruzione al display }
begin
port[Data] :=ins;
pausa;
port[control]:=$0c; {Rs enable = 1}
pausa;
port[control]:=$08; {Rs enable = 0}
pausa;
end;
Procedure Carat(ch:char); {
Invia un carattere al display }
begin
port[Data] := ord(ch);
pausa;
port[control]:=$04; {Rs=data enable = 1}
pausa;
port[control]:=$00; {Rs=data enable = 0}
pausa;
end;
Procedure Esadec(hex:byte); {
Invia un numero esadecimale al display }
begin
port[Data] := hex;
pausa;
port[control]:=$04; {Rs=data enable = 1}
pausa;
port[control]:=$00;
pausa;
end;
Procedure Stringa(str:string); {
Invia una stringa al display }
var i : integer;
begin
for i:=1 to length(str) do Carat(str[i])
end;
Procedure Inizializza; {
Inizializza il display }
begin
Istruz($30);
Istruz($38);
Istruz($08);
Istruz($01); {
Clear display }
Istruz($06);
end;
begin {main}
Inizializza;
Istruz($0c); {
display = ON , Cursore = ON , Blink = OFF }
Istruz($01); {
Clear display }
Stringa('Ciao'); {
Invio la scritta 'Ciao' :) }
end.
Queste sono alcune immagini di diversi tipi di display in funzione :
Questo invece e' come si presenta il programma
MPXPLAY 1.42:
LINKS VARI PER QUESTO PROGETTO :
-
Home Page Ufficiale
MPXPLAY : http://www.geocities.com/mpxplay/
- Manuali
per pilotare LCD
: http://www.doc.ic.ac.uk/~ih/doc/lcd/
- Amici
dell'elettronica
: http://utenti.tripod.it/bizzo/
Naturalmente non mi
assumo nessuna responsabilita' da danni derivanti da quello che ho scritto
in queste pagine...
|