this is the coding i wrote...
i can't remember what i change in the coding. this is the latest one i used
#include <16f877a.h>
#device adc=10
#use delay(clock=20000000)
#fuses hs, noprotect, nowdt, nolvp
#define use_portb_lcd TRUE
#include <lcd.c>
long value[6],i;
long value0;
long valuea, valueb, valuec, valued;
char value1, value2, value3, value4;
void sense1();
void sense2();
void sense3();
void disp1();
void sense_voltbat();
void sense_temp();
void sense_current();
void main()
{
lcd_init();
lcd_putc("\fWelcome to");
lcd_putc("\nUKM");
delay_ms(500);
lcd_putc("\f");
lcd_putc("Please Visit:\n");
lcd_putc("www.ukm.my");
delay_ms(500);
do
{
for(i=0; i<=5; i++)
{
set_adc_channel(i);
delay_ms(10);
value=read_adc();
delay_ms(10);
sense_temp();
sense_voltbat();
sense_current();
}
}while(1);
}
void sense1()
{
valued=value0/1000;
valuec=value0/100-valued/0.1;
valueb=value0/10-valued/0.01-valuec/0.1;
valuea=value0-valued/0.001-valuec/0.01-valueb/0.1;
value4=valued+'0';
lcd_putc(value4);
}
void sense2()
{
valuec=value0/100;
valueb=value0/10-valuec/0.1;
valuea=value0-valuec/0.01-valueb/0.1;
}
void sense3()
{
valueb=value0/10;
valuea=value0-valueb/0.1;
}
void disp1()
{
value3=valuec+'0';
value2=valueb+'0';
value1=valuea+'0';
lcd_putc(value3);
lcd_putc(".");
lcd_putc(value2);
lcd_putc(value1);
delay_ms(10);
}
void sense_temp()
{
value0=value[0]/0.341;
lcd_putc("\fTemperature");
lcd_gotoxy(1,2);
if(value[0]>=341)
{
sense1();
}
else if(value[0]>=34)
{
sense2();
value3=valuec+'0';
lcd_putc(value3);
}
else if(value[0]<=33)
{
sense3();
}
value2=valueb+'0';
value1=valuea+'0';
lcd_putc(value2);
lcd_putc(".");
lcd_putc(value1);
lcd_putc("C");
delay_ms(1000);
}
void sense_voltbat()
{
value0=value[1]/0.683;
lcd_putc("\fVoltage Battery");
lcd_gotoxy(1,2);
if(value[1]>=683 && value[1]<=1024)
{
sense1();
}
else if(value[1]>=68)
{
sense2();
}
else if(value[1]<=67)
{
sense3();
valuec=0;
}
disp1();
lcd_putc("V");
delay_ms(1000);
}
void sense_current()
{
value0=value[2]/0.717;
lcd_putc("\fCurrent");
lcd_gotoxy(1,2);
if(value[2]>=717)
{
sense1();
}
else if(value[2]>=72)
{
sense2();
}
else if(value[2]<=71)
{
sense3();
valuec=0;
}
disp1();
lcd_putc("A");
delay_ms(1000);
}
void sense_voltload()
{
value0=value[4]/0.683;
lcd_putc("\fVoltage Load");
lcd_gotoxy(1,2);
if(value[4]>=683)
{
sense1();
}
else if(value[4]>=68)
{
sense2();
}
else if(value[4]<=67)
{
sense3();
valuec=0;
}
disp1();
lcd_putc("V");
delay_ms(1000);
}