基于單片機的數(shù)字電子秒表的設(shè)計與實現(xiàn)_第1頁
基于單片機的數(shù)字電子秒表的設(shè)計與實現(xiàn)_第2頁
基于單片機的數(shù)字電子秒表的設(shè)計與實現(xiàn)_第3頁
基于單片機的數(shù)字電子秒表的設(shè)計與實現(xiàn)_第4頁
基于單片機的數(shù)字電子秒表的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、摘要摘要 近年來隨著科技的飛速發(fā)展,單片機的應(yīng)用正在不斷的走向深入。本文闡述了基于 單片機的數(shù)字電子秒表設(shè)計。本設(shè)計主要特點是計時精度達(dá)到 0.01s,解決了傳統(tǒng)的由于 計時精度不夠造成的誤差和不公平性,是各種體育競賽的必備設(shè)備之一。 本設(shè)計的數(shù)字電子秒表系統(tǒng)采用 8051 單片機為中心器件,利用其定時器/計數(shù)器定 時和記數(shù)的原理,結(jié)合顯示電路、LED 數(shù)碼管以及外部中斷電路來設(shè)計計時器。將軟、硬 件有機地結(jié)合起來,使得系統(tǒng)能夠?qū)崿F(xiàn)五位 LED 顯示,顯示時間為 099.99 秒,計時精 度為 0.01 秒,能正確地進(jìn)行計時,同時能記錄一次時間,并在下一次計時后對上一次計 時時間進(jìn)行查詢。其中

2、軟件系統(tǒng)采用匯編語言編寫程序,包括顯示程序,定時中斷服務(wù), 外部中斷服務(wù)程序,延時程序等,并在 WAVE 中調(diào)試運行,硬件系統(tǒng)利用 PROTEUS 強大的 功能來實現(xiàn),簡單切易于觀察,在仿真中就可以觀察到實際的工作狀態(tài)。 關(guān)鍵字關(guān)鍵字:單片機;數(shù)字電子秒表;仿真 Abstract With the rapid development of science and technology in recent years, SCM applications are constant-depth manner. In this paper, based on single chip design of

3、 digital electronic stopwatch. The main characteristics of this design timing accuracy of 0.01s, to solve the traditional result of a lack accuracy due to timing errors and unfair, and is a variety of sports competitions, one of the essential equipment. In addition the hardware part of the set View

4、button on the stopwatch can be the last time to save time for user queries. The design of the multi-function stopwatch system uses STC89C52 microcontroller as the central device, and use its timer / counter timing and the count principles, combined with display circuit, LED digital tube, as well as

5、the external interrupt circuit to design a timer. The software and hardware together organically, allowing the system to achieve two LED display shows the time from 0 to 99.99 seconds, Timing accuracy of 0.01 seconds, Be able to correctly time at the same time to record a time, and the next time aft

6、er the last time the time to search automatically added a second in which software systems using assembly language programming, including the display program, timing, interrupt service, external interrupt service routine, delay procedures, key consumer shaking procedures, and WAVE in the commissioni

7、ng, operation, hardware system uses to achieve PROTEUS powerful, simple and easy to observe the cut in the simulation can be observed on the actual working condition. Keyword:LED display;High-precision stopwatch;8051 目 錄 摘 要.I Abstract .II 緒 論.1 1 硬件設(shè)計.3 1.1 總體方案的設(shè)計.3 1.2 單片機的選擇.4 1.3 顯示電路的選擇與設(shè)計.7 1

8、.4 按鍵電路的選擇與設(shè)計.10 1.5 時鐘電路的選擇與設(shè)計.11 1.6 復(fù)位電路的選擇與設(shè)計.13 1.7 系統(tǒng)總電路的設(shè)計.15 2 軟件設(shè)計.17 2.1 程序設(shè)計思想.17 2.2 系統(tǒng)資源的分配.17 2.3 主程序設(shè)計.18 2.4 中斷程序設(shè)計.19 3 數(shù)字電子秒表的安裝與調(diào)試.25 3.1 軟件的仿真與調(diào)試.25 3.2 硬件的安裝與調(diào)試.25 3.3 系統(tǒng)程序的燒錄.26 3.4 數(shù)字電子秒表的精度調(diào)試.27 結(jié) 論.28 參考文獻(xiàn).28 附錄 A 程序.30 附錄 B 電路原理圖.35 緒 論 秒表計時器是電器制造,工業(yè)自動化控制、國防、實驗室及科研單位理想的計時 儀

9、器,它廣泛應(yīng)用于各種繼電器、電磁開關(guān),控制器、延時器、定時器等的時間測試。 2004 年 8 月 28 日 15 點 15 分,中國選手孟關(guān)良/楊文軍在雅典奧運會男子 500 米 劃艇決賽中,以 1 分 40 秒 278 的成績獲得中國在雅典奧運會的第 28 金。這是中國皮 劃艇項目的第一枚奧運金牌,也是中國水上項目在歷屆奧運會上所獲得的第一枚金牌。 孟關(guān)良/楊文軍的成績比獲得銀牌的古巴選手只快了 0.072 秒,以至于兩人在奪冠之后 還不敢相信。 在現(xiàn)在的體育競技比賽中,隨著運動員的水平不斷提高,差距也在不斷縮小。有 些運動對時間精度的要求也越來越高,有時比賽冠亞軍之間的差距只有幾毫秒,因此

10、 就需要高精度的秒表來記錄成績。 本設(shè)計利用 8051 單片機的定時器/計數(shù)器定時和記數(shù)的原理,使其能精確計時。利 用中斷系統(tǒng)使其能實現(xiàn)開始暫停的功能。P0 口輸出段碼數(shù)據(jù),P2.0-P2.4 口作列掃描輸 出,P1.1、P3.2、P3.3、P2.5 分別接四個按鈕開關(guān),分別實現(xiàn)開始、暫停、清零和查看 上次時間的功能。顯示電路由五位共陰極數(shù)碼管組成。 初始狀態(tài)下計時器顯示 00.00,當(dāng)按下開始鍵時,外部中斷 INT1 向 CPU 發(fā)出中斷 請求,CPU 轉(zhuǎn)去執(zhí)行外部中斷 1 服務(wù)程序,即開啟定時器 T0。計時采用定時器 T0 中 斷完成,定時溢出中斷周期為 1ms,當(dāng)一處中斷后向 CPU 發(fā)

11、出溢出中斷請求,每發(fā)出 一次中斷請求就對毫秒計數(shù)單元進(jìn)行加一,達(dá)到 10 次就對十毫秒位進(jìn)行加一,依次類 推,直到 99.99 秒重新復(fù)位。在計時過程中,只要按下暫停鍵,外部中斷 INT0 向 CPU 發(fā)出中斷請求,CPU 轉(zhuǎn)去執(zhí)行外部中斷 0 服務(wù)程序,即關(guān)閉定時器 T0,調(diào)用顯示程序, 實現(xiàn)暫停功能,同時將此次計時時間存入寄存區(qū)。然后對 P1.1 進(jìn)行掃描。當(dāng) P1.1 按下 時就跳轉(zhuǎn)回主程序。等待下一次計時開始。 在按下暫停鍵時,將此時的計時時間存入中間緩存區(qū),當(dāng)再次按下開始鍵時,則 講中間緩存區(qū)的數(shù)據(jù)轉(zhuǎn)入最終緩存區(qū)。秒表停止后對查看鍵 P2.5 進(jìn)行掃描,P2.5 按下 為低電平時,調(diào)

