找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3722|回复: 2
打印 上一主题 下一主题
收起左侧

单片机温度传感器代码有几句看不懂temp=tt*10+0.5

[复制链接]
跳转到指定楼层
楼主
ID:516297 发表于 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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

板凳
ID:213173 发表于 2019-4-20 08:40 | 只看该作者
取整数,小数部分四舍五入。
回复

使用道具 举报

沙发
ID:337069 发表于 2019-4-20 08:20 | 只看该作者
tt=temp*0.0625  :DS18B20读取的值后四位二进制数是小数,要转换十进制。因为二进制的0.0001 = 十进制0.0625,所以十进制温度值=读出值乘以0.0625
temp=tt*10+0.5 :返回值temp是uint,无符号整形,tt浮点型,有四位小数,浮点型转化无符号整形后面小数会丢掉。乘10,为了保留最后一位小数,加0.5,是四舍五入。
tt=12.9345 * 10 + 0.5    返回值temp = 129      温度12.9
tt=129.545 * 10 + 0.5    返回值temp = 130      温度13.0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表