单片机c语言:电子钟(单片机实现)效果:
代码:
#include <reg52.h>
sbit wei=P2^7;
sbit duan=P2^6;
int j,num1=18,num2=6,num3=00;
unsigned char code table_duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
unsigned char code table_wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void delay(int t)
{
while(t--);
}
void yanshi10ms()
{
int i,j;
for(i=20;i>0;i--)
for(j=250;j>0;j--);
}
void time()
{
TMOD|=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
EX0=1;
IT0=1;
}
main()
{
int i,t=2;
int xianshi[8];
time();
while(1)
{
xianshi[0]=table_duan[num1/10];
xianshi[1]=table_duan[num1%10];
xianshi[2]=table_duan[10];
xianshi[3]=table_duan[num2/10];
xianshi[4]=table_duan[num2%10];
xianshi[5]=table_duan[10];
xianshi[6]=table_duan[num3/10];
xianshi[7]=table_duan[num3%10];
for(i=0;i<8;i++)
{
P0=table_wei[i];
wei=1;
wei=0;
P0=xianshi[i];
duan=1;
duan=0;
delay(200);
}
}
}
void time_ () interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
j++;
if(j==20)
{
j=0;
num3++;
if(num3==60)
{
num3=0;
num2++;
if(num2==60)
{
num2=0;
num1++;
if(num1==24)
{
num1=num2=num3=0;
}
}
}
}
}