52單片機和DS18B20溫度傳感器,用數碼管顯示,共陽(4位),小數要求一位,還有個位和十位。十位老是0。
- 不知道怎么回事, while(1) { // int i; uchar shi=0; uchar ge=0; uchar xiaoshu=0; shi=tab[temp/1000]; //十位溫度 ge=tab[temp%1000/100]; //個位溫度 xiaoshu=tab[(temp%100)/10]; if(flag_get==1) //定時讀取當前溫度 { temp=ReadTemperature(); flag_get=0; } P0=shi; seg1=0; delay(20); seg1=1; P0=ge; seg2=0; delay(10); seg2=1; delay(20); P0=xiaoshu; seg3=0; delay(20); seg3=1; } //讀取溫度 unsigned char ReadTemperature(void) { unsigned char a=0; unsigned char b=0; int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); // 跳過讀序號列號的操作 WriteOneChar(0x44); // 啟動溫度轉換 delay(200); Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號列號的操作 WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度 a=ReadOneChar(); b=ReadOneChar(); t=b; t<<=8; t|=a; tt=t*0.0625; t= tt*100+5; //放大10倍輸出并四舍五入 return(t); } 求大俠看看怎么回事!謝謝
-
問
提問者:網友
2018-08-26