高文慶 呂英英
摘要:文中設計了一種以AT89C51單片機為核心的數(shù)字秒表。該秒表采用匯編語言為開發(fā)工具,通過數(shù)碼管顯示計時結果,并利用Proteus和Keil軟件為平臺對系統(tǒng)進行了仿真,達到了預期的效果。
關鍵詞:單片機;數(shù)字秒表;匯編語言;仿真
中圖分類號:TP368.1文獻標識碼:A文章編號:1009-3044(2012)22-5344-03
Digital Stopwatch Based on AT89C51
GAO Wen-qing, LV Ying-ying
(Faculty of Information Engineering and Automation, Kunming University of Science and Technology, Kunming 650051, China)
Abstract: The article designed a digital stopwatch based on AT89C51.The digital stopwatch used the Assembly language to develop, nixie tube was used to show, and the system was simulated by Proteus and Keil, which was up to the expectation effect.
Key words: singlechip; digital stopwatch; assembly language; simulate
1概述
單片機是一種集成電路芯片,是采用超大規(guī)模集成電路技術把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器或計時器等功能集成到一塊硅片上構成的一個小而完善的微型計算機系統(tǒng)。單片機與編程語言的結合可以快速高效的實現(xiàn)各種功能,該文結合單片機設計實現(xiàn)了一種基于AT89C51單片機的數(shù)字秒表。
2系統(tǒng)概述
2.1設計任務
數(shù)字秒表設計由單片機AT89C51、數(shù)碼管、開關、電阻、電容等部分組成。其功能要求是用AT89C51設計一個2位LED數(shù)碼顯示的“秒表”,顯示時間為00-99秒,每秒自動加一。另外還設計了一個“開始”按鍵、一個“復位”按鍵和一個“暫?!卑存I。按“開始”按鍵,開始計數(shù),數(shù)碼管顯示從00開始每秒自動加一;按“復位”按鍵,系統(tǒng)清零,數(shù)碼管顯示00;按“暫?!卑存I,系統(tǒng)暫停計數(shù),數(shù)碼管顯示當時的計數(shù)。
2.2總體方案
圖1系統(tǒng)整體設計
系統(tǒng)主要有三部分構成:按鍵控制信號,單片機軟件處理,數(shù)碼管顯示。電路運行時,由開關按鍵決定其運行方式,經(jīng)過單片機內(nèi)部的程序進行相應的處理,在數(shù)碼管上顯示出來。利用12M晶振的一個機器周期為1微秒,通過循環(huán)產(chǎn)生1秒時間延遲,掃描單片機中所存放的時間值(可正記時,也可倒計時),并通過輸出顯示在數(shù)碼管上。此外,數(shù)碼管各段連接了上拉電阻,是為了保證引腳外接的按鍵在未按下時,作為電流負載一直保持引腳為低電平。系統(tǒng)整體設計如圖1所示。
3數(shù)字秒表的proteus軟件仿真電路設計
3.1整體仿真電路
Proteus軟件仿真設計如圖2所示。
圖2系統(tǒng)Proteus軟件仿真圖
3.2 AT89C5l單片機和數(shù)碼管顯示電路的接口設計
使用動態(tài)顯示電路接法,LED燈采用共陽極數(shù)碼管,電路中采用P0口輸出,并聯(lián)控制兩個數(shù)碼管的8個段選控制端,P2.6、P2.7作為分別采用兩個控制LED數(shù)碼管的位選控制端,其中P2.6接顯示個位數(shù),P2.7接十位數(shù),P0.0—P0.7對應了兩位數(shù)碼管的a,b,c,d,e, f,g。
3.3按鍵控制信號
三個按鍵采用獨立式鍵盤接法,開始按鍵接P3.5,暫停按鍵接P3.6,清零按鍵接P3.7,低電平有效,三個按鍵功能均在子程序中顯示。定時器0中斷程序主要是延時程序。
3.4其他管腳的設計
單片機中的Vss端接地,Vcc端接+5V電源,另外,三極管發(fā)射極端也接+5V電源,保證數(shù)碼管有足夠的電源供應。
圖3程序設計流程圖
4計時器的軟件程序設計
軟件設計的思路為:在這個復雜的程序中,先根據(jù)設計的總體要求劃分出各功能程序模塊,分別確定主程序、子程序以及中斷服務程序結構,并對各程序模塊占用的資源進行統(tǒng)一的調(diào)配,最后根據(jù)流程圖繪制具體的程序。因此在這個秒表程序中可劃分為主程序、鍵盤控制、秒表計時程序三大模塊。其中主程序完成初始化作用,動態(tài)顯示程序,鍵盤控制程序,秒表計時程序等,延時程序由定時器中斷服務子程序構成。
主程序:即初始化程序,用EQU命令首先對三個按鍵進行了定義,規(guī)定了堆棧指針和數(shù)據(jù)指針的首地址,對定時器進行設定,選用定時器0為工作方式1,50ms為定時時間,則要定時1s可以循環(huán)20次,設置中斷程序的入口,并開中斷EA,ET0等。
子程序:包括按鍵功能子程序和顯示子程序。按鍵子程序?qū)θ齻€按鍵功能進行設定,其中P3.5口起到開始的功能,P3.6口連接的按鍵可以控制數(shù)碼管的進度,P3.7對數(shù)碼管數(shù)字進行復位,使數(shù)碼管清零。三個按鍵均為低電平有效,JB命令先判斷按鍵是否按下,若按下則跳轉(zhuǎn)到顯示子程序,JNB命令判斷按鍵按下后是否彈起,若彈起來就執(zhí)行開始、暫停、清零等功能。顯示子程序:定義了P2.6、P2.7兩個位選口,在單片機輸出時,先選擇字位選口,然后在所在的位口上進行字形選擇,選擇要點亮的字形。
中斷程序:中斷程序即定時器延時程序,當中斷來臨時,定時器重新裝入初值,判斷是否循環(huán)了20次,若循環(huán)20次說明定時器延時到達1s,就進行加一運算。程序設計流程圖如圖3所示。
重要程序段說明:
將0到99的數(shù)據(jù)通過對10整除和對10求余,將數(shù)據(jù)的個位和十位分開。
MOV A,R4
MOV B,#10
DIV AB;當前值除以10
MOV 40H,A;得出的商送給十位
MOV 41H,B;得出的余數(shù)送給個位
這段程序是將要顯示的數(shù)字分別放到兩個數(shù)碼管上,使兩個數(shù)碼管分別顯示十位和個位數(shù)字。
5結論
該文使用AT89C51單片機設計了一款具有計時開始、暫停、復位功能的數(shù)字秒表,利用Proteus和Keil軟件進行了仿真及調(diào)試,達到了期望的效果。系統(tǒng)結構簡單,抗干擾能力強,具有較好的應用前景。
參考文獻:
[1]李朝青.單片機原理及接口技術[M].北京:北京航天航空大學出版社,2005.
[2]王爽.匯編語言[M].北京:清華大學出版社,2008.
[3]蔣輝平,周國雄.基于Proteus的單片機系統(tǒng)設計與仿真實例[M].北京:機械工業(yè)出版社,2009.
[4]孫凌燕,黃允千.Proteus與Keil軟件的整合在單片機實驗開發(fā)中的應用[J].實驗室研究與探索,2008,27(4):59-68.