#include
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;//设P2.6连接数码管的段选
sbit wela=P2^7;//设P2.6连接数码管的位选
sbit key1=P3^4;//以下为三个按键,可更改,以实验版而定。
sbit key2=P3^5;
sbit key3=P3^6;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07
0x7f,0x6f};
uchar t0;
uchar hour,minute,second;
void delay(uint z)
{
while(z--);
}
void display(uchar h,uchar m,uchar s)
{
dula=1;
P0=table[h/10];
dula=0;
wela=1;
P0=0xfe;
wela=0;
delay(100);
dula=1;
P0=table[h%10];
dula=0;
wela=1;
P0=0xfd;
wela=0;
delay(100);
dula=1;
P0=table[m/10];
dula=0;
wela=1;
P0=0xfb;
wela=0;
delay(100);
dula=1;
P0=table[m%10];
dula=0;
wela=1;
P0=0xf7;
wela=0;
delay(100);
dula=1;
P0=table[s/10];
dula=0;
wela=1;
P0=0xef;
wela=0;
delay(100);
dula=1;
P0=table[s%10];
dula=0;
wela=1;
P0=0xdf;
wela=0;
delay(100);
}
void main()
{
TMOD=0X01;
TH0=0XB4;//设晶振为11.0592MHZ
TL0=0X00;
ET0=1;
EA=1;
TR0=1;
t0=0;
hour=minute=second=0;
display(hour,minute,second);
while(1)
{
display(hour,minute,second);
}
}
void timer0() interrupt 1
{
TH0=0XB4;
TL0=0X00;
t0++;
if(t0==20)
second++;
if(second==60)
{
second=0;
minute++;
}
if(minute==60)
{
minute=0;
hour++;
}
if(hour==24)
{
hour=0;
}
}
//本程序在线写的,未调试,如有小错误,可自己更改。
就是简单的数字钟呗 这个之前做过的 可以交流下