單片機秒表課程設(shè)計報告資料整理_第1頁
單片機秒表課程設(shè)計報告資料整理_第2頁
單片機秒表課程設(shè)計報告資料整理_第3頁
單片機秒表課程設(shè)計報告資料整理_第4頁
單片機秒表課程設(shè)計報告資料整理_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE11一:課程設(shè)計題目秒表/時鐘計時器二:課程設(shè)計任務(wù)與要求:利用89C51單片機設(shè)計秒表/時鐘計時器,通過LED顯示器顯示秒十位和個位,在設(shè)計過程中用一個存儲單元作為秒計數(shù)單元,當(dāng)一秒鐘到來時,就讓秒計數(shù)單元加1,當(dāng)秒計數(shù)達到60時,就自動返回到0,重新開始秒計數(shù)。三:設(shè)計過程:1.設(shè)計原理:此次課程設(shè)計題目是秒表/時鐘計時器,由課程設(shè)計的要求和任務(wù),我采用的C語言編程,設(shè)計秒表要求一秒定時,采用了定時器和FOR循環(huán)來定時,其中一個軟件一個硬件,會在方案論證中分析在1秒時采用的是硬件定時,即用單片機內(nèi)部的定時器T0。先將時鐘初始化,賦入初值50ms定時,循環(huán)20次來進行1秒定時。然后由定義的變量second來進行加一運算,然后將其值通過P1,P2口在數(shù)碼管上進行顯示。其中數(shù)碼管的顯示時,我在程序中首先定義了一個關(guān)于數(shù)碼管顯示的字形碼定義,以便在顯示時調(diào)用即可。(1)方案論證:方案1:在方案1中,我們所選用的是軟件定時,即用for循環(huán)來定時1秒進行顯示的變化。方案2:在方案2中,采用的是硬件定時,即用單片機內(nèi)部的定時器T0。先將時鐘初始化,賦入初值50ms定時,循環(huán)20次來進行1秒定時。方案比較:我們從兩方面進行兩種方案的比較,第一,由于此次課程設(shè)計要求是秒表,則在定時時要求比較精確,所以采用硬件的定時器定時時比較準(zhǔn)確的。第二,由于秒表的定時程序是很小的,在利用軟件定時占用的CPU并不是很多,不能顯現(xiàn)出來,但真正大程序時會很占用資源的,所以在用定時中斷過程中是非常節(jié)省資源的。綜合上述兩種比較,我們選用了第二種方案。(2)創(chuàng)新點:a.在課程要求的基礎(chǔ)上,我們做成的電路板上,用復(fù)位鍵來控制秒表計時的重新開始,即清零。b.在以上設(shè)計的基礎(chǔ)上,我們又重新設(shè)計了一個程序,基本原理沒有變,只是將秒表在到達59清零的瞬間向分的位數(shù)上進1,程序?qū)诟戒?中給出。2.硬件系統(tǒng)框圖與說明:首先,連接的是單片機51的最小系統(tǒng),其中包括時鐘電路,復(fù)位電路,在此中包括的元器件在附錄3中。我們所選用的數(shù)碼管是共陰極的,置1時導(dǎo)通,所以將單片機的P1.0~P1.7連接數(shù)碼管的a~dp,P2口同理。然后在數(shù)碼管秒表個十位的顯示則由軟件程序來控制。3.軟件主要模塊流程圖與說明:判斷是否中斷判斷是否中斷初始化Count++Count=20?NYSecond++Second=59?Second=0數(shù)碼管顯示當(dāng)前值NY等待NY在真正應(yīng)用時,我們的一秒定時是用定時中斷的,但單片機的T0最長也不能1秒定時,所以我們采用50ms定時循環(huán)20次,用count來控制。當(dāng)秒的時間達到59時,用軟件來清零時循環(huán)從00重新開始。四:課程設(shè)計總結(jié):1:本次的課程設(shè)計,使關(guān)于51系列單片機的,正是我們剛剛學(xué)到的51單片機,在平時課程的學(xué)習(xí)中,我們僅限于理論知識的講解,即使知識是很扎實的,實際應(yīng)用并不是這樣的。開始時我也覺得自己的理論知識已經(jīng)夠了,但當(dāng)我拿到課題時,在腦海里想的是非常好的,但真正編成和控制時,理論和實際結(jié)合不到一起,甚至于51芯片的使用我都感覺很迷茫,還是經(jīng)過搜集大量資料才將理論與實際結(jié)合到一起了。本次課程設(shè)計我主要負責(zé)編程,這次不僅鍛煉了我C語言的知識,更加我們正在學(xué)習(xí)的51的定時與中斷結(jié)合在一起,進行了實際的操作,讓我的知識掌握得更加牢固。本次的實際經(jīng)驗之后,讓我對單片機定時賦初值有了更新的認識,對程序的循環(huán)順序、結(jié)構(gòu)類型都有了非常深刻的認識,對真正硬件的連接也有了認識,不再將自己的知識局限于自己狹隘的空間中。2:通過這次課程設(shè)計——秒表/時鐘計時器,使我又重新開始學(xué)習(xí)C語言,因為C語言是大一學(xué)的,至從學(xué)完就再也沒用過,所以開始很陌生,我又找了有關(guān)資料來了解,才有了一點眉目。剛開始以為可以用匯編很容易就寫出來,因為我們正在學(xué)習(xí)匯編語言,以為學(xué)的很明白了,但是用匯編時才發(fā)現(xiàn)原來都不怎么熟練,編了一會程序發(fā)現(xiàn)只有一種感覺——舉步維艱?。∵€是放棄匯編選擇C語言吧!對于單片機,我們課本學(xué)習(xí)的是80C51,但是這次做課程設(shè)計用的是89C51,這樣不僅使我們掌握了80C51,而且對89C51也有了一定的了解了,在課堂上學(xué)習(xí)的都理論的,跟實際永遠有一定的差距,不實踐就不會發(fā)現(xiàn)問題。通過這次課程設(shè)計使我把課堂上學(xué)習(xí)的東西都用到了實踐中,例如:定時/計數(shù)器的應(yīng)用與中斷。學(xué)習(xí)的時候不怎么理解,但是在實踐中應(yīng)用了以后就自然了解了。這次課程設(shè)計使我受益匪淺,而且都是實際的東西。3:這次課程設(shè)計,我們做的是秒表/時鐘計時器,最終我們選擇的是用C語言編程,但原來學(xué)的也只是能看懂別人寫好的程序而已,通過這次課程設(shè)計,更加熟練了C語言的程序設(shè)計思路。這次課程設(shè)計我主要負責(zé)焊接電路板,焊接過程中最困難的地方就是數(shù)碼管的焊接,因為數(shù)碼管的管腳和89C51的管腳是不對應(yīng)的,而且要避免接線的交叉,所以最后確定了布線最合理的方案,如硬件電路圖所示。我們這次設(shè)計的出現(xiàn)的最大問題是電路當(dāng)中的復(fù)位電路,開始電路在Proteus上仿真時都是可以正常復(fù)位的,但實際的電路中復(fù)位按鍵后的電阻的參數(shù)不合理,導(dǎo)致了RST上有電壓,復(fù)位電路無效,所以最后我們?nèi)サ袅四莻€電阻,此時復(fù)位電路才有效,所以理論和實際永遠有差距,不實踐永遠發(fā)現(xiàn)不了問題。在焊接前我們沒有想到給數(shù)碼管用插槽固定,而是直接焊在了電路板上,這造成了后面的很多麻煩,我們方案中用的是共陰極的數(shù)碼管,焊接第一個數(shù)碼管時沒有注意型號,等焊接到一半時才發(fā)現(xiàn)焊上的是共陽極的,所以不得不解焊重新焊接,這也是一個教訓(xùn),以后焊接器件時能用上插槽的盡量用插槽,這在器件出了問題時很方便更換。最后焊接完成后在試驗的過程中,剛一接通電源后的上電電壓燒壞了LED顯示器顯示秒十位的c腳,這也是這次課程設(shè)計的遺憾,以后在硬件的實驗時還要多小心,避免造成不必要的損失。4:通過本次秒表/時鐘計時器的設(shè)計實驗,使我對這學(xué)期學(xué)所學(xué)51系列的單片機從理論知識到實踐硬件的應(yīng)用以及C語言知識的回顧,更加熟悉了89C51單片機的每一個拐角的輸出和各項功能,而且對硬件電路的布線以及焊接能力有了很大的進步。在這次試驗中,我主要負責(zé)的是硬件電路的布線和焊接以及硬件測試。由于本次試驗電路比較簡單,所以我們按照電路圖布線后就馬上開始焊接。焊好一個數(shù)碼管檢測后才發(fā)現(xiàn)我們把共陰極的數(shù)碼管焊接成共陽級的了,很不容易才解焊下來,有了這次教訓(xùn)后,我們在焊接其他元器件的時候都提前檢測好才開始焊接。第一次焊接完成后我們上電后發(fā)現(xiàn)實現(xiàn)了基本功能,可是不能復(fù)位,經(jīng)過我們的討論和反復(fù)試驗,我們發(fā)現(xiàn)軟件仿真和硬件實現(xiàn)并不是完全一致的,我們按照課本上焊接后終于完全實現(xiàn)了秒表/時鐘計時器的功能??煲炇諘r我們發(fā)現(xiàn)數(shù)碼管的一個二極管壞了,這才讓我們意識到?jīng)]有焊接插針的缺陷,以后一實驗時一定要盡可能讓原件可以取下,以便出現(xiàn)問題是更好的更換。這次課程設(shè)計終于圓滿的完成了,我從理論和硬件以及實踐上懂得了很多,也明白了一個團隊的合作精神可以讓我們戰(zhàn)勝所有的困難。五:附錄附錄1:電路原理圖:附錄2:實物圖:附錄3:源程序及程序解釋:#include<REG51.H> //包含頭文件REG51。H#defineuintunsignedint#defineucharunsignedcharunsignedcharcodeSEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//數(shù)碼管0~9的字型碼ucharcount,second;//定義變量/*===================================*/voidinit()//定義定時器T0初始化程序{ TMOD=0x01; TH0=(65536-50000)/256; //賦初值定時1秒 TL0=(65536-50000)%256; ET0=1; TR0=1; EA=1; P2=SEG7[0]; P1=SEG7[0];}voiddelay(unsignedintk)//定義延時程序{ unsignedinti,j; for(i=0;i<k;i++) { for(j=0;j<121;j++) { ; } } }//voidmain(void) { init(); //定時器初始化 while(1) //無限循環(huán) { ; } } //voidtimer0()interrupt1//定時器T0中斷{ TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++; if(count==20) { count=0; second++; if(second>59)second=0; P1=SEG7[second/10]; //顯示秒的十位 delay(10); //延時 P2=SEG7[second%10]; //顯示秒的個位 delay(10); }附錄4:for循環(huán)程序#include<REG51.H> unsignedcharcodeSEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/*===================================*/voiddelay(unsignedintk); //voidmain(void) { unsignedcharval1=0; longi;while(1) { for(i=0;i<380;i++) { /*P2=0xfd;*/ P2=SEG7[val1%10]; delay(1); /*P2=0xfe; */ P1=SEG7[val1/10]; delay(1); } val1=val1+1; if(val1>59) val1=0; } } //voiddelay(unsignedintk){ unsignedinti,j; for(i=0;i<k;i++) { for(j=0;j<121;j++) ; } }附錄5:匯編程序ORG0000HSTART:MOVR1,#20MOVR2,#10MOVR3,#6MOVR4,#00HLOOP1:MOVR2,#10LOOP:MOVA,R4MOVB,#0AHDIVABMOVDPTR,#TABMOVCA,@A+DPTRMOVP1,AMOVA,BMOVCA,@A+DPTRMOVP2,ALCALLDELINCR4DJNZR2,LOOPDJNZR3,LOOP1MOVP1,#00MOVP2,#00LJMPSTARTDEL:MOVR7,#12DEL1:MOVR6,#123NOPDEL2:DJNZR6,DEL2DJNZR7,DEL1DJNZR1,DELRETTAB:DB3FH,06H,5BH,4FH,66H,6DH,7

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論