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

📄 text1.c

📁 单总线多点测温系统
💻 C
字号:
#include<reg51.h>
#include<xuanze.h>


unsigned  int shu[]={0x30,0x31,0x32,0x33,0x34,0X35,0x36,0x37,0x38,0x39};
unsigned long t;




  void flcd_1602()           //当为负温度时,液晶显示可以高位为0屏蔽.
 { 	 init(0x80);write_data(0x4e);//NO  
   init(0x81);write_data(0x4f);
   init(0x82);write_data(0x80);

   
   init(0x85);write_data(0x74);//temperature 
   init(0x86);write_data(0x65); 
   init(0x87);write_data(0x6d);  
   init(0x88);write_data(0x70);  
   init(0x89);write_data(0x65);  
   init(0x8a);write_data(0x72);
   init(0x8b);write_data(0x61);  
   init(0x8c);write_data(0x74);  
   init(0x8d);write_data(0x75);  
   init(0x8e);write_data(0x72);
   init(0x8f);write_data(0x65);
  
    init(0xc0);write_data(0x80);
   init(0xc1);write_data(0x80);
   init(0xc2);write_data(0x69); //is: 
   init(0xc3);write_data(0x73);  
   init(0xc4);write_data(0x3a); 
 
 	if((t/1000%10)!=0)
	{init(0xc5);write_data(0x2d);  
     init(0xc6);write_data(shu[t/1000%10]);
	 init(0xc7);write_data(shu[t/100%10]);  
	}
	else
	{init(0xc5);write_data(0xfe);  
     init(0xc6);write_data(0x2d);
	 init(0xc7);write_data(shu[t/100%10]);  
	}
	init(0xc8);write_data(0x2e);
    init(0xc9);write_data(shu[(t%100)/10]); 
	init(0xca);write_data(shu[t%10]);
	init(0xcb);write_data(0x27);
	init(0xcc);write_data(0x43);
	init(0xcd);write_data(0x80);
	init(0xce);write_data(0x80);
	init(0xcf);write_data(0x80);
 }

 void lcd_1602()              //当为正温度时,液晶显示可以高位为0屏蔽.
 { 	 init(0x80);write_data(0x4e);//NO  
   init(0x81);write_data(0x4f);
   init(0x82);write_data(0x80);

   init(0x84);write_data(0x80);
   init(0x85);write_data(0x74); //temperature 
   init(0x86);write_data(0x65);  
   init(0x87);write_data(0x6d);  
   init(0x88);write_data(0x70);  
   init(0x89);write_data(0x65);
   init(0x8a);write_data(0x72);  
   init(0x8b);write_data(0x61);  
   init(0x8c);write_data(0x74);  
   init(0x8d);write_data(0x75);
   init(0x8e);write_data(0x72);
   init(0x8f);write_data(0x65);

   init(0xc0);write_data(0x80);
   init(0xc1);write_data(0x80);
   init(0xc2);write_data(0x69); //is: 
   init(0xc3);write_data(0x73);  
   init(0xc4);write_data(0x3a); 
  if(t/10000!=0)
	{init(0xc5);write_data(shu[t/10000]);  
     init(0xc6);write_data(shu[t/1000%10]);
     init(0xc7);write_data(shu[t/100%10]);
	 }
	else
    {if((t/1000%10)!=0)
      {init(0xc5);write_data(0xfe);
	   init(0xc6);write_data(shu[t/1000%10]);
	  init(0xc7);write_data(shu[t/100%10]);
	  }
	  else
       {init(0xc5);write_data(0xfe);
	   init(0xc6);write_data(0xfe);
       init(0xc7);write_data(shu[t/100%10]);}
     } 
    
     
	 init(0xc8);write_data(0x2e);
	init(0xc9);write_data(shu[(t%100)/10]); 
	init(0xca);write_data(shu[t%10]);
	init(0xcb);write_data(0x27);
	init(0xcc);write_data(0x43);
	init(0xcd);write_data(0x80);
	init(0xce);write_data(0x80);
	init(0xcf);write_data(0x80);

 }
void jiance()      //初始化,即检测是否存在DS18B20.
{unsigned char k=0;
  loop:DS=1;
      DS=0;       //主机将总线从高电平拉到低电平
       del(100);  //持续400us~960us
      DS=1;       //然后释放总线

      del(10);   //DS18B20检测到总线上升沿后,等待15us~60u后发低电平。
    k=DS;
    del(20);     //低电平至少要持续60~240us
     if(k==1)   // 60~240us内 若为高电平则要重新检测。
     goto loop;

}


 read()                      //从DS18B20中读出数据
{ unsigned char i;
  unsigned long date=0;
  for(i=0;i<16;i++)
  { DS=0;        //主机在某一时刻将总线从高电平拉到低电平.
   date>>=1;
           
     
	DS=1;
	 del(3);       //保持15us将总线拉到高电平,产生读时间隙
    if(DS)        
    date|=0x8000;
    del(8);          //读数据需要持续35us~60us.

   
   }
   return(date);
}
void  main()
{ unsigned long  flag=0;
   	EA=0;
    SP=0X60;
   init(0x01);   //对液晶屏初始化
   init(0x38);
   init(0x0c);
   init(0x06);
   
  while(1)
 {  
  	jiance();  //对DS18B20初始化
    matchrom();
    write(0x44); //启动温度变换 
	del(100); 	 
    jiance();
    matchrom();
  if(f==1)
    {f=0;}
  else
  {  write(0xbe); // 读暂存存储器
     t=read();
     flag=t&0x8000;  //对读取的数据进行处理
    if(flag==0x8000)
     {t=~t;
       t=t+1;
       t=t*25;
	    t>>=2;
       flcd_1602();
	 }
   else
   {  t=t*25;
      t>>=2;
      lcd_1602();
    }
   }
  }
 }

⌨️ 快捷键说明

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