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

下載本文檔

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

文檔簡介

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

2、編語言編寫程序,包括顯示程序,定時中斷服務(wù),外部中斷服務(wù)程序,延時程序等,并在 WAVE 中調(diào)試運(yùn)行,硬件系統(tǒng)利用 PROTEUS 強(qiáng)大的功能來實(shí)現(xiàn),簡單切易于觀察,在仿真中就可以觀察到實(shí)際的工作狀態(tài)。 關(guān)鍵字關(guān)鍵字:單片機(jī);數(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 digital

3、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 button on

4、 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 the extern

5、al 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 after the las

6、t 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 commissioning, operat

7、ion, 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目 錄摘 要.IAbstract .II緒 論.11 硬件設(shè)計.31.1 總體方案的設(shè)計.31.2 單片機(jī)的選擇.41.3 顯示電路的選擇與設(shè)計.71.4 按鍵電路的選擇與設(shè)計.101.5

8、時鐘電路的選擇與設(shè)計.111.6 復(fù)位電路的選擇與設(shè)計.131.7 系統(tǒng)總電路的設(shè)計.152 軟件設(shè)計.172.1 程序設(shè)計思想.172.2 系統(tǒng)資源的分配.172.3 主程序設(shè)計.182.4 中斷程序設(shè)計.193 數(shù)字電子秒表的安裝與調(diào)試.253.1 軟件的仿真與調(diào)試.253.2 硬件的安裝與調(diào)試.253.3 系統(tǒng)程序的燒錄.263.4 數(shù)字電子秒表的精度調(diào)試.27結(jié) 論.28參考文獻(xiàn).28附錄 A 程序.30附錄 B 電路原理圖.35緒 論秒表計時器是電器制造,工業(yè)自動化控制、國防、實(shí)驗室及科研單位理想的計時儀器,它廣泛應(yīng)用于各種繼電器、電磁開關(guān),控制器、延時器、定時器等的時間測試。200

9、4 年 8 月 28 日 15 點(diǎn) 15 分,中國選手孟關(guān)良/楊文軍在雅典奧運(yùn)會男子 500 米劃艇決賽中,以 1 分 40 秒 278 的成績獲得中國在雅典奧運(yùn)會的第 28 金。這是中國皮劃艇項目的第一枚奧運(yùn)金牌,也是中國水上項目在歷屆奧運(yùn)會上所獲得的第一枚金牌。孟關(guān)良/楊文軍的成績比獲得銀牌的古巴選手只快了 0.072 秒,以至于兩人在奪冠之后還不敢相信。在現(xiàn)在的體育競技比賽中,隨著運(yùn)動員的水平不斷提高,差距也在不斷縮小。有些運(yùn)動對時間精度的要求也越來越高,有時比賽冠亞軍之間的差距只有幾毫秒,因此就需要高精度的秒表來記錄成績。本設(shè)計利用 8051 單片機(jī)的定時器/計數(shù)器定時和記數(shù)的原理,使

10、其能精確計時。利用中斷系統(tǒng)使其能實(shí)現(xiàn)開始暫停的功能。P0 口輸出段碼數(shù)據(jù),P2.0-P2.4 口作列掃描輸出,P1.1、P3.2、P3.3、P2.5 分別接四個按鈕開關(guān),分別實(shí)現(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ā)出溢出中斷請求,每發(fā)出一次中斷請求就對毫秒計數(shù)單元進(jìn)行加一,達(dá)到 10 次就對十毫秒位進(jìn)行加一,依次類推,直到

11、 99.99 秒重新復(fù)位。在計時過程中,只要按下暫停鍵,外部中斷 INT0 向 CPU發(fā)出中斷請求,CPU 轉(zhuǎn)去執(zhí)行外部中斷 0 服務(wù)程序,即關(guān)閉定時器 T0,調(diào)用顯示程序,實(shí)現(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)用最終緩存區(qū)的數(shù)據(jù)進(jìn)行顯示,即顯示上一次計時成績。當(dāng) P2.5 位高電平時,調(diào)用顯示緩存區(qū)的數(shù)據(jù)進(jìn)行顯示,即顯示當(dāng)此計時的成績

12、。根據(jù)以上設(shè)計思路從而實(shí)現(xiàn)數(shù)字電子秒表的計時和查看上一次計時時間的功能。本文主要內(nèi)容包括三部分:第一部分介紹硬件部分設(shè)計思路及方案;第二部分介紹了軟件部分的設(shè)計思路和設(shè)計;最后一部分則是整個系統(tǒng)的安裝與調(diào)試過程。1 硬件設(shè)計1.1 總體方案的設(shè)計數(shù)字電子秒表具有顯示直觀、讀取方便、精度高等優(yōu)點(diǎn),在計時中廣泛使用。本設(shè)計用單片機(jī)組成數(shù)字電子秒表,力求結(jié)構(gòu)簡單、精度高為目標(biāo)。設(shè)計中包括硬件電路的設(shè)計和系統(tǒng)程序的設(shè)計。其硬件電路主要有主控制器,計時與顯示電路和回零、啟動和停表電路等。主控制器采用單片機(jī) 8051,顯示電路采用共陰極 LED 數(shù)碼管顯示計時時間。本設(shè)計利用 8051 單片機(jī)的定時器/計

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

14、放十毫秒位數(shù)據(jù),7BH 存放百毫秒位數(shù)據(jù),7CH 存放秒位數(shù)據(jù),7DH 存放十秒位數(shù)據(jù),每一地址單元內(nèi)均為十進(jìn)制 BCD 碼。由于采用軟件動態(tài)掃描實(shí)現(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ù)據(jù)存放規(guī)則和 79H-7DH 一樣。分別對應(yīng)存放毫秒位至十秒位數(shù)據(jù)。與 79H-7DH 存儲區(qū)不一樣的是:59H-5DH 存儲的內(nèi)容為數(shù)字秒表上一次計時顯示的時間。而 79H-7DH

15、為當(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)格。而開始和停止鍵則是用于對時間的鎖定,需要比較準(zhǔn)確的控制。因此可以對復(fù)位和查看按鍵采取掃描的方式。而對開始和停止鍵采用外部中斷的方式。設(shè)計中包括硬件電路的設(shè)計和系統(tǒng)程序的設(shè)計。其硬件電路主要有主控制器,顯示電

16、路和回零、啟動、查看、停表電路等。主控制器采用單片機(jī) 8051,顯示電路采用共陰極 LED 數(shù)碼管顯示計時時間,四個按鍵均采用觸點(diǎn)式按鍵。1.2 單片機(jī)的選擇本課題在選取單片機(jī)時,充分借鑒了許多成形產(chǎn)品使用單片機(jī)的經(jīng)驗,并根據(jù)自己的實(shí)際情況,選擇了 Intel 公司的 8051。單片機(jī)的外部結(jié)構(gòu)8051 單片機(jī)采用 40 引腳的雙列直插封裝方式。圖 1.2 為引腳排列圖, 40 條引腳說明如下:主電源引腳 Vss 和 Vcc Vss 接地 Vcc 正常操作時為+5 伏電源外接晶振引腳 XTAL1 和 XTAL2 XTAL1 內(nèi)部振蕩電路反相放大器的輸入端,是外接晶體的一個引腳。當(dāng)采用外部振蕩器

17、時,此引腳接地。 XTAL2 內(nèi)部振蕩電路反相放大器的輸出端。是外接晶體的另一端。當(dāng)采用外部振蕩器時,此引腳接外部振蕩源。圖 1.2 8051 單片機(jī)引腳圖控制或與其它電源復(fù)用引腳 RST/VPD,ALE/,和/VppPROGPSENEA RST/VPD 當(dāng)振蕩器運(yùn)行時,在此引腳上出現(xiàn)兩個機(jī)器周期的高電平(由低到高跳變) ,將使單片機(jī)復(fù)位在 Vcc 掉電期間,此引腳可接上備用電源,由 VPD 向內(nèi)部提供備用電源,以保持內(nèi)部 RAM 中的數(shù)據(jù)。 ALE/正常操作時為 ALE 功能(允許地址鎖存)提供把地址的低字節(jié)鎖PROG存到外部鎖存器,ALE 引腳以不變的頻率(振蕩器頻率的 1/6)周期性地發(fā)

18、出正脈沖信號。因此,它可用作對外輸出的時鐘,或用于定時目的。對于 EPROM 型單片機(jī),在 EPROM 編程期間,此引腳接收編程脈沖(功能)PROG 外部程序存儲器讀選通信號輸出端,在從外部程序存儲取指令(或數(shù)PSEN據(jù))期間,在每個機(jī)器周期內(nèi)兩次有效。同樣可以驅(qū)動八 LSTTL 輸入。PSENPSEN /Vpp、/Vpp 為內(nèi)部程序存儲器和外部程序存儲器選擇端。當(dāng)/VppEAEAEA為高電平時,訪問內(nèi)部程序存儲器,當(dāng)/Vpp 為低電平時,則訪問外部程序存儲器。EA對于 EPROM 型單片機(jī),在 EPROM 編程期間,此引腳上加 21 伏 EPROM 編程電源(Vpp) 。輸入/輸出引腳 P0

19、.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 位準(zhǔn)雙向 I/O 口。能驅(qū)動(吸收或輸出電流)四個 LSTTL 負(fù)載。 P2 口(P2.0 - P2.7)是一個帶有內(nèi)部提升電阻的 8 位準(zhǔn)雙向 I/O 口,在訪問外部存儲器時,它輸出高 8 位地址。P2 口可以驅(qū)動(吸收或輸出電流)四個 LSTTL 負(fù)載

20、。 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)晶振及時鐘電路。另外,8051 可降至 0Hz 靜態(tài)邏輯操作,支持 2 種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許 RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM 內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。CPU 是單片機(jī)的核心

