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

📄

📁 DS18B20在2051单片机上实现测温
💻
字号:

#include<at892051.h>
#include<stdio.h>
sbit DQ =P3^2;
sbit p14 =P1^4;
sbit p15 =P1^5;
sbit p34=P3^4;
sbit p37=P3^7;

void delay(unsigned int i)
  {
    while(i--);
  }
 
 
Init_DS18B20(void)
  {
     unsigned char x=0;
     DQ = 1;     
     delay(8);   
     DQ = 0;     
     delay(80);  
     DQ = 1;    
     delay(14);
     x=DQ;      
     delay(20);
   }

 
ReadOneChar(void)
   {
     unsigned char i=0;
     unsigned char dat = 0;
      for (i=8;i>0;i--)
       {
         DQ = 0;  
         dat>>=1;
         DQ = 1;  
         if(DQ)
         dat|=0x80;
         delay(4);
       }
      return(dat);
    }
WriteOneChar(unsigned char dat)
   {
    unsigned char i=0;
    for (i=8; i>0; i--)
     {
      DQ = 0;
      DQ = dat&0x01;
      delay(5);
      DQ = 1;
      dat>>=1;
     }
   }
ReadTemperature(void)
    {
     unsigned char a=0;
     unsigned char b=0;
     unsigned int t=0;
     float tt=0;
     Init_DS18B20();
     WriteOneChar(0xCC);   
     WriteOneChar(0x44); 
     Init_DS18B20();
     WriteOneChar(0xCC); 
     WriteOneChar(0xBE);
     a=ReadOneChar();
     b=ReadOneChar();
     t=b;
     t<<=8;
     t=t|a;
     tt=t*0.0625;
     t= tt+0.5;
     return(t);
    }

main()
{
   unsigned char i=0;
   unsigned char j,k;
   int a,b;
   p34=0;
   while(1)
    {
       i=ReadTemperature();
	   j=i%10;  //个位
	   k=i/10;  //十位
       p34=0;
	   if(i<14||i>20) //超出18-39范围报警- 
      {
	    p34=1;
		p37=0;
		delay(100);
		p37=1;
        
         for(a=0;a<1000;a++)  //在一秒之内显示1000次。这样看上去就是连续的
			      {      
				        
					     P1=j;
	                                     p15=1;
					     p14=0;
					      for(b=0;b<82;b++)
						     {  ;  }
					     p15=0;
					    
					     P1=k;
					     p14=1;
					     p15=0;
					      for(b=0;b<82;b++)
						     {  ;  }
					     p14=0;
				
                    
					}

	  }
    	else

	     for(a=0;a<1000;a++)  //在一秒之内显示1000次。这样看上去就是连续的
			      {      
				        
					     P1=j;
	                                     p15=1;
					     p14=0;
					      for(b=0;b<82;b++)
						     {  ;  }
					     p15=0;
					    
					     P1=k;
					     p14=1;
					     p15=0;
					      for(b=0;b<82;b++)
						     {  ;  }
					     p14=0;
				
                    
					}
    
    }
}

⌨️ 快捷键说明

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