多功能數(shù)字鐘的設(shè)計(jì)報(bào)告_第1頁
多功能數(shù)字鐘的設(shè)計(jì)報(bào)告_第2頁
多功能數(shù)字鐘的設(shè)計(jì)報(bào)告_第3頁
多功能數(shù)字鐘的設(shè)計(jì)報(bào)告_第4頁
多功能數(shù)字鐘的設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

多功能數(shù)字鐘的設(shè)計(jì)報(bào)告一、設(shè)計(jì)內(nèi)容內(nèi)容:用單片機(jī)控制實(shí)現(xiàn)基本數(shù)字電子鐘的設(shè)計(jì),擴(kuò)展了4X4鍵盤和4位LED數(shù)碼顯示器,可用于顯示和按鍵控制。功能:能夠顯示時(shí)和分;可通過按鍵設(shè)置鬧鐘功能;可進(jìn)行整點(diǎn)報(bào)時(shí);可通過按鍵設(shè)置分校時(shí)。二、總體方案設(shè)計(jì)2.1功能分析數(shù)字電子鐘系統(tǒng)可以分為主控制單元、復(fù)位電路、鍵盤電路、顯示電路等。2.2各模塊功能說明晶振電路的功能:每個(gè)單片機(jī)系統(tǒng)里都有晶振,全程是叫晶體震蕩器,在單片機(jī)系統(tǒng)里晶振的作用非常大,他結(jié)合單片機(jī)內(nèi)部的電路,產(chǎn)生單片機(jī)所必須的時(shí)鐘頻率,單片機(jī)的一切指令的執(zhí)行都是建立在這個(gè)基礎(chǔ)上的,晶振的提供的時(shí)鐘頻率越高,那單片機(jī)的運(yùn)行速度也就越快。晶振用一種能把電能和機(jī)械能相互轉(zhuǎn)化的晶體在共振的狀態(tài)下工作,以提供穩(wěn)定,精確的單頻振蕩。復(fù)位電路的功能:把電路初始化到一個(gè)確定的狀態(tài),一般來說,單片機(jī)復(fù)位電路作用是把一個(gè)例如狀態(tài)機(jī)初始化到空狀態(tài),而在單片機(jī)內(nèi)部,復(fù)位的時(shí)候單片機(jī)是把一些寄存器以及存儲(chǔ)設(shè)備裝入廠商預(yù)設(shè)的一個(gè)值。鍵盤電路:根據(jù)4×4矩陣鍵盤,它是用四條I/O線作為行線,四條I/O線作為列線組成的鍵盤。在行線和列線的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這樣鍵盤上按鍵的個(gè)數(shù)就為4×4個(gè)。這種行列式鍵盤結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中I/O口的利用率。實(shí)現(xiàn)按鍵控制鬧鐘,設(shè)置時(shí)間的功能。顯示電路的功能:采用4位共陰極數(shù)碼管驅(qū)動(dòng)方式P2口相應(yīng)的位置0

