51單片機秒表計時器課程設(shè)計報告(含C語言程序)_第1頁
51單片機秒表計時器課程設(shè)計報告(含C語言程序)_第2頁
51單片機秒表計時器課程設(shè)計報告(含C語言程序)_第3頁
51單片機秒表計時器課程設(shè)計報告(含C語言程序)_第4頁
51單片機秒表計時器課程設(shè)計報告(含C語言程序)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、XXXXXX學(xué)院 51單片機系統(tǒng)設(shè)計 課程設(shè)計報告題 目: 秒表系統(tǒng)設(shè)計 專業(yè)、班級: 學(xué)生姓名: 學(xué) 號: 指導(dǎo)教師: 分 數(shù) : 摘要本設(shè)計是一個秒表計時器,采用51單片機實現(xiàn)。電路包括以下幾部分:單片機最小系統(tǒng)部分,數(shù)碼管顯示部分,摁鍵開關(guān)部分部分。電路選用共陰型4位數(shù)碼管組成時鐘顯示電路;時鐘的增減控制以及清零部分主要由輕觸開關(guān)構(gòu)成的摁鍵系統(tǒng)組成;信號接收和處理部分主要由單片機來執(zhí)行。接通電源后,秒表計時器處于初始狀態(tài),4位數(shù)碼管顯示000.0。當(dāng)摁下“開始”開關(guān)時,秒表開始計時,數(shù)碼管顯示當(dāng)前狀態(tài)的時間。當(dāng)再次摁下開關(guān)時,數(shù)碼管停止計時。摁下“清零”鍵后,系統(tǒng)重新回到初始狀態(tài)。關(guān)鍵詞

2、   單片機最小系統(tǒng) 秒表 計時 摁鍵控制任務(wù)書1、任務(wù) 設(shè)計一個秒表計時器,在51單片機的控制作用下,采用4個LED數(shù)碼管顯示時間,計時范圍設(shè)置為00.060.0秒,即精確到0.1秒,用按鍵控制秒表的“開始”、“暫?!?、“復(fù)位”,按“開始”按鍵,開始計時;按“暫?!卑存I,系統(tǒng)暫停計時;再按“開始”鍵,系統(tǒng)繼續(xù)計時;數(shù)碼管顯示當(dāng)前計時值;按“復(fù)位”按鍵,系統(tǒng)清零。2、設(shè)計要求(1)開始時顯示00.0。每按下S1鍵一次,數(shù)值加1s;(2)每按下S2鍵一次,數(shù)值減1s;(3)每按下S3鍵一次,數(shù)值清零;(4)每按下S4鍵一次,啟動定時器使數(shù)值開始自動每秒加1,再次按下

3、S4鍵,數(shù)值停止自動加1,保持顯示原數(shù)。3、發(fā)揮部分(1)開關(guān)按鍵3:“復(fù)位 60.0” 按鍵(用來60秒倒計時)。按鍵按下去時數(shù)碼管復(fù)位為“60.0”(用于倒計時)。(2)開關(guān)按鍵4:倒計時“逐漸自減”按鍵。按鍵按下去則是數(shù)碼管開始“逐漸自減”倒計時。(3)開關(guān)按鍵5:倒計時初始值“增加”按鍵。(4)開關(guān)按鍵6:倒計時初始值“減小”按鍵。4、課程設(shè)計的難點  單片機電子秒表需要解決三個主要問題,一是有關(guān)單片機定時器(一個控制順序計時,一個控制倒計時)的使用;二是如何實現(xiàn) LED 的動態(tài)掃描顯示;三是如何對鍵盤輸入進行編程。5、課程設(shè)

4、計儀器集成電路芯片STC89C52,八段數(shù)碼管,MCS-51系列單片機微機仿真課程系統(tǒng)中的軟件(keil uvision2)。目 錄摘要 2關(guān)鍵詞 2任務(wù)書 31、 設(shè)計任務(wù)目的 52、 設(shè)計方案選取與論證 52.1 系統(tǒng)總體設(shè)計方案 52.2 系統(tǒng)整體框圖 53、 電路設(shè)計 63.1 單片機最小系統(tǒng)設(shè)計 63.2 數(shù)碼管顯示模塊設(shè)計 63.3 摁鍵控制系統(tǒng)模塊設(shè)計 6 3.4 程序設(shè)計 64、 制作及調(diào)試過程 115、 結(jié)果分析和總結(jié) 12參考文獻 12附錄a 秒表計時器原理圖 13附錄b 元器件清單 14附錄c 秒表計時器實物圖 151、設(shè)計任務(wù)目的1. 根據(jù)單片機課程所學(xué)內(nèi)容,

