Ðăng Nhập

View Full Version : Đo nhiệt độ với 16f877a và LM35 dùng BCD 4511


tumi_kt
28-10-2010, 04:24 PM
Hi các bro!mình có làm bài thực hành đo nhiệt độ với LM35 dùng 4511 BCD .Mình đã cho chạy mô phỏng bằng proteus thì thấy nhiệt độ hiển thị đúng ở dải dưới 100 độ C,từ 100 độ C trở lên thì thấy hiển thị không còn đúng nửa.Các bro xem qua và cho ý kiến nha.
đây là đoạn code của mình :

// CHUONG TRINH CON TACH SO HANG CHUC VA HANG DON VI
void tachso()
{
donvi=adc%10; // CHU SO HANG DON VI
chuc=adc/10; // CHU SO HANG CHUC
tram=adc/100; //chu so hang tram
}
// chuong trinh chuyen doi do C
void convert()
{
adc=read_adc();
adc=adc/2.048;
}
// CHUONG TRINH CON HIEN THI RA 2 LED 7 DOAN
void display()
{
portb=a[donvi];
output_high(pin_d0); //chot data
portb=a[chuc];
output_high(pin_d1); //chot data
portb=a[tram];
output_high(pin_d2); //chot data
delay_ms(500);

output_low(pin_d0); //lay data
output_low(pin_d1); //lay data
output_low(pin_d2); //lay data
delay_us(1);
}

mình đính kèm file demo lun nà.

justmyhobby
20-11-2010, 07:26 AM
hàm tachso() của bạn bị sai ở phần tách hàng chục vì khi adc >= 100, biến chục sẽ >= 10. Ví dụ: giả sử adc = 145 thì biến chuc sẽ có giá trị 14 thay vì 4.

lamnhatquan91
07-04-2013, 01:06 AM
mọi người ơi giúp mính sữa code này với , mình mô phỏng không chạy