即選擇要顯示的數(shù)碼管位,P0口相應(yīng)的位置1即可顯示相應(yīng)的數(shù)碼管段。負(fù)責(zé)顯示時(shí)鐘的時(shí)和分。三、硬件系統(tǒng)設(shè)計(jì)使用了Produce軟件進(jìn)行硬件原理圖的仿真設(shè)計(jì)。部分電路如圖所示:a.主控電路:80C51單片機(jī)b.晶振電路:89C51單片機(jī)內(nèi)部的振蕩電路是一個(gè)高增益反相放大器,引線XTAL1和XTAL2分別為反相振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入和來自反相振蕩器的輸出,該反相放大器可以配置為片內(nèi)振蕩器。c.復(fù)位電路:采用上電復(fù)位,上電后,由于電容充電,使RST持續(xù)一段時(shí)間的高電平,從而實(shí)現(xiàn)上電復(fù)位操作。這不僅能使單片機(jī)復(fù)位,還能是單片機(jī)的外圍設(shè)備同時(shí)復(fù)位,當(dāng)程序出現(xiàn)錯(cuò)誤時(shí),可以隨時(shí)使電路復(fù)位。d.鍵盤電路:當(dāng)按鍵被按下時(shí),相應(yīng)的引腳被拉低,經(jīng)掃描后,獲得鍵值,并執(zhí)行鍵功能程序,因此通過按下同一個(gè)鍵,將執(zhí)行不同的功能程序。e.顯示電路:主要是數(shù)碼管顯示數(shù)字電子鐘的時(shí)和分。四、軟件系統(tǒng)設(shè)計(jì)4.1程序總體流程圖主函數(shù)的流程框圖:先進(jìn)行初始化設(shè)定初值,然后相關(guān)子程序的調(diào)用4.2主要模塊程序流程1.調(diào)用中斷服務(wù)子程序,循環(huán)次數(shù)++,因?yàn)槎〞r(shí)時(shí)長為50ms,所以循環(huán)次數(shù)為20時(shí),循環(huán)次數(shù)清0,秒++;秒為60時(shí)分加++,秒清0;分為60時(shí),時(shí)++,分清0;時(shí)為24時(shí),時(shí)清0,中斷返回。2.先確認(rèn)彈簧消抖是否有鍵按下,之后判斷掃描按鍵,不同的按鍵觸發(fā)不同功能。五、源代碼部分代碼展示:#include<reg51.h>#definetl0xba;

//宏定義tl賦初值#defineth0x3c;

//宏定義th賦初值sbitspeaker=P3^5;

//鬧鐘輸出

