View Single Post
Old 28-10-2014, 12:55 AM   #75
minhphuc0311
Nhập môn đệ tử
 
Tham gia ngày: Aug 2014
Bài gửi: 3
:
nhờ sửa code đo nhiệt độ dùng LM35 hiển thị lên LED 7SEG

em đang học PIC nên chả biết viết sai chỗ nào nữa,mong anh e chỉ bảo....
code đây ạ
//Cau Hinh PIC
#include <16f877a.h>//KHAI BAO THU VIEN
#fuses XT,NOWDT,NOPUT,BROWNOUT,NOLVP,NOWRT,NODEBUG,NOPROT ECT//KHAI BAO PIC
#device 16F877*=16 ADC=8
#use delay(clock=4000000)//KHAI BAO TAN SO THACH ANH
void convert_bcd(int8 x);
unsigned char const ma_LED[10]= {0xC0,0xcf,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x90 };//khai bao ma led
int a,b,chuc, n,donvi;//Cac bien chu so
void convert_bcd(int x)
{
chuc=(int)x%10;
donvi=(int)x/10;
donvi=(int)donvi%10;
}

void hienthi() // quet led
{
for(n=0;n<10;n++)
{

OUTPUT_D( ma_LED[chuc]); output_c(0b00000001);
delay_ms(10);
output_c(0b00000000);
OUTPUT_D( ma_LED [donvi]); output_c(0b00000010);
delay_ms(10);
output_c(0b00000000);
}
}
//CHUONG TRINH CHINH
void main()
{
float nhietdo;

{
set_tris_a(0xff);
SET_TRIS_c(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
a=read_adc();//doc tin hieu vao
nhietdo = (a)/2.048;
b=nhietdo;
convert_bcd((int8)b);//chuyen doi ADC
delay_us(10);
//Vong lap
while(1)
{
a=read_adc();
nhietdo = (a)/2.048;
convert_bcd((int8)b);
hienthi();
}
}
}
minhphuc0311 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn