單片機設計秒表(共19頁)_第1頁
單片機設計秒表(共19頁)_第2頁
單片機設計秒表(共19頁)_第3頁
單片機設計秒表(共19頁)_第4頁
單片機設計秒表(共19頁)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上 單片機課程設計 題 目 單片機秒表設計授課教師 董文會 學生姓名 呂丙揚 靳立松 李 揚 學 號 3 6 5 專 業(yè) 2010級電子信息工程 教學單位 物理與電子信息學院 完成時間 2013年6月24日專心-專注-專業(yè)目錄1、 設計的目的及意義···························&#

2、183;····················12、 設計方案及原理···························

3、83;······················13、 硬件設計與電路設計·························&#

4、183;···················2 3.1 AT89C51單片機最小系統(tǒng)簡介··························

5、3;········2 3.2 復位按鍵········································

6、·············4 3.3晶振電路···································

7、83;·················4 3.4數(shù)碼管顯示模塊······························

8、83;················5 3.5按鍵開關································

9、·····················5 3.6總電路圖···························

10、83;·························64、 軟件設計·······················&

11、#183;································6 4.1秒表初始化設計···············&

12、#183;······························6 4.2按鍵檢測程序·················&#

13、183;··································6 4.3開始計時··············

14、;······································7 4.4計時程序··········&#

15、183;·········································7 4.5顯示程序·······

16、;·············································74.6暫停計時···

17、83;················································74.7秒表清零&

18、#183;·················································&

19、#183;·74.8延時程序···············································

20、;·····8 4.9程序流程圖···········································&

21、#183;······8五、總結(jié)··········································&#

22、183;·················9附錄································

23、;·······························10參考文獻··················

24、;·········································15·1、 設計的目的及意義 單片微型計算機體積小、功能強、性價比高等特點,所以廣泛應用于電子儀

25、表、家用電器、節(jié)能裝置、軍事裝置、機器人、工業(yè)控制等諸多領域,使產(chǎn)品小型化、智能化,既提高了產(chǎn)品的功能和質(zhì)量,又降低了成本,簡化了設計。利用單片機的定時器/計數(shù)器定時和計數(shù)的原理,用集成電路芯片、LED 數(shù)碼管以及按鍵來設計計時器。將軟、硬件有機地結(jié)合起來,使他擁有正確的計時、暫停、清零、并同時可以用數(shù)碼管顯示,在現(xiàn)實生中應用廣泛。秒表計時器常常用于體育競賽及各種其他要求有較精確時間的各領域中。用AT89C51設計一個3位LED數(shù)碼顯示“秒表”,顯示時間為0099秒,每秒自動加一。設計一個“開始”按鍵和一個“復位”按鍵。再增加一個“暫停”按鍵和一個“快加”按鍵(每10ms快速加一)。二、設計方

26、案及原理 以AT89C51單片機為核心,設計一個秒表,具有計時功能,按鍵有啟動計時、數(shù)據(jù)清零、停止、時間顯示。 采用3個LED數(shù)碼管顯示時間,計時范圍設置為099.9秒,即精確到0.1秒,用按鍵控制秒表的“開始”、“暫?!薄ⅰ皬臀弧?,按“開始”按鍵,開始計時;按“暫?!卑存I,系統(tǒng)暫停計時;再按“開始”鍵,系統(tǒng)繼續(xù)計時;數(shù)碼管顯示當前計時值;按“復位”按鍵,系統(tǒng)清零。系統(tǒng)總體方案如圖2.1所示:AT89C513個數(shù)碼顯示管4個獨立式按鍵 11.059MHz晶振電源開關圖2.1 系統(tǒng)總設計圖三、硬件設計與電路設計 3.1 AT89C51單片機最小系統(tǒng)簡介 單片機最小系統(tǒng)由AT89C51、復位按鈕、

27、晶振組成。選用頻率11.0592MHz晶振,兩個30pF電容。如圖3.1所示:圖3.1單片機最小系統(tǒng) VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P0口的管腳第一次寫1時,被定義為輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流

28、,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部

