单片机时间闹钟日期程序,日期程序还不全
#include #define uchar unsigned char
#define uint unsigned int
sbit keyP10=P1^0; sbit keyP11=P1^1; sbit keyP12=P1^2; sbit keyP13=P1^3; sbit keyP14=P1^4; sbit keyP15=P1^5; sbit beepP17=P1^7; uchar xianshidaima[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};
uint miao,miao1,miao2,fen,fen1,fen2,shi,shi1,shi2,a,b,c,d;
uint naomiao,naomiao1,naomiao2,naofen,naofen1,naofen2,naoshi,naoshi1,naoshi2;
uint nian,nian1,nian2,yue,yue1,yue2,ri,ri1,ri2;
void chufa();
void chufa1();
void chufa2();
void display(); void display1(); void display2(); void key();
void key1();
void key2();
void riqi();
void beep();
void delay(uint z); void main()
{
a=0;
b=0;
c=0;
d=0;
miao=0;
fen=0;
shi=0;
naomiao=0;
naofen=0;
naoshi=0;
nian=11;
yue=7;
ri=20;
beepP17=0;
TH0=0x4c;
TL0=0x4c;
TMOD=0x01;
TR0=1;
EA=1;
ET0=1;
while(1)
{
if(b==1)
{
key1();
chufa1();
display1();
if(keyP14==0)
{
delay(10);
if(keyP14==0)
{
while(keyP14==0)
{
b=0;
}
}
}
if(keyP15==0)
{
delay(10);
if(keyP15==0)
{
while(keyP15==0)
{
c=1;
b=0;
}
}
}
}
if(c==1)
{
key2();
chufa2();
display2();
if(keyP15==0)
{
delay(10);
if(keyP15==0)
{
while(keyP15==0)
{
c=0;
}
}
}
if(keyP14==0)
{
delay(10);
if(keyP14==0)
{
while(keyP14==0)
{
b=1;
c=0;
}
}
}
}
if(b==0&&c==0)
{
key();
chufa();
display();
beep();
if(keyP14==0)
{
delay(10);
if(keyP14==0)
{
while(keyP14==0)
{
b=1;
}
}
}
if(keyP15==0)
{
delay(10);
if(keyP15==0)
{
while(keyP15==0)
{
c=1;
}
}
}
}
}
}
void key()
{
if(keyP10==0)
{
delay(10);
if(keyP10==0)
{
while(keyP10==0)
{
display();
}
shi++;
if(shi>=24)
{
shi=0;
}
}
}
if(keyP11==0)
{
delay(10);
if(keyP11==0)
{
while(keyP11==0)
{
display();
}
shi--;
if(shi>=24)
{
shi=23;
}
}
}
if(keyP12==0)
{
delay(10);
if(keyP12==0)
{
while(keyP12==0)
{
display();
}
fen++;
miao=0;
if(fen>=60)
{
fen=0;
}
}
}
if(keyP13==0)
{
delay(10);
if(keyP13==0)
{
while(keyP13==0)
{
display();
}
fen--;
miao=0;
if(fen>=60)
{
fen=59;
}
}
}
}
void key1() {
if(keyP10==0)
{
delay(10);
if(keyP10==0)
{
while(keyP10==0)
{
display1();
}
naoshi++;
if(naoshi>=24)
{
naoshi=0;
}
}
}
if(keyP11==0)
{
delay(10);
if(keyP11==0)
{
while(keyP11==0)
{
display1();
}
naoshi--;
if(naoshi>=24)
{
naoshi=23;
}
}
}
if(keyP12==0)
{
delay(10);
if(keyP12==0)
{
while(keyP12==0)
{
display1();
}
naofen++;
if(naofen>=60)
{
naofen=0;
}
}
}
if(keyP13==0)
{
delay(10);
if(keyP13==0)
{
while(keyP13==0)
{
display1();
}
naofen--;
if(naofen>=60)
{
naofen=59;
}
}
}
}
void key2()
{
if(keyP10==0)
{
delay(10);
if(keyP10==0)
{
while(keyP10==0)
{
display2();
}
yue++;
if(yue>=13)
{
yue=0;
}
}
}
if(keyP11==0)
{
delay(10);
if(keyP11==0)
{
while(keyP11==0)
{
display2();
}
yue--;
if(yue>=13)
{
yue=12;
}
}
}
if(keyP12==0)
{
delay(10);
if(keyP12==0)
{
while(keyP12==0)
{
display2();
}
ri++;
if(ri>=31)
{
ri=0;
}
}
}
if(keyP13==0)
{
delay(10);
if(keyP13==0)
{
while(keyP13==0)
{
display2();
}
ri--;
if(ri>=31)
{
ri=30;
}
}
}
}
void timer0() interrupt 1
{
TH0=0x4c;
TL0=0x4c;
a++;
if(a==20)
{
miao++;
a=0;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
riqi();
}
}
}
}
}
void chufa() {
miao1=miao/10;
miao2=miao%10;
fen1=fen/10;
fen2=fen%10;
shi1=shi/10;
shi2=shi%10; }
void display() {
P2=0x7f;
P0=xianshidaima[shi1];
delay(1);
P2=0xbf;
P0=xianshidaima[shi2];
delay(1);
P2=0xdf;
P0=0xbf;
delay(1);
P2=0xef;
P0=xianshidaima[fen1];
delay(1);
P2=0xf7;
P0=xianshidaima[fen2];
delay(1);
P2=0xfb;
P0=0xbf;
delay(1);
P2=0xfd;
P0=xianshidaima[miao1];
delay(1);
P2=0xfe;
P0=xianshidaima[miao2];
delay(1);
P2=0xff;
}
void chufa1()
{
naomiao1=naomiao/10;
naomiao2=naomiao%10;
naofen1=naofen/10;
naofen2=naofen%10;
naoshi1=naoshi/10;
naoshi2=naoshi%10; }
void display1()
{
P2=0x7f;
P0=xianshidaima[naoshi1];
delay(1);
P2=0xbf;
P0=xianshidaima[naoshi2];
delay(1);
P2=0xdf;
P0=0xbf;
delay(1);
P2=0xef;
P0=xianshidaima[naofen1];
delay(1);
P2=0xf7;
P0=xianshidaima[naofen2];
delay(1);
P2=0xfb;
P0=0xbf;
delay(1);
P2=0xfd;
P0=xianshidaima[naomiao1];
delay(1);
P2=0xfe;
P0=xianshidaima[naomiao2];
delay(1);
P2=0xff;
}
void chufa2()
{
nian1=nian/10;
nian2=nian%10;
yue1=yue/10;
yue2=yue%10;
ri1=ri/10;
ri2=ri%10; }
void display2() {
P2=0x7f;
P0=xianshidaima[nian1];
delay(1);
P2=0xbf;
P0=xianshidaima[nian2];
delay(1);
P2=0xdf;
P0=0xbf;
delay(1);
P2=0xef;
P0=xianshidaima[yue1];
delay(1);
P2=0xf7;
P0=xianshidaima[yue2];
delay(1);
P2=0xfb;
P0=0xbf;
delay(1);
P2=0xfd;
P0=xianshidaima[ri1];
delay(1);
P2=0xfe;
P0=xianshidaima[ri2];
delay(1);
P2=0xff;
}
void beep()
{
if(shi==naoshi&&fen==naofen)
beepP17=~beepP17;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void riqi() {
if(shi==0)
{
ri++;
if(ri==30)
{
ri=1;
yue++;
if(yue==12)
{
yue=1;
nian++;
}
}
}
}