12、用最終緩存區(qū)的數(shù)據(jù)進(jìn)行顯示,即顯示上一次計時成績。當(dāng) P2.5 位高 電平時,調(diào)用顯示緩存區(qū)的數(shù)據(jù)進(jìn)行顯示,即顯示當(dāng)此計時的成績。根據(jù)以上設(shè)計思 路從而實現(xiàn)數(shù)字電子秒表的計時和查看上一次計時時間的功能。 本文主要內(nèi)容包括三部分:第一部分介紹硬件部分設(shè)計思路及方案;第二部分介 紹了軟件部分的設(shè)計思路和設(shè)計;最后一部分則是整個系統(tǒng)的安裝與調(diào)試過程。 1 硬件設(shè)計 1.1 總體方案的設(shè)計 數(shù)字電子秒表具有顯示直觀、讀取方便、精度高等優(yōu)點,在計時中廣泛使用。本 設(shè)計用單片機組成數(shù)字電子秒表,力求結(jié)構(gòu)簡單、精度高為目標(biāo)。 設(shè)計中包括硬件電路的設(shè)計和系統(tǒng)程序的設(shè)計。其硬件電路主要有主控制器,計 時與顯示電

13、路和回零、啟動和停表電路等。主控制器采用單片機 8051,顯示電路采用 共陰極 LED 數(shù)碼管顯示計時時間。 本設(shè)計利用 8051 單片機的定時器/計數(shù)器定時和記數(shù)的原理,使其能精確計時。 利用中斷系統(tǒng)使其能實現(xiàn)開始暫停的功能。P0 口輸出段碼數(shù)據(jù),P2.0-P2.4 口作列掃描 輸出,P1.1、P3.2、P3.3、P2.5 口接四個按鈕開關(guān),分別實現(xiàn)開始、暫停、清零和查看 上次計時時間功能。電路原理圖設(shè)計最基本的要求是正確性,其次是布局合理,最后 在正確性和布局合理的前提下力求美觀。硬件電路圖按照圖 1.1 進(jìn)行設(shè)計。 控制開關(guān) 位驅(qū)動 六位數(shù)碼管 8051單片機控 制器 圖 1.1 數(shù)字秒

14、表硬件電路基本原理圖 根據(jù)要求知道秒表設(shè)計主要實現(xiàn)的功能是計時和顯示。本設(shè)計中,數(shù)碼管顯示的 數(shù)據(jù)存放在內(nèi)存單元 79H7DH 中。其中 79H 存放毫秒位數(shù)據(jù),7AH 存放十毫秒位數(shù) 據(jù),7BH 存放百毫秒位數(shù)據(jù),7CH 存放秒位數(shù)據(jù),7DH 存放十秒位數(shù)據(jù),每一地址單 元內(nèi)均為十進(jìn)制 BCD 碼。由于采用軟件動態(tài)掃描實現(xiàn)數(shù)據(jù)顯示功能,顯示用十進(jìn)制 BCD 碼數(shù)據(jù)的對應(yīng)段碼存放在 ROM 表中。顯示時,先取出 79H-7dH 某一地址中的數(shù) 據(jù),然后查得對應(yīng)的顯示用段碼,并從 P0 口輸出,P2 口將對應(yīng)的數(shù)碼管選中供電, 就能顯示該地址單元的數(shù)據(jù)值。 最終緩存區(qū)則設(shè)置為 59H-5DH,數(shù)

15、據(jù)存放規(guī)則和 79H-7DH 一樣。分別對應(yīng)存放毫 秒位至十秒位數(shù)據(jù)。與 79H-7DH 存儲區(qū)不一樣的是:59H-5DH 存儲的內(nèi)容為數(shù)字秒表 上一次計時顯示的時間。而 79H-7DH 為當(dāng)前計時時間存儲區(qū)。 計時采用定時器 T0 中斷完成,定時溢出中斷周期為 1ms,當(dāng)一處中斷后向 CPU 發(fā)出溢出中斷請求,每發(fā)出一次中斷請求就對毫秒計數(shù)單元進(jìn)行加一,達(dá)到 10 次就對 十毫秒位進(jìn)行加一,依次類推,直到 99.99 秒重新復(fù)位。 再看按鍵的處理。這四個鍵可以采用中斷的方法,也可以采用掃描的方法來識別。 復(fù)位鍵和查看主要功能在于數(shù)值復(fù)位和查詢上次計時時間,對于時間的要求不是很嚴(yán) 格。而開始和

16、停止鍵則是用于對時間的鎖定,需要比較準(zhǔn)確的控制。因此可以對復(fù)位 和查看按鍵采取掃描的方式。而對開始和停止鍵采用外部中斷的方式。 設(shè)計中包括硬件電路的設(shè)計和系統(tǒng)程序的設(shè)計。其硬件電路主要有主控制器,顯 示電路和回零、啟動、查看、停表電路等。主控制器采用單片機 8051,顯示電路采用 共陰極 LED 數(shù)碼管顯示計時時間,四個按鍵均采用觸點式按鍵。 1.2 單片機的選擇 本課題在選取單片機時,充分借鑒了許多成形產(chǎn)品使用單片機的經(jīng)驗,并根據(jù)自 己的實際情況,選擇了 Intel 公司的 8051。 單片機的外部結(jié)構(gòu) 8051 單片機采用 40 引腳的雙列直插封裝方式。圖 1.2 為引腳排列圖, 40 條

17、引腳 說明如下: 主電源引腳 Vss 和 Vcc Vss 接地 Vcc 正常操作時為+5 伏電源 外接晶振引腳 XTAL1 和 XTAL2 XTAL1 內(nèi)部振蕩電路反相放大器的輸入端,是外接晶體的一個引腳。當(dāng)采用 外部振蕩器時,此引腳接地。 XTAL2 內(nèi)部振蕩電路反相放大器的輸出端。是外接晶體的另一端。當(dāng)采用外 部振蕩器時,此引腳接外部振蕩源。 圖 1.2 8051 單片機引腳圖 控制或與其它電源復(fù)用引腳 RST/VPD,ALE/,和/VppPROGPSENEA RST/VPD 當(dāng)振蕩器運行時,在此引腳上出現(xiàn)兩個機器周期的高電平(由低 到高跳變) ,將使單片機復(fù)位在 Vcc 掉電期間,此引腳

