View Single Post
Old 26-08-2008, 11:55 PM   #74
popeye_ts22
Đệ tử 2 túi
 
popeye_ts22's Avatar
 
Tham gia ngày: Jul 2008
Nơi Cư Ngụ: Hà Nội
Bài gửi: 42
:
Send a message via Yahoo to popeye_ts22
Smile

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);
   }
}

thay đổi nội dung bởi: popeye_ts22, 27-08-2008 lúc 12:03 AM.
popeye_ts22 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn