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

下載本文檔

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

文檔簡(jiǎn)介

1、.#include#define uchar unsigned char#define uint unsigned intsbit w1=P00;sbit w2=P01;sbit w3=P02;sbit w4=P03;sbit k1=P04; /定義按鍵sbit k2=P05;sbit k3=P06;sbit k4=P07;sbit fm=P34;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /0-9十六進(jìn)制數(shù)共陰void timetune(); /時(shí)間校正函數(shù) void delayms(uint); /

2、延遲函數(shù)void keyscan(); /鬧鐘設(shè)置函數(shù)void keyscan1(); /鬧鐘檢測(cè)函數(shù) void display(uint anum,uint anum1,uint anum2,uint anum3); /顯示函數(shù)uint num0,num,num1,num2,num3,anum,anum1,anum2,anum3,temp,temp0,temp1,temp2,temp3,temp4,s,s1,s2,s3,s4;void main()TMOD=0x01; /設(shè)置定時(shí)器0為工作方式1(0000 0001)TH0=(65536-45872)/256; /裝初值50毫秒中斷一次TL0

3、=(65536-45872)/256;EA=1; /開(kāi)總中斷ET0=1; /開(kāi)定時(shí)器0終中斷TR0=1; / 開(kāi)定時(shí)器 while(1) /中斷后進(jìn)入死循環(huán)時(shí)間永不停止計(jì)時(shí) timetune(); / 調(diào)用時(shí)間設(shè)置函數(shù)keyscan(); /調(diào)用鬧鐘設(shè)置函數(shù) if(num0=20) num0=0;num+;if(num=10)num1+;num=0;if(num1=6)num2+;num1=0;if(num2=10) /和下面if必須分開(kāi),否則時(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

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

5、=1; delayms(1); w2=0; P2=tableanum1; w3=1; delayms(1); w3=0; P2=tableanum; w4=1; delayms(1); w4=0;void timetune() /時(shí)間校正程序if(k4=0) /當(dāng)每按下第四個(gè)鍵后會(huì)出現(xiàn)temp不同的值,然后用delayms(10); /不同的值作為不同的條件給四個(gè)數(shù)碼管加減值來(lái)校正時(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

6、(num=10)num=0;while(!k2); if(temp=2)if(k2=0) delayms(10);if(k2=0)num1+;if(num1=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,所以

7、/當(dāng)num3加到2時(shí),num2只能最大為4,大于4后要清0num2=0;if(temp=5)temp=0; /為了讓時(shí)間能夠反復(fù)校正,temp要清0void keyscan1() /鬧鐘判斷程序if(s1=num&s2=num1&s3=num2&s4=num3&temp0=2) /鬧鐘判斷條件temp0=0; /當(dāng)鬧鐘判斷條件成立后,第一次鬧鐘響了后,為了能夠進(jìn)行第二次鬧鐘的設(shè)置,所以temp0要清0fm=0; /蜂鳴器void keyscan() /鬧鐘調(diào)整程序 if(k3=0)delayms(10);if(k3=0)temp0+; while(!k3); /按鍵釋放if(k1=0)dela

8、yms(10);if(k1=0)s+; while(!k1);if(s=1)if(k2=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;void delayms(uint xms)uint i,j;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論