Buenas tardes comunidad, tengo un sistema que lee los valores de 3 sensores que están en el puerto A del pic 16f876a, cuando intento leer el canal 2 del puerto, hago la conversión en el programa y al visualizarlo en la LCD no obtengo el valor q en realidad deseo tener.
El programa es es siguiente:
Gracias por su colaboración
El programa es es siguiente:
Código:
#include <16F876A.h>
#device adc=10
#use delay(clock=4000000)
#fuses XT,NOWDT
#define use_portb_lcd(true)
#include <lcd.c>
#define fast_io(a);
#define fast_io(c);
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7, bits=8)
int recibido;
int16 adc1,adc2,adc3;
float volt1,volt2,volt3,kelvin,fahrenheit;
int envio2,envio3;
#int_RDA
RDA_isr()
{
recibido=getc();
}
void main()
{
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
lcd_init();
port_b_pullups(true);
lcd_putc("\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"HAROLD AGUDELO\nGLORIA VILLEGAS");
delay_ms(3000);
while(1){
set_adc_channel(0);
delay_us(20);
adc1=read_adc();
volt1=(adc1*5.0)/(1023.0)*100;
kelvin=(volt1+273);
fahrenheit=(volt1*1.8)+32;
lcd_putc("\f");
lcd_gotoxy(3,1);
printf(lcd_putc,"TEMPERATURA");
lcd_gotoxy(1,2);
printf(lcd_putc,"%1.0gC",volt1);
lcd_gotoxy(7,2);
printf(lcd_putc,"%1.0gK",kelvin);
lcd_gotoxy(12,2);
printf(lcd_putc,"%1.0gF",fahrenheit);
//envio1=volt1;
//putc(envio1);
//delay_ms(100);
delay_ms(4000);
lcd_putc("\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"HUMEDAD RELATIVA");
set_adc_channel(1);
delay_us(20);
adc2=read_adc();
volt2=(adc2*5.0)/(1023.0)*20.02;
lcd_gotoxy(6,2);
printf(lcd_putc,"%2.2g",volt2);
lcd_send_byte(1,0x25);//envio el simbolo %
envio2=volt2;
putc(envio2);
delay_ms(100);
delay_ms(4000);
lcd_putc("\f");
lcd_gotoxy(3,1);
printf(lcd_putc,"LUZ AMBIENTE");
set_adc_channel(2);
delay_us(20);
adc3=read_adc();
volt3=(adc3*5.0)/(1023.0)*200;
lcd_gotoxy(6,2);
printf(lcd_putc,"%2.2g Lx",volt3);
envio3=volt3;
putc(envio3);
delay_ms(100);
delay_ms(4000);
}
// TODO: USER CODE!!
}
Gracias por su colaboración
Última edición por un moderador: