Hola a todos he hecho un ejemplo con dos entradas analogicas que visualizo su valor en un LCD, pues bien la simulacion funciona correctamente, pero al implementarlo en la realidad, el valor que veo en el display oscila bastante, por ejemplo si se debe de visualizar 420, veo que oscila bastante entre 300 y 600 aproximadamente. Decir que el valor analogico es un valor constante (viene de un divisor de tension), por otro lado decir que la patilla 1 (reset), esta a 5V, y la tension de referencia es de 100 mV, ¿el oscilar externo tiene algo qie ver con esto?
Seguire probando para ver si encuentro el fallo, pero agradeceria toda clase de sigerencia.
Gracias.
El codigo 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= %4.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= %4.0f W/m2",radi2);
delay_ms (300);
}
}
Gracias de nuevo por las respuestas