课程设计:粮仓温度自动检测系统 等待按键释放,没有释放则一直等待
{
a=2;//释放则执行需要的程序
}
} }
if(k3==0)
//如果检测到低电平,说明按键按下
{
delay(10); //延时去抖,一般10-20ms
if(k3==0) //再次确认按键是否按下,没有按下则退出
{
while(k3==0);//如果确认按下按键等待按键释放,没有释放则一直等待
{
a=3;//释放则执行需要的程序
}
}
}
if(k4==0)
//如果检测到低电平,说明按键按下
{
delay(10); //延时去抖,一般10-20ms
if(k4==0) //再次确认按键是否按下,没有按下则退出
{
while(k4==0);//如果确认按下按键等待按键释放,没有释放则一直等待
{
a=4;//释放则执行需要的程序
}
} }
if(a==2)
{
b++;a=0;if(b==8)b=1; } if(a==3)
{
33
课程设计:粮仓温度自动检测系统 c=1;a=0;
}
if(a==4) {
c=-1;a=0;
}
if(b==1){year+=c;c=0;WriteAddress(0x01);delay(5);}
if(b==2){m+=c;c=0;WriteAddress(0x04);delay(5);}
if(b==3){d+=c;c=0;WriteAddress(0x07);delay(5);}
if(b==4){x+=c;c=0;WriteAddress(0x09);delay(5);}
if(b==5){h+=c;c=0;WriteAddress(0x41);delay(5);}
if(b==6){min+=c;c=0;WriteAddress(0x44);delay(5);}
if(b==7){sec+=c;c=0;WriteAddress(0x47);delay(5);}
}
/***************************************************************************
定时键
**************************************************************************/
if(k5==0) //
如果检测到低电平,说明按键按下 {
delay(10); //延时去抖,一般10-20ms
if(k5==0) //再次确认按键是否按下,没有按下则退出
{
while(k5==0);//如果确认按下按键等待按键释放,没有释放则一直等待
{
e++;//释放则执行需要的程序
}
}
}
pand();//判
断时间数字
34
课程设计:粮仓温度自动检测系统 /*************************************************/
/*if(e==1)
//确定时间,
打开闹钟
{
ds=h;df=min;dm=sec;
e=2;k=1;
// e不重新写
WriteAddress(0x48);WriteData(0x28);delay(5);
}
if(e==3)
//关闭,清零 {
k=0;e=0;
WriteAddress(0x48);WriteData(0x20);delay(5);
}
if((k==1)&&(EA==1))
{ if((h==ds)&&(min==df)&&(sec==dm))
beef(); //闹钟
} */
/**************************
*****************************************/
if(sec!=sec1)
{
unsigned
char u,v;
u=sec/10;v=sec;WriteAddress(0x46);WriteData(s[u]);WriteData(s[v]);
sec1=sec;
wendu();//温度
}
if(min!=min1)
{
unsigned
char i,j;
i=min/10;j=min;WriteAddress(0x43);WriteData(s[i]);WriteData(s[j]);
min1=min;
}
35
课程设计:粮仓温度自动检测系统
if(h!=h1)
{
unsigned
char i,j;
i=h/10; j=h;
WriteAddress(0x40);
WriteData(s[i]);
WriteData(s[j]);
h1=h;
}
if(d!=d1)
{
unsigned
char i,j;
i=d/10;j=d;WriteAddress(0x06);WriteData(s[i]);WriteData(s[j]);
d1=d;
}
if(x!=x1) {
unsigned
char i;
i=x;WriteAddress(0x08);WriteData(0x2f);WriteData(s[i]);
x1=x;
}
if(m!=m1)
{
unsigned
char i,j;
i=m/10;j=m;WriteAddress(0x03);WriteData(s[i]);WriteData(s[j]);
m1=m;
}
if(year!=year1)
{
unsigned
char i,j;
i=year/10;j=year;WriteAddress(0x00);WriteData(s[i]);WriteData(s[j]);
year1=year;
}
}
36
课程设计:粮仓温度自动检测系统
h=0;d++;x++;}
//
12-09-01/6
//
00:00:00 t:28'c }
//
0123456789
// 设置显示位置为第一行的第1个字
/********************************************************************************/
void T0_time() interrupt 1 {
TH0=60;TL0=176; num1++; if(num1==20) {
num1=0;sec++;} if(sec==60) {
sec=0;min++;} if(min==60) {
min=0;h++;}
if(h==24)
{
if(x==7)x=0;
//星
期
if(m==2)
//判断闰年
{
if(year%4==0){ if(d==30){d=1;
m++;}}
if(d==29){d=1;m++;}
}
switch(m)
{
case 1:case 3:case 5:case 7:case
8:case 10:
case
12:if(d==32){d=1;m++;}break;
case 4:case 6:case 9:case 11:
if(d==31){d=1;m++;}break;
} //月完
37
课程设计:粮仓温度自动检测系统
if(m==13)
{m=1;year++;
if(year==100){year=0;}
}
}
/***************************************************************************************/
void T1_time() interrupt 3 { static unsigned char r;
TH1=60;TL1=176; num2++;
if(num2==20) {
num2=0;FM=~FM;r++; }
//if(r==20){ ET1=0;TR1=0;FM=1;TMOD|=0x01;}
}
38