标题:
DS18B20读数据问题,单片机程序读不出来
[打印本页]
作者:
2023orsu
时间:
2023-3-6 11:35
标题:
DS18B20读数据问题,单片机程序读不出来
已经在逻辑分析仪看到了正常的温度数据反馈,但是程序读不出来,附上读温度函数,读出高电平
单片机源程序如下:
uint8_t B20_ReadByte(void)
{
uint8_t i,data=0;
for(i=0;i < 8;i++) //位计数值
{
data>>=1; //右移,准备接受新的数据位
GPIO_Init(DS18B20_PORT,DS18B20_PIN,GPO);
DS18B20_OUT = 0;//拉低,启动读数据位
DELAY_US(5); //等待5微秒
DS18B20_OUT = 1; //释放总线
GPIO_Init(DS18B20_PORT,DS18B20_PIN,GPI); //配置为输入,开始读取数据位
DELAY_US(12); //等待5微秒
if(DS18B20_IN)//该位是否为高
{
data|=0x80; //是就将此位置高
}
if(!DS18B20_IN)//该位是否为高
{
data&=~0x80; //是就将此位置高
}
DELAY_US(48); //等待50微秒
}
return data; //将读到的一个字节返回
}
复制代码
作者:
人中狼
时间:
2023-3-6 13:52
看代码,似乎对数据的时序有误解
作者:
dj2001
时间:
2023-3-6 13:57
18b20可以读出从9位到12位的不同分辨率的值,需要的时间不一样,从93ms到750ms,你检查一下是否给器件读出数据留出足够的时间。
作者:
univers
时间:
2023-3-10 09:37
网上有很多DS18B20的戏动程序呀,很多开发板也有这个代码,你可以找找。人家写的是成功的。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1