TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: MINDFIELD en 26 de Octubre de 2015, 20:08:51
-
Buenas tardes estoy tratando de mostrar la temperatura en 3 display de 7 segmentos, el codigo original muestra temperaturas sin decimas y yo estoy tratando de mostrar la temperatura con decimas! como se hace para conseguir las decimas en la temperatura? el codigo que por cierto no es mio es:
void main ()
{
int16 q;
float p,Temp;
unsigned int Unidad, Decena, centena;
int Numeros[10] = {0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,0b01101101,0b01111101,0b00000111,0b01111111,0b01101111};
setup_adc_ports (AN0);
setup_adc(ADC_CLOCK_INTERNAL);
while(true){
set_adc_channel(0);
delay_us(20);
q = read_adc();
p = (float)(q * 5) / 1024;
Temp = (p * 100) / 3;
Unidad=(int)Temp % 10;
Decena=(int)Temp / 10;
centena= ((int)Temp) % 100;
delay_ms(10);
output_d(Numeros[Unidad]);
output_b(Numeros[Decena]);
output_c(Numeros[Centena]);
}
}
-
Creo que depende de hasta que valor llegaria Temp.
Suponiendo de 3 digitos:
Centena = ((int)Temp % 100);
Temp -= Centena * 100
Decena = (int)Temp / 10;
Unidad= (int)Temp % 10;
Temp -= Decena*10 + Unidad;
Temp *= 10;
PrimerDigito = Temp % 10;
Temp *= 10;
SegundoDigito = Temp % 10;
Temp *= 10;
TercerDigito = Temp % 10;
o tal ves se pueda resumir a:
numeros[5];
for(i=0;i<5;i++) {
numeros = (int)Temp % 100; //Creo que ni hace falta el int
Temp *= 10;
}
Y en numeros tendrias tus valores, si fuera Temp igual a 123.45, numeros seria [1,2,3,4,5], si es 23.45, tendrias [0,2,3,4,5]
Todo suponiendo que Temp no supere los 1000