单片机 C语言 DS18B20

2024-12-28 12:05:18
推荐回答(1个)
回答1:

ReadTemperature(void)
{
Init_DS18B20(); //初始化
WriteOneChar(0xcc); //跳过读序列号的操作
WriteOneChar(0x44); //启动温度转换
delay(125); //转换需要一点时间,延时
Init_DS18B20(); //初始化
WriteOneChar(0xcc); //跳过读序列号的操作
WriteOneChar(0xbe); //读温度寄存器(头两个值分别为温度的低位和高位)
tempL=ReadOneChar(); //读出温度的低位LSB
tempH=ReadOneChar(); //读出温度的高位MSB
//温度转换,把高低位做相应的运算转化为实际温度
temperature=((tempH*256)+tempL)*0.0625;
delay(200);
return(temperature);
}
这是一段可执行的代码,你的代码有些函数并没有在上面,所以很难解释你的那个问题,有什么问题可继续追问,也许是一个延时的问题,很难解释51的问题,就是不断地删减代码,增添代码