#include<stc12c2052ad.h>
#define uchar unsigned char /*宏定义 */
#define uint unsigned int /*宏定义 */
uchar MM,MM_D,MM_G;
uchar HH,HH_D,HH_G;
uchar M,SS,N,flag;
uint X,DP;
uint a,b,c,d;
float y;
sbit wela1=P1^4;
sbit wela2=P1^5;
sbit wela3=P1^6;
sbit wela4=P1^7;
sbit CLK=P1^2;
sbit DAT=P1^3;
sbit buz=P1^1;
sbit L1=P3^0;
sbit K0=P3^1;
void Buzzer();
void bibi();
void Delayms(uchar t);
void key_scan();
sbit k4=P1^0;
sbit k3=P3^7;
sbit ji=P3^3;
sbit k1=P3^4;
sbit k2=P3^5;
#define ON 1
#define OFF 0
uchar code table[]={
0xfc,0x60,0xda,0xf2,0x66,
0xb6,0xbe,0xe0,0xfe,0xf6,0x01};
void sendbyte(uchar byte)
{
uchar num,c;
num=table[byte];
for(c=0;c<8;c++)
{
CLK=OFF;
DAT=num&0x01;
CLK=ON;
num>>=1;
}
}
void delay(uchar dly)
{
uchar i,j;
for(j=dly;j>0;j--)
for(i=100;i>0;i--);
}
void display(void)
{
if(DP<=1660)
{
sendbyte(10);wela2=ON;wela3=ON;
delay(2);
wela2=OFF;wela3=OFF;
}
sendbyte(MM_D);wela4=ON;
delay(2);
wela4=OFF;
sendbyte(MM_G);wela3=ON;
delay(2);
wela3=OFF;
sendbyte(HH_D);wela2=ON;
delay(2);
wela2=OFF;
if(HH_G==0)
{
sendbyte(HH_G);wela1=OFF;
delay(2);
wela1=OFF;
}
else
{
sendbyte(HH_G);wela1=ON;
delay(2);
wela1=OFF;
}
}
void Tinit(void)
{ L1=ON;
ji=OFF;
MM=0;
HH=12;
TMOD=0x22;
TH0=216;
TL0=216;
TH1=216;
TL1=216;
EA=1;
ET0=1;TR0=1;
ET1=1;TR1=1;TF1=0;
}
void guanden()
{
if(HH<7)
ji=ON;
if(HH==7)
{if(MM<15)
ji=ON;
}
if(HH==7)
{
if(MM>=15)
{
ji=ON;
if(MM<17)
bibi();
}
if(MM>=40)
{
ji=ON;
bibi();
}
}
if(HH>=8)
{
if(HH<19)
ji=ON;
}
if(HH>=19)
{
if(HH<23)
ji=OFF;
}
if(HH==23)
{if(MM<40)
ji=OFF;
}
if(HH==23)
{if(MM>=40)
ji=ON;
}
if(HH==24)
{
ji=ON;
}
}
void main()
{
Tinit();
while(1)
{
if(K0==0)
{
delay(5);
if(K0==0)
{
while(K0==0);
X++;
if(X>1)
X=0;
}
}
key_scan();
if(X==0)
{guanden();L1=OFF;}
else
{L1=ON;ji=ON;}
}
}
void timer0(void) interrupt 1
{
HH_G=HH/10;
HH_D=HH%10;
MM_G=MM/10;
MM_D=MM%10;
N++;
if(N==1)
{
N=0;
DP++;
if(DP>=3334)
{
DP=0;
SS++;
if(HH==24&&MM==00)
{
if(SS==61)
{
SS=0;
MM++;
}
}
else
if(SS==60)
{
SS=0;
MM++;
if(MM>=60)
{
MM=0;
HH++;
if(HH>=25)
{
MM=0;
HH=1;
}
}
}
}
}
M++;
if(M==6)
{
M=0;
display();
}
}
void t1() interrupt 3
{
++a;++b;++c;++d;
}
void key_scan()
{
if(k1!=1)
{
a=0;
delay(5);
if(k1!=1)
{//Buzzer();
while(k1!=1&&a<3000);
{
if(HH>=24)
HH=0;
HH++;
}
while(k1!=1)
{
a=0;
if(HH>=24)
HH=0;HH++;delay(250);
}
}
}
if(k2!=1)
{
b=0;
delay(5);
if(k2!=1)
{//Buzzer();
while(k2!=1&&b<3000);
{
if(HH<=1)
HH=25;
HH--;
}
while(k2!=1)
{
if(HH<=1)
HH=25;
HH--;
delay(250);
}
}
}
if(k3!=1)
{
c=0;
delay(5);
if(k3!=1)
{//Buzzer();
while(k3!=1&&c<3000);
{
if(MM>=59)
MM=0;
MM++;
}
while(k3!=1)
{
if( MM>=59)
MM=0;
MM++;
delay(250);
}
}
}
if(k4!=1)
{
d=0;
delay(5);
if(k4!=1)
{ //Buzzer();
while(k4!=1&&d<3000);
{
if(MM<=00)
MM=60;
MM--;
}
while(k4!=1)
{
if(MM<=00)
MM=60;
MM--;
delay(250);
}
}
}
}
void Delayms(uchar t)
{ uchar i;
while(t--)
for(i=2;i>0;i--);
}
void Buzzer()
{
uint m;m=350;
while(m--)
{
while(TF1==0);
TF1=0;
buz=~buz;
}
buz=1;
}
void bibi()
{
if(DP<5)
{
Buzzer();
Delayms(250);
Buzzer();
}
}