29、上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳 備選功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時器0外部輸入)P3.5 T1(記時器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復位輸

30、入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。

31、在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。 /EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。3.2 復位按鍵 復位按鍵如圖3.2所示:圖3.2 復位按鍵3.3晶振電路 系統(tǒng)總電路除以上的顯示電路,按鍵電路和復位電路組成外,其次還剩晶振電路和電源電路。再將單片機與以上各部分電路合理的連接就組成了系

32、統(tǒng)總電路。AT89C51單片機為主電路的核心部分,各個電路均為和單片機相連接,由單片機統(tǒng)籌和協(xié)調(diào)各個電路的運行工作。 AT89C51單片機提供了XTAL1和XTAL2兩個專用引腳接晶振電路,因此只要將晶振電路接到兩個專用引腳即可為單片機提供時鐘脈沖,但在焊接晶振電路時要盡量使晶振電路靠近單片機,這樣可以為單片機提供穩(wěn)定的時鐘脈沖。 晶振電路如圖3.3所示: 圖3.3 晶振電路3.4數(shù)碼管顯示模塊 顯示電路采用3位共陽極LED 數(shù)碼管,P0 口由上拉電阻提高驅(qū)動能力,作為段碼輸出并作為數(shù)碼管的驅(qū)動。P2 口的低四位作為數(shù)碼管的位選端。LED1顯示秒表的十秒位,LED2顯示秒表的秒位,LED3顯示

33、毫秒位。復位后顯示00.0。如圖3.4所示:圖3.4 數(shù)碼管顯示模塊3.5按鍵開關 按鍵開關有4個按鍵,其中K1為開始按鍵,K2為暫停按鍵,K3為快加按鍵,K4為復位按鍵。按“開始”按鍵,開始計數(shù),數(shù)碼管顯示從00開始每秒自動加一;按“復位”按鍵,系統(tǒng)清零,數(shù)碼管顯示00;按“暫停”按鍵,系統(tǒng)暫停計數(shù),數(shù)碼管顯示當時的計數(shù);按“快加”按鍵,系統(tǒng)每10ms快速加一,即數(shù)碼管在原先的計數(shù)上快速加一。圖3.5 按鍵開關3.6總電路圖 將各個模塊鏈接后組成總電路圖,如圖:3.6所示:圖3.6總電路圖4、 軟件設計4.1秒表的初始化根據(jù)程序流程圖,先進行秒表的初始化,即:將I/O口P3全寫一,為秒表的控

34、制輸入做好準備;將數(shù)碼管全部置零,使其處于秒表計時的初始狀態(tài);將工作寄存器R0R2以及30H初始化,留待后面的計時程序備用;將定時器0置于工作方式1,并為其裝入計時預置數(shù)D8FE(因為程序運行過程中占用的時間會導致一定誤差,此為經(jīng)實物測試之后的修正值),即將定時器定為每10ms溢出;開總中斷允許和定時器0中斷允許。初始化完成后,即進入之后的按鍵掃描程序。4.2按鍵檢測程序輪流檢測開始計時(P3.2)、暫停計時(P3.3)、秒表清零(P3.4)三個按鍵。若發(fā)現(xiàn)有一個按鍵出現(xiàn)低電平(可能被按下),則延時10ms(調(diào)用延時子程序DELAY),延時完成后,若發(fā)現(xiàn)低電平消失,則說明該按鍵實際上未被按下,

35、此時轉(zhuǎn)回按鍵檢測處繼續(xù)檢測;若發(fā)現(xiàn)仍然是低電平,則說明此鍵確實被按下了,此時就跳轉(zhuǎn)至相應的程序標號處,執(zhí)行相應的功能。4.3開始計時若確認“開始計時”鍵被按下,則跳轉(zhuǎn)至程序標號“RUN”處,將定時器0計時允許控制位TR0置位,則定時器開始運行。此動作完成后,返回按鍵檢測程序,等待操作者的下一次指令。4.4計時程序定時器0計時至10ms,溢出,引發(fā)中斷,程序跳轉(zhuǎn)至定時器0中斷服務程序入口000BH處執(zhí)行。程序跳轉(zhuǎn)至中斷服務程序TIME0。由于秒表的最小計時單位是0.1s,即100ms,因此需加入軟件計時,使定時器0溢出10次之后才改變數(shù)碼管的顯示狀態(tài)。因此每來一次中斷就將30H中的數(shù)加1,若30

36、H中的數(shù)沒有到10,則給定時器0重新裝入預置數(shù),之后中斷返回并繼續(xù)等待中斷;到10了,才進入顯示程序,改變數(shù)碼管的顯示狀態(tài),執(zhí)行完畢之后中斷返回并繼續(xù)等待中斷。4.5顯示程序?qū)?shù)碼管的段選碼放在數(shù)表TAB中。每秒計時完成后,將R0中的值(初值為0)送入A,然后自加1。若R0中的值沒到10,則使用累加器A查表,并將查得的數(shù)碼管段選碼送入毫秒位數(shù)碼管。之后將30H中的數(shù)置零,中斷返回。若發(fā)現(xiàn)R0中的數(shù)到10了,則將R0置零,并轉(zhuǎn)入秒位進位子程序SECOND,向秒位進位之后,繼續(xù)照常向毫秒位送數(shù)。4.6暫停計時若確認“暫停計時”鍵被按下,則跳轉(zhuǎn)至程序標號“PAUSE”處,將定時器0計時允許控制位TR

