![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
你好,我在用DS18B20做温度测试的单片机,想知道读取到的DMPL=read_byte( );DMPH=read_byte 是几进制数?
还有语句temp=TMPL/16+TMPH*16具体是什么意思?它具体对数据进行了什么处理?我想让它的温度数据精确到小数点后一位,整数部分的十位和个位我都能计算出来,但是...
还有语句 temp= TMPL / 16 + TMPH * 16 具体是什么意思?
它具体对数据进行了什么处理?
我想让它的温度数据精确到小数点后一位,整数部分的十位和个位我都能计算出来,但是小数部分具体要怎么编程? 展开
它具体对数据进行了什么处理?
我想让它的温度数据精确到小数点后一位,整数部分的十位和个位我都能计算出来,但是小数部分具体要怎么编程? 展开
展开全部
读到的两个字节一个是高8位,一个是低8位,将高8位乘以256再加上低8位,得到的就是DS18B20传回的温度数据,把这个数据乘以0.0625便得到温度数。
因为传回的数据是补码表示,而一般的单片机内部的整数也是补码表示,所以直接相乘就可以了,不需要做额外的码制转换。
至于你那个语句,应该是舍去了低4位,低4位是小数部分,得到的数据就是温度的整数部分。
因为传回的数据是补码表示,而一般的单片机内部的整数也是补码表示,所以直接相乘就可以了,不需要做额外的码制转换。
至于你那个语句,应该是舍去了低4位,低4位是小数部分,得到的数据就是温度的整数部分。
追问
你说的“将高8位乘以256再加上低8位,得到的就是DS18B20传回的温度数据” 这个传回的温度数据是几进制的?
那我要计算得到可以显示一位小数的温度,要怎么编写程序?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询