fisertek_300
 
 
Modulo Display 7 segmenti 
 
 
barra rossa2 
 
Molte demoboard in vendita sul mercato, oltre ad avere un pò di periferiche integrate, montano ha bordo un solo display a led 7 segmenti con relativo drive BCD.Fare esperimenti con un solo display è fin troppo semplice, equivarrebbe ad accendere un led ma, fare esperimenti con 4 display ed un unico BCD può essere davvero molto più istruttivo
 
barra rossa2 
 
Qui sotto troverete tutto l'occorrente per procedere alla realizzazione  
 
  • Schema elettrico del modulo (disegnato da Francesco, amico di Siracusa)  
  • Circuito stampato lato rame, basetta da 70 x 100 a 300 dpi  
  • Disegno lato componenti del modulo 
  •  
     
    7seg_sopra600
    7seg_gen_600
     
     
    _____________________________________________________________________________ 
     
     
    Caratteristiche 
    Questo modulo è fatto in modo da poter usare 1, 2, 3 o tutti e quattro i display montati.  
    Da esso fuoriescono ben 14 fili: 2 sono per l'alimentazione, 4 sono per utilizzare il punto decimale, 4 servono per pilotare le singole cifre e gli ultimi 4 fili servono a pilotare il BCD. 
    Se guardate attentamente lo schema elettrico capirete meglio quello che ho detto poc'anzi. 
    I display nell'insieme possono essere pilotati dal pic soltanto utilizzando tecniche di multiplex via software e vedremo più avanti come fare con esempio di codice. 
    In questo esempio, il valore appena acquisito dalla porta analogica, viene scomposto in singole cifre che verranno visualizzate in multiplex. Sembrerà di vedere tutti e 4 i numeri accesi ma, in realtà, vengono accesi in rapida sequenza. 
     
    Esempio 
    Per questo esempio dovete collegare i 4 fili più in alto del modulo ai primi 4 bit della porta C di in pic 16f876 o 877. 
    I 4 fili centrali vanno collegati ai primi 4 bit della porta B e i 4 fili del punto decimale potete lasciarli liberi (in genere si collegano direttamente al positivo per accendere il punto) 
    Il potenziometro va collegato alla porta RA0. La foto in alto magari chiarisce meglio. 
     
    /****************************************************************\ 
    * programma di prova per display a 7 segmenti * 
    * legge un potenziometro su portA0 e riporta * 
    * il valore a 10 bit sui display a 7 segmenti * 
    * Roma 02/05/2004 versione 1.00 * 
    * by Sergio Fiocco tutti i diritti riservati * 
    ****************************************************************/ 
    #include <pic.h> 
    #define XTAL_FREQ 4MHZ 
    #define LEDNUM PORTC 
    #define SEGMENTI PORTB 
    unsigned char Contatore;              //inizializzazione variabili 
    unsigned int temp,i,valore; 
    char Unita;char Decine;  
    char Centinaia; 
    char Migliaia; 
     
    void main(void)                              //Inizio programma 
    LEDNUM = 0x00;                       //Spegne tutti i display 
    TRISC=0;                                     // setta porte C come uscita 
    SEGMENTI = 0x00;                    //mette a zero i display 
    PORTB=0; 
    TRISB = 0; 
    ADCON0 = 0b11000001;             //setta porte A in analogico 
    ADCON1 = 0b10000000; 
    Contatore = 1;                              //setta il contatore a 1 
    while(1) 
    ADGO = 1;                                  //lettura potenziometro 
    while(ADGO) 
    continue; 
    valore = (ADRESL+(ADRESH<<8)); 
    i=valore; 
    Migliaia=0;                                  //setto a zero le variabili 
    Centinaia=0; 
    Decine=0; 
    Unita=0; 
    Temp=i; 
    if (((i/1000)>0) || (temp/10000)>0) Migliaia=((i/1000)+'0');             //Migliaia 
    i-=(i/1000)*1000; 
    if (((i/100)>0) || (temp/1000)>0) Centinaia=((i/100)+'0');                 //Centinaia 
    i-=(i/100)*100;if (((i/10)>0) || (temp/100)>0) Decine=((i/10)+'0');    //Decine 
    i-=(i/10)*10; 
     
    Unita = ((i/1)+'0');                                                                               //Unita 
    LEDNUM = 0x00;                                                                             //spengo i display 
     
    switch(Contatore)                                                                               //ciclo di visualzzazione dei 4 display 
    case 0: 
    SEGMENTI=Unita; 
    LEDNUM = 0x1; 
    break; 
    case 1: 
    SEGMENTI=Decine; 
    LEDNUM = 0x2; 
    break; 
    case 2: 
    SEGMENTI=Centinaia; 
    LEDNUM = 0x4; 
    break; 
    case 3: 
    SEGMENTI=Migliaia; 
    LEDNUM = 0x8; 
    Contatore=Contatore+1; 
    if (Contatore==4) Contatore=0; 
     
    Naturalmente con questo modulo potete fare tante cose.  
    Ad esempio un orologio, un termometro o un eliminacode come quelli dei negozi affollati.Anche se questo modulo può essere utilizzato per visualizzare soltanto i numeri, abbiamo una periferica che può sostituire il display LCD in molti casi. 
    Buon divertimento
     
    barra rossa2 
     
    b_home2_baloon 
     
    © 2002-2006 by Sergio Fiocco -Tutti i diritti riservati- Vietata la riproduzione, anche parziale del presente sito