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