21、部件。它由運(yùn)算器和控制器等部件組成。(1) 運(yùn)算器運(yùn)算器的功能是進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算??梢詫Π胱止?jié)(4 位) 、單字節(jié)等數(shù)據(jù)進(jìn)行操作。例如能完成加、減、乘、除、加 1、減 1、BCD 碼十進(jìn)制調(diào)整、比較等算術(shù)運(yùn)算和與、或、異或、求補(bǔ)、循環(huán)等邏輯操作,操作結(jié)果的狀態(tài)信息送至狀態(tài)寄存器。8051 運(yùn)算器還包含有一個布爾處理器,用來處理位操作。(2) 程序計數(shù)器 PC程序計數(shù)器 PC 用來存放即將要執(zhí)行的指令地址,共 16 位,可對 64K 程序存儲器直接尋址。執(zhí)行指令時,PC 內(nèi)容的低 8 位經(jīng) P0 口輸出,高 8 位經(jīng) P2 口輸出。(3) 令寄存器指令寄存器中存放指令代碼。CPU 執(zhí)行指令

22、時,由程序存儲器中讀取的指令代碼送入指令寄存器,經(jīng)譯碼后由定時與控制電路發(fā)出相應(yīng)的控制信號,完成指令功能。1.3 顯示電路的選擇與設(shè)計對于數(shù)字顯示電路,通常采用液晶顯示或數(shù)碼管顯示。本設(shè)計的顯示電路采用 7 段數(shù)碼管作為顯示介質(zhì)。數(shù)碼管顯示可以分為靜態(tài)顯示和動態(tài)顯示兩種。由于本設(shè)計需要采用五位數(shù)碼管顯示時間,如果靜態(tài)顯示則占用的口線多,硬件電路復(fù)雜。所以采用動態(tài)顯示。8051位 驅(qū) 動段 驅(qū) 動六位數(shù)碼管圖 1.3 顯示電路基本原理圖動態(tài)顯示是一位一位地輪流點(diǎn)亮各位數(shù)碼管,這種逐位點(diǎn)亮顯示器的方式稱為位掃描。通常各位數(shù)碼管的段選線相應(yīng)并聯(lián)在一起,由一個 8 位的 I/O 口控制;各位的公共陰極

