自己写做的c8051f020的1302程序,请教错在哪里了。接线无误,请问该怎么改?
答案:2 悬赏:0 手机版
解决时间 2021-12-04 13:12
- 提问者网友:沦陷
- 2021-12-03 18:30
自己写做的c8051f020的1302程序,请教错在哪里了。接线无误,请问该怎么改?
最佳答案
- 五星知识达人网友:十年萤火照君眠
- 2021-12-03 18:48
uchar Init_DS18B20(void)
{
unsigned char x=0;
DQ = 1; //DQ复位
Delay(8); //稍做延时
DQ = 0; //单片机将DQ拉低
Delay(90); //精确延时 大于 480us
DQ = 1; //拉高总线
Delay(8);
x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
Delay(20)
DQ=1;
return x;
}
你的DS18B20初始化函数就有问题了,要有返回函数,用于判断初始化成功与否,而且你初始化中的延迟时间也不对。我给你该了下,别的还没怎么看不知道对错追问程序调好了,确实是因为延时太久。但是为什么延时久会错成这么个样子还不太清楚。请问f020的ds1302接收不到返回的时间日期,也有可能是因为程序时序延时的错误码?追答DS18B20对延迟精度要求比较高,超出他时序图要求范围就会出错。而DS1302接收不到返回的时间日期可能是因为你工作时序没搞对,延迟对它影响不大。
{
unsigned char x=0;
DQ = 1; //DQ复位
Delay(8); //稍做延时
DQ = 0; //单片机将DQ拉低
Delay(90); //精确延时 大于 480us
DQ = 1; //拉高总线
Delay(8);
x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
Delay(20)
DQ=1;
return x;
}
你的DS18B20初始化函数就有问题了,要有返回函数,用于判断初始化成功与否,而且你初始化中的延迟时间也不对。我给你该了下,别的还没怎么看不知道对错追问程序调好了,确实是因为延时太久。但是为什么延时久会错成这么个样子还不太清楚。请问f020的ds1302接收不到返回的时间日期,也有可能是因为程序时序延时的错误码?追答DS18B20对延迟精度要求比较高,超出他时序图要求范围就会出错。而DS1302接收不到返回的时间日期可能是因为你工作时序没搞对,延迟对它影响不大。
全部回答
- 1楼网友:杯酒困英雄
- 2021-12-03 19:54
你的问题出在哪儿?是发送给LCD指令,但无显示吗?追问lcd没问题,是ds18b20返回的结果不对。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