18、可接上備用電源,由 VPD 向內(nèi) 部提供備用電源,以保持內(nèi)部 RAM 中的數(shù)據(jù)。 ALE/正常操作時為 ALE 功能(允許地址鎖存)提供把地址的低字節(jié)鎖PROG 存到外部鎖存器,ALE 引腳以不變的頻率(振蕩器頻率的 1/6)周期性地發(fā)出正脈沖 信號。因此,它可用作對外輸出的時鐘,或用于定時目的。對于 EPROM 型單片機, 在 EPROM 編程期間,此引腳接收編程脈沖(功能)PROG 外部程序存儲器讀選通信號輸出端,在從外部程序存儲取指令(或數(shù)PSEN 據(jù))期間,在每個機器周期內(nèi)兩次有效。同樣可以驅(qū)動八 LSTTL 輸入。PSENPSEN /Vpp、/Vpp 為內(nèi)部程序存儲器和外部程序存儲器

19、選擇端。當(dāng)/VppEAEAEA 為高電平時,訪問內(nèi)部程序存儲器,當(dāng)/Vpp 為低電平時,則訪問外部程序存儲器。EA 對于 EPROM 型單片機,在 EPROM 編程期間,此引腳上加 21 伏 EPROM 編程電源 (Vpp) 。 輸入/輸出引腳 P0.0 - P0.7,P1.0 - P1.7,P2.0 - P2.7,P3.0 - P3.7。 P0 口(P0.0 - P0.7)是一個 8 位漏極開路型雙向 I/O 口,在訪問外部存儲器時, 它是分時傳送的低字節(jié)地址和數(shù)據(jù)總線,P0 口能以吸收電流的方式驅(qū)動八個 LSTTL 負(fù)載。 P1 口(P1.0 - P1.7)是一個帶有內(nèi)部提升電阻的 8 位

20、準(zhǔn)雙向 I/O 口。能驅(qū)動 (吸收或輸出電流)四個 LSTTL 負(fù)載。 P2 口(P2.0 - P2.7)是一個帶有內(nèi)部提升電阻的 8 位準(zhǔn)雙向 I/O 口,在訪問外 部存儲器時,它輸出高 8 位地址。P2 口可以驅(qū)動(吸收或輸出電流)四個 LSTTL 負(fù)載。 P3 口(P3.0 - P3.7)是一個帶有內(nèi)部提升電阻的 8 位準(zhǔn)雙向 I/O 口。能驅(qū)動 (吸收或輸出電流)四個 LSTTL 負(fù)載。 8051 具有以下標(biāo)準(zhǔn)功能:8k 字節(jié) Flash,256 字節(jié) RAM,32 位 I/O 口線, 2 個數(shù) 據(jù)指針,兩個 16 位定時器/計數(shù)器,一個全雙工串行口,片內(nèi)晶振及時鐘電路。另外, 805

21、1 可降至 0Hz 靜態(tài)邏輯操作,支持 2 種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許 RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下, RAM 內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位 為止。CPU 是單片機的核心部件。它由運算器和控制器等部件組成。 (1) 運算器 運算器的功能是進(jìn)行算術(shù)運算和邏輯運算??梢詫Π胱止?jié)(4 位) 、單字節(jié)等數(shù)據(jù) 進(jìn)行操作。例如能完成加、減、乘、除、加 1、減 1、BCD 碼十進(jìn)制調(diào)整、比較等算 術(shù)運算和與、或、異或、求補、循環(huán)等邏輯操作,操作結(jié)果的狀態(tài)信息送至狀態(tài)寄存 器。8051 運算器還包含有一個布爾

22、處理器,用來處理位操作。 (2) 程序計數(shù)器 PC 程序計數(shù)器 PC 用來存放即將要執(zhí)行的指令地址,共 16 位,可對 64K 程序存儲器 直接尋址。執(zhí)行指令時,PC 內(nèi)容的低 8 位經(jīng) P0 口輸出,高 8 位經(jīng) P2 口輸出。 (3) 令寄存器 指令寄存器中存放指令代碼。CPU 執(zhí)行指令時,由程序存儲器中讀取的指令代碼 送入指令寄存器,經(jīng)譯碼后由定時與控制電路發(fā)出相應(yīng)的控制信號,完成指令功能。 1.3 顯示電路的選擇與設(shè)計 對于數(shù)字顯示電路,通常采用液晶顯示或數(shù)碼管顯示。本設(shè)計的顯示電路采用 7 段 數(shù)碼管作為顯示介質(zhì)。 數(shù)碼管顯示可以分為靜態(tài)顯示和動態(tài)顯示兩種。由于本設(shè)計需要采用五位數(shù)碼

23、管 顯示時間,如果靜態(tài)顯示則占用的口線多,硬件電路復(fù)雜。所以采用動態(tài)顯示。 8051 位 驅(qū) 動段 驅(qū) 動 六位數(shù)碼管 圖 1.3 顯示電路基本原理圖 動態(tài)顯示是一位一位地輪流點亮各位數(shù)碼管,這種逐位點亮顯示器的方式稱為位 掃描。通常各位數(shù)碼管的段選線相應(yīng)并聯(lián)在一起,由一個 8 位的 I/O 口控制;各位的 公共陰極位選線由另外的 I/O 口線控制。動態(tài)方式顯示時,各數(shù)碼管分時輪流選通, 要使其穩(wěn)定顯示必須采用掃描方式,即在某一時刻只選通一位數(shù)碼管,并送出相應(yīng)的 段碼,在另一時刻選通另一位數(shù)碼管,并送出相應(yīng)的段碼,依此規(guī)律循環(huán),即可使各 位數(shù)碼管顯示將要顯示的字符,雖然這些字符是在不同的時刻分

24、別顯示,但由于人眼 存在視覺暫留效應(yīng),只要每位顯示間隔足夠短就可以給人同時顯示的感覺。 數(shù)碼顯示管分為共陽數(shù)碼管和共陰數(shù)碼管兩種 共陽極數(shù)碼管的 8 個發(fā)光二極管的陽極(二極管正端)連接在一起,如圖 1.4(b),通常,公共陽極接高電平(一般接電源),其它管腳接段驅(qū)動電路輸出端。 當(dāng)某段驅(qū)動電路的輸出端為低電平時,則該端所連接的字段導(dǎo)通并點亮,根據(jù)發(fā)光字 段的不同組合可顯示出各種數(shù)字或字符。此時,要求段驅(qū)動電路能吸收額定的段導(dǎo)通 電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。 共陰極數(shù)碼管的 8 個發(fā)光二極管的陰極(二極管負(fù)端)連接在一起,如圖(c), 通常,公共陰極接低電平(一

25、般接地),其它管腳接段驅(qū)動電路輸出端,當(dāng)某段驅(qū)動 電路的輸出端為高電平時,則該端所連接的字段導(dǎo)通并點亮,根據(jù)發(fā)光字段的不同組 合可顯示出各種數(shù)字或字符。此時,要求段驅(qū)動電路能提供額定的段導(dǎo)通電流,還需 根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。 圖 1.4 (a)數(shù)碼管引腳圖 (b)共陽極內(nèi)部結(jié)構(gòu)圖 (c)共陰極內(nèi)部結(jié)構(gòu)圖 本設(shè)計采用共陰極數(shù)碼顯示管做顯示電路,由于采用的是共陰的數(shù)碼顯示管,所 以只要數(shù)碼管的 a、b、c、d、e、f、g、h 引腳為高電平,那么其對應(yīng)的二極管就會發(fā) 光,使數(shù)碼顯示管顯示 09 的編碼見表 1.1。 表 1.1 共陰極數(shù)碼顯示管字型代碼 字型共陰極代碼字型

