當前位置:編程學習大全網 - 編程軟體 - 單片機 C51中關於18B20讀出數據的處理

單片機 C51中關於18B20讀出數據的處理

t = b; t <<= 8; t = t | a;

這三句話相當於:t=b<<8+a; 由於a,b,t都是unsigned int 型,也就是16位的 ,這樣是可以的。其目的就是將兩個溫度值寄存器合成壹個,方便處理。

上面的程序采用的是12位精度的,此時最小分辨率為0.0625°。下面是是溫度操作過程 ,我在旁邊幫妳註釋了。

a = ReadOneChar(); //讀取LSB,溫度值低位字節

b = ReadOneChar(); //讀取MSB,溫度值高位字節

t = b;

t <<= 8;

t = t | a; //最終結果是t = b*(2^8) + a;

tt = t * 0.0625; //總的溫度值,分辨率是0.0625

t = tt * 10 + 0.5; //放大10倍輸出並四舍五入

a = t / 100; //十位

b = t / 10 - a * 10; //個位

c = t - a * 100 - b * 10; //小數位

小數會有壹定的誤差,最好用查找表的方式,可取多位小數更準確。

  • 上一篇:如何求矩形的面積?
  • 下一篇:幼師轉行做什麽好
  • copyright 2024編程學習大全網