- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
51单片机c语言电子钟(已加入调时、闹铃、整点报时功能).doc
51单片机c语言电子钟(已加入调时、闹铃、整点报时功能)
效果图:
程序如下:
//51单片机c语言电子钟(已加入调时、闹铃、整点报时功能)
//WHJWNAVY 2011/10/14
?
#includereg51.h
#includeabsacc.h
#define uchar unsigned char
#define uint unsigned int
/*七段共阴管显示定义*/
//此表为 LED 的字模, 共阴数码管 0-9? -
uchar code dispcode[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};? //段码控制
/*定义并初始化变量*/
uchar seconde=0;//秒
uchar minite=0;//分
uchar hour=12; //时
uchar mstcnt=0;//定时器计数,定时50ms,mstcnt满20,秒加1
uchar shi=0;//闹铃功能
uchar fen=0;
uchar bjcs;//报警次数
sbit P1_0=P1^0;???????????????? //second 调整定义
sbit P1_1=P1^1;???????????????? //minite调整定义
sbit P1_2=P1^2;???????????????? //hour调整定义
sbit P1_5=P1^5;?????//整点报时
sbit P1_3=P1^3;?????//闹铃功能,调整时间
sbit P1_6=P1^6;?????//调整时
sbit P1_7=P1^7;?????//调整分
sbit P1_4=P1^4;?????//关闭闹铃
/*函数声明*/
void delay(uint k );? //延时子程序
void time_pro( );????? //时间处理子程序
void display( );?????? //显示子程序
void keyscan( );?????? //键盘扫描子程序
/*延时子程序*/
void delay (uint k)
{
uchar j;
while((k--)!=0)
?? {
??? for(j=0;j125;j++)
???? {;}
?? }
}?
/*时间处理子程序*/
void time_pro(void)
{
?if(seconde==60)
?{
??seconde=0;
??minite++;
??if(minite==60)
??{
???minite=0;
???hour++;
???if(hour==24)
???{
????hour=0;
???}
??}
?}
}
/*显示子程序*/
void display(void)
{
?if(P1_3==1)
?{
?P2=0XFE;
?P0=dispcode[seconde%10];//秒个位
?delay(1);
?P2=0XFD;
?P0=dispcode[seconde/10];//秒十位
?delay(1);
?P2=0XFB;
?P0=dispcode[10];//间隔符 -
?delay(1);
?P2=0XF7;
?P0=dispcode[minite%10];//分个位
?delay(1);
?P2=0XEF;
?P0=dispcode[minite/10];//分十位
?delay(1);
?P2=0XDF;
?P0=dispcode[10];//间隔符 -
?delay(1);
?P2=0XBF;
?P0=dispcode[hour%10];//时个位
?delay(1);
?P2=0X7F;
?P0=dispcode[hour/10];//时十位
?delay(1);
?}
}
/*键盘扫描子程序*/
void keyscan(void)
{
?if(P1_0==0)//秒位的调整
?{
??delay(30);
??if(P1_0==0)
??{
???seconde++;
???if(seconde==60)
???{
????seconde=0;
???}
??}
??delay(250);
?}
?if(P1_1==0)//分位的调整
?{
??delay(30);
??if(P1_1==0)
??{
???minite++;
???if(minite==60)
???{
????minite=0;
???}
??}
??delay(250);
?}
?if(P1_2==0)//时位的调整
?{
??delay(30);
??if(P1_2==0)
??{
???hour++;
???if(hour==24)
???{
????hour
文档评论(0)