estoy haciendo un decodificador de 8 bits con el pic 16f887a con 3 display de cátodo común para el curso de sistemas digitales en la universidad, lo probé en el el proteus y funciona bien luego lo arme en el protoboard y comenzaba a parpadear los display solo manteniéndose quieto en el numero 255 y ahora el ingeniero me pidió que lo lleve a pcb en circuito.
ya hice el pcb y todo pero no tengo la seguridad de que funcione y recurro a ustedes para ver que puedo mejorar para que trabaje le decodificador gracias por la ayuda que puedan brindar.
aquí adjunto el código del decodificador:
espero su ayuda, gracias por los aportes que puedan brindar
hola gracias por las correcciones, a ver si no está mal diseñada mi pcb
ya hice el pcb y todo pero no tengo la seguridad de que funcione y recurro a ustedes para ver que puedo mejorar para que trabaje le decodificador gracias por la ayuda que puedan brindar.
aquí adjunto el código del decodificador:
Código:
//******************************************************************************
#include <16F877a.h>//microcontrolador usado
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP
#use delay(clock=4000000)//frecuencia de trabajo del pic
#use standard_io(b)//uso del puerto b como entrada o salida
#use standard_io(c)//uso del puerto c como entrada o salida
#use standard_io(d)//uso del puerto d como entrada o salida
#use standard_io(a)//uso del puerto a como entrada o salida
#use standard_io(e)//uso del puerto e como entrada o salida
//******************************************************************************
//VARIABLES
//******************************************************************************
int tabDISPLAY[10]={0b11111100,0b01100000,0b11011010,0b11110010,0b01100110,0b10110110,0b10111110,0b11100000,0b11111110,0b11110110};//tabla usadas para centenas y unidades
int tabDISPLAY2[3]={0b11111111,0b00000110,0b11011011};//tabla del puerto a usada para centenas
int tabDISPLAY3[3]={0b10000100,0b00000000,0b10000011};//tabla del puerto e usada para centenas
int numero,delay=1;//declarando la variable numero y un tiempo de retardo de 1ms
int h_digit,m_digit,i_digit;//declarando las variables h_digit,m_digit,i_digit
//******************************************************************************
//FUNCIONES
//******************************************************************************
void vizu(void);
void int2bcd(int valor);
void int2DISPLAY(int valor1);
//******************************************************************************
///PROGRAMA
//******************************************************************************
void main(void)//la funcion principal
{
while(true)//bucle infinito
{
vizu();
}
}
//*****************************************************************************
void vizu(void)
{
numero=input_b();//la variable numero contine los datos de la entrada del puerto bit
int2DISPLAY(numero);//int2display contine a la variable numero
output_a(tabDISPLAY2[h_digit]);//muestra el valor de h_digit (centenas) por el puerto a usando la tabla tabDISPLAY2
delay_ms(delay);//tiempo de muestra de dato el de delay
output_e(tabDISPLAY3[h_digit]);//muestra el valor de h_digit (centenas) por el puerto a usando la tabla tabDISPLAY2
delay_ms(delay);
output_c(tabDISPLAY[m_digit]);//muestra el valor de m_digit (decenas) por el puerto a usando la tabla tabDISPLAY
delay_ms(delay);
output_d(tabDISPLAY[i_digit]);//muestra el valor de i_digit (unidades) por el puerto a usando la tabla tabDISPLAY
delay_ms(delay);
}
//******************************************************************************
//******************************************************************************
// funcion que convierte de binario a a decimal en el display
//
void int2DISPLAY(int valor1)
{
h_digit=(int)valor1/100; //1er digito en centenas
valor1-=h_digit*100; //y se le resto el valor
m_digit=(int)valor1/10; //2do digito
valor1-=m_digit*10; //y tambien se le resto
i_digit=valor1; // y por último solo me quedan las unidades
}
/******************************************************************************/
hola gracias por las correcciones, a ver si no está mal diseñada mi pcb
Adjuntos
Última edición por un moderador: