|
|
|
![]() |
Modulo Display 7 segmenti
|
|
|
|
|
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
|
|
Qui sotto troverete tutto l'occorrente per procedere alla realizzazione
_____________________________________________________________________________
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
|