5、結(jié)合其他相關(guān)課程知識,設(shè)計電子秒表,以加深對單片機知識的理解,鍛煉實踐動手能力,為以后的畢業(yè)設(shè)計和工作打下堅實基礎(chǔ);2. 熟悉匯編語言或C語言的程序設(shè)計方法,熟悉51系列單片機的使用;3. 掌握單片機的內(nèi)部功能模塊的應(yīng)用,如定時器/計數(shù)器、中斷、I/O口、串行口通訊等功能;4. 掌握單片機應(yīng)用系統(tǒng)的軟硬件設(shè)計過程、方法及實現(xiàn)。2、 設(shè)計方案選取與論證2.1系統(tǒng)總體設(shè)計方案使用STC89C51單片機作為核心控制部件,采用12M晶體振蕩器及30PF微小電容構(gòu)成振蕩電路;用1個四位一體共陰極數(shù)碼顯示管作為顯示部分,構(gòu)成數(shù)字式秒表的主體結(jié)構(gòu),配合獨立式鍵盤和復(fù)位電路完成此秒表的計時、清零、停止、增減初

6、始時間等各項功能。2.2 系統(tǒng)總體整體框圖4位數(shù)碼管顯示模塊STC89C52單片機最小系統(tǒng)模塊獨立摁鍵控制模塊圖2.2 系統(tǒng)設(shè)計框圖3、 電路設(shè)計3.1 單片機最小系統(tǒng)設(shè)計圖3.1 單片機最小系統(tǒng)1. 時鐘電路 在XTAL1、XTAL2 的引腳上外接定時元件(一個石英晶體和兩個電容),內(nèi)部振蕩器便能產(chǎn)生自激振蕩。在本設(shè)計中采用的12M 的石英晶振。和晶振并聯(lián)的兩個電容的大小對振蕩頻率有微小影響,可以起到頻率微調(diào)作用。當(dāng)采用石英晶振時,電容可以在20  40pF 之間選擇。 2. 復(fù)位電路 復(fù)位操

7、作通常有兩種基本形式:上電自動復(fù)位和開關(guān)復(fù)位。上電瞬間,電容兩端電壓不能突變,此時電容的負極和RESET 相連,電壓全部加在了電阻上, RESET 的輸入為高,芯片被復(fù)位。隨之+5V電源給電容充電,電阻上的電壓逐漸減小,最后約等于0,芯片正常工作。并聯(lián)在電容的兩端為復(fù)位按鍵,當(dāng)復(fù)位按鍵沒有被按下的時候電路實現(xiàn)上電復(fù)位,在芯片正常工作后,通過按下按鍵使RST管腳出現(xiàn)高電平達到手動復(fù)位的效果。3. EA/VPP(31 腳) 的功能和接法 51 單片機的EA/VPP(31 腳) 是內(nèi)部和外部程序存儲器的選擇管腳

8、。當(dāng)EA 保持高電平時,單片機訪問內(nèi)部程序存儲器; 對于現(xiàn)今的絕大部分單片機來說,其內(nèi)部的程序存儲器(一般為flash)容量都很大,因此基本上不需要外接程序存儲器,而是直接使用內(nèi)部的存儲器。 4. P0 口外接上拉電阻 51 單片機的P0 端口為開漏輸出,內(nèi)部無上拉電阻。所以在當(dāng)做普通I/O 輸出數(shù)據(jù)時,由于V2 截止,輸出級是漏極開路電路,要使“1”信號(即高電平)正常輸出,必須外接上拉電阻。3.2 數(shù)碼管顯示模塊設(shè)計顯示部分采用動態(tài)顯示。數(shù)碼管動態(tài)顯示接口是單片機中應(yīng)用最為廣泛的一種顯示方式

