Hola a todos, he realizado un pequeño programa, el cual lee dos entras analogicas y se muestran por un LCD, una lectura en la primera linea y la otra en la segunda. La lectura la realiza correctamente, pero quiero poner la unidad detras de la medida (W/m2), y lo hace bien cuando se aumenta la medida de 1 digito a 4, es decir por ejemplo muestra 3 W/m2, 56 W/m2, 456 W/m2 y 1234 W/m2, todo esto se visualiza correctamente, pero cuando empieza a descender desde un numero de 4 cifras hasta una cifra, ocurre lo seguiente: 1324 W/m2, 323 W/m22, 23 W/m222 y 4 W/m2222, es decir no borra el ultimo 2. ¿Como puedo solucionar el problema?
El programa es el siguiente:
#include "16f877a.h" // Pic a utilizar
#device adc=10 // Usa resolución de 10 bits
#use delay(clock=4000000) // Cristal a utilizar
#fuses xt,nowdt,nobrownout,nolvp,noprotect // Fusibles
#include "lcd.c"
void main (void)
{
float radi1,value;
float radi2,valor;
lcd_init();
lcd_putc(" Detector\n"); // Saca texto \n= cambio de linea
lcd_putc(" Radiacion");
delay_ms(300);
lcd_putc("\f"); // Limpia pantalla
while (1)
{
setup_adc (adc_clock_internal);
setup_adc_ports(RA0_RA1_analog_RA3_REF);
set_adc_channel (0); // Elige canal analogico a medir
delay_us (20); //espera 20 microseg
value=read_adc (); // Hace conversión A/D
radi1=value*(1.3227); // Pasar a W/m2
lcd_gotoxy(1,1); // Acomoda cursor LCD
printf(lcd_putc,"Radi1= %1.0f W/m2",radi1);
set_adc_channel (1); // Elige canal analogico a medir
delay_us (20); //espera 20 microseg
valor=read_adc (); // Hace conversión A/D
radi2=valor*(1.3227); // Pasar a W/m2
lcd_gotoxy(1,2);
printf(lcd_putc,"Radi2= %1.0f W/m2",radi2);
delay_ms (300);
}
}
Como siempre gracias de antamano por vuestra colaboracion. Otra cosa, si veis que puedo hacer alguna mejora, o veis algun error, agradeceria que lo cometarais.