微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > DS18B20 程序 求助 (真心菜鸟)

DS18B20 程序 求助 (真心菜鸟)

时间:10-02 整理:3721RD 点击:
准备让它超过30度点亮LED,结果,一上电就亮了,不要DS18B20上电也亮,可能直接没有结果DS18B20。(先不考虑低温)
#include<reg52.h>
#define u8 unsigned char
sbit DQ=P2^3;
sbit led=P0^0;
void delay(unsigned x)
{
    int i;
        x/=2;
        for(i=0;i<x;i++);
}
void reset()
{
        bit flag;
        DQ=1;
        DQ=0;
        delay(490);
        DQ=1;
        delay(60);
        if(DQ==0)
        flag=1;
        else
        flag=0;
        delay(240);
}
void wdata(u8 ida)
{
    u8 i;
        for(i=0;i<8;i++)
        {
          
                ida|=0x80;
                DQ=0;
                delay(15);
                DQ=ida;
                delay(60);
                DQ=1;
                ida>>=1;
                       
        }       
}                                                                                          
u8 rdata()
{
        u8 ida;
        int i;
        for(i=0;i<8;i++)
        {
          ida>>=1;
          DQ=0;
          delay(4);
          DQ=1;
          delay(8);
          if(DQ==1)
          { ida|=0x80;}
            delay(60);
            DQ=1;
    }
}
main()
{
   unsigned int t[2];
   unsigned int wendu;
   while(1)
  {
   int i;
   reset();
   wdata(0xcc);
   wdata(0x44);
   
   delay(10000);
   
   reset();
   wdata(0xcc);
   wdata(0xbe);
   
   for(i=0;i<2;i++)
   {
      t[i]=rdata();         
   }
   t[1]=t[1]<<8;
   wendu=(t[0]|t[1])*0.026;
   if(wendu>=30)
   led=0;
   else
   led=1;
  }
}

大神们!别不理我啊!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top