26、共陰極代碼 03FH56DH 106H67DH 25BH707H 34FH87FH 466H96FH 動態(tài)顯示電路由顯示塊、字形碼驅(qū)動模塊、字位驅(qū)動模塊三部分組成。如圖 1.3 所 示為本系統(tǒng)的 5 位 LED 動態(tài)顯示器接口電路。圖中,5 個數(shù)碼管的 8 段段選線分別與 外接上拉電阻的單片機 P0 口對應(yīng)相連,而 5 個數(shù)碼管的位控制端則和 NPN 型三極管 的集電極相連接。單片機的 P2.0P2.4 口則分別對應(yīng)數(shù)碼顯示管的最低位到最高位, P2.0P2.4 口分別和五個 NPN 型三極管的基極相連,做三極管導(dǎo)通的控制端,而 NPN 型三極管選用 9013 型三極管。根據(jù) 9013 的資料

27、顯示:其耐壓值為 40V,最大功率為 0.65W,最大電流為 0.5A,電氣性能完全滿足本設(shè)計的要求。另外數(shù)碼管顯示是采用 動態(tài)顯示,所以對三極管的開關(guān)頻率有一定的要求。根據(jù)電子秒表的設(shè)計計算可知動 態(tài)顯示的頻率最高為 3KHz,而 9013 的導(dǎo)通頻率為 150MHz,完全能滿足本設(shè)計的要 求,所以最終選取 9013 三極管最為位控制開關(guān)。 由于數(shù)碼管是有 P0 口來驅(qū)動,它內(nèi)部沒有上拉電阻,作為輸出口時驅(qū)動能力比較 弱,不能點亮數(shù)碼顯示管,因此 P0 口必須接上拉電阻來提高驅(qū)動能力。另外一位共陰 數(shù)碼管的驅(qū)動電流一般為 20mA 左右,如果電流太大容易造成數(shù)碼管損壞,所以也需 要根據(jù)電源的

28、電壓值來確定上拉電阻的大小。如果電阻過小,勢必會形成灌電流過大, 造成單片機 IO 的損壞,如果電阻過大,那么對拉電流沒有太大的影響。電源供電電壓 為 5V,當(dāng)上拉電阻選用 220 電阻時灌電流為 22mA。不會損壞單片機的 I/O 口,同 時也可以為數(shù)碼顯示管起到限制電流的保護(hù)作用。 1.4 按鍵電路的選擇與設(shè)計 本設(shè)計中有四個按鍵,分別實現(xiàn)開始、暫停、復(fù)位和查看功能。這四個鍵可以采 用中斷的方法,也可以采用查詢的方法來識別。對于復(fù)位鍵和查看鍵,主要功能在于 數(shù)值復(fù)位和對上次計時時間的查看,對于時間的要求不是很嚴(yán)格,而開始和暫停鍵主 要用于時間的鎖定,需要比較準(zhǔn)確的控制。因此可以考慮,對復(fù)位

29、鍵和查看鍵采用查 詢的方式,而對于開始和暫停鍵采用外部中斷。四個按鍵均采用低電平有效,具體電 路連接圖如圖 1.5 所示。 當(dāng)按鍵沒有按下時,單片機的 I/O 口直接連接電源,因此需要接上拉電阻來進(jìn)行 限流,本設(shè)計中選取阻值為 2k 的電阻作為上拉電阻,根據(jù)計算可知此時的灌電流為 2.5mA,查看 8051 的資料得知次電流在安全范圍內(nèi),符合安全設(shè)計要求。 開始 暫停 復(fù)位 查看 P3.3(INT1) P3.2(INT0) P1.1 P2.5 VCC 圖 1.5 按鍵電路 按鍵電路中由于采用了外部中斷,所以需要用到 P3 口的第二功能。P3 口引腳的 第二功能如表 1.2 表 1.2 P3 口

30、引腳第二功能表 P3 口引腳特殊功能 P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 INT0(外部中斷 0 請求輸入端) P3.3 INT1(外部中斷 1 請求輸入端) P3.4 T0(定時器/計數(shù)器 0 計數(shù)脈沖輸入端) P3.5 T1(定時器/計數(shù)器 1 計數(shù)脈沖輸入端) P3.6 WR(片外數(shù)據(jù)存儲器寫選通信號輸出端) P3.7 RD(片內(nèi)數(shù)據(jù)存儲器讀選通信號輸出端) 1.5 時鐘電路的選擇與設(shè)計 單片機的時鐘信號用來提供單片機內(nèi)各種微操作的時間基準(zhǔn),8051 片內(nèi)設(shè)有一個 由反向放大器所構(gòu)成的振蕩電路,XTAL1 和 XTAL2 分別為振蕩電路的輸入和輸出端

31、, 8051 單片機的時鐘信號通常用兩種電路形式得到:內(nèi)部振蕩方式與外部振蕩方式。外 部方式的時鐘很少用,若要用時,只要將 XTAL1 接地,XTAL2 接外部振蕩器就行。 對外部振蕩信號無特殊要求,只要保證脈沖寬度,一般采用頻率低于 12MHz 的方波信 號。 時鐘發(fā)生器把振蕩頻率兩分頻,產(chǎn)生一個兩相時鐘信號 P1和 P2供單片機使用。P1 在每一個狀態(tài) S 的前半部分有效,P2在每個狀態(tài)的后半部分有效。本設(shè)計采用的內(nèi)部 振蕩方式,內(nèi)部振蕩方式所得的時鐘信號比較穩(wěn)定,實用電路中使用較多。本設(shè)計系 統(tǒng)的時鐘電路如圖 1.4 所示。只要按照圖 1.6 所示電路進(jìn)行設(shè)計連接就能使系統(tǒng)可靠起 振并能

32、穩(wěn)定運行。圖中,電容器 C1 、C2起穩(wěn)定振蕩頻率、快速起振的作用,電容值一 般為 533pF。但在時鐘電路的實際應(yīng)用中一定要注意正確選擇其大小,并保證電路 的對稱性,盡可能匹配,選用正牌的瓷片或云母電容,如果可能的話,溫度系數(shù)盡可 能低。本設(shè)計中采用大小為 30pF 的電容和 12MHz 的晶振。 圖 1.6 內(nèi)部振蕩電路 (4) 時序 8051 典型的指令周期(執(zhí)行一條指令的時間稱為指令周期)為一個機器周期,一 個機器周期由六個狀態(tài)(十二振蕩周期)組成。每個狀態(tài)又被分成兩個時相 P1和 P2。 所以,一個機器周期可以依次表示為 S1P1,S1P2,S6P1,S6P2。通常算術(shù)邏輯操作 在

