不简单的电子时钟,看看就知道了!
试试分析一下面代码,看你懂不懂?
#include<reg51.h>
unsigned char code DuanMa[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};//字形码(段码)
unsigned char code WeiMa[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};
unsigned char timer[]={2,3,10,5,9,10,5,8};
void Delay(int m) //延时程序,延时m毫秒
{
unsigned int i,j;
for (i=0; i<m; i++)
for(j=0; j<120;j++);
}
void main()
{
unsigned char i;
unsigned char cnt = 0;
//init 7-seg
P0=0XFF;
P2=0XFF;
while(1)
{
//main loop
for(i=0; i<8; i++)
{
P0= DuanMa [timer[i]]; //取显示数据,段码
P2= WeiMa [i]; //取位码
Delay(1);
P0=0xFF;
}
//完成数据处理,进位。
cnt++,(cnt >= 100)?((timer[7]++,timer[7]>9?(timer[7]=0,timer[6]++,((timer[6]>=6)?(timer[4]++,timer[6]=0,(((timer[4]>9)?(timer[3]++,timer[4]=0,((timer[3]>=6)?(timer[1]++,timer[3]=0,(timer[0] != 2)?((timer[1]>9)?(timer[0]++,timer[1]=0):(0)):((timer[1]>3)?(timer[0]=0,timer[1]=0):(0))):(0))):(0)))):(0))):(0)),(cnt = 0)):(0);
}
}
/**************************************************************************/
这段代码可以完成24小时计时,并能自动进位!
呵……是不是很有意思啊……
小川电子工作室
paulhyde.taobao.com