張翠云
單片機相當(dāng)于微型計算機。因為它具有體積小、質(zhì)量輕、價格便宜的特點,所以為應(yīng)用和開發(fā)提供了便利條件。單片機已應(yīng)用在生活的方方面面,如智能儀表、家用電器等。秒表是一種常用的計時儀器,比如在實驗室、智力對抗比賽、運動場等場合,就會經(jīng)常用到秒表。高精度數(shù)字化秒表的出現(xiàn),給人們的生活提供了方便,已經(jīng)取代了傳統(tǒng)的機械秒表[1-3]。本文結(jié)合單片機,設(shè)計了一種基于AT89C51單片機的精度為0.01 s的數(shù)字秒表,并且在仿真軟件Proteus環(huán)境下,實現(xiàn)了所設(shè)計秒表的各種功能。
(1)秒表計時范圍00.00秒~60.00秒。
(2)顯示部分采用四位七段數(shù)碼管,其中前兩位顯示“10秒、秒”,后兩位顯示“0.1秒、0.01秒”。
(3)秒表具有功能:“開始”、“暫停/繼續(xù)”、“復(fù)位”。
(4)鍵盤設(shè)置:鍵1→開始計時;鍵2→暫停/繼續(xù)計時;鍵3→復(fù)位,清零計時。
本數(shù)字秒表設(shè)計要對時間實行實時計時,精度達到0.01秒,并且通過功能鍵進行開始計時、暫停/繼續(xù)計時、復(fù)位計時。系統(tǒng)主要包括時鐘電路、復(fù)位電路、鍵盤電路、顯示電路。系統(tǒng)的整體組成框圖如圖1所示。
圖1 系統(tǒng)整體組成框圖
圖2 秒表硬件電路
數(shù)碼管顯示有靜態(tài)顯示和動態(tài)顯示,靜態(tài)顯示程序結(jié)構(gòu)簡單,顯示穩(wěn)定,但是占用端口比較多;動態(tài)顯示程序復(fù)雜,但是所使用的端口比較少,可以節(jié)省單片機的I/O口。本系統(tǒng)數(shù)碼管顯示采用動態(tài)顯示,其中段碼通過470Ω限流電阻與單片機P2口相接,四位位選通過PNP三極管與單片機P1口的P1.3、P1.2、P1.1、P1.0相連接,以增加P1口的驅(qū)動能力。三個功能鍵一端接在P3口的P3.2(開始)、P3.1(暫停/繼續(xù))、P3.0(復(fù)位),另一端接地,實現(xiàn)系統(tǒng)的開始、暫停/繼續(xù)、復(fù)位功能。秒表的硬件設(shè)計電路如圖2所示。
軟件設(shè)計分兩部分,一部分是按鍵程序設(shè)計;另一部分是0.01秒、0.1秒、秒、10秒程序設(shè)計。
圖3 按鍵程序設(shè)計流程圖
按鍵功能有:開始、暫停(繼續(xù))、復(fù)位。這三個按鍵一端 分 別 接 在 P3.0、P3.1、P3.2,另外一端接地。單片機上電,數(shù)碼管顯示00.00,按下“開始”按鈕,開始以0.01秒為單位計時,按下“暫停(繼續(xù))”按鈕,數(shù)碼顯示停在當(dāng)前計時置,比如“23.57”, 如 果 需 要 從“00.00”開始計時,按下復(fù)位鍵;如果需要繼續(xù)在“23.57”的基礎(chǔ)上開始計時,再次按下“暫停(繼續(xù))”按鈕,當(dāng)數(shù)碼管時間到“60.00”時,按下“開始”按鈕重新開始計時。按鍵程序設(shè)計流程圖如圖3所示。
圖4 0.01秒、0.1秒、秒、十秒程序設(shè)計流程圖
該電路的最小計時單位為0.01秒,溢出向高位進位,最大計時值60.00秒。在進行軟件設(shè)計時,采用0組寄存器R0、R1、R2、R3中數(shù)值來判斷0.01秒、0.1秒、秒、10秒是否向高位進位。初始化R0、R1、R2、R3中數(shù)值都為零。每經(jīng)過0.01秒,R0+1→R0;經(jīng)過0.1秒,R1+1→R1;經(jīng)過1秒,R2+1→R2;經(jīng)過10秒,R3+1→R3。具體0.01秒、0.1秒、秒、10秒程序設(shè)計流程圖如圖4所示。
本設(shè)計通過軟件prote?us進行仿真,以驗證設(shè)計的可靠性。Proteus軟件是由英國Labcenter公司開發(fā)的,是目前世界上最先進最完善的電路設(shè)計與仿真平臺之一。J.Proteus仿真軟件具有國際通用的虛擬儀器及電子元器件庫,可以仿真模擬電路、數(shù)字電路,以及數(shù)字、模擬混合電路[4-6],還能仿真單片機外圍器件[7-8]。
啟動【Proteus】;選擇【System】,進行頁面和其他參數(shù)的設(shè)置;選擇【Library】—拾取元件來進行元件的選取和布局,元件的初步布局,連線,完成電路整體布局[5-6]。
(1)單片機上電,數(shù)碼管顯示“00.00”,按下“開始”按鈕,開始計時,按下“暫停(繼續(xù))”按鈕,數(shù)碼管計時停在當(dāng)前數(shù)值,比如“23.59”。仿真結(jié)果如圖5所示。
(2)此時,按下“復(fù)位”按鈕,數(shù)碼管顯示“00.00”,重新開始從零計時,如果按下“暫停(繼續(xù))”按鈕,數(shù)碼管從23.59秒開始計時直到59.99秒→60.00秒。仿真結(jié)果如圖6所示。
圖5 “暫?!卑粹o仿真結(jié)果
圖6 “繼續(xù)”按鈕仿真結(jié)果
本文從硬件設(shè)計和軟件編程兩方面詳盡地介紹了基于單片機的智能秒表控制系統(tǒng)的設(shè)計。并通過Proteus軟件仿真整體電路系統(tǒng),仿真結(jié)果驗證了該秒表設(shè)計原理正確。與普通電子秒表系統(tǒng)相比,本設(shè)計除帶有計時開始、暫停(繼續(xù))和復(fù)位功能以外,另外實現(xiàn)了0.01 s高精度的計時功能,并且硬件結(jié)構(gòu)緊湊、簡單和軟件設(shè)計靈活,宜用電池作為電源,因此具有一定的推廣和使用價值。然而不足的是:單片機AT89C51有32個并行I/O引腳,本設(shè)計只用到了15個引腳,所以其功能還有較大的擴展空間。