23、位選線由另外的 I/O 口線控制。動態(tài)方式顯示時,各數(shù)碼管分時輪流選通,要使其穩(wěn)定顯示必須采用掃描方式,即在某一時刻只選通一位數(shù)碼管,并送出相應(yīng)的段碼,在另一時刻選通另一位數(shù)碼管,并送出相應(yīng)的段碼,依此規(guī)律循環(huán),即可使各位數(shù)碼管顯示將要顯示的字符,雖然這些字符是在不同的時刻分別顯示,但由于人眼存在視覺暫留效應(yīng),只要每位顯示間隔足夠短就可以給人同時顯示的感覺。數(shù)碼顯示管分為共陽數(shù)碼管和共陰數(shù)碼管兩種共陽極數(shù)碼管的 8 個發(fā)光二極管的陽極(二極管正端)連接在一起,如圖1.4(b),通常,公共陽極接高電平(一般接電源),其它管腳接段驅(qū)動電路輸出端。當(dāng)某段驅(qū)動電路的輸出端為低電平時,則該端所連接的字段

24、導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時,要求段驅(qū)動電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。共陰極數(shù)碼管的 8 個發(fā)光二極管的陰極(二極管負(fù)端)連接在一起,如圖(c),通常,公共陰極接低電平(一般接地),其它管腳接段驅(qū)動電路輸出端,當(dāng)某段驅(qū)動電路的輸出端為高電平時,則該端所連接的字段導(dǎo)通并點(diǎn)亮,根據(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è)計采用共陰極

25、數(shù)碼顯示管做顯示電路,由于采用的是共陰的數(shù)碼顯示管,所以只要數(shù)碼管的 a、b、c、d、e、f、g、h 引腳為高電平,那么其對應(yīng)的二極管就會發(fā)光,使數(shù)碼顯示管顯示 09 的編碼見表 1.1。表 1.1 共陰極數(shù)碼顯示管字型代碼字型共陰極代碼字型共陰極代碼03FH56DH106H67DH25BH707H34FH87FH466H96FH動態(tài)顯示電路由顯示塊、字形碼驅(qū)動模塊、字位驅(qū)動模塊三部分組成。如圖 1.3 所示為本系統(tǒng)的 5 位 LED 動態(tài)顯示器接口電路。圖中,5 個數(shù)碼管的 8 段段選線分別與外接上拉電阻的單片機(jī) P0 口對應(yīng)相連,而 5 個數(shù)碼管的位控制端則和 NPN 型三極管的集電極相連

