bueno, lo que pasa es que necesito mostrar una medida de voltaje en el display 7 segmentos, pero sale todo raro osea por ejemplo el tres, los segmentos del tres salen apagados y los demas prendidos asi no sirve yo quiero que sea a lo contraro, tambien el display parpadea demasiado y es muy molesto quisiera saber como arreglo eso, yo vi un video que salia bien pero no se como hicieron, saludos. el codigo que tengo es este:
#include <16F88.h>
#device *=8 //para ke el adc llege asta 255 ndama mas
#FUSES nomclr //sin reset
#FUSES intrc //esto usa el cirstal interno del pic
#use delay(clock=8M) //cristal a 8 megabits de velocidad
#byte portb=6 //declaro la ubicasion del puerto b
#byte porta=5 //la ubicasion del puerto a
#bit led = porta.1 //declaro el led conectado en el pin a1
#bit display1 = porta.2 //el pin donde esta conectado el display 1
#bit display2 = porta.3 //el pin donde esta conectado el display 2
void main()
{
inicio:
int numeros[10]={0x7E, //Se declara un vector de longitud 10 que contenga los
0x30, //valores obtenidos de la tabla, acomodados en orden
0x6D, //Según su posición del 0 al 9
0x79,
0x33,
0x5B,
0x5F,
0x70,
0x7F,
0x7B};
char voltaje;
char sobrevoltaje;
char unidades;
char decenas;
setup_adc(ADC_CLOCK_INTERNAL); //configuramos el adc con el cristal interno
setup_adc_ports(sAN0);
voltaje=read_adc(); //leo el valor del voltaje
voltaje= (110/255) * voltaje; //la formula de la regla de tres para objeter el boltaje por el divisor resistivo
//con 255 tengo 110 voltios en la entrada del divisor de tension formula de kirchof
decenas = voltaje / 10;
unidades = voltaje - (decenas * 10 );
portb = numeros[decenas]; //muestro en el display el valor del voltaje de decenas
display1 = 1; //activo el primer display para multipletsarlo
delay_ms(100); //espero 100 milisegundos para ke se alcanse a ver
display1 = 0; //lo apago
portb = numeros[unidades]; //muestro en el display el valor del voltaje de unidades
display2 = 1; //lo mismo pero con el segundo
delay_ms(100);
display2 = 0;
if (voltaje > 99) //si hay mas de 99 voltios en el pin
sobrevoltaje = 1; //activo la alerta de sobrevoltaje
if(sobrevoltaje = 1) //si se actibo la alerta de sobreboltaje
led = 1; //activo el led que indica sobreboltaje en el pin
goto inicio; //vuelvo a ejecutar el programa de forma infinita
}
y otra cosa que pasa es que el led que indica sobrevoltaje esta siempre encendido, no se apaga nunca no se porque como le hago para que sirva bien??