33、P1時相進(jìn)行,而內(nèi)部寄存器傳送在 P2時相進(jìn)行。 圖 1.7 8051 時序 圖 1.7 給出了 8051 單片機的取指和執(zhí)行指令的定時關(guān)系。這些內(nèi)部時鐘信號不能 從外部觀察到,所用 XTAL2 振蕩信號作參考。在圖中可看到,低 8 位地址的鎖存信號 ALE 在每個機器周期中兩次有效:一次在 S1P2與 S2P1期間,另一次在 S4P2與 S5P1期 間。 對于單周期指令,當(dāng)操作碼被送入指令寄存器時,便從 S1P2開始執(zhí)行指令。如果 是雙字節(jié)單機器周期指令,則在同一機器周期的 S4期間讀入第二個字節(jié),若是單字節(jié) 單機器周期指令,則在 S4期間仍進(jìn)行讀,但所讀的這個字節(jié)操作碼被忽略,程序計數(shù) 器

34、也不加 1,在 S6P2結(jié)束時完成指令操作。圖 1.7 的(a)和(b)給出了單字節(jié)單機器周期 和雙字節(jié)單機器周期指令的時序。 1.6 復(fù)位電路的選擇與設(shè)計 當(dāng) 8051 單片機的復(fù)位引腳 RST(全稱 RESET)出現(xiàn) 2 個機器周期以上的高電平 時,單片機就完成了復(fù)位操作。如果 RST 持續(xù)為高電平,單片機就處于循環(huán)復(fù)位狀態(tài), 而無法執(zhí)行程序。因此要求單片機復(fù)位后能脫離復(fù)位狀態(tài)。而本系統(tǒng)選用的是 12MHz 的晶振,因此一個機器周期為 1s,那么復(fù)位脈沖寬度最小應(yīng)為 2s。在實際應(yīng)用系統(tǒng) 中,考慮到電源的穩(wěn)定時間,參數(shù)漂移,晶振穩(wěn)定時間以及復(fù)位的可靠性等因素,必 ALE 時鐘 S1S4S6

35、S5S3S2 讀操作碼讀操作碼(無效) (a) 1字節(jié) 1周期指令 讀下一指令 S1S4S6S5S3S2 讀操作碼讀第二字節(jié) (b) 2字節(jié) 1周期指令 讀下一指令 S1S4S6S5S3S2 讀操作碼讀操作碼(無效) (c) 1字節(jié) 2周期指令 讀下一指令 S1S4S6S5S3S2 須有足夠的余量。 根據(jù)應(yīng)用的要求,復(fù)位操作通常有兩種基本形式:上電復(fù)位、手動復(fù)位。 上電復(fù)位要求接通電源后,自動實現(xiàn)復(fù)位操作。80C51 單片機的上電復(fù)位 POR(Power On Reset)實質(zhì)上就是上電延時復(fù)位,也就是在上電延時期間把單片機鎖 定在復(fù)位狀態(tài)上。在單片機每次初始加電時,首先投入工作的功能部件是復(fù)

36、位電路。 復(fù)位電路把單片機鎖定在復(fù)位狀態(tài)上并且維持一個延時(記作 TRST) ,以便給予電源 電壓從上升到穩(wěn)定的一個等待時間;在電源電壓穩(wěn)定之后,再插入一個延時,給予時 鐘振蕩器從起振到穩(wěn)定的一個等待時間;在單片機開始進(jìn)入運行狀態(tài)之前,還要至少 推遲 2 個機器周期的延時。 上述一系列的延時,都是利用在單片機 RST 引腳上外接一個 RC 支路的充電時間 而形成的。典型復(fù)位電路如圖 1.8(a)所示,其中的阻容值是原始手冊中提供的。 圖 1.8 上電復(fù)位延時電路 標(biāo)準(zhǔn) 80C51 不僅復(fù)位源比較單一,而且還沒有設(shè)計內(nèi)部上電復(fù)位的延時功能,因 此必須借助于外接阻容支路來增加延時環(huán)節(jié),如圖 1.8

37、(a)所示。其實,外接電阻 R 還是 可以省略的,理由是一些 CMOS 單片機芯片內(nèi)部存在一個現(xiàn)成的下拉電阻 Rrst。例如, 80C51 系列的 Rrst 阻值約為 50200 k;P89V51Rx2 系列的 Rrst 阻值約為 40225 k,如圖 1.9 所示。因此,在圖 1.8(a)基礎(chǔ)上,上電復(fù)位延時電路還可以精簡為圖 1.8(b)所示的簡化電路(其中電容 C 的容量也相應(yīng)減小了) 。 圖 1.9 復(fù)位引腳 RST 內(nèi)部電路 在每次單片機斷電之后,須使延時電容 C 上的電荷立刻放掉,以便為隨后可能在 很短的時間內(nèi)再次加電作好準(zhǔn)備。否則,在斷電后 C 還沒有充分放電的情況下,如果 很快

38、又加電,那么 RC 支路就失去了它應(yīng)有的延遲功能。因此,在圖 1.8(a)的基礎(chǔ)上添 加一個放電二極管 D,上電復(fù)位延時電路就變成了如圖 1.8(c)所示的改進(jìn)電路。也就是 說,只有 RC 支路的充電過程對電路是有用的,放電過程不僅無用,而且會帶來潛在 的危害。于是附加一個放電二極管 D 來大力縮短放電持續(xù)時間,以便消除隱患。二極 管 D 只有在單片機斷電的瞬間(即 VCC 趨近于 0 V,可以看作 VCC 對地短路)正向 導(dǎo)通,平時一直處于反偏截止?fàn)顟B(tài)。 手動復(fù)位要求在電源接通的條件下,在單片機運行期間,如果發(fā)生死機,用按鈕 開關(guān)操作使單片機復(fù)位。單片機要完成復(fù)位,必須向復(fù)位端輸出并持續(xù)兩個

39、機器周期以 上的高電平,從而實現(xiàn)復(fù)位操作。 本設(shè)計采用上電且開關(guān)復(fù)位電路,如圖 1.10 所示上電后,由于電容充電,使 RST 持續(xù)一段高電平時間。當(dāng)單片機已在運行之中時,按下復(fù)位鍵也能使 RST 持續(xù)一段時 間的高電平,從而實現(xiàn)上電且開關(guān)復(fù)位的操作。通常選擇 C=1030F,R=1K,本設(shè)計 采用的電容值為 22F 的電容和電阻為 1K 的電阻。 VCC C3 R4S4 R5200 1K 22uF 接RSET 圖 1.10 單片機復(fù)位電路 1.7 系統(tǒng)總電路的設(shè)計 系統(tǒng)總電路由以上設(shè)計的顯示電路,時鐘電路,按鍵電路和復(fù)位電路組成,只要 將單片機與以上各部分電路合理的連接就組成了系統(tǒng)總電路。系

