資源描述:
《51開發(fā)板簡易鬧鐘程序》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、簡易可調時可定時鬧鐘說明:1:功能:這是一個利用51開發(fā)板制作的簡易的可調時可定時鬧鐘,功能是在數(shù)碼管上顯示時鐘,在時鐘模式下,按矩陣鍵盤的0,1,2可以分別使時,分,秒自加,完成調時功能,按k3鍵(P3.2,它是一個外部中斷)時鐘停止走動,進入鬧鐘定時功能,然后按k1(P3.1)鍵可以循環(huán)選中數(shù)碼管顯示時鐘的6個位,在選中狀態(tài)時,按矩陣鍵盤的9個鍵進行鬧鐘的定時,定時完成后,再按k4(P3.3,它是另一個外部中斷)鍵回到時鐘,當時鐘走到設定的時間后,蜂鳴器會響,時鐘繼續(xù)走。2:數(shù)碼管的位選是通過3-8譯碼器(P2.2,P2.3,P2.4)控制的,段選通過
2、P0(共陰)控制的,蜂鳴器是無源蜂鳴器,通過P1.5控制。程序源代碼:#include#defineuintunsignedint#defineucharunsignedcharvoidWEI(uinta);//位選函數(shù)voidclock();//時鐘函數(shù)voiddelay1ms(uint);//1ms延時函數(shù)voidtimermod();//定時器中斷初始化voidIntmod();//外部中斷初始化voidKeyDown();//矩陣鍵盤檢測函數(shù)voidclock_stop();//時鐘停止函數(shù)voidling_sheng();//鈴
3、聲函數(shù)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