0625)>min_int)
{w=0;}
}
if(f==1){w=1;TR1=1;}
}
if(f_min==1)
{
if(f==0)
{
if((temp+temp_d*0.0625)〉=max_int)
{w=1;TR1=1;}
if((temp+temp_d*0。
0625)〈max_int)
{w=0;}
}
if(f==1)
{
if((temp+temp_d*0。
0625)>=min_int)
{w=1;TR1=1;}
if((temp+temp_d*0.0625)〈min_int)
{w=0;}
}
}
}
if(f_max==1)
{
if(f_min==1)
{
if(f==1)
{
if((temp+temp_d*0。
0625)〈=max_int||(temp+temp_d*0。
0625)>=min_int)
{w=1;TR1=1;}
if((temp+temp_d*0.0625)〈min_int&&(temp+temp_d*0。
0625)>max_int)
{w=0;}
}
if(f==0){w=1;TR1=1;}
}
}
}
#endif
/**********************************************************************
*程序名;__keyscan_H__
*功能:
ds18b20键盘头文件,通过键盘设定设定上下限报警温度
*编程者:
ZPZ
*编程时间:
2009/10/2
**********************************************************************/
#ifndef__keyscan_H__
#define__keyscan_H__
sbitkey1=P2^2;
sbitkey2=P2^1;
sbitkey3=P2^0;
sbitkey4=P3^3;
uchara=0,i=0;
bitk4=0,v=0,v1=0,v2=0;
/***************************读键盘延时子函数**************************/
voidkeyscan_delay(uintz)
{
uinti,j;
for(i=z;i〉0;i--)
for(j=120;j>0;j—-);
}
/****************************温度调节函数******************************/
inttemp_change(intcount,bitf)
{
if(key2==0)
{
keyscan_delay(10);
if(key2==0)
{
if(f==0)
{
count++;
if(a==1){if(count〉125)count=125;}
if(a==2){if(count>125)count=125;}
}
if(f!
=0)
{
count++;
if(a==1){if(count>55)count=55;}
if(a==2){if(count>55)count=55;}
}
}
while(key2==0);
keyscan_delay(10);
}
if(key3==0)
{
keyscan_delay(10);
if(key3==0)
{
count--;
if(a==1){if(count〈0)count=0;}
if(a==2){if(count〈0)count=0;}
}
while(key3==0);
keyscan_delay(10);
}
returncount;
}
/*****************************读键盘函数******************************/
voidkeyscan()
{
if(key1==0)
{
keyscan_delay(10);
if(key1==0)
{
TR1=1;
k4=1;
v=1;
i++;
if(i〉2){i=0;TR1=0;k4=0;v=0;store_t();get_temperature
(1);}
switch(i)
{
case0:
a=0;break;
case1:
a=1;break;
case2:
a=2;break;
default:
break;
}
}
while(key1==0);
keyscan_delay(10);
}
if(a==1&&v==1)
{led=0;max_int=temp_change(max_int,f_max);}
elseif(a==2&&v==1)
{led=1;min_int=temp_change(min_int,f_min);}
else;
if(k4==1)
{
if(key4==0)
{
keyscan_delay(5);
if(key4==0)
{
if(a==1)
{if(max_int>55)f_max=0;elsef_max=~f_max;}
if(a==2)
{if(min_int〉55)f_max=0;elsef_min=~f_min;}
}
while(key4==0);
keyscan_delay(10);
}
}
if(v==0)
{
if(key2==0)
{
keyscan_delay(10);
if(key2==0)
{
a=1;
TR1=1;
s1=1;
}
while(key2==0);
keyscan_delay(10);
}
if(key3==0)
{
keyscan_delay(10);
if(key3==0)
{
a=2;
TR1=1;
s1=1;
}
while(key3==0);
keyscan_delay(10);
}
if(v1==1)
{a=0;v1=0;TR1=0;}
}
}
#endif
/**********************************************************************
*程序名;__ds18b20_display_H__
*功能:
ds18b20数码管动态显示头文件,通过定时器0延时实现数码管动态显示
*编程者:
ZPZ
*编程时间:
2009/10/2
**********************************************************************/
#ifndef__ds18b20_display_H__
#define__ds18b20_display_H__
#defineuintunsignedint
#defineucharunsignedchar
sbitwei1=P2^4;
sbitwei2=P2^5;
sbitwei3=P2^6;
sbitwei4=P2^7;
ucharnum=0;
ucharcodetemperature1[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
ucharcodetemperature2[]={0xbf,0x86,0xdb,0xcf,0xe6,
0xed,0xfd,0x87,0xff,0xef};
ucharcodetemperature3[]={0x00,0x80,0x40,0x76,0x38};
/***********************延时子函数************************/
voiddisplay_delay(uintt)
{
uinti,j;
for(i=t;i>0;i--)
for(j=20;j>0;j——);
}
/**************************定时器1初始化函数***************************/
voidtimer1_init(bitt)
{
TMOD=0x10;
TH0=0x3c;
TL0=0xb0;
EA=1;
ET1=1;
TR1=t;
}
/**************************定时器1中断函数*****************************/
voidtimer1()interrupt3
{
TH0=0x3c;
TL0=0xb0;
num++;
if(num〈5){s=1;if(w==1){beer=1;led=1;}else{beer=1;led=1;}}
else{s=0;if(w==1){beer=0;led=0;}else{beer=1;led=1;}}
if(num>25)
{
num=0;
s1=0;
v1=1;
}
}
/***********************调节选择函数************************/
voidselsct_1(ucharf,uchark)
{
if(f==0)
{
if(k/100==0)P0=temperature3[0];
elseP0=temperature1[k/100];
}
if(f==1)
{
if(k%100/10==0)P0=temperature3[0];
elseP0=temperature3[2];
}
}
voidselsct_2(bitf,uchark)
{
if(f==0)
{
if((k/100==0)&&(k%100/10==0))
P0=temperature3[0];
elseP0=temperature1[k%100/10];
}
if(f==1)
{
if(k%100/10==0)P0=temperature3[2];
elseP0=temperature1[k%100/10];
}
}
/***********************显示函数************************/
voiddisplay(uchart,uchart_d)
{
uchari;
for(i=0;i〈4;i++)
{
switch(i)
{
case0:
if(a==0){selsct_1(f,t);}
if(a==1)
{
if(s==0)selsct_1(f_max,max_int);
elseP0=temperature3[0];
if(s1==1)selsct_1(f_max,max_int);
}
if(a==2)
{
if(s==0)selsct_1(f_min,min_int);
elseP0=temperature3[0];
if(s1==1