37、0置零,則定時器暫停運行。此動作完成后,返回按鍵檢測程序,等待操作者的下一次指令。 4.7秒表清零若確認“秒表清零”鍵被按下,則跳轉(zhuǎn)至程序標號“STOP”處,將TR0置零,關閉定時器0運行。并且將數(shù)碼管、工作寄存器、定時器0預置數(shù)全部重置,使其處于秒表計時的初始狀態(tài)。此動作完成后,返回按鍵檢測程序,等待操作者的下一次指令。4.8延時程序用于按鍵延時防抖,延時10ms。程序清單見附錄。 4.9程序流程圖 如圖4.9所示:圖4.8程序流程圖五、總結(jié) 通過對本次課程的課程設計,使自己深刻的認識到自己的很多不足之處,在實際動手操作能力的不足,在進行程序編程時,自己需要,認真審題,看懂題目的要求!對于軟

38、件編程不益太簡單或者太難。做到既能把課題完成又能鍛煉 自己的能力!根據(jù)課題要求,復習相關的知識,查詢相關的資料。根據(jù)課程條件,找到適合的方案,找到需要的元器件及工具,準備課程。根據(jù)課程設計的要求和自己所要增加的功能寫好程序流程圖,在程序流程圖的基礎上,根據(jù)芯片的功能寫出相應的程序和增加額外的功能程序。然后再進行 程序調(diào)試和相應的修改,以達到能夠?qū)崿F(xiàn)所要求的功能的目的。還要根據(jù)課程的實際情況,添加些額外程序來使系統(tǒng)更加的穩(wěn)定,如開關的去抖(采用延遲)。程序要盡量做到由各個子程序組成,在有些程序后面最好加注釋。這樣在程 序出錯的檢查過程中可以更容易查找的到,也更簡潔,更明白易懂。該課程設計的程序可

39、以參考 MCS-51 系列單片機,也可自己根據(jù)自己熟悉的方法來編程如單片機 C 語言。在設計控制開關時,注意兩個中斷的打開和關閉的先后順序,否則就會出錯。這次的單片機課程設計重點是理論與實際的相結(jié)合。該設計從頭到尾都要自己參與,熟悉了對整個設計的過程,更系統(tǒng)的鍛煉了自己。 附錄:#include<reg52.h> /52 系列單片機頭文件 #define uchar unsigned char /宏定義#define uint unsigned intsbit dula=P26; /申明 U1 鎖存器的鎖存端 sbit wela=P27; /申明 U2 鎖存器的鎖存端 sbit k

40、ey1=P34; /申明四個按鍵的鎖存端sbit key2=P35;sbit key3=P36;sbit key4=P37; uchar code table= /含有 09 的數(shù)字數(shù)組 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f;void delayms(uint); /聲明延時函數(shù)void display(uchar,uchar,uchar); /聲明顯示函數(shù) void keyscan(); /聲明按鍵函數(shù) uchar num1,num2,bai,shi,ge; /變量聲明 uint num; void main() /主函數(shù)入口

41、 TMOD=0x11; /設置 TO,T1 定時器 TH0=(65536-45872)/256; /裝初值11.05992M晶振50ms數(shù)為45872 TL0=(65536-45872)%256; TH1=(65536-45872)/256; TL1=(65536-45872)%256; EA=1; /開總中斷 ET0=1; /開啟定時器 T0 中斷 ET1=1; /開啟定時器 T1 中斷 while(1) /程序停在這里等待中斷的發(fā)生,這個大循環(huán)也是實現(xiàn)數(shù)據(jù)顯示的主體 keyscan(); /三個數(shù)碼管要選送的數(shù)據(jù) bai=num/100; /百位 shi=(num-100*bai)/10;

42、 /十位 ge=num-100*bai-shi*10; /個位 /直接把第二只數(shù)碼管的小數(shù)點燒出來dula=1; /打開段選 P0=0x80; /送段選數(shù)據(jù)dula=0; /關閉斷選 P0=0xff; /送位選數(shù)據(jù)前關閉所有顯示,防止打開位選鎖存時原來段選數(shù)據(jù)通過位 鎖存端造成混亂 wela=1; /打開位選 P0=0xfd; /送位選數(shù)據(jù) wela=0; /關閉位選 delayms(5); /延時 display(bai,shi,ge); void display(uchar bai, uchar shi,uchar ge) dula=1; /打開段選P0=tablebai; /送段選數(shù)據(jù) dula=0; /關閉斷選 P0=0xff; /送位選數(shù)據(jù)前關閉所有顯示,防止打開位選鎖存時原來段選數(shù)據(jù)通過位鎖存 端造成混亂wela=1; /打開位選 P0=0xfe;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論