仪器社区

DS18B20温度传感器读出数据的转化问题??

jsskqiacw 2011-08-18
a=read_byte();//读取温度低八位的数据b=read_byte();//读取温度高八位的数据t=(b*256+a)*25;return(t>>2);很多人是这样写的,那后面的转换过程到底是什么意思,为什么高八位数据要乘... a=read_byte(); //读取温度低八位的数据 b=read_byte(); //读取温度高八位的数据 t =(b*256+a)*25; return(t>>2); 很多人是这样写的,那后面的转换过程到底是什么意思,为什么高八位数据要乘256,Z后乘25是什么意思,还有返回t>>2????不懂,而且不是说还要判断正负吗,为什么也没有??
评论
全部评论
新乐小男人year
乘以256是为了将读过来的数据转换成十进制数,再乘以25,然后在返回值里又左移了2,相当于(b*256+a)*0.0625*100!这段程序应该没有判断正负的语句!你多看看DS18B20的手册就会明白了!那里面说的很明白的!
6 0 2011-08-21 0条评论 回复
rnfpyy
用手机打字难,我就间单的说说.因为ds发出来的数据是bcd编码的.要转成正常的二进制!所以有了那个乘以二五六的公式,有时候我们不需要负温度所以用移位的方式省略掉了.其实也不一定要用别人的方法.你自己设计自己的算法才是真!
17 0 2011-08-19 0条评论 回复
fsdg65gfdg
数据存储和传输是16进制的 *256是将高8位的16进制数据转化为10进制数据.返回t>>2是左移2位相当除以4
8 0 2011-08-19 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论