第一篇:51單片機c語言電子鐘(已加入調時、鬧鈴、整點報時功能)
51單片機c語言電子鐘(已加入調時、鬧鈴、整點報時功能)
效果圖:
程序如下:
//51單片機c語言電子鐘(已加入調時、鬧鈴、整點報時功能)
//WHJWNAVY 2011/10/14
#include
P2=0XDF;P0=dispcode[10];//間隔符-delay(1);
P2=0XBF;
P0=dispcode[shi%10];//時個位 delay(1);P2=0X7F;P0=dispcode[shi/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((hour==shi)&(minite==fen)&(seconde==0))//鬧鈴時間到,報警十次。{ for(bjcs=0;bjcs<10;bjcs++){ P1_5=0;delay(500);P1_5=1;delay(500);} } }
/*主函數*/ void main(void){ P1=0XFF;TMOD = 0x11;//time0為定時器,方式1 TH0=0x3c;//預置計數初值,50ms TL0=0xb0;EA=1;//總中斷開
ET0=1;//允許定時器0中斷 TR0=1;//開啟定時器0 while(1){ keyscan();//按鍵掃描 dingshi();//定時鬧鐘 zhengdian();//整點報時 display();//顯示時間 } }
void timer0(void)interrupt 1 //定時器0方式1,中斷一次 { TH0=0x3c;//手動加載計數脈沖次數
50ms
TL0=0xb0;TMOD=0x11;mstcnt++;//用于計算時間,每隔50ms加1 if(mstcnt==20)//mstcnt滿20即為一秒 { seconde++;//秒+1 time_pro();//時間處理
mstcnt=0;//對計數單元的清零,重新開始計數 } }