#include <reg51.h>
#include <intrins.h>
sbit wei=P2^7;
sbit duang=P2^6;
char a,b,c,d,t0,dx,nb,flag,flag1;
int t;
unsigned char code table[]={0x3F,0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F};
void delay()
{
int x=300;
while(x--);
}
void init(void)
{
dx=20;
nb=20;
a=2;
b=0;
c=2;
d=0;
P1=0xee;
EA=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
}
void time() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;t0++;
if(t0==20)
{
t0=0;
dx--;nb--;
a=nb/10;b=nb%10;
c=dx/10;d=dx%10;
if(nb==0&&flag!=1&&flag!=2){flag=1;nb=4;}
if(dx==0&&flag1!=1&&flag1!=2){dx=20;flag1=1;}
if(nb==0&&flag==1){nb=20;flag=2;}
if(dx==0&&flag1==1){dx=4;flag1=2;}
if(nb==0&&flag==2){nb=20;flag=0;}
if(dx==0&&flag1==2){dx=20;flag1=0;}
}
if(t==400)P1=0xf3;
if(t==410)P1=0xf7;
if(t==420)P1=0xf3;
if(t==430)P1=0xf7;
if(t==440)P1=0xf3;
if(t==450)P1=0xf7;
if(t==460)P1=0xf3;
if(t==470)P1=0xf7;
if(t==480)P1=0xf5;
if(t==800)P1=0xdd;
if(t==810)P1=0xfd;
if(t==820)P1=0xdd;
if(t==830)P1=0xfd;
if(t==840)P1=0xdd;
if(t==850)P1=0xfd;
if(t==860)P1=0xdd;
if(t==870)P1=0xfd;
if(t==880){P1=0xee;t=0;}
}
void display(char a,char b,char c,char d)
{
wei=1;
P0=0xfe;
wei=0;
P0=0xff;
duang=1;
P0=table[a];
duang=0;
P0=0xff;
delay();
wei=1;
P0=0xfd;
wei=0;
P0=0xff;
duang=1;
P0=table[b];
duang=0;
P0=0xff;
delay();
wei=1;
P0=0xfb;
wei=0;
P0=0xff;
duang=1;
P0=table[c];
duang=0;
P0=0xff;
delay();
wei=1;
P0=0xf7;
wei=0;
P0=0xff;
duang=1;
P0=table[d];
duang=0;
P0=0xff;
delay();
}
void main()
{
init();
while(1)
{
display(a,b,c,d);
}
}
这个灯和时间的显示是同步的,因为我是刚学单片机的,可能编得不是很好,因为今晚的网络原因,我上传不了图给你了,如果你要图的,可以到单片机群55932363里找我要,一起学习
温馨提示:答案为网友推荐,仅供参考