1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 时钟加闹钟c语言程序 51单片机c语言电子钟(已加入调时 闹铃 整点报时功能)...

时钟加闹钟c语言程序 51单片机c语言电子钟(已加入调时 闹铃 整点报时功能)...

时间:2020-12-05 01:50:58

相关推荐

时钟加闹钟c语言程序 51单片机c语言电子钟(已加入调时 闹铃 整点报时功能)...

《51单片机c语言电子钟(已加入调时、闹铃、整点报时功能)》由会员分享,可在线阅读,更多相关《51单片机c语言电子钟(已加入调时、闹铃、整点报时功能)(13页珍藏版)》请在技术文库上搜索。

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

2、,0x40; /段码控制/*定义并初始化变量*/uchar seconde=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=。

3、P16; /调整时sbit P1_7=P17; /调整分sbit P1_4=P14; /关闭闹铃/*函数声明*/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)m。

4、inite=0;hour+;if(hour=24)hour=0;/*显示子程序*/void 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;/间。

5、隔符 -delay(1);P2=0XBF;P0=dispcodehour%10;/时个位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。

6、(30);if(P1_2=0)hour+;if(hour=24)hour=0;delay(250);/*整点报警*/void zhengdian (void)if(seconde=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=。

7、0XF7;P0=dispcodefen%10;/分个位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(fe。

8、n=60)fen=0;delay(250);if(hour=shi)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; /开启定时器 0while (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; /对计数单元的清零,重新开始计数 。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。