资源描述:
《51开发板简易闹钟程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、简易可调时可定时闹钟说明: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)控制的,段选通过
2、P0(共阴)控制的,蜂鸣器是无源蜂鸣器,通过P1.5控制。程序源代码:#include#defineuintunsignedint#defineucharunsignedcharvoidWEI(uinta);//位选函数voidclock();//时钟函数voiddelay1ms(uint);//1ms延时函数voidtimermod();//定时器中断初始化voidIntmod();//外部中断初始化voidKeyDown();//矩阵键盘检测函数voidclock_stop();//时钟停止函数voidling_sheng();//铃
3、声函数sbitbeep=P1^5;ucharcodeDUAN[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0~f段选sbitLED1=P2^2;sbitLED2=P2^3;sbitLED3=P2^4;sbitk1=P3^1;sbitk2=P3^0;sbitk3=P3^2;sbitk4=P3^3;ucharshi,fen,miao,miao1,fen1,shi1,m,key,p1,keystate;uintD1,D2,D3,D4,D
4、5,D6,i,j,tsmark;voidmain(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)//调时标志,检测是否调时的十位,下面以此类推{Key
5、Down();if(keystate==1){if(key>2)key=2;D6=key;keystate=0;}}if(tsmark==2){KeyDown();if(keystate==1){if(key>4)key=4;D5=key;keystate=0;}}if(tsmark==3){KeyDown();if(keystate==1){if(key>5)key=5;D4=key;keystate=0;}}if(tsmark==4){KeyDown();if(keystate==1){if(key>9)key=9;D3=key;keystate=0;
6、}}if(tsmark==5){KeyDown();if(keystate==1){if(key>5)key=5;D2=key;keystate=0;}}if(tsmark==6){KeyDown();if(keystate==1){if(key>9)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
7、(fen==60)fen=0;}if(key==2){key=4;miao++;if(miao==60)miao=0;}}}}voidWEI(uinta){switch(a){case0:LED1=0;LED2=0;LED3=0;break;case1:LED1=1;LED2=0;LED3=0;break;case2:LED1=0;LED2=1;LED3=0;break;case3:LED1=1;LED2=1;LED3=0;break;case4:LED1=0;LED2=0;LED3=1;break;case5:LED1=1;LED2=0;LED3=1;b
8、reak;case6:LED1=0;LED2=1;LED3=1;b