26、接。單片機(jī)的 P2.0P2.4 口則分別對應(yīng)數(shù)碼顯示管的最低位到最高位,P2.0P2.4 口分別和五個 NPN 型三極管的基極相連,做三極管導(dǎo)通的控制端,而 NPN型三極管選用 9013 型三極管。根據(jù) 9013 的資料顯示:其耐壓值為 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)部沒有上

27、拉電阻,作為輸出口時驅(qū)動能力比較弱,不能點(diǎn)亮數(shù)碼顯示管,因此 P0 口必須接上拉電阻來提高驅(qū)動能力。另外一位共陰數(shù)碼管的驅(qū)動電流一般為 20mA 左右,如果電流太大容易造成數(shù)碼管損壞,所以也需要根據(jù)電源的電壓值來確定上拉電阻的大小。如果電阻過小,勢必會形成灌電流過大,造成單片機(jī) IO 的損壞,如果電阻過大,那么對拉電流沒有太大的影響。電源供電電壓為 5V,當(dāng)上拉電阻選用 220 電阻時灌電流為 22mA。不會損壞單片機(jī)的 I/O 口,同時也可以為數(shù)碼顯示管起到限制電流的保護(hù)作用。 1.4 按鍵電路的選擇與設(shè)計本設(shè)計中有四個按鍵,分別實(shí)現(xiàn)開始、暫停、復(fù)位和查看功能。這四個鍵可以采用中斷的方法,也

28、可以采用查詢的方法來識別。對于復(fù)位鍵和查看鍵,主要功能在于數(shù)值復(fù)位和對上次計時時間的查看,對于時間的要求不是很嚴(yán)格,而開始和暫停鍵主要用于時間的鎖定,需要比較準(zhǔn)確的控制。因此可以考慮,對復(fù)位鍵和查看鍵采用查詢的方式,而對于開始和暫停鍵采用外部中斷。四個按鍵均采用低電平有效,具體電路連接圖如圖 1.5 所示。當(dāng)按鍵沒有按下時,單片機(jī)的 I/O 口直接連接電源,因此需要接上拉電阻來進(jìn)行限流,本設(shè)計中選取阻值為 2k 的電阻作為上拉電阻,根據(jù)計算可知此時的灌電流為2.5mA,查看 8051 的資料得知次電流在安全范圍內(nèi),符合安全設(shè)計要求。開始暫停復(fù)位查看 P3.3(INT1) P3.2(INT0)

29、P1.1 P2.5VCC圖 1.5 按鍵電路按鍵電路中由于采用了外部中斷,所以需要用到 P3 口的第二功能。P3 口引腳的第二功能如表 1.2表 1.2 P3 口引腳第二功能表 P3 口引腳特殊功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2INT0(外部中斷 0 請求輸入端)P3.3INT1(外部中斷 1 請求輸入端)P3.4 T0(定時器/計數(shù)器 0 計數(shù)脈沖輸入端)P3.5 T1(定時器/計數(shù)器 1 計數(shù)脈沖輸入端)P3.6WR(片外數(shù)據(jù)存儲器寫選通信號輸出端)P3.7 RD(片內(nèi)數(shù)據(jù)存儲器讀選通信號輸出端)1.5 時鐘電路的選擇與設(shè)計單片機(jī)的時鐘信號用來提供單片機(jī)內(nèi)

30、各種微操作的時間基準(zhǔn),8051 片內(nèi)設(shè)有一個由反向放大器所構(gòu)成的振蕩電路,XTAL1 和 XTAL2 分別為振蕩電路的輸入和輸出端,8051 單片機(jī)的時鐘信號通常用兩種電路形式得到:內(nèi)部振蕩方式與外部振蕩方式。外部方式的時鐘很少用,若要用時,只要將 XTAL1 接地,XTAL2 接外部振蕩器就行。對外部振蕩信號無特殊要求,只要保證脈沖寬度,一般采用頻率低于 12MHz 的方波信號。時鐘發(fā)生器把振蕩頻率兩分頻,產(chǎn)生一個兩相時鐘信號 P1和 P2供單片機(jī)使用。P1在每一個狀態(tài) S 的前半部分有效,P2在每個狀態(tài)的后半部分有效。本設(shè)計采用的內(nèi)部振蕩方式,內(nèi)部振蕩方式所得的時鐘信號比較穩(wěn)定,實(shí)用電路中

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

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

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

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

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

