//author:helloword
#include
#define uint unsigned int
#define uchar unsigned char
sbit segoe=P1^3;//数码管的使能控制端,低电平有效
sbit duanxuan=P1^4;//数码管的段选控制,7段发光LED显示
sbit weixuan=P1^5;//数码管的位选控制,8个数码管的选择
uchar code smg_duan[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管段选码表,我们的数码管是共阴极数码管
uchar code smg_wei[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uint time_flag=20;
uint second=0;
uint minute=02;
uint hour=10;
void display();
void delay(uint);
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
TR0=1;
ET0=1;
EA=1;
segoe=0;
while(1)
display();
}
void Int_T0(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
time_flag--;
if(time_flag==0)
{
second++;
time_flag=20;
}
}
void display()
{
uint sec_1,sec_2;
uint min_1,min_2;
uint hou_1,hou_2;
weixuan=1;
P0=smg_wei[2];
weixuan=0;
duanxuan=1;
P0=0x40;
duanxuan=0;
delay(3);
weixuan=1;
P0=smg_wei[5];
weixuan=0;
duanxuan=1;
P0=0x40;
duanxuan=0;
delay(3);
if(second<60)
{
sec_2=second/10;
sec_1=second;
weixuan=1;
P0=smg_wei[0];
weixuan=0;
duanxuan=1;
P0=smg_duan[sec_1];
duanxuan=0;
delay(3);
weixuan=1;
P0=smg_wei[1];
weixuan=0;
duanxuan=1;
P0=smg_duan[sec_2];
duanxuan=0;
delay(3);
}
if(minute<60)
{
min_2=minute/10;
min_1=minute;
weixuan=1;
P0=smg_wei[3];
weixuan=0;
duanxuan=1;
P0=smg_duan[min_1];
duanxuan=0;
delay(3);
weixuan=1;
P0=smg_wei[4];
weixuan=0;
duanxuan=1;
P0=smg_duan[min_2];
duanxuan=0;
delay(3);
}
if(hour<24)
{
hou_2=hour/10;
hou_1=hour;
weixuan=1;
P0=smg_wei[6];
weixuan=0;
duanxuan=1;
P0=smg_duan[hou_1];
duanxuan=0;
delay(3);
weixuan=1;
P0=smg_wei[7];
weixuan=0;
duanxuan=1;
P0=smg_duan[hou_2];
duanxuan=0;
delay(3);
}
if(second==60){ minute++; second=0;}
if(minute==60){ hour++; minute=0; second=0; }
if( hour==24 ){ second=0; minute=0; hour=0; }
}
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=95;j>0;j--);
}
上一篇:单片机--电子时钟(汇编)
下一篇:单片机实验--交通灯
推荐阅读最新更新时间:2024-03-16 14:48