【ds18b20程序】ds18b20温度计算书上程序:(T是读取的16位温度)T=T*0.625a[0]=T/...
答案:2 悬赏:10 手机版
解决时间 2021-02-13 19:20
- 提问者网友:戎马万世
- 2021-02-13 11:05
【ds18b20程序】ds18b20温度计算书上程序:(T是读取的16位温度)T=T*0.625a[0]=T/...
最佳答案
- 五星知识达人网友:一秋
- 2021-02-13 11:40
【答案】 这个要看程序是怎么读温度的,用的应该是C语言吧?T应该是声明为整型或者长整型数据,也有可能是浮点型,读的时候应该是每读一位数据一些移位、或之类的运算.所以T就是读出来的数值的10进制表示.DS18B20的温度是用12位表示的,最高位表示正负.但一般8位的单片机只能读两次,共16位,也就是T中有4位是多余的.怎么从读到的数值中得到真实的温度值,你可以尝试一下位运算.
DS18B20的分辨率是0.0625,读到的温度数值要乘以0.0625才能得到真实的温度值.但你的百位、十位、个位都是整数,你计算的过程中必有强制数据类型转换.所以要保留一位小数就要乘以10,也就是把小数点后一位的数值提到个位中,这样在计算中才不至于把小数点后一位的数值丢掉.相应地在计算中也要把分子放大10倍,所以得到百位数要除以1000. 追答: uint,也是一样的,是一个10进制数。你好好地了解一下C语言的数据类型
DS18B20的分辨率是0.0625,读到的温度数值要乘以0.0625才能得到真实的温度值.但你的百位、十位、个位都是整数,你计算的过程中必有强制数据类型转换.所以要保留一位小数就要乘以10,也就是把小数点后一位的数值提到个位中,这样在计算中才不至于把小数点后一位的数值丢掉.相应地在计算中也要把分子放大10倍,所以得到百位数要除以1000. 追答: uint,也是一样的,是一个10进制数。你好好地了解一下C语言的数据类型
全部回答
- 1楼网友:想偏头吻你
- 2021-02-13 12:06
和我的回答一样,看来我也对了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