摘要:文中設計了一種以單片機為控制核心的
數字秒表。該數字秒表采用C語言開發,通過數碼管顯示計時結果。對系統硬件電路和軟件進行了設計,以Proteus和Keil軟件為開發平臺,對數字秒表進行了仿真。仿真結果表明該數字秒表精度高、穩定性強。
當今,計算機技術帶來了科研和生產重大飛躍,微型計算機的應用已滲透到生產、生活的各個方面。單片微型計算機具有體積小、價格低、功能強的特點,隨著性能不斷提高,其適用范圍愈來愈寬,在計算機應用領域占有重要的地位。秒表應用于我們生活、工作、運動等需要計時的方面。秒表的數字化給人們生產生活帶來了極大的方便,而且大大的擴展了秒表原先的功能。它由剛開始的機械式秒表發展到今天所常用的數字式秒表。秒表的計時精度越來越高,功能越來越多,構造也日益復雜。本文結合單片計算機,實現了一種基于AT89C52單片機的數字秒表的設計,并且利用Proteus和Keil軟件實現了仿真。
1、系統設計方案
1.1系統設計要求
?。?)秒表計時zui大值為59分59.99秒。
?。?)秒表由六位七段LED數碼管顯示,其中高兩位顯示“分”,中間兩位顯示“秒”,低兩位顯示“0.01”秒。
?。?)秒表擁有計時、暫停、清零功能。
(4)設置三個功能鍵:鍵1開始計時,鍵2暫停計時,鍵3清零計時。
1.2總體方案設計
數字秒表系統主要完成對計時實時的顯示,精度達到0.01s,以及通過功能鍵可以使當前計時暫停或清零。系統主要包括時鐘電路、復位電路、按鍵電路以及數碼管顯示電路。
系統采用六個共陽極數碼管,其中八位數據口與單片機的P0口通過74LS245雙向總線收發器相接,以增加P0的驅動能力。6個片選信號連接單片機P2口的低六位。該電路可滿足對計時時間的顯示,zui小顯示單位為0.01s,溢出則向前進位,顯示時間的范圍為0到59分59.99秒。3個功能鍵連接到P3口的低三位,控制系統的計時、暫停和清零。系統的整體組成框圖如圖1所示。
2、硬件電路設計
2.1單片機的選型
由于本系統只需要單片機完成對計時的顯示以及處理定時/計數的中斷,對于I/O資源以及處理速度無特殊要求,所以選擇Atmel公司生產的AT89C52單片機。AT89C52增加了在線調試功能,程序可以通過JTAG接口下載、調試和固化,可實現實時仿真和在線編程或在系統編程,具有通過網絡進行升級、維護的功能。
采用MSC-51系列的單片機相比有兩大優勢:(1)片內程序存儲器采用快閃存儲器,使程序的寫入方便,還可任意的擦寫1000次,使開發更為方便。(2)提供了更小的芯片,使整個硬件電路的體積更小。本設計采用了MSC-51系列89C52單片機,具有程序加密功能且物美價廉,經濟實用。
2.2時鐘電路
單片機工作的時間基準是由時鐘電路提供的。在單片機的XTAL1和XTAL2兩個管腳,接一只晶振及兩只電容就構成了單片機的時鐘電路。時鐘電路如圖2所示。電路中,電容器C1和C2對振蕩頻率有微調作用,通常?。?0±10)pF,本設計選用30pF。電路中的品振采用石英晶體震蕩器,晶振頻率選擇12MHz。石英晶體震蕩器具有非常好的頻率穩定性和抗外界干擾的能力。通過基準頻率來控制電路中的頻率的準確性。
2.3復位電路
單片機復位是使CPU和系統中的其他功能部件都處在一個確定的初始狀態,并從這個狀態開始工作。無論是在單片機剛開始接上電源時,還是斷電后或者發生故障后都要復位。89系列單片機的復位信號是從RST引腳輸入到芯片的施密特觸發器中的。當系統處于正常工作狀態時,且振蕩器穩定后,如果RST引腳有一個高電平并維持2個機器周期(24個振蕩周期),則CPU就可響應并且將系統復位。復位分為手動復位和上電復位。系統復位電路如圖3所示。
2.4數碼管顯示電路
本系統使用了6個共陽極數碼管、設計LED顯示驅動是一個非常重要的問題,顯示電路由LED顯示器、段驅動電路和位驅動電路組成。由于單片機的并行口驅動電流太小,不能直接驅動LED顯示器,段驅動電路通過74LS245雙向總線收發器使P0口與數碼管的八段相連,可增加P0的驅動能力。位驅動電路通過六只NPN三極管驅動使P2口的低六位作為位選信號,使之產生足夠大的電流,來驅動LED達到足夠的亮度,顯示器才能正常工作。如果驅動電路能力差,即驅動電流過小,數碼管顯示亮度不夠,而驅動電路驅動電流太大容易損壞數碼管。
LED顯示器顯示控制方式有兩種:靜態和動態。本設計方案選擇的是動態控制方式。由于一位數據的顯示是由段碼和位碼信號共同配合完成的,因此,要同時考慮段和位的驅動能力,而且段的驅動能力決定位的驅動能力。
2.5按鍵電路
本系統設置3個功能按鍵分別為KEY1、KEY2和KEY3,其中KEY1是開始按鍵,與P3.0相連,按下時數碼管開始計時;KEY2是停止按鍵,與P3.1相連,按下時數碼管停止計時:KEY3是清零按鍵,與P3.2相連,按下時數碼管全部清零。當數碼管計時時,不能直接按清零按鍵,只能按停止按鍵才能停止,再按清零按鍵全部顯示初始化0。
3、系統軟件設計
系統軟件由主程序模塊、延時模塊、鍵盤掃描程序模塊以及數碼管驅動程序模塊組成。
本設計中,計時采用定時器T0中斷完成,其余狀態循環調用顯示子程序,當功能按鍵按下時,轉入相應功能程序。其主程序流程圖如圖4所示。
4、仿真結果
程序在KeiluVision3環境下編寫,編譯通過后生成.hex文件加載到Proteus下可正常運行。程序剛運行前數碼管顯示初值為0000.00,按下鍵KEY1系統開始計時,程序中每0.01s進入一次定時中斷。在程序運行過程中若按下鍵KEY2系統暫停計時,數碼管顯示計時截至狀態;若按下鍵KEY3,數碼管清零。圖5為鍵KEY1抬起、鍵KEY2按下的狀態。
5、結束語
本文利用AT89C52單片機設計了具有計時開始、暫停及清零功能的數字秒表,計時zui大值為59分59.99秒,計時精度為0.01秒。利用Proteus和Keil軟件進行了仿真,達到了預期的效果。整體電路的計時精度高,電路結構簡單,抗*力強,具有廣泛的應用前景。