搜索
bottom↓
回复: 1

求助:c8051f120与18B20通信,一直输出是0

[复制链接]

出0入0汤圆

发表于 2012-6-10 22:13:56 | 显示全部楼层 |阅读模式
求助:c8051f120与18B20通信,一直输出是0,火大。
可能原因:
1、时序(用示波器看的,应该没有问题)
2、18B20是坏的(也测试过没坏)
3、用的是C8051F120的P3^7,配置成开漏
   (C8051F难道还有什么忘了配置?
    因为用P3^7可以初始化,用P4 P5 P6 P7不能完成初始化)

把关键代码贴出来:
  1. void Init_DS18B20(void)
  2. {

  3. //shuchu
  4. DQ = 1;   
  5. DQ = 0;   
  6. timer_delay(15000); //精确延时大于480us
  7. DQ = 1;   

  8. //shuru
  9. timer_delay(1250); //15~60us
  10. while(DQ);
  11. timer_delay(5000); //60~240us

  12. //shuchu
  13.   DQ = 1;
  14. timer_delay(15000); //180~405us

  15. }
复制代码
  1. unsigned char ReadOneChar(void)
  2. {
  3. unsigned char i=0;
  4. //unsigned char j=0;
  5. unsigned char dat = 0;
  6. for (i=0;i<8;i++)
  7. {
  8.           DQ = 1;
  9.           DQ = 0;
  10.           Delay(40);//>1us
  11.           //shuru
  12.           //j=DQ;        //<15us
  13.           if(DQ)
  14.           dat|=(1<<i);
  15.           else
  16.           dat&=~(1<<i);
  17.           timer_delay(2500);
  18.           DQ = 1;
  19.   }
  20.   DQ = 1;
  21.   return(dat);
  22. }
复制代码
  1. void WriteOneChar(unsigned char dat)
  2. {
  3. unsigned char i=0;
  4. for (i=0; i<8; i++)
  5. {
  6.   DQ = 1;
  7.   DQ = 0;
  8.   timer_delay(800);
  9.    
  10.   if(dat&(1<<i))
  11.   DQ = 1;
  12.   else
  13.   DQ = 0;
  14.   timer_delay(2500);
  15.   DQ = 1;
  16. }
  17. DQ = 1;
  18. }
复制代码
  1. unsigned int ReadTemperature(void)
  2. {
  3. unsigned char a;
  4. unsigned char b;
  5. unsigned int t;
  6. //float         T;
  7. Init_DS18B20();
  8. WriteOneChar(0xcc); // 跳过读序号列号的操作
  9. WriteOneChar(0x44); // 启动温度转换

  10. // Delay_ms(2);

  11. Init_DS18B20();
  12. WriteOneChar(0xcc); //跳过读序号列号的操作
  13. WriteOneChar(0xbe); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度

  14. a=ReadOneChar();//di
  15. b=ReadOneChar();//gao

  16. //a=0x12;b=0x23;
  17. t=b;                       
  18. t<<=8;
  19. t=t|a;                 
  20. //T=(float)t*0.0625;


  21. return(t);
  22. }  
复制代码

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2012-6-10 22:14:42 | 显示全部楼层
使用外部晶振 PLL 4倍频        SYSCLK=100M
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 02:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表