51开发板简易闹钟程序.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
51开发板简易闹钟程序

简易可调时可定时闹钟说明:1:功能:这是一个利用51开发板制作的简易的可调时可定时闹钟,功能是在数码管上显示时钟,在时钟模式下,按矩阵键盘的0,1,2可以分别使时,分,秒自加,完成调时功能,按k3键(P3.2,它是一个外部中断)时钟停止走动,进入闹钟定时功能,然后按k1(P3.1)键可以循环选中数码管显示时钟的6个位,在选中状态时,按矩阵键盘的9个键进行闹钟的定时,定时完成后,再按k4(P3.3,它是另一个外部中断)键回到时钟,当时钟走到设定的时间后,蜂鸣器会响,时钟继续走。2:数码管的位选是通过3-8译码器(P2.2,P2.3,P2.4)控制的,段选通过P0(共阴)控制的,蜂鸣器是无源蜂鸣器,通过P1.5控制。程序源代码:#includereg52.h#define uint unsigned int#define uchar unsigned charvoid WEI(uint a);//位选函数void clock();//时钟函数void delay1ms(uint);//1ms延时函数void timermod();//定时器中断初始化void Intmod();//外部中断初始化void KeyDown();//矩阵键盘检测函数void clock_stop();//时钟停止函数void ling_sheng();//铃声函数sbit beep=P1^5;uchar code DUAN[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0~f段选sbit LED1=P2^2; sbit LED2=P2^3; sbit LED3=P2^4;sbit k1=P3^1;sbit k2=P3^0;sbit k3=P3^2;sbit k4=P3^3;uchar shi,fen,miao,miao1,fen1,shi1,m,key,p1,keystate;uint D1,D2,D3,D4,D5,D6,i,j,tsmark; void main(void){miao1=9;fen1=9;shi1=9;key=4;p1=1;timermod();Intmod(); while(1){if(p1==0)//检测是否进入闹钟定时模式{clock_stop();if(k1==0)//选择要定时的位(一共六个){delay1ms(10);if(k1==0){keystate=0;tsmark++;if(tsmark==7)tsmark=1;}while(k1==0);//松手检测}if(tsmark==1)//调时标志,检测是否调时的十位,下面以此类推{KeyDown(); if(keystate==1){ if(key2)key=2;D6=key;keystate=0;}}if(tsmark==2){KeyDown(); if(keystate==1){ if(key4)key=4;D5=key;keystate=0;}}if(tsmark==3){KeyDown(); if(keystate==1){ if(key5)key=5;D4=key;keystate=0;}}if(tsmark==4){KeyDown(); if(keystate==1){ if(key9)key=9;D3=key;keystate=0;}}if(tsmark==5){KeyDown(); if(keystate==1){ if(key5)key=5;D2=key;keystate=0;}}if(tsmark==6){KeyDown(); if(keystate==1){ if(key9)key=9;D1=key;keystate=0;}}}if(p1==1)//检测是否进入时钟模式{clock();KeyDown();if(key==0)//按矩阵键盘的0进行时的调时,下面以此类推{key=4;shi++;if(shi==24)shi=0;}if(key==1){key=4;fen++;if(fen==60)fen=0;}if(key==2){key=4;miao++;if(miao==60)miao=0;}}}}void WEI(uint a){switch(a){case 0:LED1=0;LED2=0;LED3=0;break;case 1:LED1=1;LED2=0;LED3=0;break;case 2:LED1=0;LED2=1;LED3=0;break;case 3:LED1=1;LED2=1;LED3=0;break;case 4:LED1=0;LED2=0;LED3=1;break;case 5:LED1=1;LED2

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档