| }
 
	/*****表现开机初始化守候画面*****/Disp_init()
 {
 P2 = 0xbf;      //表现-
 P1 = 0xf7;
 Delay(200);
 P1 = 0xfb;
 Delay(200);
 P1 = 0xfd;
 Delay(200);
 P1 = 0xfe;
 Delay(200);
 
	 P1 = 0xff;         //封锁表现}
 
	/*****表现温度子措施*****/Disp_Temperature()     //表现温度
 {
 P2 =0xc6;      //表现C
 P1 = 0xf7;
 Delay(300);
 
	 P2 =LEDData[n];    //表现个位P1 = 0xfb;
 Delay(300);
 
	 P2 =LEDData[m%10];    //表现十位DIAN = 0;         //表现小数点
 P1 = 0xfd;
 Delay(300);
 
	 P2 =LEDData[m/10];    //表现百位P1 = 0xfe;
 Delay(300);
 
	 P1 = 0xff;         //封锁表现}
 
	/*****表现报警温度子措施*****/Disp_alarm(uchar baojing)
 {
 P2 =0xc6;      //表现C
 P1 = 0xf7;
 Delay(200);
 
	 P2 =LEDData[baojing%10]; //表现十位P1 = 0xfb;
 Delay(200);
 
	 P2 =LEDData[baojing/10]; //表现百位P1 = 0xfd;
 Delay(200);
 
	 if(set_st==1)P2 =0x89;else if(set_st==2)P2 =0xc7; //上限H、下限L标示
 P1 = 0xfe;
 Delay(200);
 
	 P1 = 0xff;         //封锁表现}
 
	/*****报警子措施*****/void Alarm()
 {
 if(x>=10){beep_st=~beep_st;x=0;}
 if((m>=shangxian&&beep_st==1)||(m<xiaxian&&beep_st==1))BEEP=0;
 else BEEP=1;
 }
 
	/*****主函数*****/void main(void)
 {
 uint z;
 InitTimer();    //初始化按时器
 EA=1;      //全局间断开关
 TR0=1;
 ET0=1;      //开启按时器0
 IT0=1;
 IT1=1;
 check_wendu();
 check_wendu();
 for(z=0;z<300;z++)
 {
 Disp_init();
 }
 while(1)
 {
 if(SET==0)
 {
 Delay(2000);
 do{}while(SET==0);
 set_st++;x=0;shanshuo_st=1;
 if(set_st>2)set_st=0;
 }
 if(set_st==0)
 {
 EX0=0;    //封锁外部间断0
 EX1=0;    //封锁外部间断1
 check_wendu();
 Disp_Temperature();
 Alarm();   //报警检测
 }
 else if(set_st==1)
 {
 BEEP=1;    //封锁蜂鸣器
 EX0=1;    //开启外部间断0
 EX1=1;    //开启外部间断1
 if(x>=10){shanshuo_st=~shanshuo_st;x=0;}
 if(shanshuo_st) {Disp_alarm(shangxian);}
 }
 else if(set_st==2)
 {
 BEEP=1;    //封锁蜂鸣器
 EX0=1;    //开启外部间断0
 EX1=1;    //开启外部间断1
 if(x>=10){shanshuo_st=~shanshuo_st;x=0;}
 if(shanshuo_st) {Disp_alarm(xiaxian);}
 }
 }
 }
 
	/*****END*****/ 
	DS18B20.h: 
	#include <AT89X52.h>#define  DQ  P3_6     //界说DS18B20总线I/O
 
	/*****延时子措施*****/void Delay_DS18B20(int num)
 {
 while(num--) ;
 }
 
	/*****初始化DS18B20*****/void Init_DS18B20(void)
 {
 unsigned char x=0;
 DQ = 1;         //DQ复位
 Delay_DS18B20(8);    //稍做延时
 DQ = 0;         //单片机将DQ拉低
 Delay_DS18B20(80);   //准确延时,大于480us
 DQ = 1;         //拉高总线
 Delay_DS18B20(14);
 x = DQ;           //稍做延时后,假如x=0则初始化乐成,x=1则初始化失败  (责任编辑:admin)
 |