36、a)所示。其實(shí),外接電阻 R 還是可以省略的,理由是一些 CMOS 單片機(jī)芯片內(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)部電路在每次單片機(jī)斷電之后,須使延時電容 C 上的電荷立刻放掉,以便為隨后可能在很短的時間內(nèi)再次加電作好準(zhǔn)備。否則,在斷電后 C 還沒有充分放電的情況下,如果很快又加電,那么 R

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

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

39、各個電路均和單片機(jī)相連接,由單片機(jī)統(tǒng)籌和協(xié)調(diào)各個電路的運(yùn)行工作。8051 單片機(jī)提供了 XTAL1 和 XTAL2 兩個專用引腳接晶振電路,因此只要將晶振電路接到兩個專用引腳即可為單片機(jī)提供時鐘脈沖,但在焊接晶振電路時要盡量使晶振電路靠近單片機(jī),這樣可以為單片機(jī)提供穩(wěn)定的始終脈沖。 復(fù)位電路同晶振電路,單片機(jī)設(shè)有一個專用的硬件復(fù)位接口,并設(shè)置為高電平有效。顯示電路由五位數(shù)碼管組成,采用動態(tài)顯示方式,因此有 8 位段控制端和 5 位位控制端,八位段控制接 P0 口,P0.0P0.7 分別控制數(shù)碼顯示管的a、b、c、d、e、f、g、dp 顯示,8051 的 P0 口沒有集成上拉電阻,高電平的驅(qū)動能

40、力很弱,所以需要接上拉電阻來提高 P0 的高電平驅(qū)動能力。五位位控制則由低位到高位分別接到 P2.0P2.4 口,NPN 三極管 9013 做為位控制端的開關(guān),當(dāng) P2.0P2.4 端口任意一個端口為高電平時,與其相對應(yīng)的三極管就導(dǎo)通,對應(yīng)的數(shù)碼管導(dǎo)通顯示。通過以上設(shè)計已經(jīng)將各部分電路與單片機(jī)有機(jī)的結(jié)合到一起,硬件部分的設(shè)計以大功告成,剩下的部分就是對單片機(jī)的編程,使單片機(jī)按程序運(yùn)行,實(shí)現(xiàn)數(shù)字電子秒表的全部功能。2 軟件設(shè)計2.1 程序設(shè)計思想本設(shè)計采用了匯編語言編寫,匯編語言由于采用了助記符號來編寫程序,比用機(jī)器語言的二進(jìn)制代碼編程要方便些,在一定程度上簡化了編程過程。匯編語言的特點(diǎn)是用符號

41、代替了機(jī)器指令代碼,而且助記符與指令代碼一一對應(yīng),基本保留了機(jī)器語言的靈活性。使用匯編語言能面向機(jī)器并較好地發(fā)揮機(jī)器的特性,得到質(zhì)量較高的程序。匯編語言的特點(diǎn):(1).面向機(jī)器的低級語言,通常是為特定的計算機(jī)或系列計算機(jī)專門設(shè)計的。(2).保持了機(jī)器語言的優(yōu)點(diǎn),具有直接和簡捷的特點(diǎn)。(3).可有效地訪問、控制計算機(jī)的各種硬件設(shè)備,如磁盤、存儲器、CPU、I/O 端口等。(4).目標(biāo)代碼簡短,占用內(nèi)存少,執(zhí)行速度快,是高效的程序設(shè)計語言。(5).經(jīng)常與高級語言配合使用,應(yīng)用十分廣泛。在程序設(shè)計過程中,為了有效地完成任務(wù),把所要完成的任務(wù)精心的分割成若干個相互獨(dú)立但相互又仍可有聯(lián)系的任務(wù)模塊,這些

42、任務(wù)模塊使得任務(wù)變得相對單純,對外的數(shù)據(jù)交換相對簡單,容易編寫,容易檢測,容易閱讀和維護(hù)。這種程序設(shè)計思想稱為模塊化程序設(shè)計思想。模塊化結(jié)構(gòu)程序的設(shè)計,可以使系統(tǒng)軟件便于調(diào)試與優(yōu)化,也使其他人更好地理解和閱讀系統(tǒng)的程序設(shè)計。程序的主要模塊有:主程序、顯示程序、定時溢出中斷服務(wù)程序、外部中斷服務(wù)程序。2.2 系統(tǒng)資源的分配本設(shè)計系統(tǒng)所用到的單片機(jī)端口數(shù)比較多,所以在這里將對數(shù)字電子秒表的硬件資源的大概分配加以說明。片內(nèi) RAM 的分配、各功能鍵的定義以及各端口的分配安排如表 2.1 所示。表 2.1 端口的分配安排表名稱功能描述初始化值79H-7DH1ms-10s 位顯示寄存區(qū)00H69H-6D

