单片机--电子时钟(C51)
//author:helloword
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitsegoe=P1^3;//数码管的使能控制端,低电平有效
sbitduanxuan=P1^4;//数码管的段选控制,7段发光LED显示
sbitweixuan=P1^5;//数码管的位选控制,8个数码管的选择
ucharcodesmg_duan[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管段选码表,我们的数码管是共阴极数码管
ucharcodesmg_wei[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uinttime_flag=20;
uintsecond=0;
uintminute=02;
uinthour=10;
voiddisplay();
voiddelay(uint);
voidmain()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
TR0=1;
ET0=1;
EA=1;
segoe=0;
while(1)
display();
}
voidInt_T0(void)interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
time_flag--;
if(time_flag==0)
{
second++;
time_flag=20;
}
}
voiddisplay()
{
uintsec_1,sec_2;
uintmin_1,min_2;
uinthou_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;}
}
voiddelay(uintz)
{
uinti,j;
for(i=z;i>0;i--)
for(j=95;j>0;j--);
}
单片机电子时钟C5 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)