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