Hola:
Estoy tratando de visualizar en un display 7 segmentos de cuatro dígitos y ánodo común, los números del 0 a 9 a través de un registro de desplazamiento CD4094 con un PIC16F676 usando mikroC.
He visto y probado todo lo que he encontrado y no me funciona, el compilador no me da error, pero sin embargo la simulación no funciona
Esto es parte del código que he estado usando:
Esto lo saqué del libro uControl que tiene esta misma estructura pero en CCS.
Si alguien tiene una respuesta se lo estaría agradeciendo.
Estoy tratando de visualizar en un display 7 segmentos de cuatro dígitos y ánodo común, los números del 0 a 9 a través de un registro de desplazamiento CD4094 con un PIC16F676 usando mikroC.
He visto y probado todo lo que he encontrado y no me funciona, el compilador no me da error, pero sin embargo la simulación no funciona
Esto es parte del código que he estado usando:
Código:
#define dato RA0_bit //pin de datos Data
#define clock RA1_bit //pin de reloj o Clk
#define strobe RA2_bit //pin de strobe transfiere los datos a la salida del 4094
/***************************Declaración Global de variables*******************/
//char bit_test;
int t;
int const SEGMENTO[16] = {0b00000011, //contiene los digitos
0b10011111, //0,1,2,3,4,5,6,7,8,9
0b00100101, // en formato para ser
0b00001101, // mostrados en display de 7segmentos
0b10011001,
0b01001001,
0b01000001,
0b00011111,
0b00000001,
0b00011001,
0b00010001,
0b11000001,
0b01100001,
0b10000101,
0b01100001,
0b01110001};
void escribir_4094( int caracter){//funcion que carga el registro CD4094 con dato j
int contador_8; // variable contador como entero cuenta los bits a sacar por el pin
dato=0;
clock=0;
strobe=0;
if(contador_8=0,contador_8<8,contador_8++){ //el dato a sacar serialmente es de 16 bits
dato= caracter & 0x01; // operación and para sacar bit a bit
dato=caracter >>1;
dato=dato;
clock=1;// saca un pulso de reloj
delay_ms(10); // de un periodo en alto de 1 ciclo de instrucción
clock=0;
}
strobe=1; // transfiere los datos a las salidas del registro 4094
delay_ms(10); // al terminar de enviar el dato, enviando
strobe=0; // un pulso de strobe
}
//void bit_test();
void escribir_4094(int caracter);// el numero a convertir es un entero largo
void main(){
porta=0;
portc=0;
trisa=0;
trisc=0;
while (1){ // indice del arreglo unidades=bcd_dato [0],d=[1],...m=[5]
(t=0,t<16,t++)// llena el arreglo con los valores uni,dec,cen,mil,diezm
{
escribir_4094(t);
delay_ms(100); // n dividido 10 para cada i y tomamos su valor entero:
}
}
}
Si alguien tiene una respuesta se lo estaría agradeciendo.
Última edición por un moderador: