新闻中心

EEPW首页>嵌入式系统>设计应用> 单片机数字钟程序

单片机数字钟程序

作者: 时间:2012-12-31 来源:网络 收藏

/*void display(void)
{
P1=0x7f;P2=0xff;SBUF=0x00;
P1=_crol_(P1,1);SBUF=disdata[date%10];delayX1ms(1);SBUF=0x00;
P1=_crol_(P1,1);if(date/10) SBUF=disdata[date/10]; else SBUF=0x00;delayX1ms(1);SBUF=0x00;
P1=_crol_(P1,1);SBUF=disdata[month%10];delayX1ms(1);SBUF=0x00;
P1=_crol_(P1,1);if(month/10) SBUF=disdata[month/10]; else SBUF=0x00;delayX1ms(1);SBUF=0x00;
P1=_crol_(P1,1);SBUF=disdata[year%10];delayX1ms(1);SBUF=0x00;
P1=_crol_(P1,1);SBUF=disdata[year/10%10];delayX1ms(1);SBUF=0x00;
P1=_crol_(P1,1);SBUF=disdata[year/100%10];delayX1ms(1);SBUF=0x00;
P1=_crol_(P1,1);SBUF=disdata[year/1000];delayX1ms(1);SBUF=0x00;
P1=0xff;P2=0x7f;
P2=_crol_(P2,1);SBUF=disdata[sec%10];delayX1ms(1);SBUF=0x00;
P2=_crol_(P2,1);SBUF=disdata[sec/10];delayX1ms(1);SBUF=0x00;
P2=_crol_(P2,1);SBUF=disdata[min%10];delayX1ms(1);SBUF=0x00;
P2=_crol_(P2,1);SBUF=disdata[min/10];delayX1ms(1);SBUF=0x00;
P2=_crol_(P2,1);SBUF=disdata[hour%10];delayX1ms(1);SBUF=0x00;
P2=_crol_(P2,1);if(hour/10) SBUF=disdata[hour/10]; else SBUF=0x00;delayX1ms(1);SBUF=0x00;
P2=_crol_(P2,1);SBUF=disdata[weekday()];delayX1ms(1);SBUF=0x00;

}


void display2(uchar a)
{
P1=0x7f;P2=0xff;SBUF=0x00;
P1=_crol_(P1,1);if(a=='d') SBUF=0x00;else SBUF=disdata[date%10];delayX1ms(1);SBUF=0x00;
P1=_crol_(P1,1);if(a=='d') SBUF=0x00;else{if(date/10) SBUF=disdata[date/10];else SBUF=0x00;}delayX1ms(1);SBUF=0x00;
P1=_crol_(P1,1);if(a=='m') SBUF=0x00;else SBUF=disdata[month%10];delayX1ms(1);SBUF=0x00;
P1=_crol_(P1,1);if(a=='m') SBUF=0x00;else{if(month/10) SBUF=disdata[month/10]; else SBUF=0x00;}delayX1ms(1);SBUF=0x00;
P1=_crol_(P1,1);if(a=='y') SBUF=0x00;else SBUF=disdata[year%10];delayX1ms(1);SBUF=0x00;
P1=_crol_(P1,1);if(a=='y') SBUF=0x00;else SBUF=disdata[year/10%10];delayX1ms(1);SBUF=0x00;
P1=_crol_(P1,1);if(a=='y') SBUF=0x00;else SBUF=disdata[year/100%10];delayX1ms(1);SBUF=0x00;
P1=_crol_(P1,1);if(a=='y') SBUF=0x00;else SBUF=disdata[year/1000];delayX1ms(1);SBUF=0x00;
P1=0xff;P2=0x7f;
P2=_crol_(P2,1);if(a=='S') SBUF=0x00;else SBUF=disdata[sec%10];delayX1ms(1);SBUF=0x00;
P2=_crol_(P2,1);if(a=='S') SBUF=0x00;else SBUF=disdata[sec/10];delayX1ms(1);SBUF=0x00;
P2=_crol_(P2,1);if(a=='M') SBUF=0x00;else SBUF=disdata[min%10];delayX1ms(1);SBUF=0x00;
P2=_crol_(P2,1);if(a=='M') SBUF=0x00;else SBUF=disdata[min/10];delayX1ms(1);SBUF=0x00;
P2=_crol_(P2,1);if(a=='H') SBUF=0x00;else SBUF=disdata[hour%10];delayX1ms(1);SBUF=0x00;
P2=_crol_(P2,1);if(a=='H') SBUF=0x00;else {if(hour/10) SBUF=disdata[hour/10]; else SBUF=0x00;}delayX1ms(1);SBUF=0x00;
P2=_crol_(P2,1);SBUF=disdata[weekday()];delayX1ms(1);SBUF=0x00;

}*/

