关于DS18B20温度传感器疑惑。。。。
时间:10-02
整理:3721RD
点击:
这是原例子的一端程序:
a = Read_OneChar(); //读取温度值低位
b = Read_OneChar(); //读取温度值高位
c = 0x0f & a; //得到小数部分
a = a >> 4; //低位右移4位
b = b << 4; //高位左移4位
t = a | b; //得到8位温度的整数部分,最高为符号位
我有点搞不懂的是按理说a是0字节的数据,b是1字节的数据,而0字节高5位是温度的正负号,
低3位为温度的高位
1字节
高4位为温度的低位,
低4位为温度小数部分
为什么c=0x0f & a;会得到小数部分呢?我觉得应该是c=0x0f & b,后面两句也应该改为左移和右移,大家说是不是这样啊!
a = Read_OneChar(); //读取温度值低位
b = Read_OneChar(); //读取温度值高位
c = 0x0f & a; //得到小数部分
a = a >> 4; //低位右移4位
b = b << 4; //高位左移4位
t = a | b; //得到8位温度的整数部分,最高为符号位
我有点搞不懂的是按理说a是0字节的数据,b是1字节的数据,而0字节高5位是温度的正负号,
低3位为温度的高位
1字节
高4位为温度的低位,
低4位为温度小数部分
为什么c=0x0f & a;会得到小数部分呢?我觉得应该是c=0x0f & b,后面两句也应该改为左移和右移,大家说是不是这样啊!
好像是资料上搞错了0字节应该是4位低位和4位小数位,1字节才是第三位为高位,高5位为正负位
http://xouou.iteye.com/blog/1797998
有详细注释
是我下载的一个资料搞错了,我去看原始数据手册发现的