miércoles, 15 de enero de 2014

 

MATERIAL:

1- PIC 16f887.


2- Display cátodo común.


1- Cristal de 8Mhz.
2- Capacitores cerámicos de 22pf.
3- Resistores de 10k.
16- Resistores de 220.
3- Pushbutton.
1- Borne (kulca).
1- Portaintegrados de 40 pines.

El programa del PIC lo realice en lenguaje C en el compilador CCS C, la simulación en  proteus y el PCB en PCBWizard. El circuito se debe alimentar con una fuente de 5v.

CÓDIGO:

#include <16f887.h>
#fuses hs,wdt
#use delay(clock=800000)
#byte trisb=0x86
#byte trisc=0x87
#byte trisd=0x88
#byte portb=0x06
#byte portc=0x07
#byte portd=0x08
byte display[10]={0x7B,0x0A,0xB3,0x9B,0xCA,0xD9,0xF9,0x0B,0xFB,0xDB};
byte display_2[10]={0x7B,0x0A,0xB3,0x9B,0xCA,0xD9,0xF9,0x0B,0xFB,0xDB};
int8 a;
int8 b;
void main(){
trisd=0x00;
trisc=0xff;
trisb=0x00;
inicio:
portd=display[0];
portb=display_2[0];
while(true){
if (bit_test(portc,1)==1){
delay_us(100);
a++;
p1:
if(bit_test(portc,1)==1){
portd=display[a];
goto p1;
}
}
if(a==10){
a=0;
b++;
portb=display_2[b];
}
if((b==10)||(bit_test(portc,2)==1)){
a=0;
b=0;
goto inicio;
}
}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

int8 a= dato de 8 bits.
int8 b= dato de 8 bits.
a++= incremento del dato a.
b++= incremento del dato b.

Cada vez que se aprieta el pushbutton se incrementa el dato a cuando el dato llega a 10 (es decir a 9 en el primer display)  se incrementa el dato b y se borra el dato a (es decir el numero 10 en los diplays), así hasta que el dato b llega a 10 (es decir a 99 en los displays)  entonces se borran los datos para comenzar de nuevo el conteo.

Para saber el funcionamiento del if, while y los tris checar los siguientes tutoriales:



SIMULACIÓN: 

 

  PCB:

Hoja para imprimir.


Vista real del circuito.


 

DESCARGAR SIMULACIÓN, PCB  Y PROGRAMA EN C:



REFERENCIAS;

  • Compilador C CSS y simulador proteus para microcontroladores PIC, Eduardo García Breijo 



6 comentarios:

Unknown dijo...

muchisimas gracias por esta aportacion tan buena!!!

Unknown dijo...

Hola, antes que nada muchas gracias por tus aportes, quisiera hacerte una consulta, acabo de armar este circuito y en esencia me funciona bien ya que realiza la cuenta correctamente, pero al pasar unos cuantos segundos los display regresan a cero y la cuenta también, es decir si dejo presionado el botón realiza la cuenta hasta 99, pero si suelto el botón regresa a cero al pasar unos 3 segundos. mi pregunta es si tendrás alguna idea de donde pueda estar mi error, las conexiones son las mismas que en tu diagrama de Proteus.

Bueno agradezco tu atención y espero haberme explicado bien.

Unknown dijo...

hola muy buen tutorial! una duda, estoy grabando el pic con un pic kit 3 al momento de implementar, realiza la cuenta en las decenas perfectaente pero en las unidades muestra segmentos que encienden y apagan pero sin mostrar numeros (al enviar 9 pulsos la decena incrementa), por lo que pienso que es un problema con este grabador, ojala me puedas ayudar. :c de ante manos muchas gracias!

Anónimo dijo...

NO ME QUEDA TU CIRCUITO PODRAS DARME EL CIRCUITO CON LOS VALORES DE CADA ELEMENTO POR FAVOR!!!

Unknown dijo...

Hola, porque sera que el contador se va a cero y las decenas nos marcan bien? Gracias!!!

Anónimo dijo...

QUE BUENO FELICIDADES

SIGUEME EN FECEBOOK

MI TWITTER

Translate