51单片机c语言电子钟.doc

上传人:桔**** 文档编号:551699776 上传时间:2023-04-28 格式:DOC 页数:7 大小:160.01KB
返回 下载 相关 举报
51单片机c语言电子钟.doc_第1页
第1页 / 共7页
51单片机c语言电子钟.doc_第2页
第2页 / 共7页
51单片机c语言电子钟.doc_第3页
第3页 / 共7页
51单片机c语言电子钟.doc_第4页
第4页 / 共7页
51单片机c语言电子钟.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《51单片机c语言电子钟.doc》由会员分享,可在线阅读,更多相关《51单片机c语言电子钟.doc(7页珍藏版)》请在金锄头文库上搜索。

1、51单片机c语言电子钟(已加入调时、闹铃、整点报时功能)效果图:程序如下:/51单片机c语言电子钟(已加入调时、闹铃、整点报时功能)/WHJWNAVY 2011/10/14#include#include#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 secon

2、de=0;/秒uchar minite=0;/分uchar hour=12; /时uchar mstcnt=0;/定时器计数,定时50ms,mstcnt满20,秒加1uchar shi=0;/闹铃功能uchar fen=0;uchar bjcs;/报警次数sbit P1_0=P10; /second 调整定义sbit P1_1=P11; /minite调整定义sbit P1_2=P12; /hour调整定义sbit P1_5=P15;/整点报时sbit P1_3=P13;/闹铃功能,调整时间sbit P1_6=P16;/调整时sbit P1_7=P17;/调整分sbit P1_4=P14;/关

3、闭闹铃/*函数声明*/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;/*显示子程序*/vo

4、id display(void)if(P1_3=1)P2=0XFE;P0=dispcodeseconde%10;/秒个位delay(1);P2=0XFD;P0=dispcodeseconde/10;/秒十位delay(1);P2=0XFB;P0=dispcode10;/间隔符 -delay(1);P2=0XF7;P0=dispcodeminite%10;/分个位delay(1);P2=0XEF;P0=dispcodeminite/10;/分十位delay(1);P2=0XDF;P0=dispcode10;/间隔符 -delay(1);P2=0XBF;P0=dispcodehour%10;/时个

5、位delay(1);P2=0X7F;P0=dispcodehour/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;dela

6、y(250);/*整点报警*/void zhengdian (void)if(seconde=0)&(minite=0)/整点报时P1_5=0;delay(1000);P1_5=1;/*定时闹钟*/void dingshi(void)if(P1_3=0) /按住P1_3BU不松,显示闹铃设置界面,分别按P1_6、P1_7设置闹铃时间。P2=0XFE;P0=dispcode0;/秒个位delay(1);P2=0XFD;P0=dispcode0;/秒十位delay(1);P2=0XFB;P0=dispcode10;/间隔符 -delay(1);P2=0XF7;P0=dispcodefen%10;/

7、分个位delay(1);P2=0XEF;P0=dispcodefen/10;/分十位delay(1);P2=0XDF;P0=dispcode10;/间隔符 -delay(1);P2=0XBF;P0=dispcodeshi%10;/时个位delay(1);P2=0X7F;P0=dispcodeshi/10;/时十位delay(1);if(P1_6=0)/设定时delay(30);if(P1_6=0)shi+;if(shi=24)shi=0;delay(250);if(P1_7=0)/设定分delay(30);if(P1_7=0)fen+;if(fen=60)fen=0;delay(250);if

8、(hour=shi)&(minite=fen)&(seconde=0)/闹铃时间到,报警十次。for(bjcs=0;bjcs10;bjcs+)P1_5=0;delay(500);P1_5=1;delay(500);/*主函数*/void main(void)P1=0XFF;TMOD = 0x11; /time0为定时器,方式1TH0=0x3c; /预置计数初值,50msTL0=0xb0;EA=1; /总中断开ET0=1; /允许定时器0中断TR0=1; /开启定时器0 while (1) keyscan(); /按键扫描dingshi();/定时闹钟zhengdian();/整点报时display(); /显示时间void timer0(void) interrupt 1 /定时器0方式1,50ms中断一次 TH0=0x3c; /手动加载计数脉冲次数TL0=0xb0;TMOD=0x11;mstcnt+; /用于计算时间,每隔50ms加1if(mstcnt=20)/mstcnt满20即为一秒seconde+;/秒+1time_pro( ); /时间处理mstcnt=0; /对计数单元的清零,重新开始计数

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号