9、之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的共陰極增加位選通控制電路,位選通由各自獨立的I/O線控制,當(dāng)單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選通端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的位選通端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。動態(tài)顯示是利用人眼視覺暫留特性來實現(xiàn)顯示的。事實上,顯示器上任何時刻只有一個數(shù)碼管有顯示。由于各數(shù)碼管輪流顯示的時間

10、間隔短、節(jié)奏快,人的眼睛反應(yīng)不過來,因此看到的是連續(xù)顯示的現(xiàn)象。為防止閃爍延時的時間在1ms左右,不能太長,也不能太短。3.3 摁鍵控制系統(tǒng)模塊設(shè)計 由P1口作為獨立摁鍵信號的輸入端控制時鐘的加1s、減1s、復(fù)位60.0s等操作。用外部中斷0作為秒表計時器的開啟和暫停的操作。且所有摁鍵均為低電平有效。其中部分摁鍵為單刀雙擲開關(guān)用于控制增計時或減計時以及限60.0s計時和60.0s外計時。3.4 程序設(shè)計如下:#include<reg52.h> /包含52單片機寄存器定義的頭文件unsigned char Tab1 =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7

11、d,0x07,0x7f,0x6f; /段碼表unsigned char Tab2 =0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef; /個位段碼表unsigned int x;unsigned char k;sbit int0=P32;sbit int1=P33;sbit SUB60=P11;sbit S60=P12;sbit K5=P13;sbit K6=P14;sbit K7=P15;sbit K8=P16;/*延時1ms基準(zhǔn)*/void delay1ms(unsigned int i) unsigned char j; while(i-

12、) for(j=0;j<125;j+) /1ms基準(zhǔn)延時程序 12MHZ晶振 ; /*數(shù)碼管顯示程序 */ void Display(unsigned int x) P2=0xfe; /P2.0引腳輸出低電平,DS6點亮 P0=Tab1x/1000; /顯示百位 delay1ms(6);P2=0xfd; /P2.1引腳輸出低電平,DS6點亮 P0=Tab1x%1000/100; /顯示十位 delay1ms(6);P2=0xfb; /P2.2引腳輸出低電平,DS6點亮 P0=Tab2x%100/10; /顯示個位 delay1ms(6); P2=0xf7; /P2.3引腳輸出低電平,DS

13、7點亮 P0=Tab1x%10; /顯示0.1位 delay1ms(6);P2=0xff; /*函數(shù)功能:主函數(shù)*/void main(void) x=0; TMOD=0x01; / TMOD=0000 0001B,使用計數(shù)器T0的工作方式1 EA=1; /開起總中斷 ET0=1; /允許定時器T0的中斷 EX0=1; /允許外中斷INT0 IT0=1; /INT0為下負脈沖觸發(fā)方式 TH0=(65536-50000)/256; /計數(shù)器T0高8位賦初值 TL0=(65536-50000)%256;/計數(shù)器T0低8位賦初值 TF0=0; /溢出標(biāo)志位清零while(1)/*K5 P1.3按一次

14、加1開關(guān)S1*/ if(K5=0) delay1ms(20); if(K5=0) x=x+10; while(!K5); /摁鍵關(guān)斷 摁一次觸發(fā)一次 /*K6 P1.4按一次減1開關(guān)S2*/ if(K6=0) delay1ms(20); if(K6=0) if(x=0) x=10; /在00.0的時候停止 x=x-10; while(!K6);/摁鍵關(guān)斷 摁一次觸發(fā)一次 /*K7 P1.5初始值 賦值為60.0秒開關(guān)S5*/ if(K7=0) delay1ms(20); if(K7=0) x=600; /賦初值60.0秒 while(!K7);/摁鍵關(guān)斷 摁一次觸發(fā)一次 /*S60 控制60S

15、停止開關(guān) P1.2*/if(x=600) if(S60=0) /如果P1.2口是低電平,秒表變化范圍00.060.0 TR0=0; /*K8 P1.6清零clear0摁鍵開關(guān)S3*/if(K8=0) delay1ms(20);/延時消震 if(K8=0) x=0;/數(shù)據(jù)清0 數(shù)碼管顯示000.0 TR0=0; /溢出標(biāo)志位清0 /*數(shù)碼管顯示*/ Display(x); /*INT0中斷函數(shù) 用于開始或暫停開關(guān)S4*/void begin_stop() interrupt 0 if(int0=0) delay1ms(30); /延時消震 if(int0=0) TR0=TR0; /按鍵摁一次 讀

