⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 temperature_sampling_source_code_base_on_ds18b20.txt

📁 temperature_sampling_source_code_base_on_DS18B20 基于DS18B20的温度采样原程序(C),编译通过,很好用,大家
💻 TXT
字号:


temperature_sampling_source_code_base_on_DS18B20 
基于DS18B20的温度采样原程序(C),编译通过,很好用,大家看看
#define uchar unsigned char 
#define  uint  unsigned int 
#include<reg51.h>
#include <intrins.h> // _nop_()function

#define NOP _nop_();_nop_();_nop_()

sbit PORT_BIT_1820=P1^2;
/**********************************/
void wr_1820(uchar  val);
float get_tmpr(void);
void init_1820(void);
void wr_1820(uchar val);
float rd_1820(void);
void delay1(uchar t);
void start(void);

//********************************************
void delay1(uchar t)
{
   uchar i;
   for (i=0;i<t;i++)
         {
         _nop_();
         }

}
//********************************************
void start(void)
{
   init_1820();
 wr_1820(0xcc);
        wr_1820(0x44);
  }
float get_tmpr(void)
{ float tmpr;
 uchar  cnt,i;
  cnt=0;
ag: EA=0;
 init_1820();
 wr_1820(0xcc);
        wr_1820(0x44);
        //delay1(250);
        init_1820();
        wr_1820(0xcc);
        wr_1820(0xbe);
 tmpr=rd_1820();
 init_1820();
 wr_1820(0xcc);
  wr_1820(0x44);   /* start convert */
 EA=1;
if (tmpr<-10.0) tmpr=25.0;
   return tmpr;
}

void init_1820(void)
{ uchar  i,j;
  PORT_BIT_1820=1;       //1.6us
   PORT_BIT_1820=0; /* 1--8+7us */
 for(i=0;i<100;i++);/* delay 400--960us */  //300us
 PORT_BIT_1820=1;
 for(i=0;i<200;i++)  /* delay 15--60us */
    { if (PORT_BIT_1820==0) break;}
 for(i=0;i<=200;i++)
    { if (PORT_BIT_1820==1)  break;

     }
 for(i=0;i<60;i++); /* delay 480us */
}

void wr_1820(uchar  val)
{
  uchar i,j;
   PORT_BIT_1820=1;  //1.6us
   NOP;              //3.6us
 for (j=0;j<8;j++)
   { PORT_BIT_1820=0;
     NOP;
            NOP;  /* delay 5us  */
     if ((val&0x01)==1)
                     PORT_BIT_1820=1;
      else
                     PORT_BIT_1820=0;
     for(i=0;i<6;i++);    /* delay 56 us */   //20.6us
     PORT_BIT_1820=1;
     val=val>>1;
   }
}

float rd_1820(void)
{ uchar  j,i,k,tt[9],vv;
  float tmpr;
  vv=0;
  for(k=0;k<9;k++)
    {  for(j=0;j<8;j++)
      { PORT_BIT_1820=0;
      NOP;NOP;NOP;NOP;
      PORT_BIT_1820=1;
      vv=vv>>1;
      if(PORT_BIT_1820) vv=vv|0x80;
      for(i=0;i<6;i++);/*delay 120 us */
            PORT_BIT_1820=1;
          }
      tt[k]=vv;
     }
   i=tt[1]&0xf8;
   if( (i!=0)&&(i!=0xf8)) return -100.0;

   tmpr=tt[1]*256.0;
   tmpr=(tmpr+tt[0])/16.0;
   if(tmpr>100.0 ) return -100.0;
   return  tmpr;
}
/**********************************/

//************************************
main()
{
 float tt;
 uchar ds[8],i;
 init_1820();
 wr_1820(0x33);
 start();
 tt=get_tmpr();

  _nop_();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -