Mình đang làm bài tập về đọc nhiệt độ từ LM35 sử dụng PIC877a -> Hiển thị ra Led 7 đoạn. Nhưng hiện đang gặp phải lỗi sai số khi đọc ngõ vào. Lúc nhiệt độ 29 độ -> 30 độ C, thì nó lại nhảy sang 31 độ C và cứ như thế sai số mất một đơn vị. khoảng 70 độ hơn thì sai 2 đơn vị. Không biết sửa sao? Bạn nào biết chỉ mình với!
Code CSS cuả mình đây:
#include "D:\Electronics\HOC VDK PIC\code\123.h"
void main()
{
setup_adc_ports(AN0_AN1_VSS_VREF);
setup_adc(ADC_CLOCK_DIV_2);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
set_ADC_channel(0);
set_tris_a(0xff);
set_tris_b(0x00);
set_tris_c(0x00);
int8 chuc,donvi,i,adc;
int8 const led[10]={ 0xc0,//0
0xf9,//1
0xa4,//2
0xb0,//3
0x99,//4
0x92,//5
0x83,//6
0xf8,//7
0x80,//8
0x98,//9
};
while(true)
{
adc=read_adc();
chuc=adc/10;
donvi=adc%10;
for(i=1;i<=50;i++)
{
output_c(0xfe);
output_b(led[chuc]);//hien thi hang chuc
delay_ms(10);
output_c(0xfd);
output_b(led[donvi]);//hien thi hang don vi
delay_ms(10);
}
}
}
Code CSS cuả mình đây:
#include "D:\Electronics\HOC VDK PIC\code\123.h"
void main()
{
setup_adc_ports(AN0_AN1_VSS_VREF);
setup_adc(ADC_CLOCK_DIV_2);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
set_ADC_channel(0);
set_tris_a(0xff);
set_tris_b(0x00);
set_tris_c(0x00);
int8 chuc,donvi,i,adc;
int8 const led[10]={ 0xc0,//0
0xf9,//1
0xa4,//2
0xb0,//3
0x99,//4
0x92,//5
0x83,//6
0xf8,//7
0x80,//8
0x98,//9
};
while(true)
{
adc=read_adc();
chuc=adc/10;
donvi=adc%10;
for(i=1;i<=50;i++)
{
output_c(0xfe);
output_b(led[chuc]);//hien thi hang chuc
delay_ms(10);
output_c(0xfd);
output_b(led[donvi]);//hien thi hang don vi
delay_ms(10);
}
}
}
Comment