43、H1ms-10s 位中間寄存區(qū)00H59H-5DH1ms-10s 位最終寄存區(qū)00HR1- R51ms-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)行了賦寄存區(qū)的初始值

44、、設(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 正在處理一個中斷申請時,有出現(xiàn)了另一個優(yōu)先級比它高的中斷請求,這是,CPU 就暫停終止對當(dāng)前優(yōu)先級較

45、低的中斷源的服務(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è)計的實(shí)現(xiàn)是至關(guān)重要的。另外由于數(shù)字式電子秒表的最小精度位 1ms,屬于高精度電子秒表。定時器 T0 的定時周期也為 1ms,為了使電子秒表暫停鍵按下后 CPU 能馬上去響應(yīng)中斷程序,必須將暫停的外部中斷級別高于定時計數(shù)器的中斷級別。避免出現(xiàn) CPU 執(zhí)行

46、完定時溢出中斷程序后再響應(yīng)外部中斷程序,影響計時精度。8051 的自然優(yōu)先級順序排列如下:中斷源 最高外部中斷 0定時/計數(shù)器 0 溢出中斷外部中斷 1定時/計數(shù)器 1 溢出中斷串行口中斷 最低數(shù)字式秒表中的兩個按鍵采用了中斷實(shí)現(xiàn)功能。開始采用外部中斷 INT0,暫停采用外部中斷 INT1。另外程序中還用到了定時/計數(shù)器 0 溢出中斷進(jìn)行計時。依據(jù)設(shè)計要求,暫停的外部中斷 INT1 中斷級別最高,計時的定時/計數(shù)器 0 溢出中斷次之,開始的外部中斷 INT0 級別最低。(1)外部中斷 0 服務(wù)程序:外部中斷 0 服務(wù)程序結(jié)合外部 P3.2 停止鍵實(shí)現(xiàn)數(shù)字電子秒表的停止功能,具體流程圖如圖 2.

47、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 停止鍵實(shí)現(xiàn)數(shù)字電子秒表的啟動功能,具體流程圖如圖 2.2。當(dāng)按下 P3.3 啟動鍵按下向 CPU 發(fā)出外部中斷請求,CPU 轉(zhuǎn)向外部中斷 1 服務(wù)程序執(zhí)行,啟動定時器。另外進(jìn)行二次存儲,將之前進(jìn)行一次存儲的數(shù)碼管顯示數(shù)據(jù)存入最終緩存區(qū),避免下次計時暫停時一次存儲將數(shù)據(jù)

48、掩蓋,從而起到保護(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 位清零,向 10ms 位加一,同時檢測 10ms 位是否滿十,沒有滿十就跳出中斷程序,返回顯示程序。如果滿十就向 100ms 位加一,依次類推,最終達(dá)到 99.99 秒后歸零,從零開始再次

49、計時。13 個。但如果定時計數(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è)計要求 1ms 實(shí)現(xiàn)一次中斷,選擇定時器 T0 工作在方式 0。所以需要根據(jù)以上條件計算出 T0

50、的初值。設(shè) T0 的初值為 X,則 (213X)*12/12*106 =1*10-3 即 TH0=0E0H(取 X 的高 8 位)TL0=18H(取 X 的低 5 位)由于定時 1ms 只是一個理想化的時間,其中并沒有考慮到中斷后單片機(jī)執(zhí)行語句所花的時間。雖然執(zhí)行語句所花的時間很短只有即微秒,但積少成多,數(shù)字秒表一秒中要溢出中斷 1000 次,積累起來誤差就能達(dá)到毫秒級,這對于精度到達(dá)毫秒級的數(shù)字電子秒表來說是很大的誤差。所以要在后期編程時還要將單片機(jī)讀程序的時間考慮進(jìn)去,在對定時器賦初值時將單片機(jī)需要執(zhí)行的語句所花的時間加上,這樣就能使數(shù)字電子秒表的誤差達(dá)到最小。定時中斷服務(wù)程序入口1ms位

51、加一判斷1ms位是否滿101ms位清零,10ms位加一判斷10ms位是否滿1010ms位清零,100ms位加一判斷100ms位是否滿10100ms位清零,1s位加一判斷1s位是否滿101s位清零,10s位加一判斷10s位是否滿1010s位清零中斷返回是是是是是否否否否圖 2.4 定時中斷服務(wù)程序3 數(shù)字電子秒表的安裝與調(diào)試3.1 軟件的仿真與調(diào)試Proteus ISIS 是英國 Labcenter 公司開發(fā)的電路分析與實(shí)物仿真軟件,它可以仿真、分析(SPICE)各種模擬器件和集成電路。該軟件的主要特點(diǎn)總結(jié)后有以下四點(diǎn):實(shí)現(xiàn)了單片機(jī)仿真和 SPICE 電路仿真相結(jié)合的功能。支持目前主流單片機(jī)系統(tǒng)

52、的仿真。提供了軟件調(diào)試功能,并可以與 WAVE 聯(lián)合仿真調(diào)試。具有強(qiáng)大的原理圖繪制功能??傊撥浖且豢罴瘑纹瑱C(jī)和 SPICE 分析于一身的仿真軟件,功能極其強(qiáng)大。在電子領(lǐng)域中也起到了很大的作用,它的出現(xiàn)仿真不需要先焊接電路,可以先仿真調(diào)試通過后在焊電路,節(jié)省了不少在硬件調(diào)試上所花的時間。Proteus ISIS 的工作界面是一種標(biāo)準(zhǔn)的 Windows 界面。它包括標(biāo)題欄、主菜單、狀態(tài)欄、標(biāo)準(zhǔn)工具欄、繪圖工具欄、對象選擇按鈕、預(yù)覽對象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對象選擇器窗口、圖形編輯窗口等十幾個工具,方便了使用者的使用。首先打開已經(jīng)畫好的 proteus DSN 文件,雙擊圖

53、中的 AT89S52 芯片,就彈出一個窗口,在 Program File 項中通過路徑選擇在 WAVE 中生成的 HEX 文件,雙擊選中后確定,這樣仿真圖中的 AT89S52 芯片就已經(jīng)讀取了本設(shè)計中的 HEX 文件。單擊“三角形按鈕”進(jìn)行仿真。通過對仿真結(jié)果的觀察來對程序進(jìn)行修改,最終使程序到達(dá)設(shè)計要求。3.2 硬件的安裝與調(diào)試按照之前設(shè)計好的數(shù)字電子秒表原理圖,詳細(xì)計算系統(tǒng)中各個元件的參數(shù),選擇相應(yīng)器件,制作實(shí)際電路板。由于考慮到萬能板大小的問題及元件之間連線的方便,在焊接元器件前必須考慮元件的布局然后進(jìn)行實(shí)際操作。制作好的電路板可以用萬用表(200 歐姆檔)的紅、黑表筆測試電路板的每條走

54、線,當(dāng)其電阻非常小時,證明走線沒有斷開,當(dāng)其電阻很大時,證明該條走線斷了,應(yīng)該重新走線,使電路板在電氣上得到正確地連接。選用萬用表的 20K 歐姆檔,檢測電路中是否存在短路。因為系統(tǒng)采用的是共陰極數(shù)碼管作為顯示電路,必須確保數(shù)碼管的公共端接的是低電平。(1)晶振電路的測試在單片機(jī)正常運(yùn)行的必要條件是單片機(jī)系統(tǒng)的時鐘穩(wěn)定正常。實(shí)際中,因為各種原因?qū)е孪到y(tǒng)時鐘不正常而出現(xiàn)系統(tǒng)無法正常運(yùn)行的情況時有,因此系統(tǒng)時鐘是否振是通電檢查的首要環(huán)節(jié)。在系統(tǒng)通電的狀況下,用萬用表的直流電壓檔(20V) ,分別測量 XTAL1 和 XTAL2 引腳的電壓,看是否正常,在調(diào)試過程中,測得電壓 XTAL1 引腳應(yīng)為

55、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)也可能無法正常工作。單片機(jī)正常工作時,RST 復(fù)位引腳應(yīng)為 0V,按下復(fù)位按鍵時,復(fù)位引腳為高電平 5V 左右。(3)顯示電路的測試顯示電路是數(shù)字電子秒表正常運(yùn)行最直觀的觀察窗口,我們可以通過觀察顯示電路的顯示結(jié)果觀察系統(tǒng)能否正常運(yùn)行。當(dāng)顯示電路按照電路圖焊接好后,用萬用表的測二極管檔位,將黑表筆接共陰數(shù)碼管的公共段,然后將紅表筆接數(shù)碼管的各段,當(dāng)數(shù)碼管的段能正常顯示,說明各點(diǎn)焊接正常。 3.3