40、統(tǒng)總電路圖附錄 B 所 示。 8051 單片機為主電路的核心部分,各個電路均和單片機相連接,由單片機統(tǒng)籌和 協(xié)調(diào)各個電路的運行工作。 8051 單片機提供了 XTAL1 和 XTAL2 兩個專用引腳接晶振電路,因此只要將晶振 電路接到兩個專用引腳即可為單片機提供時鐘脈沖,但在焊接晶振電路時要盡量使晶 振電路靠近單片機,這樣可以為單片機提供穩(wěn)定的始終脈沖。 復(fù)位電路同晶振電路,單片機設(shè)有一個專用的硬件復(fù)位接口,并設(shè)置為高電平有 效。 按鍵電路與單片機的端口連接可以由用戶自己設(shè)定,本設(shè)計中軟件復(fù)位鍵和查看 鍵分別接單片機的 P1.1 和 P2.5,均設(shè)為低電平有效。而另外的開始鍵和暫停鍵兩鍵使 用

41、了外部中斷,所以需要連接到單片機的特殊接口 P3.3 和 P3.2,這兩個 I/O 口的第二 功能分別為單片機的外部中斷 1 端口和外部中斷 0 端口。同樣設(shè)置為位低電平有效。 顯示電路由五位數(shù)碼管組成,采用動態(tài)顯示方式,因此有 8 位段控制端和 5 位位 控制端,八位段控制接 P0 口,P0.0P0.7 分別控制數(shù)碼顯示管的 a、b、c、d、e、f、g、dp 顯示,8051 的 P0 口沒有集成上拉電阻,高電平的驅(qū)動能力 很弱,所以需要接上拉電阻來提高 P0 的高電平驅(qū)動能力。五位位控制則由低位到高位 分別接到 P2.0P2.4 口,NPN 三極管 9013 做為位控制端的開關(guān),當(dāng) P2.0

42、P2.4 端口任 意一個端口為高電平時,與其相對應(yīng)的三極管就導(dǎo)通,對應(yīng)的數(shù)碼管導(dǎo)通顯示。 通過以上設(shè)計已經(jīng)將各部分電路與單片機有機的結(jié)合到一起,硬件部分的設(shè)計以 大功告成,剩下的部分就是對單片機的編程,使單片機按程序運行,實現(xiàn)數(shù)字電子秒 表的全部功能。 2 軟件設(shè)計 2.1 程序設(shè)計思想 本設(shè)計采用了匯編語言編寫,匯編語言由于采用了助記符號來編寫程序,比用機 器語言的二進(jìn)制代碼編程要方便些,在一定程度上簡化了編程過程。匯編語言的特點 是用符號代替了機器指令代碼,而且助記符與指令代碼一一對應(yīng),基本保留了機器語 言的靈活性。使用匯編語言能面向機器并較好地發(fā)揮機器的特性,得到質(zhì)量較高的程 序。 匯編

43、語言的特點: (1).面向機器的低級語言,通常是為特定的計算機或系列計算機專門設(shè)計的。 (2).保持了機器語言的優(yōu)點,具有直接和簡捷的特點。 (3).可有效地訪問、控制計算機的各種硬件設(shè)備,如磁盤、存儲器、CPU、I/O 端口 等。 (4).目標(biāo)代碼簡短,占用內(nèi)存少,執(zhí)行速度快,是高效的程序設(shè)計語言。 (5).經(jīng)常與高級語言配合使用,應(yīng)用十分廣泛。 在程序設(shè)計過程中,為了有效地完成任務(wù),把所要完成的任務(wù)精心的分割成若干 個相互獨立但相互又仍可有聯(lián)系的任務(wù)模塊,這些任務(wù)模塊使得任務(wù)變得相對單純, 對外的數(shù)據(jù)交換相對簡單,容易編寫,容易檢測,容易閱讀和維護(hù)。這種程序設(shè)計思 想稱為模塊化程序設(shè)計思想

44、。模塊化結(jié)構(gòu)程序的設(shè)計,可以使系統(tǒng)軟件便于調(diào)試與優(yōu) 化,也使其他人更好地理解和閱讀系統(tǒng)的程序設(shè)計。程序的主要模塊有:主程序、顯 示程序、定時溢出中斷服務(wù)程序、外部中斷服務(wù)程序。 2.2 系統(tǒng)資源的分配 本設(shè)計系統(tǒng)所用到的單片機端口數(shù)比較多,所以在這里將對數(shù)字電子秒表的硬件 資源的大概分配加以說明。片內(nèi) RAM 的分配、各功能鍵的定義以及各端口的分配安排 如表 2.1 所示。 表 2.1 端口的分配安排表 名稱功能描述初始化值 79H-7DH 1ms-10s 位顯示寄存區(qū) 00H 69H-6DH 1ms-10s 位中間寄存區(qū) 00H 59H-5DH 1ms-10s 位最終寄存區(qū) 00H R1-

45、R5 1ms-10s 位溢出計數(shù)區(qū) 定時器 T0控制秒表的最小精度 E018H 外部中斷 INT0停止中斷信號入口 外部中斷 INT1開始中斷信號入口 2.3 主程序設(shè)計 本系統(tǒng)程序主要模塊由主程序、定時中斷服務(wù)程序、外部中斷 0 服務(wù)程序和外部 中斷 1 服務(wù)程序組成。其中主程序是整個程序的主體??梢詫Ω鱾€中斷程序進(jìn)行調(diào)用。 協(xié)調(diào)各個子程序之間的聯(lián)系。 系統(tǒng)(上電)復(fù)位后,進(jìn)入主程序,主程序流程圖如圖 2.1。首先對系統(tǒng)進(jìn)行初始 化,包括設(shè)置各入口地址、中斷的開啟、對各個數(shù)據(jù)緩存區(qū)清“0” 、賦定時器初值, 初始化完畢后,就進(jìn)入數(shù)碼管顯示程序。數(shù)碼管顯示程序?qū)︼@示緩存區(qū)內(nèi)的數(shù)值進(jìn)行 調(diào)用并在

46、數(shù)碼管上進(jìn)行動態(tài)顯示。顯示一次就對 P1.1 和 P2.5 進(jìn)行一次掃描,查詢復(fù)位 鍵 P1.1 是否按下,當(dāng)復(fù)位鍵按下后,程序返回開始,重新對系統(tǒng)進(jìn)行初始化。當(dāng)沒有 按下復(fù)位鍵時,程序則掃描 P2.5 是否按下,當(dāng) P2.5 沒有按下則返回顯示程,不斷地調(diào) 用顯示緩存區(qū)的數(shù)據(jù)進(jìn)行顯示。使用戶能清楚的看到當(dāng)前電子秒表所記錄的時間。當(dāng) 查詢到 P2.5 按下后則跳轉(zhuǎn)到另外一段顯示程序并調(diào)用最紅緩存區(qū)的數(shù)據(jù)進(jìn)行顯示,此 時顯示的時間即為上一次計時的時間。與此同時,在 P2.5 按下后單片機執(zhí)行顯示程序 的同時也在對 P2.5 進(jìn)行掃描,當(dāng) P2.5 斷開后立即跳轉(zhuǎn)回之前的顯示程序顯示當(dāng)前的計 時時

