夏雪 劉博 王建華



摘 ?要:本設計用單片機搭以其它硬件組成數字電子秒表,采用主程序設計,通過數碼管顯示計時結果。對硬件電路和軟件進行設計,并進行仿真測試,結果表明,計時準確,結構簡單,穩定性強。
關鍵詞:單片機;數字秒表;高精
中圖分類號:TP368.1 文獻標志碼:A ? ? ? ? 文章編號:2095-2945(2019)18-0099-02
Abstract: This design uses single-chip microcomputer to build a digital electronic stopwatch with other hardware, adopts the main program design, and displays the timing results through the digital tube. The hardware circuit and software are designed and tested by simulation. The results show that the timing is accurate, the structure is simple and the stability is strong.
Keywords: single chip microcomputer; digital stopwatch; high precision
1 研究原理
在剛通電后打開電源開關,使系統初始化,此時計時器顯示為00.00.00,按下開關開始計時時,單片機接收到外部中發來的中斷請求后,轉到開啟T0定時器,執行中斷程序1。
計時是靠T0定時器的中斷來完成的,定時的中斷周期是1ms,每當一處定時溢出是就向T0發出中斷請求,實現數據的累加,達到10次就實現進位加一,以此類推,直到實現最大計時59分59.99秒后復位。在定時器工作過程中,外部按下暫停鍵,CPU就收到外部中斷請求執行外部中斷0的程序,顯示數據,并將數據存到寄存區內。在暫停后,對P3.2進行掃描,如果按下就回到主程序,準備開始新的計時。
在暫停健被按下時,此時顯示時間被存到緩存內,再按下暫停鍵,再次繼續計時時,上次顯示的計時時間從緩存區轉到最終存儲區。在秒表停止計時后掃描查看鍵P3.5,P3.5口是高電平,就查看最近的一次計時緩存,是低電平就調用最終緩存區的計時數據查看前面的計時數據。從而實現多次計時和查看前面計時數據的功能。
2 硬件設計
設計成品由硬件電路和軟件程序協調合一組成。硬件電路由顯示電路、電源電路、控制電路、主控電路等組成。主控電路以AT89C52為主,顯示電路則用 1602來作為顯示工具。
本秒表利用AT89C52單片機的定時/計數器的定時計數原理,來達到精確計時的目標。開始和暫停的功能靠的是單片機的中斷系統。在單片機的幾個接口中,P0口為輸出口,輸出計時數據,列掃描的輸出則是安排在P2.0-P2.4口,三個按鈕開關接口為P3.2、P3.3、P3.5,功能依次為開始、暫停、存儲和查看前面的計時數據。電路原理圖在正確無誤的情況下,盡力做到布局合理,美觀大方。其基本圖如圖1所示:
2.1 按鍵電路的選擇與設計
設計的秒表有4個按鍵,其中三個是主系統電路控制按鍵,一個是電源開關。三個主控按鍵分別是開始、暫停、查看和復位功能鍵。電源鍵用來將數據重置,查詢鍵則是用來查詢前面的計時數據,三個按鍵都是低電平有效。當三個主控鍵每按下電源與單片機的I/O口直接相接,為了限流接了一個10kΩ的電阻作為上拉電阻,使次電流保證在安全范圍內。有兩個按鍵是采用外部中斷法,用到P3口的第二功能。
2.2 復位電路的選擇與設計
對于復位電路,設計中采用的是高電平復位,就是當復位引腳接到兩虛兩個高電平時,完成復位操作。但不能持續高電平,因為這樣的話,就會不停地執行復位操作,不能進行其他命令。所以單片機要有足夠的余量以應付單片機的其他要求,并達到復位后不循環,可繼續執行其他操作的要求。復位操作有兩種:上電復位、手動復位。
上電復位是再接上電源后打開電源開關,系統自動初始化程。它在89S52中是一種上電延時復位,在通電時就啟動復位電路完成復位操作,其中延時大概三個機器周期,后面正式開始運行。
手動復位則是在運行過程中出現意外死機的情況為單片機復位而設置的。這個時候要兩次向復位端發出至少兩個連續高電平,單片機接收后可完成復位,重新進入工作程序。
2.3 系統總電路的設計
系統總電路由上述的按鍵電路,復位電路,還有另外的顯示電路組成。將單片機系統電路圖(如圖2)和它們合理連接在一起,就是整個秒表的電路圖了。
3 軟件設計
3.1 主程序設計
全程序由主程序,定時中斷服務程序,外中斷0服務程序和外部中斷1程序組成。主程序是整個程序的主體。運行過程中從主體開始,逐一開始運行,協調運用各個子程序,完成秒表的功能。系統得電復位后進入主程序,流程圖如圖3。第一步是初始化,整個系統都完全從零開始。第二步是完成初始化,進入液晶顯示程序。顯示程序調用最近的緩存數據。在液晶顯示器上動態顯示。每調用一次就掃描一次P3.3和P3.5看復位鍵有沒有請求,有的話就回到主程序再次準備計時。沒有就看P3.5有沒有請求,沒有就一直調用,顯示當前計時時間。有的話就跳轉到調用最近的緩存程序,顯示前次的計時時間。在同時,看P3.5是否有請求發出,P3.5斷開后就回到最新的動態計時時間的程序,顯示當前計時時間。
3.2 中斷程序設計
程序設計中有三個中斷定時中斷T0、外部中斷INT0、INT1。單片機處理器遵從先高后低的中斷處理順序,當有多個中斷一起發起請求時先處理最高優先級,再依次處理其他中斷請求。但是在處理高優先級中斷時,低優先級終端發出的請求將會被擱置,得不到響應。所以這是一個需要注意的地方,這關系到本設計的最終實現。
4 數字電子秒表的安裝與調試
按照設計好的實物原理圖,買好所需原件后,仔細焊制實物電路板,焊制之前把排版做好,這樣焊接后才能讓實物更美觀,簡單明了。制成后實物圖如圖4。
測試中,打開軟件,調用已畫好的原理圖,選擇圖中的單片機并選擇已經寫好的程序文件載入,成功后進行仿真,觀測結果,在針對不足加以修改,最終達到設計要求。
5 結束語
在這次的秒表設計中,數字秒表以89S52單片機為主系統,輔以1602液晶顯示器、控制按鍵、電阻、三極管等元器件組成。設計簡單,明了,控制清晰明確,性能穩定,程序精簡明晰,并且計時精度達到了10ms。雖然這個秒表以單片機位中心控制器,但還有許多其他的知識也需運用其中,根據具體的原件還要獨立設計程序,并且與軟件相結合達到整個系統的軟硬件協調。運用C語言來編寫程序,使整個系統程序層次分明簡單易懂。
參考文獻:
[1]崔紫騰,等.基于AT89C52單片機的數字秒表設計[J].智能處理與應用,2016(10):668-73.
[2]郭海麗.基于單片機的數字秒表設計[J].通用元器件,2012,14(1):26-29.