[Ready application] , [Developing Tools] , [Useful Circuits] , [Connection & Data Sheets] , [Files Download] , [Pricing & Order] , [Site Map] , [Contact Me]

                                

                           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...


AleTsg Network
Since 8/10/2000
Since  3/5/2001
#95490666