47、間。 在主程序中還進(jìn)行了賦寄存區(qū)的初始值、設(shè)置定時器初值以及開啟外部中斷等操 作,當(dāng)定時時間到后就轉(zhuǎn)去執(zhí)行定時中斷程序。當(dāng)外部中斷有請求則去執(zhí)行外部中斷 服務(wù)程序。并在執(zhí)行完后返回主程序。 開始 賦初始值 數(shù)碼管顯示 復(fù)位鍵P1.1是否按下 是 查看鍵P2.5是否按下 否 否 查看鍵P2.5是否抬起 是 調(diào)用最終緩存區(qū)數(shù) 據(jù)進(jìn)行顯示 否 是 圖 2.1 主程序流程圖 2.4 中斷程序設(shè)計 現(xiàn)在方案中采用了三個中斷,外部中斷 INT0,INT1 和定時中斷 T0。CPU 在響應(yīng)中 斷時,先處理高級中斷,在處理低級中斷,若有多個同級中斷時,則按自然優(yōu)先順序 處理。例如當(dāng) CPU 正在處理一個中斷申

48、請時,有出現(xiàn)了另一個優(yōu)先級比它高的中斷請 求,這是,CPU 就暫停終止對當(dāng)前優(yōu)先級較低的中斷源的服務(wù),轉(zhuǎn)去響應(yīng)優(yōu)先級比它高 的中斷請求,并為其服務(wù)。待服務(wù)結(jié)束,再繼續(xù)執(zhí)行原來較低級的中斷服務(wù)程序。而 當(dāng) CPU 為級別高的終端服務(wù)程序服務(wù)時,如果級別低的中斷發(fā)出中斷請求,此時 CPU 是不會響應(yīng)的,所以為了避免開始和暫停兩個按鍵中的一個出現(xiàn)沒有響應(yīng)的情況,在 進(jìn)行程序編輯時要注意對中斷的使用,避免出現(xiàn)中斷的嵌套。 ,合理分配中斷對本設(shè)計 的實現(xiàn)是至關(guān)重要的。 另外由于數(shù)字式電子秒表的最小精度位 1ms,屬于高精度電子秒表。定時器 T0 的 定時周期也為 1ms,為了使電子秒表暫停鍵按下后 CP

49、U 能馬上去響應(yīng)中斷程序,必須將 暫停的外部中斷級別高于定時計數(shù)器的中斷級別。避免出現(xiàn) CPU 執(zhí)行完定時溢出中斷 程序后再響應(yīng)外部中斷程序,影響計時精度。 8051 的自然優(yōu)先級順序排列如下: 中斷源 最高 外部中斷 0 定時/計數(shù)器 0 溢出中斷 外部中斷 1 定時/計數(shù)器 1 溢出中斷 串行口中斷 最低 數(shù)字式秒表中的兩個按鍵采用了中斷實現(xiàn)功能。開始采用外部中斷 INT0,暫停采 用外部中斷 INT1。另外程序中還用到了定時/計數(shù)器 0 溢出中斷進(jìn)行計時。依據(jù)設(shè)計要 求,暫停的外部中斷 INT1 中斷級別最高,計時的定時/計數(shù)器 0 溢出中斷次之,開始 的外部中斷 INT0 級別最低。

50、(1)外部中斷 0 服務(wù)程序: 外部中斷 0 服務(wù)程序結(jié)合外部 P3.2 停止鍵實現(xiàn)數(shù)字電子秒表的停止功能,具體流 程圖如圖 2.2。 當(dāng)按下 P3.2 停止鍵按下向 CPU 發(fā)出外部中斷請求,CPU 轉(zhuǎn)向外部中斷 0 服務(wù)程 序執(zhí)行,停止定時器。另外將當(dāng)前顯示的時間進(jìn)行一次存儲,存進(jìn)中間寄存區(qū)。最后 中斷返回。 外部中斷0入口 停止定時器T0 一次存儲 中斷返回 圖 2.2 外部中斷 0 服務(wù)程序流程圖 (2)外部中斷 1 服務(wù)程序 外部中斷 1 服務(wù)程序結(jié)合外部 P3.3 停止鍵實現(xiàn)數(shù)字電子秒表的啟動功能,具體流 程圖如圖 2.2。 當(dāng)按下 P3.3 啟動鍵按下向 CPU 發(fā)出外部中斷請求

51、,CPU 轉(zhuǎn)向外部中斷 1 服務(wù)程 序執(zhí)行,啟動定時器。另外進(jìn)行二次存儲,將之前進(jìn)行一次存儲的數(shù)碼管顯示數(shù)據(jù)存 入最終緩存區(qū),避免下次計時暫停時一次存儲將數(shù)據(jù)掩蓋,從而起到保護(hù)數(shù)據(jù)的作用。 二次存儲后就中斷返回。 外部中斷1入口 啟動定時器T0 二次存儲 中斷返回 圖 2.3 外部中斷 1 服務(wù)程序流程圖 (3)定時中斷服務(wù)程序 當(dāng)定時/計數(shù)器 T0 器溢出后,向 CPU 發(fā)出中斷請求信號。CPU 跳轉(zhuǎn)到定時中斷程 序執(zhí)行,具體流程如圖 2.4。定時中斷程序是一個進(jìn)位程序,主要負(fù)責(zé)對 1ms 的加一。 1ms 位沒有滿十就跳出中斷程序,返回顯示程序。當(dāng) 1ms 位滿十后就對 1ms 位清零,

52、向 10ms 位加一,同時檢測 10ms 位是否滿十,沒有滿十就跳出中斷程序,返回顯示程 序。如果滿十就向 100ms 位加一,依次類推,最終達(dá)到 99.99 秒后歸零,從零開始再 次計時。 定時/計數(shù)器 T0 工作在方式 0 下,TH0 和 TL0 組成一個 13 位的二進(jìn)制數(shù)計數(shù)器。 單片機開機或復(fù)位時,它的值為 00H,當(dāng) T0 啟動后,從第一個輸入脈沖開始計時,每 來一個脈沖計數(shù)加一,即從 00 開始計數(shù)到 11,再計數(shù)一個脈沖時 TH0 和 TL0 組成的 13 位計數(shù)器將會從 13 個 1 變成 13 個 0,并產(chǎn)生溢出,溢出位將被送到 TF0 標(biāo)志位, 通過溢出標(biāo)志產(chǎn)生溢出中斷請

53、求。顯然,T0 定時器在方式 0 下引起一次中斷所允許計 數(shù)的最多脈沖個數(shù)為 213 個。 但如果定時計數(shù)器如果每次都固定從 0 開始計數(shù),到計滿后,再向 CPU 發(fā)出溢出 中斷請求信號那是毫無意義的。為了使定時計數(shù)器在規(guī)定的計數(shù)脈沖個數(shù)字之后(此 時應(yīng)小于 213 個脈沖),向 CPU 發(fā)出溢出中斷請求,可采取預(yù)先向 TH0 和 TL0 中放 入一個初值 X 的方法,使計數(shù)器以 X 值為起始值開始計數(shù),即 X+1,X+2,直至 計數(shù)器計滿,從 1 全變?yōu)?0。設(shè)需要計數(shù)的脈沖個數(shù)為 Y,則有: X+Y=213 在定時方式下:定時時間間隔位 t=(213X)*振蕩周期*12 現(xiàn)在本設(shè)計要求 1