56、 系統(tǒng)程序的燒錄在軟件調(diào)試中,使用當(dāng)今流行的功能強(qiáng)大且普遍的 WAVE 6000 軟件進(jìn)行軟件編譯與調(diào)試,使用 Microcontroller ISP Software 及其配套的單片機(jī)對程序進(jìn)行燒錄。 圖 3.1 Debice selection 圖 3.2 Atmel microcontroller軟件的燒錄:第一步:安裝并運(yùn)行 Microcontroller ISP Software 軟件;第二步:點(diǎn)擊 Options 欄的 select device 選項;這時出現(xiàn)一個對話窗口,如圖 3.1 所示,按圖選擇后,點(diǎn)擊 OK 按鍵,如出現(xiàn)圖 3.2 所示窗口,則說明電腦與開發(fā)板沒連接好或單

57、片機(jī)沒插好等,需重裝檢查硬件連接,如果沒有出現(xiàn)則說明初始化成功。“A” “OK”“OK”“OK”燒錄完成;否則重新檢查硬件連接后再重新燒錄。 3.4 數(shù)字電子秒表的精度調(diào)試將數(shù)字電子秒表的程序編譯后燒錄進(jìn)單片機(jī),并將單片機(jī)插入系統(tǒng)并保證其能正常運(yùn)行。在進(jìn)行精度測試之前的編程過程中,我們知道了單片機(jī)在進(jìn)行定時中斷時需要執(zhí)行語句,而執(zhí)行這些語句是需要占用 CPU 時間的,從而影響單片機(jī)定時的精確性,最終會導(dǎo)致數(shù)字電子秒表的計時誤差,為了減小這種計時誤差,我們之前在編程時已經(jīng)將單片機(jī)一秒鐘內(nèi)執(zhí)行程序的時間計算在內(nèi),并將定時器的初值做出了適當(dāng)調(diào)整。爭取最大限度的減小數(shù)字電子秒表的計時誤差。在進(jìn)行秒表精

