minhphuc0311
27-10-2014, 10:23 PM
em mới học Pic,đang tập viết code cho mạch đo nhiệt độ dùng LM35 hiển thị trên LED 7SEG nhưng không chạy được,bác nào rảnh xem hộ e vs.
code e viết đây ạ.....
//Cau Hinh PIC
#include "16f877a.h"//KHAI BAO THU VIEN
#fuses XT,NOWDT,NOPUT,BROWNOUT,NOLVP,NOWRT,NODEBUG,NOPROT ECT//KHAI BAO PIC
#use delay(clock=4000000)//KHAI BAO TAN SO THACH ANH
#device *=16 adc=8;
unsigned char const ma_LED[10]= {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};//khai bao ma led
unsigned char chuc,donvi;//Cac bien chu so
int nhietdo,hienthi;
void convert_bcd(int8 x)
{
chuc=x%10;
donvi=x/10;
donvi=donvi%10;
}
void hienthi()
{
OUTPUT_D( ma_LED[chuc]); output_B(0b11111110);
delay_ms(10);
output_B(0b11111111);
OUTPUT_D( ma_LED [donvi]); output_B(0b11111101);
delay_ms(10);
output_B(0b11111111);
}
//CHUONG TRINH CHINH
void main()
{
{
SET_TRIS_B(0X00); //Port B là output(ngo ra)
SET_TRIS_D(0x00); //port D la output(ngo ra)
setup_ADC(ADC_clock_internal);//T/G lay mau bang xung clock
setup_ADC_ports(AN0);//Lay Vref=5V
set_ADC_channel(0);//chon chan A0 la chan dua tin hieu Analog vao
delay_us(10);//tao khoang t/g de lay mau
nhietdo=read_adc();//doc tin hieu vao
nhietdo=nhietdo/2.048;
convert_bcd((int8)nhietdo);//chuyen doi ADC
//Vong lap
while(1)
{
nhietdo=read_adc();
nhietdo=nhietdo/2.048;
hienthi();
}
}
}
code e viết đây ạ.....
//Cau Hinh PIC
#include "16f877a.h"//KHAI BAO THU VIEN
#fuses XT,NOWDT,NOPUT,BROWNOUT,NOLVP,NOWRT,NODEBUG,NOPROT ECT//KHAI BAO PIC
#use delay(clock=4000000)//KHAI BAO TAN SO THACH ANH
#device *=16 adc=8;
unsigned char const ma_LED[10]= {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};//khai bao ma led
unsigned char chuc,donvi;//Cac bien chu so
int nhietdo,hienthi;
void convert_bcd(int8 x)
{
chuc=x%10;
donvi=x/10;
donvi=donvi%10;
}
void hienthi()
{
OUTPUT_D( ma_LED[chuc]); output_B(0b11111110);
delay_ms(10);
output_B(0b11111111);
OUTPUT_D( ma_LED [donvi]); output_B(0b11111101);
delay_ms(10);
output_B(0b11111111);
}
//CHUONG TRINH CHINH
void main()
{
{
SET_TRIS_B(0X00); //Port B là output(ngo ra)
SET_TRIS_D(0x00); //port D la output(ngo ra)
setup_ADC(ADC_clock_internal);//T/G lay mau bang xung clock
setup_ADC_ports(AN0);//Lay Vref=5V
set_ADC_channel(0);//chon chan A0 la chan dua tin hieu Analog vao
delay_us(10);//tao khoang t/g de lay mau
nhietdo=read_adc();//doc tin hieu vao
nhietdo=nhietdo/2.048;
convert_bcd((int8)nhietdo);//chuyen doi ADC
//Vong lap
while(1)
{
nhietdo=read_adc();
nhietdo=nhietdo/2.048;
hienthi();
}
}
}