蜂鳴器unsignedcharcodeled[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//數(shù)碼管顯示的數(shù)字0-9的編碼unsignedcharcount0,second,minit,hour;

//時(shí)間時(shí)分秒unsignedintsecond1,minit1,hour1;//鬧鐘時(shí)分秒//timenum1是調(diào)節(jié)時(shí)間的按鍵按下的次數(shù)//timenum2是調(diào)節(jié)鬧鐘的按鍵按下的次數(shù)//f1是否在設(shè)置鬧鐘//f2是否在設(shè)置時(shí)間unsignedchartimenum1,timenum2,f1,f2;unsignedintdsflg;unsignedchartemp;//延時(shí)子程序

代碼燒路軟件自動(dòng)生成的voiddelay(void){unsignedinti;for(i=0;i<100;i++);}//50ms//數(shù)碼管顯示voiddisplay(void){P0=led[hour/10];//p0口送數(shù)據(jù)拆數(shù)顯示,時(shí)的十位P2=0xFE;

//片選

P2.0delay();

//延時(shí)P2=0xFF;

//片選關(guān)P0=led[hour%10];

//p0口送數(shù)據(jù)拆數(shù)顯示,時(shí)的個(gè)位P2=0xFD;

//P2.1delay();P2=0xFF;P0=led[minit/10];

//p0口送數(shù)據(jù)拆數(shù)顯示,分的十位P2=0xFB;

//P2.2delay();P2=0xFF;P0=led[minit%10];

//p0口送數(shù)據(jù)拆數(shù)顯示,分的個(gè)位P2=0xF7;

//P2.3delay();P2=0xFF;}//掃描按鍵voidkeyscan(){unsignedchartemp;P1=0xfe;

//給P1.0賦低電平temp=P1;temp=temp&0xf0;

//判斷P1.0那一列是否有鍵按下if(temp!=0xf0)//確定有鍵按下的時(shí)候{delay1(10);

//延時(shí)子程序進(jìn)行消抖temp=P1;temp=temp&0xf0;//再次判斷p1.0那一列是否有鍵按下if(temp!=0xf0)

//確定有鍵按下{temp=P1;

//將P1的值給tempswitch(temp){case0xee:

//p1.4口timenum1++;

//標(biāo)記++TR1=0;

//不啟動(dòng)T1,關(guān)閉蜂鳴器f2=0;

//進(jìn)入調(diào)時(shí)間的狀態(tài)if(timenum1==1||timenum2==1)

//如果timenum1==1調(diào)時(shí){dsflg=0;

//正在調(diào)時(shí)間}if(timenum1==3)

如果timenum1==4退出{TR1=1;

//啟動(dòng)T1timenum1=0;

//將按鍵次數(shù)歸零dsflg=1;

//退出調(diào)時(shí)間f2=1;

//退出調(diào)節(jié)時(shí)間}break;case0xde:

//p1.5口//調(diào)時(shí)間if(timenum1==1)

//如果timenum1==1調(diào)時(shí){hour++;

//小時(shí)++}if(timenum1==2)

//如果timenum1==2調(diào)分{minit++;}//調(diào)鬧鐘if(timenum2==1)

//如果timenum2==1調(diào)時(shí)

鬧鐘{hour1++;

//小時(shí)++}if(timenum2==2)

//如果timenum2==2調(diào)分

鬧鐘{minit1++;}break;case0xbe:

//p1.6口speaker=1;

//蜂鳴器處于不響狀態(tài)在設(shè)置時(shí)間的時(shí)候if(timenum1==1)

//如果timenum1==1調(diào)時(shí){hour--;

//小時(shí)--}if(timenum1==2)

//如果timenum1==2調(diào)分{minit--;

//分鐘--}//調(diào)鬧鐘if(timenum2==1)

//如果timenum2==1調(diào)時(shí)

鬧鐘{hour1--;

//小時(shí)--}if(timenum2==2)

//如果timenum2==2調(diào)分

鬧鐘{minit1--;}break;case0x7e://p1.7timenum2++;

//標(biāo)記++f1=0;

//進(jìn)入設(shè)置鬧鐘if(timenum2==1||timenum2==2)

//如果timenum2=1設(shè)定腦鐘的小時(shí){dsflg=0;

//正在調(diào)時(shí)間}if(timenum2==3)

//如果timenum2=3退出{timenum2=0;

//將按鍵次數(shù)歸零dsflg=1;

//退出調(diào)時(shí)間f1=1;

//退出設(shè)置鬧鐘}break;}while(temp!=0xf0)

//判斷按鍵是否彈起{temp=P1;temp=temp&0xf0;}}}}//按鍵控制時(shí)間設(shè)置voidKeykonzhi(){if(timenum1==1)

//如果timenum1==1調(diào)時(shí){if(hour>23)

//限位{hour=0;}P0=led[hour/10];

//顯示小時(shí)P2=0xFE;

//小時(shí)十位p2.0delay();P2=0xFF;P0=led[hour%10];//顯示小時(shí)P2=0xFD;

//小時(shí)個(gè)位

p2.1delay();P2=0xFF;}if(timenum1==2)

如果timenum1==2調(diào)分

//以下也是和調(diào)時(shí)一樣的方法{if(minit>59){minit=0;}P0=led[minit/10];P2=0xFB;

//分鐘十位

p2.2delay();P2=0xFF;P0=led[minit%10];P2=0xF7;

//分鐘個(gè)位

p2.3delay();P2=0xFF;}}//設(shè)置鬧鐘voidalmset(){timenum1=0;if(timenum2==1)

//如果timenum2==1設(shè)定鬧鐘的小時(shí){if(hour1>23)

//限位{hour1=0;}P0=led[hour1/10];//小時(shí)顯示

十位P2=0xFE;//p2.0delay();P2=0xFF;P0=led[hour1%10];P2=0xFD;//p2.1

小時(shí)個(gè)位顯示delay();P2=0xFF;}if(timenum2==2)

//如果timenum2==2設(shè)定鬧鐘的分鐘

和上面小時(shí)一樣{if(minit1>59){minit1=0;}P0=led[minit1/10];//顯示分鐘十位P2=0xFB;//

p2.2delay();P2=0xFF;P0=led[minit1%10];//顯示分鐘個(gè)位P2=0xF7;//p2.3delay();P2=0xFF;}}//控制鬧鐘(鬧鐘到了設(shè)定時(shí)間就會(huì)響)voidalmkozi(){if((hour1==hour)&&(minit1==minit)&

溫馨提示

  • 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)論