7524|11

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

DS18B20 初始化失败 纠结中 [复制链接]

为了单独测试这个DS18B20的初始化,弄了个最小化的电路如下:
DS18B20接P1.7,LED接P1.0


如果初始化成功,则LED应该点亮.
程序:
  1. #include

  2. sbit DQ = P1^7;

  3. sbit LED = P1^0;

  4. void delay2us(unsigned char t)
  5. {
  6.      while(--t)
  7.            ;
  8. }

  9. void main(void)
  10. {
  11.      bit x;
  12.      DQ = 1;
  13.      delay2us(1);
  14.      DQ = 0;
  15.      delay2us(200);
  16.      delay2us(100);
  17.      DQ = 1;
  18.      delay2us(35);
  19.      x = DQ;
  20.      delay2us(20);

  21.      while(1)
  22.      {
  23.           LED = x;
  24.      }
  25. }
复制代码


最新回复

这个对时序很严格的,初次写时建议不要自已写,先参考一下别人先成的程序再说吧,祝楼主好运。  详情 回复 发表于 2010-6-26 12:41
点赞 关注

回复
举报

59

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
电路没问题吧,我以前也是时序搞不好,记得读的时候少延时或多延时数据就乱了
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
用示波器先测一下输出吧
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
加个上拉再说!

 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 
网上看看别人怎么做的吧
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 
非常郁闷!

关于加上拉电阻,我也测试过在DS18B20的2脚加一个4.7K电阻到电源,无果.

关于这个时序,查到的是:
复位,拉低后延时480us-960us,再拉高,再延时15-60us,再读,如果为低则复位成功.

几近崩溃.
后来疯狂的大范围的调整延时时间,居然看见LED灯亮了!!!!!

电路未动,程序改为:
  1. #include

  2. sbit DQ = P1^7;        //定义DS18B20数据线.
  3. sbit LED = P1^0;        //定义LED

  4. void delay2us(unsigned char t)
  5. {
  6.         while(--t)
  7.                 ;
  8. }

  9. void main(void)
  10. {
  11.         bit x;
  12.         DQ = 0;
  13.         delay2us(250);
  14.         delay2us(250);
  15.         delay2us(250);

  16.         DQ = 1;
  17.         delay2us(100);
  18.         x = DQ;
  19.         delay2us(150);

  20.         while(1)
  21.         {
  22.                 LED = x;
  23.         }
  24. }
复制代码


LED灯点亮了!不易啊!再不亮就准备放弃了.

在Keil里调试看了看延时时间,拉低后延时1500微秒左右,再拉高,延时时间为200微秒左右.

这个数值与资料说的出入如此之大,是怎么回事呢?
LED灯亮了后,将我从崩溃边缘拉回来了,但,还是不明白,是资料错误?我的器件特殊?
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
无果剩下就是时序的问题。。。

慢慢调咯,其实可以在PROTUE上模拟一下

 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
学习了,顶
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 6 楼 lbing7 的回复:
无果剩下就是时序的问题。。。

慢慢调咯,其实可以在PROTUE上模拟一下


时序问题已经在上面解决了.呵呵.

只是,为什么差别如此之大.不解
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 8 楼 cqlhj 的回复:
引用 6 楼 lbing7 的回复:
无果剩下就是时序的问题。。。

慢慢调咯,其实可以在PROTUE上模拟一下


时序问题已经在上面解决了.呵呵.

只是,为什么差别如此之大.不解


一个小小的时序,却影响着读写数据或者状态位的出错的。。。那么初始化就失败了。。差异就只有成功与不成功,当然大了,呵呵。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

11
 
这个东西对时序要求比较严格,以前搞的时候是用51汇编写的,呵呵
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

12
 
这个对时序很严格的,初次写时建议不要自已写,先参考一下别人先成的程序再说吧,祝楼主好运。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表