首先 Ds18b20ChangTemp(); 是另外一个函数 里面应该包括先初始化 然后发送0x55还是啥的指令,这些都是温度传感器检测温度必须走的过程。
Ds18b20ReadTempCom(); 这个也是先初始化 ,然后发送0x4c还是啥的。忘记具体指令了。。
之后温度传感器会发送 一个16位的 温度值 先发送低8位 后发送高8位
tml = Ds18b20ReadByte(); //读取温度值共16位,先读低字节
tmh = Ds18b20ReadByte(); 这两个就是了
然后将高八位的tmh左移8位 然后并上低八位 就相当于温度值的16位都出来了 然后返回给其他函数做处理 注意 高八位的 4-7位是符号位 0000表示正的温度 1111 表示负的温度
负的温度的话 就需要去补码
去百度看看资料 很多的 其实不难的。
因为刚做了一个DS18B20的程序,希望能帮到你
首先 Ds18b20ChangTemp(); 是另外一个函数 里面应该包括先初始化 然后发送0x55还是啥的指令,这些都是温度传感器检测温度必须走的过程。
Ds18b20ReadTempCom(); 这个也是先初始化 ,然后发送0x4c还是啥的。忘记具体指令了。。
之后温度传感器会发送 一个16位的 温度值 先发送低8位 后发送高8位
tml = Ds18b20ReadByte(); //读取温度值共16位,先读低字节
tmh = Ds18b20ReadByte(); 这两个就是了
然后将高八位的tmh左移8位 然后并上低八位 就相当于温度值的16位都出来了 然后返回给其他函数做处理 注意 高八位的 4-7位是符号位 0000表示正的温度 1111 表示负的温度
负的温度的话 就需要去补码
去百度看看资料 很多的 其实不难的。
因为刚做了一个DS18B20的程序,希望能帮到你
举报