void Init_DS18B20(void) { unsigned char x=0; DQ=1; Delayns(8); DQ=0; Delayns(80); DQ=1; Delayns(14); x=DQ; Delayns(20); } unsigned char ReadOneChar(void) { unsigned char i=0; unsigned char dat=0; for(i=8;i>0;i--) { DQ=0; dat>>=1; DQ=1; if(DQ) dat|=0x80; Delayns(4); } return(dat); } void WriteOneChar(unsigned char dat) { unsigned char i=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; Delayns(5) ; DQ=1; dat>>=1; } } unsigned int ReadTemperature(void) { unsigned char a =0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0XCC); WriteOneChar(0X44); Init_DS18B20(); WriteOneChar(0XCC); WriteOneChar(0XBE); a=ReadOneChar(); b= ReadOneChar(); t=b; t<<=8; t=t|a; tt=t*0.0625; t=tt*10+0.5; return(t); }请帮我看看代码有没有错,为什么我读的有问题
时间: 2023-10-22 14:09:45 浏览: 87
DS18B20读取温度
这段代码看起来是用来读取DS18B20温度传感器的温度值的。根据代码逻辑来看,它的实现流程是:
1. 初始化DS18B20传感器
2. 发送读取温度的指令
3. 从DS18B20传感器中读取温度值
4. 将读取到的温度值转换成实际温度,并返回结果
从代码实现上看,似乎没有明显的错误。但是,我们还需要考虑一些问题:
1. DS18B20传感器的连接方式是否正确?
2. DS18B20传感器的工作电压是否正确?
3. 温度值的转换是否正确?
如果出现读取有问题的情况,可能是上述问题导致的。你可以先检查一下这些方面,看看是否存在问题。如果还是不能解决问题,可以提供更多的信息,让我们更好地帮助你解决问题。
阅读全文