void change(void)//这个程序写的很乱,其实应该有更简单的方法
{
bit a=0;
uint b=0,c=0;
while(!P3_2);
while(1)
{if(!P3_3)
{delayX1ms(10);
if(!P3_3)
{while(!P3_3)
{if(++c>=1000)
{c=0;
display();
while(!P3_3)
{display();if(++c>=10)
{c=0;
if(++min>=60)min=0;
display();
}
}
}
}
if(++min>=60)min=0;
c=0;
}
a=1;
b=0;
}
else
{if(!P3_2){delayX1ms(10);if(!P3_2){while(!P3_2); break;}}
if(a)display();
else display2('M');
if(++b>=20)
{b=0;
a=!a;
}
}
if(!P3_2){delayX1ms(10);if(!P3_2){while(!P3_2); break;}}
}

while(1)
{if(!P3_3)
{delayX1ms(10);
if(!P3_3)
{while(!P3_3)
{if(++c>=1000)
{c=0;
display();
while(!P3_3)
{display();if(++c>=10)
{c=0;
if(++hour>=24)hour=0;
display();
}
}
}
}
if(++hour>=24)hour=0;
c=0;
}
a=1;
b=0;
}
else
{if(!P3_2){delayX1ms(10);if(!P3_2){while(!P3_2); break;}}
if(a)display();
else display2('H');
if(++b>=20)
{b=0;
a=!a;
}
}
if(!P3_2){delayX1ms(10);if(!P3_2){while(!P3_2); break;}}
}

while(1)
{if(!P3_3)
{delayX1ms(10);
if(!P3_3)
{while(!P3_3)
{if(++c>=1000)
{c=0;
display();
while(!P3_3)
{display();if(++c>=10)
{c=0;
if(++date>daysofmonth())date=1;
display();
}
}
}
}
if(++date>daysofmonth())date=1;
c=0;
}
a=1;
b=0;
}
else
{if(!P3_2){delayX1ms(10);if(!P3_2){while(!P3_2); break;}}
if(a)display();
else display2('d');
if(++b>=20)
{b=0;
a=!a;
}
}
if(!P3_2){delayX1ms(10);if(!P3_2){while(!P3_2); break;}}
}

while(1)
{if(!P3_3)
{delayX1ms(10);
if(!P3_3)
{while(!P3_3)
{if(++c>=1000)
{c=0;
display();
while(!P3_3)
{display();if(++c>=10)
{c=0;
if(++month>12)month=1;
display();
}
}
}
}
if(++month>12)month=1;
c=0;
}
a=1;
b=0;
}
else
{if(!P3_2){delayX1ms(10);if(!P3_2){while(!P3_2); break;}}
if(a)display();
else display2('m');
if(++b>=20)
{b=0;
a=!a;
}
}
if(!P3_2){delayX1ms(10);if(!P3_2){while(!P3_2); break;}}
}

while(1)
{if(!P3_3)
{delayX1ms(10);
if(!P3_3)
{while(!P3_3)
{if(++c>=1000)
{c=0;
display();
while(!P3_3)
{display();if(++c>=10)
{c=0;
if(++year>=2100)year=2000;
display();
}
}
}
}
if(++year>=2100)year=2000;
c=0;
}
a=1;
b=0;
}
else
{if(!P3_2){delayX1ms(10);if(!P3_2){while(!P3_2); break;}}
if(a)display();
else display2('y');
if(++b>=20)
{b=0;
a=!a;
}
}
if(!P3_2){delayX1ms(10);if(!P3_2){while(!P3_2); break;}}
}
while(1)
{if(!P3_2){delayX1ms(10);if(!P3_2){while(!P3_2); break;}}
if(a)display();
else display2('S');
if(++b>=20)
{b=0;
a=!a;
}
if(!P3_3)
{delayX1ms(10);
if(!P3_3)
sec=0;
}
if(!P3_2){delayX1ms(10);if(!P3_2){while(!P3_2); break;}}
}

}

uchar weekday(void)
{uint a=year-1;
uint b=0;
uchar i;
for(i=1;imonth;i++)
b+=monthdata[i-1];
b+=date;
if(month>2isleap())
b++;
i=(a+a/4-a/100+a/400+b)%7;
if(i)return i;
else return 8;
}

uchar daysofmonth(void) reentrant
{if(month!=2) return monthdata[month-1];
else if(isleap()) return 29;
else return 28;
}

bit isleap(void) reentrant
{return (year%4==0year%100!=0||year%400==0);
}

到这里这个c程序就完毕了程序很长而且没什么注释,希望大家慢慢搞定。有什么问题可在本站论坛提出,马上为您解决。

单片机相关文章:单片机教程


单片机相关文章:单片机视频教程


单片机相关文章:单片机工作原理



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