Em đọc về ADC rùi gửi lên LCD mà sao chẳng thấy hiển thị đúng ADC mà toàn ra giá trị lung tung các bác ạ.Em bỏ chân biến trở ra mà màn hình vẫn cứ hiện giá trị lung tung.Em biết đấy không phải là ADC nhưng không hiểu vì sao.Các bác giúp thằng em với..
Code:
#include <16f877a.h>
#include <def_877a.h>
#device 16F877*=16 ADC=10
#use delay(clock=8000000)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#include <lcd_lib_4bit.c>
unsigned int a,b,c,d,adc;
long value;
char *text;
void main()
{
set_tris_d(0);
setup_adc_ports( AN0_AN1_AN3 );
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel( 0 );
delay_ms(100);
text="V";
while(1)
{
adc=read_adc();
//value=(adc*5000)/1023;
value = (long)adc * 5000; // covert adc reading to milivolts
value = value / 1023; // 0..1023 -> 0-5000mV
a=value/1000;
b=(value-(a*1000))/100;
c=(value-(a*1000)-(b*100))/10;
d=(value-(a*1000)-(b*100)-(c*10));
LCD_Init();
LCD_putcmd(0x80);
LCD_putchar(48+a);
LCD_putcmd(0x81);
LCD_putchar(48+b);
LCD_putcmd(0x82);
LCD_putchar(48+c);
LCD_putcmd(0x83);
LCD_putchar(48+d);
LCD_putcmd(0x84);
LCD_putchar(text);
delay_ms(100);
}
}