51单片机数码管时钟程序
- 格式:doc
- 大小:28.50 KB
- 文档页数:2
本人初学51,编写简单时钟程序。仅供参考学习
#include
#define uint unsigned int
#define uchar unsigned char
Uchar code table_d[16] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1 };
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0xef};
void delay(uint);
unsigned long i,num,t=1;
void main()
{
TMOD=0X01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
num=i/20;//i为秒位
if(i==1728000)//一天大概是这个秒吧,,,应该是,呵呵。就是世间到24时就归零。
i=0;
//也可用下面这个部分来代替上面的。
/*if(i==20)
{ i=0;
num++;
if(num==5184000)
num=0;
}*/
//num=9;
P2=7;//P2口为数码管控制端,我的是38译码器控制,就直接对其赋值来控制时,分,秒的显示;
P0=table[i%100%10];
delay(t);
P2=6;
P0=table[i%100/10];
delay(t);
P0=table_d[(num%60)%10];
P2=5;
delay(t);
P0=table[(num%60)/10];
P2=4;
delay(t);
P0=table_d[((num/60)%60)%10];
P2=3;
delay(t);
P0=table[((num/60)%60)/10];
P2=2;
delay(t);
P0=table_d[(num/3600)%10] ;
P2=1;
delay(t);
P0=table[(num/3600)/10];
P2=0;
delay(t);
}
}
void inttimer() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
i++;
}
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
程序可能有点小问题,对初学者是个很好的启发。讨论交流:QQ:1044675456