58、度調(diào)試時,我們讓本設(shè)計的單片機(jī)秒表和電子表同時計時,為了能盡可能的觀察出是否有誤差,我們將計時時間定為 10 分鐘,當(dāng)計時時間到后觀察兩個計時秒表是否同時到達(dá)。如果不是同時到達(dá)就說明有一定的誤差,需要在程序中對定時器進(jìn)行微調(diào)。如果兩表是同時到達(dá)則說明秒表的設(shè)計滿足要求。結(jié) 論本設(shè)計的數(shù)字電子秒表是由 8051 單片機(jī)、共陰數(shù)碼顯示管、控制按鍵、三極管等器件構(gòu)成的,設(shè)有六位計時顯示,開始、暫停、復(fù)位按鍵以及一個系統(tǒng)整機(jī)復(fù)位按鈕。計時精度能到達(dá) 10ms,設(shè)計精簡,使用簡單易懂。系統(tǒng)設(shè)計合理,線路簡單、功能先進(jìn),性能穩(wěn)定,程序精簡。并給出了詳細(xì)的電路設(shè)計方法。本系統(tǒng)是以單片機(jī)為核心,僅單片機(jī)方面知

59、識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點(diǎn)的軟件結(jié)合,以作完善。所以采用匯編語言來進(jìn)行軟件設(shè)計,利用匯編語言面向機(jī)器并能較好的發(fā)揮機(jī)器的特性,得到較高的程序,同時匯編語言目標(biāo)代碼簡短,占用內(nèi)存少,執(zhí)行速度快,能提高秒表的精度。通過本次設(shè)計,復(fù)習(xí)鞏固我們以前所學(xué)習(xí)的數(shù)字、模擬電子技術(shù)、單片機(jī)原理及應(yīng)用等課程知識,加深對各門課程及相互關(guān)系的理解,并成功使用了 Wave、Protel 99se 和 Proteus 三款電子軟件,使理論知識系統(tǒng)化、實(shí)用化,系統(tǒng)地掌握微機(jī)應(yīng)用系統(tǒng)的一般設(shè)計方法,培養(yǎng)較強(qiáng)的編程能力、開發(fā)能力。同時,在設(shè)計的過程中,我也發(fā)現(xiàn)了本系統(tǒng)的許多不足和可以改進(jìn)的地方

60、。但因時間緊迫等原因沒能改進(jìn)。本設(shè)計的數(shù)字電子秒表缺少對多次計時時間進(jìn)行記錄的功能。應(yīng)給在單片機(jī)的內(nèi)部存儲區(qū)多設(shè)置一些存儲空間,用來存儲多次計時時間。并在程序中編入對多次計時時間的調(diào)用顯示。雖然存在不足,但本設(shè)計的數(shù)字電子秒表仍具有它的實(shí)用性。心得體會心得體會 做了兩周的課程設(shè)計,讓人感受頗深,有關(guān)于單片機(jī)知識的,但更多是團(tuán)隊和合作。我們小組一共 4 個人,人多,分工就顯得很重要,在我們的集體的討論之下,我得到了設(shè)計硬件電路和總體調(diào)試的任務(wù),當(dāng)時讓我感到很有壓力。因為我們平時接觸的都是純粹理論的東西,做實(shí)驗也是霧里看花,對硬件的認(rèn)識是很缺乏的。通過 10 多天的努力,我們小組終于完成了單片機(jī)的

溫馨提示

  • 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

提交評論