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

下載本文檔

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

文檔簡(jiǎn)介

1、#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitw1=P0A0;sbitw2=P0A1;sbitw3=P0A2;sbitw4=P0A3;/定義按鍵sbitk1=P0A4;sbitk2=P0A5;sbitk3=P0A6;sbitk4=P0A7;sbitfm=P3A4;ucharcodetable尸0x3f,0x06,0x5b,0x4f,0x66,0x6d,/時(shí)間校正函數(shù)/延遲函數(shù)鬧鐘設(shè)置函數(shù)鬧鐘檢測(cè)函數(shù)0x7d,0x07,0x7f,0x6f;voidtimetune();voiddelayms(ui

2、nt);voidkeyscan();voidkeyscan1();0-9十六進(jìn)制數(shù)共陰voiddisplay(uintanum,uintanum1,uintanum2,uintanum3);uint/顯示函數(shù)num0,num,num1,num2,num3,anum,anum1,anum2,anum3,temp,temp0,temp1,temp2,temp3,temp4,s,s1,s2,s3,s4;voidmain()TMOD=0x01;TH0=(65536-45872)/256;TL0=(65536-45872)/256;EA=1;ET0=1;TR0=1;while(1)/設(shè)置定時(shí)器0為工作方

3、式1(00000001)/裝初值50毫秒中斷一次開總中斷/開定日立器0終中斷/開定時(shí)器/中斷后進(jìn)入死循環(huán)時(shí)間永不停止計(jì)時(shí)timetune();keyscan();if(num0=20)num0=0;/調(diào)用時(shí)間設(shè)置函數(shù)調(diào)用鬧鐘設(shè)置函數(shù)num+;if(num=10)num1+;num=0;if(num1=6)num2+;num1=0;if(num2=10)和下面if必須分開,否則時(shí)間到24小時(shí)后不會(huì)清0繼續(xù)走下去num3+;num2=0;if(num3=2&&num2=4)當(dāng)時(shí)間走到24小時(shí)后自動(dòng)清0num3=0;num2=0;num=0;num1=0;if(temp0=1)/為了

4、防止鬧鐘時(shí)間顯示和正常時(shí)間顯示同時(shí)顯示出現(xiàn)數(shù)碼管顯示不清晰,所以display(s1,s2,s3,s4);寫兩個(gè)對(duì)立的if條件判斷語句(temp=1和temp!=1)來作為限制條件.if(temp0!=1)display(num,num1,num2,num3);/keyscan1();voiddisplay(uintanum,uintanum1,uintanum2,uintanum3)/時(shí)間顯示函數(shù)P2=tableanum3;w1=1;delayms;w1=0;P2=tableanum2;w2=1;delayms;w2=0;P2=tableanum1;w3=1;delayms;w3=0;P2=

5、tableanum;w4=1;delayms;w4=0;voidtimetune()/時(shí)間校正程序if(k4=0)當(dāng)每按下第四個(gè)鍵后會(huì)出現(xiàn)temp不同的值,然后用delayms(10);/不同的值作為不同的條件給四個(gè)數(shù)碼管加減值來校正時(shí)間if(k4=0)temp+;while(!k4);if(temp=1)if(k2=0)delayms(10);/按鍵時(shí)由于會(huì)產(chǎn)生機(jī)械振動(dòng),為了準(zhǔn)確檢測(cè)到按鍵if(k2=0)/按下所以要延時(shí)num+;if(num=10)num=0;while(!k2);)if(temp=2)(if(k2=0)(delayms(10);if(k2=0)(num1+;if(num1

6、=6)num1=0;while(!k2);)if(temp=3)(if(k2=0)(delayms(10);if(k2=0)(num2+;if(num2=10)num2=0;while(!k2);)if(temp=4)(if(k2=0)(delayms(10);if(k2=0)(num3+;if(num3=3)num3=0;while(!k2);if(num3=2&&num2>=4)前面由于num2可以加到十,但是num2最多只能是4,所以當(dāng)num3力口到2時(shí),num2只能最大為4,大于4后要清0num2=0;if(temp=5)temp=0;為了讓時(shí)間能夠反復(fù)校正,te

7、mp要100voidkeyscan1()/鬧鐘判斷程序if(s1=num&&s2=num1&&s3=num2&&s4=num3&&temp0=2)鬧鐘判斷條件temp0=0;當(dāng)鬧鐘判斷條件成立后,第一次鬧鐘響了后,為了能夠進(jìn)行第二次鬧鐘的設(shè)置,所以tempo要1#0fm=0;/蜂鳴器voidkeyscan()鬧鐘調(diào)整程序if(k3=0)delayms(10);if(k3=0)temp0+;while(!k3);/按鍵釋放if(k1=0)delayms(10);if(k1=0)s+;while(!k1);)if(s=1)(if(k2

8、=0)(delayms(10);if(k2=0)(s1+;if(s1=10)s1=0;while(!k2);)if(s=2)(if(k2=0)(delayms(10);if(k2=0)(s2+;if(s2=6)s2=0;while(!k2);)if(s=3)(if(k2=0)(delayms(10);if(k2=0)s3+;if(s3=10)s3=0;while(!k2);if(s=4)if(k2=0)delayms(10);if(k2=0)s4+;if(s4=3)s4=0;while(!k2);if(s4>=3&&s3>=5)/同時(shí)間調(diào)整程序一樣s3=0;if(s=5)s=0;voiddelayms(uintxms)uinti,j;for

溫馨提示

  • 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. 人人文庫(kù)網(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)論