int t
float tt //温度值
char i
unsigned char *p
Init_DS18B20()
WriteOneChar(0xCC)//跳过读序号列号的 *** 作
delay(40)//delay(4)
WriteOneChar(0xBE)//读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=ReadOneChar()
b=ReadOneChar()
t=b
t<<=8
t=t|a
tt=t*0.0625转换成温度.可用
p= (unsigned char *) (&tt)
for(i=3i>=0i--)
{
TI = 0
SBUF = p[i]
while(TI==0)
}
到计算机这边,在把他转换回来就好了;
例如:
BYTE RECV[4]// 这是计算机收到的字符串;
float *fp = (float*)RECV
float t = *fp //t里就是收到的18B20的温度了
串口通信,不论数据是什么,方法都是一样的,只要会写串口通信程序就行,与设置门限温度没有什么关系的。电脑通过串口向单片机发送设置的门限温度,单片机收到后,保存在一个变量中,然后随时与当前的温度值比较。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)