|
#include<reg52.h>
#define uint unsigned int
sbit wei=P2^7;
sbit duan=P2^6;
sbit s2=P3^0;
sbit s3=P3^1;
sbit s4=P3^2;
sbit s5=P3^3;
sbit beep=P2^3;
uint i,count,shi1,shi2,fen1,fen2,miao1,miao2,nao_shi1,nao_shi2=1,nao_fen1,nao_fen2,nao_miao1,nao_miao2;
unsigned char code leddata[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
0x40, //"-"
};
void delay(uint y)
{
uint i,j;
for(i=y;i>0;i--)
for(j=120;j>0;j--);
}
void time() //時間
{
duan=1;
P0=leddata[shi1];
duan=0;
wei=1;
P0=0xfe;
wei=0;
delay(1);
duan=1;
P0=leddata[shi2];
duan=0;
wei=1;
P0=0xfd;
wei=0;
delay(1);
duan=1;
P0=leddata[10];
duan=0;
wei=1;
P0=0xfb;
wei=0;
delay(1);
duan=1;
P0=leddata[fen1];
duan=0;
wei=1;
P0=0xf7;
wei=0;
delay(1);
duan=1;
P0=leddata[fen2];
duan=0;
wei=1;
P0=0xef;
wei=0;
delay(1);
duan=1;
P0=leddata[10];
duan=0;
wei=1;
P0=0xdf;
wei=0;
delay(1);
duan=1;
P0=leddata[miao1];
duan=0;
wei=1;
P0=0xbf;
wei=0;
delay(1);
duan=1;
P0=leddata[miao2];
duan=0;
wei=1;
P0=0x7f;
wei=0;
delay(1);
}
void nao_time() //鬧鐘時間
{
duan=1;
P0=leddata[nao_shi1];
duan=0;
wei=1;
P0=0xfe;
wei=0;
delay(1);
duan=1;
P0=leddata[nao_shi2];
duan=0;
wei=1;
P0=0xfd;
wei=0;
delay(1);
duan=1;
P0=leddata[10];
duan=0;
wei=1;
P0=0xfb;
wei=0;
delay(1);
duan=1;
P0=leddata[nao_fen1];
duan=0;
wei=1;
P0=0xf7;
wei=0;
delay(1);
duan=1;
P0=leddata[nao_fen2];
duan=0;
wei=1;
P0=0xef;
wei=0;
delay(1);
duan=1;
P0=leddata[10];
duan=0;
wei=1;
P0=0xdf;
wei=0;
delay(1);
duan=1;
P0=leddata[nao_miao1];
duan=0;
wei=1;
P0=0xbf;
wei=0;
delay(1);
duan=1;
P0=leddata[nao_miao2];
duan=0;
wei=1;
P0=0x7f;
wei=0;
delay(1);
}
void nao_ding() //按鍵控制鬧鐘時間
{ while(!s2)
{ TR0=1;
nao_time();
if(s3==0)
{
delay(5);
if(s3==0)
{nao_shi2++;while(!s3);}
}
if(s4==0)
{
delay(5);
if(s4==0)
{nao_fen2++;while(!s4);}
}
if(s5==0)
{
delay(5);
if(s5==0)
{nao_miao2++;while(!s5);}
}
if(nao_miao2==10)
{nao_miao2=0;nao_miao1++;}
if(nao_miao1==6)
{nao_miao1=0;nao_fen2++;}
if(nao_fen2==10)
{nao_fen2=0;nao_fen1++;}
if(nao_fen1==6)
{nao_fen1=0;nao_shi2++;}
if(nao_shi2==10)
{nao_shi2=0;nao_shi1++;}
if(nao_shi1==2&&nao_shi2==4)
{nao_shi1=0;nao_shi2=0;}
} }
void jian_kong() // 按鍵控制
{
if(s2==0)
{
delay(5);
if(s2==0)
{TR0=~TR0;delay(300);nao_ding();}
}
if(s3==0)
{
delay(5);
if(s3==0)
{shi2++;while(!s3);}
}
if(s4==0)
{
delay(5);
if(s4==0)
{fen2++;while(!s4);}
}
if(s5==0)
{
delay(5);
if(s5==0)
{miao2++;while(!s5);}
}
if(miao2==10)
{miao2=0;miao1++;}
if(miao1==6)
{miao1=0;fen2++;}
if(fen2==10)
{fen2=0;fen1++;}
if(fen1==6)
{fen1=0;shi2++;}
if(shi2==10)
{shi2=0;shi1++;}
if(shi1==2&&shi2==4)
{shi1=0;shi2=0;}
}
void nao()
{
if(nao_shi1==shi1&&nao_shi2==shi2&&nao_fen1==fen1&&nao_fen2==fen2&&nao_miao1==miao1&&nao_miao2==miao2)
{for(i=8;i>0;i--)
{beep=~beep;delay(500);}
}
}
void ding()
{
TMOD=0x01;
TH0=(65536-43080)/256;
TL0=(65536-43080)%256;
TR0=1;
ET0=1;
EA=1;
}
void main()
{
ding();
while(1)
{time();
jian_kong();
nao();
}
}
void time0()interrupt 1
{
TH0=(65536-43080)/256;
TL0=(65536-43080)%256;
count++;
if(count==20)
{count=0;miao2++;}
if(miao2==10)
{miao2=0;miao1++;}
if(miao1==6)
{miao1=0;fen2++;}
if(fen2==10)
{fen2=0;fen1++;}
if(fen1==6)
{fen1=0;shi2++;}
if(shi2==10)
{shi2=0;shi1++;}
if(shi1==2&&shi2==4)
{shi1=0;shi2=0;}
}
|
|