Trích:
Nguyên văn bởi conglong
Vong lặp while(1) của bạn đặt ở cuối chương trình nên không hiện thị nhiệy độ đúng, bạn sửa lại như sau:
Code:
void main(void)
{
int ADCVoltage;
char Nhietdo[40];
ADPCFG = 0xFEFF;
SystemInit();
Init_ADC10();
LCD_Gotoxy(1,1);
LCD_WriteString("nhiet do la");
LCDdelayms(10);
while(1){
LCD_Gotoxy(3,2);
ADCVoltage=ADCValue/2;
sprintf(Nhietdo, "%d",ADCVoltage );
LCD_WriteString(Nhietdo);
};
}
Nó sẽ chạy nhưng code này vẫn chưa tối ưu.
|
Bạn silvadk2 chỉ muốn thử hiển thị một giá trị nhiệt độ rồi cho dừng chương trình, do đó không hẳn là sai. Vấn đề là biến ADCValue chưa có được giá trị digital tương ứng với tín hiệu analog ở ngõ vào, theo ý của bạn silvadk2. Nguyên nhân có thể do phần cứng, cũng có thể do cách thiết lập cho module ADC của bạn ấy chưa đúng.
Thân,