16、秒開始或暫停 if(x=0&&SUB60=0) TR0=0; /*T0 計數(shù)器中斷 控制每隔加0.1秒*/ void add_one0() interrupt 1 k+; if(k=2) k=0; TF0=0; if(SUB60=1) /當(dāng)P1.1口是高電平時秒表加0.1s /當(dāng)P1.1口是低電平時秒表減0.1s x=x+1; /秒表加0.1s else x=x-1; /秒表減0.1s if(x=0) TR0=0; if(x=9999) TR0=0; TH0=(65536-50000)/256; /計數(shù)器T0高8位賦初值 TL0=(65536-50000)%256;/計數(shù)器T0

17、低8位賦初值 4、 制作及調(diào)試過程4.1 電路的制作(1) 分析各單元電路圖,并分析其各部分的功能;(2) 用仿真軟件仿真電路的功能,并檢查是否有錯,無誤后進行下步工作; (3) 查找有關(guān)文獻了解各元件的功能及引腳和有關(guān)的資料;(4) 分別焊接單片機最小系統(tǒng)、數(shù)碼管顯示電路和摁鍵控制電路,與此同時檢查各元器件是否可用,并分辨其引腳;(5) 對照事先設(shè)計好的原理圖仔細檢查在實物中是否有接錯的地方(主要檢查集成電路的引腳與導(dǎo)線是否出錯接錯和是否出現(xiàn)了短路),若發(fā)現(xiàn)有,就立即改正。以防給實物通電之后,出現(xiàn)意外。然后,用數(shù)字萬用表檢測實物中是否有不導(dǎo)通的地方,若有,應(yīng)立即修正。以防通電后不能工作,而懷

18、疑其他地方出錯。(6) 給實物通電,并進行調(diào)試??措娐饭ぷ魇欠裾?。若有誤,則檢查并思考錯誤原因,然后進行修改直至電路工作正常為止。4.2 電路的調(diào)試起初我打算用PCB板來做秒表計時器,由于一些條件也不允許(如腐蝕液和鉆孔機等器件沒有),經(jīng)過再三考慮,我選擇了用萬用板來制作秒表計時器。但在制作的過程中我也遇到了許多問題。問題以及解決辦法如下:(1) 問題1:由于在焊電子元件及芯片時沒有注意到元件的排布以及芯片的引腳問題,使得電路板上的跳線很密,這給查線帶來了很大的困難,使得最后電路錯線、搭線太多。解決辦法:我把元件以及跳線重新都焊了下來,認真反復(fù)的研究原理圖的每個芯片的引腳,先用油性筆在電路板

19、上把元件畫好,然后在進行焊接。(2)問題3:芯片引腳分布的比較緊密,所以在焊接時出現(xiàn)焊錫把相鄰引腳連接在一起的情況。解決辦法:吸焊器取掉部分焊錫,或用小刀劃開芯片引腳的分界。(5)問題5:倒計時不能夠正常的工作,且減計時混亂。解決辦法:重新檢查程序,檢查電路是否搭線。5、 結(jié)果分析和總結(jié)單片機課程設(shè)計,是對單片機知識的驗證,可以幫助我們理解鞏固所學(xué)知識,激發(fā)我們對單片機課程的興趣,更鍛煉了我們獨立思考、開拓創(chuàng)新的能力。通過這次課程設(shè)計我也發(fā)現(xiàn)了自身存在的不足之處,雖然感覺理論上已經(jīng)掌握,但在運用到實踐的過程中仍有意想不到的困惑,經(jīng)過一番努力才得以解決。這也激發(fā)了我今后努力學(xué)習(xí)的興趣,我想這將對我以后的學(xué)習(xí)產(chǎn)生積極的影響。 其次,這次課程設(shè)計讓我充分認識到合作的重要性

溫馨提示

  • 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

提交評論