54、ms 實現(xiàn)一次中斷,選擇定時器 T0 工作在方式 0。所以需要根據(jù) 以上條件計算出 T0 的初值。 設(shè) T0 的初值為 X,則 (213X)*12/12*106 =1*10-3 轉(zhuǎn)換位十六進(jìn)制數(shù) X=7192=00B 即 TH0=0E0H(取 X 的高 8 位) TL0=18H(取 X 的低 5 位) 由于定時 1ms 只是一個理想化的時間,其中并沒有考慮到中斷后單片機執(zhí)行語句 所花的時間。雖然執(zhí)行語句所花的時間很短只有即微秒,但積少成多,數(shù)字秒表一秒 中要溢出中斷 1000 次,積累起來誤差就能達(dá)到毫秒級,這對于精度到達(dá)毫秒級的數(shù)字 電子秒表來說是很大的誤差。所以要在后期編程時還要將單片機讀

55、程序的時間考慮進(jìn) 去, 在對定時器賦初值時將單片機需要執(zhí)行的語句所花的時間加上,這樣就能使數(shù)字 電子秒表的誤差達(dá)到最小。 定時中斷服務(wù)程序入口 1ms位加一 判斷1ms位是否滿10 1ms位清零,10ms位加一 判斷10ms位是否滿10 10ms位清零,100ms位加一 判斷100ms位是否滿10 100ms位清零,1s位加一 判斷1s位是否滿10 1s位清零,10s位加一 判斷10s位是否滿10 10s位清零 中斷返回 是 是 是 是 是 否 否 否 否 圖 2.4 定時中斷服務(wù)程序 3 數(shù)字電子秒表的安裝與調(diào)試 3.1 軟件的仿真與調(diào)試 Proteus ISIS 是英國 Labcenter

56、 公司開發(fā)的電路分析與實物仿真軟件,它可以仿真、 分析(SPICE)各種模擬器件和集成電路。該軟件的主要特點總結(jié)后有以下四點:實現(xiàn) 了單片機仿真和 SPICE 電路仿真相結(jié)合的功能。支持目前主流單片機系統(tǒng)的仿真。 提供了軟件調(diào)試功能,并可以與 WAVE 聯(lián)合仿真調(diào)試。具有強大的原理圖繪制功 能??傊?,該軟件是一款集單片機和 SPICE 分析于一身的仿真軟件,功能極其強大。 在電子領(lǐng)域中也起到了很大的作用,它的出現(xiàn)仿真不需要先焊接電路,可以先仿真調(diào) 試通過后在焊電路,節(jié)省了不少在硬件調(diào)試上所花的時間。 Proteus ISIS 的工作界面是一種標(biāo)準(zhǔn)的 Windows 界面。它包括標(biāo)題欄、主菜單、

57、狀 態(tài)欄、標(biāo)準(zhǔn)工具欄、繪圖工具欄、對象選擇按鈕、預(yù)覽對象方位控制按鈕、仿真進(jìn)程 控制按鈕、預(yù)覽窗口、對象選擇器窗口、圖形編輯窗口等十幾個工具,方便了使用者 的使用。 首先打開已經(jīng)畫好的 proteus DSN 文件,雙擊圖中的 AT89S52 芯片,就彈出一個 窗口,在 Program File 項中通過路徑選擇在 WAVE 中生成的 HEX 文件,雙擊選中后 確定,這樣仿真圖中的 AT89S52 芯片就已經(jīng)讀取了本設(shè)計中的 HEX 文件。單擊“三角 形按鈕”進(jìn)行仿真。通過對仿真結(jié)果的觀察來對程序進(jìn)行修改,最終使程序到達(dá)設(shè)計要 求。 3.2 硬件的安裝與調(diào)試 按照之前設(shè)計好的數(shù)字電子秒表原理圖

58、,詳細(xì)計算系統(tǒng)中各個元件的參數(shù),選擇 相應(yīng)器件,制作實際電路板。由于考慮到萬能板大小的問題及元件之間連線的方便, 在焊接元器件前必須考慮元件的布局然后進(jìn)行實際操作。 制作好的電路板可以用萬用表(200 歐姆檔)的紅、黑表筆測試電路板的每條走線, 當(dāng)其電阻非常小時,證明走線沒有斷開,當(dāng)其電阻很大時,證明該條走線斷了,應(yīng)該 重新走線,使電路板在電氣上得到正確地連接。選用萬用表的 20K 歐姆檔,檢測電路 中是否存在短路。因為系統(tǒng)采用的是共陰極數(shù)碼管作為顯示電路,必須確保數(shù)碼管的 公共端接的是低電平。 (1)晶振電路的測試 在單片機正常運行的必要條件是單片機系統(tǒng)的時鐘穩(wěn)定正常。實際中,因為各種 原因

59、導(dǎo)致系統(tǒng)時鐘不正常而出現(xiàn)系統(tǒng)無法正常運行的情況時有,因此系統(tǒng)時鐘是否振 是通電檢查的首要環(huán)節(jié)。在系統(tǒng)通電的狀況下,用萬用表的直流電壓檔(20V) ,分別 測量 XTAL1 和 XTAL2 引腳的電壓,看是否正常,在調(diào)試過程中,測得電壓 XTAL1 引腳 應(yīng)為 2.05V,XTAT2 應(yīng)為 2.15V。 (2)復(fù)位電路的測試 復(fù)位不正常也會導(dǎo)致系統(tǒng)不能工作。如果復(fù)位引腳始終為高電平,系統(tǒng)將始終處 于復(fù)位狀態(tài);如果始終為低電平,不能產(chǎn)生復(fù)位所需的高電平信號脈沖,則系統(tǒng)也可 能無法正常工作。單片機正常工作時,RST 復(fù)位引腳應(yīng)為 0V,按下復(fù)位按鍵時,復(fù)位 引腳為高電平 5V 左右。 (3)顯示電路

60、的測試 顯示電路是數(shù)字電子秒表正常運行最直觀的觀察窗口,我們可以通過觀察顯示電 路的顯示結(jié)果觀察系統(tǒng)能否正常運行。當(dāng)顯示電路按照電路圖焊接好后,用萬用表的 測二極管檔位,將黑表筆接共陰數(shù)碼管的公共段,然后將紅表筆接數(shù)碼管的各段,當(dāng) 數(shù)碼管的段能正常顯示,說明各點焊接正常。 3.3 系統(tǒng)程序的燒錄 在軟件調(diào)試中,使用當(dāng)今流行的功能強大且普遍的 WAVE 6000 軟件進(jìn)行軟件編 譯與調(diào)試,使用 Microcontroller ISP Software 及其配套的單片機對程序進(jìn)行燒錄。 圖 3.1 Debice selection 圖 3.2 Atmel microcontroller 軟件的燒錄

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論