这段关于温度传感器的代码不太懂?哪位大侠可以帮忙解释一下?(关于温度传感器读取温度部分)
int Ds18b20ReadTemp()
{
int temp = 0;
uchar tmh, tml;
Ds18b20ChangTemp(); //先写入转换命令
Ds18b20ReadTempCom(); //然后等待转换完后发送读取温度命令
tml = Ds18b20ReadByte(); //读取温度值共16位,先读低字节
tmh = Ds18b20ReadByte(); //再读高字节
temp = tmh;
temp <<= 8;
temp |= tml;
return temp;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
Ds18b20ReadTempCom(); 这个也是先初始化 ,然后发送0x4c还是啥的。忘记具体指令了。。
之后温度传感器会发送 一个16位的 温度值 先发送低8位 后发送高8位
tml = Ds18b20ReadByte(); //读取温度值共16位,先读低字节
tmh = Ds18b20ReadByte(); 这两个就是了
然后将高八位的tmh左移8位 然后并上低八位 就相当于温度值的16位都出来了 然后返回给其他函数做处理 注意 高八位的 4-7位是符号位 0000表示正的温度 1111 表示负的温度
负的温度的话 就需要去补码
去百度看看资料 很多的 其实不难的。
因为刚做了一个DS18B20的程序,希望能帮到你
temp = tmh;
temp <<= 8;
temp |= tml;
这句话不懂,为什么要temp左移八位
然后并上低八位 ? 并运算是什么意思 和或运算一样么?
一周热门 更多>