52單片機(jī)和DS18B20溫度傳感器,用數(shù)碼管顯示,共陽(yáng)(4位),小數(shù)要求一位,還有個(gè)位和十位。十位老是0。
- 不知道怎么回事, while(1) { // int i; uchar shi=0; uchar ge=0; uchar xiaoshu=0; shi=tab[temp/1000]; //十位溫度 ge=tab[temp%1000/100]; //個(gè)位溫度 xiaoshu=tab[(temp%100)/10]; if(flag_get==1) //定時(shí)讀取當(dāng)前溫度 { 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); // 跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換 delay(200); Init_DS18B20(); WriteOneChar(0xCC); //跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度 a=ReadOneChar(); b=ReadOneChar(); t=b; t<<=8; t|=a; tt=t*0.0625; t= tt*100+5; //放大10倍輸出并四舍五入 return(t); } 求大俠看看怎么回事!謝謝
-
問(wèn)
提問(wèn)者:網(wǎng)友
2018-08-26