找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4168|回復: 2
打印 上一主題 下一主題
收起左側(cè)

單片機溫度傳感器代碼有幾句看不懂temp=tt*10+0.5

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:516297 發(fā)表于 2019-4-19 23:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
DS18B20中獲取溫度中tt=temp*0.0625;temp=tt*10+0.5;這兩句什么意思啊,為什么要有temp=tt*10+0.5??這時候tt不就是溫度啦嗎??這個求得是什么,能舉例子說明嗎?


uint tmp()               //get the temperature
{
  float tt;
  uchar a,b;
  dsreset();
  delay(1);
  tmpwritebyte(0xcc);
  tmpwritebyte(0xbe);
  a=tmpread();
  b=tmpread();
  temp=b;
  temp<<=8;             //two byte  compose a int variable
  temp=temp|a;
  tt=temp*0.0625;
  temp=tt*10+0.5;
  return temp;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:337069 發(fā)表于 2019-4-20 08:20 | 只看該作者
tt=temp*0.0625  :DS18B20讀取的值后四位二進制數(shù)是小數(shù),要轉(zhuǎn)換十進制。因為二進制的0.0001 = 十進制0.0625,所以十進制溫度值=讀出值乘以0.0625
temp=tt*10+0.5 :返回值temp是uint,無符號整形,tt浮點型,有四位小數(shù),浮點型轉(zhuǎn)化無符號整形后面小數(shù)會丟掉。乘10,為了保留最后一位小數(shù),加0.5,是四舍五入。
tt=12.9345 * 10 + 0.5    返回值temp = 129      溫度12.9
tt=129.545 * 10 + 0.5    返回值temp = 130      溫度13.0
回復

使用道具 舉報

板凳
ID:213173 發(fā)表于 2019-4-20 08:40 | 只看該作者
取整數(shù),小數(shù)部分四舍五入。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表