數(shù)字電子時鐘程序與仿真_第1頁
數(shù)字電子時鐘程序與仿真_第2頁
數(shù)字電子時鐘程序與仿真_第3頁
數(shù)字電子時鐘程序與仿真_第4頁
數(shù)字電子時鐘程序與仿真_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

數(shù)字電子時鐘程序【鬧鈴(持續(xù)5s),整點(diǎn)報(bào)時(幾點(diǎn)報(bào)幾下,每兩下之間隔間2s,每聲持續(xù)2s)】程序:#include<reg51.h>#include<absacc.h>#defineucharunsignedchar#defineuintunsignedint〃此表為LED的字模,共陰數(shù)碼管0-9-ucharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};〃段碼控制/*定義并初始化變量*/sbitkey1=P3A0;sbitkey2=P3A1;sbitkey3=P3A2;sbitkey4=P3A3;sbitbuzz=P1A3;ucharmstcnt=0;〃定時器計(jì)數(shù),定時50ms,mstcnt滿20,秒加1ucharseconde1=0;ucharbjcs;ucharminite1=0;ucharhour1=7;ucharseconde2=0;ucharminite2=0;ucharhour2=8;uchartemp1=0;uchartemp2=0;ucharcount1,flag,temp;/*函數(shù)聲明*/voiddelay(uintz);//延時子程序voidtime_pro();〃時間處理子程序voiddisplay(ucharhour,ucharminite,ucharseconde);濕示子程序voidkeyscan();//鍵盤掃描子程序voidzhengdian();voiddinshi();voiddelay(uintz){uintx,y;for(x=0;x<z;x++)for(y=0;y<110;y++);voidtime_pro(void) /*時間處理子程序*/(if(seconde1==60)(seconde1=0;minite1++;if(minite1==60)(minite1=0;hour1++;if(hour1==24)hour1=0;} _voiddisplay(ucharhour,ucharminite,ucharseconde)/*顯示子程序*/(ucharh1,h2,m1,m2,s1,s2;s2=seconde/10;s1=seconde%10;m2=minite/10;m1=minite%10;h2=hour/10;h1=hour%10;P2=0XFE;〃11111110if(temp1==1) //功能選項(xiàng),通過點(diǎn)提醒來調(diào)節(jié)相應(yīng)位的時間P0=dispcode[s1]|0x80;//點(diǎn)提醒elseP0=dispcode[s1];//秒個位delay(1);P2=0XFD;//11111101P0=dispcode[s2];//秒十位delay(1);P2=0XFB;//11111011P0=dispcode[10];〃間隔符-delay(1);P2=0XF7;〃11110111if(temp1==2)//P0=dispcode[m1]|0x80;elseP0=dispcode[m1];〃分個位delay(1);P2=0XEF;//11101111P0=dispcode[m2];//^+fedelay(1);P2=0XDF; 〃11011111P0=dispcode[10];〃間隔符-delay(1);P2=0XBF;//10111111if(temp1==3)P0=dispcode[h1]|0x80;//時個位elseP0=dispcode[h1];delay(1);P2=0X7F; //01111111P0=dispcode[h2];//時十位delay(1);voidkeyscan(void)/*鍵盤掃描子程序*/(if(key1==0)(delay(10);if(key1==0)//TR0=0;temp1++;if(temp1==4){temp1=0;TR0=1;)while(!key1)switch(temp2){case0:display(hour1,minite1,seconde1);break;case1:display(hour2,minite2,seconde2);break;if(key2==0){delay(10);if(key2==0)if(temp2==0)〃鬧鐘選擇 鍵{//TR0=0;switch(templ){case1:seconde1++;if(seconde1==60)seconde1=0;break;case2:minite1++;if(minite1==60)minite1=0;break;case3:hour1++;if(hour1==24)hour1=0;break;}while(!key2)display(hour1,minite1,seconde1);}if(temp2==1){ TR0=1;switch(temp1){case1:seconde2++;if(seconde2==60)seconde2=0;break;case2:minite2++;if(minite2==60)minite2=0;break;case3:hour2++;if(hour2==24)hour2=0;break;}while(!key2)display(hour2,minite2,seconde2);}}}if(key3==0){delay(10);if(key3==0){if(temp2==0){ //TR0=0;switch(temp1){case1:if(seconde1==0)seconde1=60;seconde1--;break;case2:if(minite1==0)minite1=60;minite1--;break;case3:if(hour1==0)hour1=24;hour1--;break;}while(!key3)display(hour1,minite1,seconde1);}if(temp2==1){ TR0=1;switch(templ){case1:if(seconde2==0)seconde2=60;seconde2--;break;case2:if(minite2==0)minite2=60;minite2--;break;case3:if(hour2==0)hour2=24;hour2--;break;}while(!key3)display(hour2,minite2,seconde2);}}}if(key4==0){delay(10);if(key4==0){temp1=0;temp2++;if(temp2==2)temp2=0;while(!key4)switch(temp2){case0:display(hour1,minite1,seconde1);break;case1:display(hour2,minite2,seconde2);break;}}}switch(temp2){case0:display(hour1,minite1,seconde1);break;case1:display(hour2,minite2,seconde2);break;}}voiddinshi() /*定時鬧鐘*/{uinti;if(hour1==hour2&&minite1==minite2&&(seconde1>=seconde2&&seconde1<seconde2+5)){for(i=0;i<200;i++){buzz=1;)buzz=0;}/*整點(diǎn)報(bào)警/*整點(diǎn)報(bào)警*//*voidzhengdian(void){uintk;if((seconde1==0)&&(minite1==0)){for(bjcs=0;bjcs<hour1;bjcs++){for(k=0;k<150;k++){buzz=0;delay(20);}buzz=1;delay(20);}}} */voidzhengdian(void){if(seconde1==0&&minite1==0){temp=hour1;flag=1; //標(biāo)記buzz=1;}}/*主函數(shù)*/voidmain(void){TMOD=0x11;〃time0為定時器,方式1TH0=0x3c;〃預(yù)置計(jì)數(shù)初值,50msTL0=0xb0;TH1=(65535-50000)/256;TL1=(65535-50000)%256;EA=1; 〃總中斷開ET0=1;〃允許定時器0中斷TR0=1;ET1=1;TR1=1;buzz=0; 〃開啟定時器0while(1)(keyscan(); 〃按鍵掃描dinshi(); 〃定時鬧鐘〃zhengdian(); 〃整點(diǎn)報(bào)時switch(temp2)〃顯示時間{case0:display(hour1,minite1,seconde1);break;case1:display(hour2,minite2,seconde2);break;}}voidtimer0(void)interrupt1〃定時器0方式1,50ms中斷一次{TH0=0x3c; 〃手動加載計(jì)數(shù)脈沖次數(shù)TL0=0xb0;//TMOD=0x11;mstcnt++;zhengdian();〃用于計(jì)算時間,每隔50ms加1if(mstcnt==20) //mstcnt滿20即為一秒{seconde1++; //秒+1time_pro();//時間處理mstcnt=0; 〃對計(jì)數(shù)單元的清零

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論