單片機(jī)鬧鐘程序_第1頁
單片機(jī)鬧鐘程序_第2頁
單片機(jī)鬧鐘程序_第3頁
單片機(jī)鬧鐘程序_第4頁
單片機(jī)鬧鐘程序_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

/*這里按鍵是左起第4個(gè)位修改時(shí)間和鬧鐘先是選擇修改時(shí)間在是修改鬧鐘第五個(gè)按鍵進(jìn)位按一下加一次,左起第三個(gè)是選擇是時(shí)鐘和秒表之間轉(zhuǎn)換。假如選擇是秒表在再按左起第二個(gè)是開始計(jì)時(shí)第四個(gè)是暫停。*/#include<reg51.h>#defineuchar unsignedcharsbit key1=P3^6; sbit key2=P3^7;sbit key3=P1^4;sbit key4=P1^5;sbit bell=P2^7;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar number[10][4];ucharaa,num=0,tt;uchar qie=1,bai=9,shi=5,ge=5,i,j,yi,er,san,si,mszhuan,one,two,three,four,mm,t3,t2,t1,k1,k2,k3,k4;void display(ucharqie,ucharbai,ucharshi,uchar ge);void delay(uchar k);void jingwei();void intter2();void intter3();void display1(uchar qie);void display2(uchar bai);void display3(uchar shi);void display4(uchar ge);void displays1(ucharqie,ucharbai,ucharshi,uchar ge);void displays2(ucharqie,ucharbai,ucharshi,uchar ge);void displays3(ucharqie,ucharbai,ucharshi,uchar ge);void displays4(ucharqie,ucharbai,ucharshi,uchar ge);void bells(ucharqie,ucharbai,ucharshi,uchar ge,ucharyi,ucharer,ucharsan,ucharsi,ucharmszhuan,uchartt);void mzhuan();void miaobiao();voidmain(){ //uncharaa; TMOD=0x01; EA=1; TR0=1; ET0=1;// ET1=1; aa=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256;// TH1=(65536-50000)/256;// TL1=(65536-50000)%256; while(1) { miaobiao(); mzhuan(); jingwei(); bells(qie,bai,shi,ge,yi,er,san,si,mszhuan,tt); if(mszhuan==0) //當(dāng)選擇時(shí)鐘時(shí)候才能做修改時(shí)鐘和鬧鐘 { intter2(); intter3(); switch(tt) { case 0: display(qie,bai,shi,ge); break; case 1: displays1(qie,bai,shi,ge); break; case 2: displays2(qie,bai,shi,ge); break; case 3: displays3(qie,bai,shi,ge); break; case 4: displays4(qie,bai,shi,ge); break; case 5: displays1(yi,er,san,si); break; case 6: displays2(yi,er,san,si); break; case 7: displays3(yi,er,san,si); break; case 8: displays4(yi,er,san,si); break; } } elseif(mszhuan==1) //下面是秒表 { if(t1==0) display(four,three,two,one); if(key3==0) { delay(10); if(key3==0) { t3++; if(t3==2) t3=0; } while(!key3); } if(key1==0) { delay(10); if(key1==0) { t2++; if(t2==6) t2=0; } while(!key1); } if(key2==0) { delay(10); if(key2==0) { t1++; if(t1==3) t1=0; } while(!key1); } if(t3==1) { four=0; three=0; two=0; one=0; t3=0; t1=0; t2=0; } if(t1==1) { k1=four; k2=three; k3=two; k4=one; t1=2; } if(t1==2) { display(k1,k2,k3,k4); four=k1; three=k2; two=k3; one=k4; } /* switch(t2) { case 1: { number[t2-1][0]=four; number[t2-1][1]=three; number[t2-1][2]=two; number[t2-1][3]=one; } break; case 2: { number[t2-1][0]=four; number[t2-1][1]=three; number[t2-1][2]=two; number[t2-1][3]=one; } break; case 3: { number[t2-1][0]=four; number[t2-1][1]=three; number[t2-1][2]=two; number[t2-1][3]=one; } break; case 4: { number[t2-1][0]=four; number[t2-1][1]=three; number[t2-1][2]=two; number[t2-1][3]=one; } break; case 5: { number[t2-1][0]=four; number[t2-1][1]=three; number[t2-1][2]=two; number[t2-1][3]=one; } break; } if(t1<t2) { switch(t1) { case 1: display(number[0][0],number[0][1],number[0][2],number[0][3]); break; case 2: display(number[1][0],number[1][1],number[1][2],number[1][3]); break; case 3: display(number[2][0],number[2][1],number[2][2],number[2][3]); break; case 4: display(number[3][0],number[3][1],number[3][2],number[3][3]); break; case 5: display(number[4][0],number[4][1],number[4][2],number[4][3]); break; } } else t1=0;*/ } } }void inter1() interrupt 1{ TH0=(65536-50000)/256; TL0=(65536-50000)%256; aa++; mm++;}/*void inter3() interrupt 3{ TH1=(65536-50000)/256; TL1=(65536-50000)%256; bb++; }*/void delay(uchar k){ for(j=0;j<100;j++) for(i=k;i>0;i--);} void display(ucharqie,ucharbai,ucharshi,uchar ge) //顯示函數(shù){ P1=0xf7; P0=table[qie]; delay(1); P1=0xfd; P0=table[bai]; delay(1); P1=0xfb; P0=table[shi]; delay(1); P1=0xfe; P0=table[ge]; delay(1);}void jingwei() //中止里面中止一次為50ms所以中止二十次為一秒鐘 { if(aa==20) { aa=0; ge++; if(ge==10) { ge=0; shi++; if(shi==6) { shi=0; bai++; if(bai==10&&qie!=2) { bai=0; qie++; } if(bai==4&&qie==2) { qie=0; bai=0; } } } }}void intter2() //當(dāng)按鍵左起第四個(gè)按下tt加一次{ if(key1==0) { delay(10); if(key1==0) { tt++; if(tt==9) tt=0; } while(!key1); } }void intter3() //按鍵左起第五個(gè)按下當(dāng)tt不一樣值時(shí)選擇修改值不一樣所以用switch來選擇1表示修改時(shí)鐘最高位依次到5表示選擇了鬧鐘修改{ if(key2==0) { delay(10); if(key2==0) { switch(tt) { case 1: { qie++; if(qie==3) qie=0; } break; case 2: { bai++; if(bai==10) bai=0; } break; case 3: { shi++; if(shi==7) shi=0; } break; case 4: { ge++; if(ge==10) ge=0; } break; case 5: { yi++; if(yi==3) yi=0; } break; case 6: { er++; if(er==10) er=0; } break; case 7: { san++; if(san==6) san=0; } break; case 8: { si++; if(si==10) si=0; } break; } } while(!key2); } }void displays1(ucharqie,ucharbai,ucharshi,uchar ge) //因?yàn)樵谛薷氖乱@示出修改哪個(gè)所以用了下面函數(shù){ P1=0xf7; //認(rèn)為數(shù)碼管第一個(gè)延遲時(shí)間長(zhǎng)所以第一個(gè)比后面三個(gè)要亮一點(diǎn) P0=table[qie]; //下面函數(shù)同理 delay(20); P1=0xfd; P0=table[bai]; delay(1); P1=0xfb; P0=table[shi]; delay(1); P1=0xfe; P0=table[ge]; delay(1);}void displays2(ucharqie,ucharbai,ucharshi,uchar ge){ P1=0xf7; P0=table[qie]; delay(1); P1=0xfd; P0=table[bai]; delay(20); P1=0xfb; P0=table[shi]; delay(1); P1=0xfe; P0=table[ge]; delay(1);}void displays3(ucharqie,ucharbai,ucharshi,uchar ge){ P1=0xf7; P0=table[qie]; delay(1); P1=0xfd; P0=table[bai]; delay(1); P1=0xfb; P0=table[shi]; delay(20); P1=0xfe; P0=table[ge]; delay(1);}void displays4(ucharqie,ucharbai,ucharshi,uchar ge){ P1=0xf7; P0=table[qie]; delay(1); P1=0xfd; P0=table[bai]; delay(1); P1=0xfb; P0=table[shi]; delay(1); P1=0xfe; P0=table[ge]; delay(20);}void bells(ucharqie,ucharb

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論