欢迎来到天天文库
浏览记录
ID:16474512
大小:160.00 KB
页数:7页
时间:2018-08-10
《51单片机c语言电子钟》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、51单片机c语言电子钟(已加入调时、闹铃、整点报时功能)效果图:程序如下://51单片机c语言电子钟(已加入调时、闹铃、整点报时功能)//WHJWNAVY2011/10/14 #include#include#defineucharunsignedchar#defineuintunsignedint/*七段共阴管显示定义*///此表为LED的字模,共阴数码管0-9 -ucharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0
2、x40}; //段码控制/*定义并初始化变量*/ucharseconde=0;//秒ucharminite=0;//分ucharhour=12;//时ucharmstcnt=0;//定时器计数,定时50ms,mstcnt满20,秒加1ucharshi=0;//闹铃功能ucharfen=0;ucharbjcs;//报警次数sbitP1_0=P1^0; //second调整定义sbitP1_1=P1^1; //minite调整定义sbitP1_2=P1^2; /
3、/hour调整定义sbitP1_5=P1^5; //整点报时sbitP1_3=P1^3; //闹铃功能,调整时间sbitP1_6=P1^6; //调整时sbitP1_7=P1^7; //调整分sbitP1_4=P1^4; //关闭闹铃/*函数声明*/voiddelay(uintk); //延时子程序voidtime_pro(); //时间处理子程序voiddisplay(); //显示子程序voidkeyscan(); //键盘扫描子程序/*延时子程序*/voiddelay(ui
4、ntk){ucharj;while((k--)!=0) { for(j=0;j<125;j++) {;} }} /*时间处理子程序*/voidtime_pro(void){ if(seconde==60) { seconde=0; minite++; if(minite==60) { minite=0; hour++; if(hour==24) { hour=0; } } }}/*显示子程序*/voiddisplay(void){ if(P1_3==1) { P2=0XFE; P0=dispcod
5、e[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=dispc
6、ode[hour%10];//时个位 delay(1); P2=0X7F; P0=dispcode[hour/10];//时十位 delay(1); }}/*键盘扫描子程序*/voidkeyscan(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) {
7、 minite++; if(minite==60) { minite=0; } } delay(250); } if(P1_2==0)//时位的调整 { delay(30); if(P1_2==0) { hour++; if(hour==24) { hour=0; } } delay(250); }}/*整点报警*/voidzhengdian(void) { if((seconde==0)&(minite==0))//整点报时 { P1_5=0; delay(1000);
8、 P1_5=1; } }/*定时闹钟*/voiddingshi(void){ if(P1_3==0) //按住P1_3B
此文档下载收益归作者所有