《單片機原理及應(yīng)用》大作業(yè)_第1頁
《單片機原理及應(yīng)用》大作業(yè)_第2頁
《單片機原理及應(yīng)用》大作業(yè)_第3頁
《單片機原理及應(yīng)用》大作業(yè)_第4頁
《單片機原理及應(yīng)用》大作業(yè)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 網(wǎng)絡(luò)教育學(xué)院單片機原理及應(yīng)用大作業(yè) 題 目: 數(shù)字式電子秒表設(shè)計 學(xué)習(xí)中心: 層 次: 專升本 專 業(yè): 電氣工程及自動化 年 級: 學(xué) 號: 學(xué)生姓名: 概述秒表計時器是電器制造,工業(yè)自動化控制、國防、實驗室及科研單位理想的計時儀器,它廣泛應(yīng)用于各種繼電器、電磁開關(guān),控制器、延時器、定時器等的時間測試。 有關(guān)計時鐘表的發(fā)展歷史,大致可以分為三個演變階段。 一、從大型鐘向小型鐘演變。二、從小型鐘向袋表過渡。三、從袋表向腕表發(fā)展。 每一階段的發(fā)展都是和當(dāng)時的技術(shù)發(fā)明分不開的。1088年,當(dāng)時我國宋朝的科學(xué)家蘇頌和韓工廉等人制造了水運儀象臺,它是把渾儀、渾象和機械計時器組合起來的裝置。它以水力作

2、為動力來源,具有科學(xué)的擒縱機構(gòu),雖然幾十年后毀于戰(zhàn)亂,但它在世界鐘表史上具有極其重要的意義。1656年,荷蘭的科學(xué)家惠更斯應(yīng)用伽利略的理論設(shè)計了鐘擺,第二年,在他的指導(dǎo)下年輕鐘匠S.Coster制造成功了第一個擺鐘。1675年,他又用游絲取代了原始的鐘擺,這樣就形成了以發(fā)條為動力、以游絲為調(diào)速機構(gòu)的小型鐘,同時也為制造便于攜帶的袋表提供了條件。 18世紀(jì)期間發(fā)明了各種各樣的擒縱機構(gòu),為袋表的進一步產(chǎn)生與發(fā)展奠定了基礎(chǔ)。英國人George Graham在1726年完善了工字輪擒縱機構(gòu),它和之前發(fā)明的垂直放置的機軸擒縱機構(gòu)不同,所以使得袋表機芯相對變薄。 20世紀(jì)初,尤其是第一次世界大戰(zhàn)的爆發(fā),袋

3、表已經(jīng)不能適應(yīng)作戰(zhàn)軍人的需要,腕表的生產(chǎn)成為大勢所趨。許多新的設(shè)計和技術(shù)也被應(yīng)用在腕表上,成為真正意義上的帶在手腕上的計時工具。緊接著的二戰(zhàn)使腕表的生產(chǎn)量大幅度增加,價格也隨之下降,使普通大眾也可以擁有它。腕表的年代到來了! 1998年:建立超冷銫原子鐘,比微微秒又要精確10萬倍。 從我國水運儀像臺的發(fā)明到現(xiàn)在各國都在研制的原子鐘這幾百年的鐘表演變過程中,我們可以看到,各個不同時期的科學(xué)家和鐘表工匠用他們的聰明的智慧和不斷的實踐融合成了一座時間的隧道,同時也為我們勾勒了一條鐘表文化和科技發(fā)展的軌跡。本設(shè)計利用8051單片機的定時器/計數(shù)器定時和記數(shù)的原理,使其能精確計時。利用中斷系統(tǒng)使其能實現(xiàn)

4、開始暫停的功能。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ā)出溢出中斷請求,每發(fā)出一次中斷請求就對毫秒計數(shù)單元進行加一,達到10次就對十毫秒位進行加一,依次類推,直到99.99秒重新復(fù)位。在計時過程中,只要按下暫停鍵,外部中斷INT0向CP

5、U發(fā)出中斷請求,CPU轉(zhuǎn)去執(zhí)行外部中斷0服務(wù)程序,即關(guān)閉定時器T0,調(diào)用顯示程序,實現(xiàn)暫停功能,同時將此次計時時間存入寄存區(qū)。然后對P1.1進行掃描。當(dāng)P1.1按下時就跳轉(zhuǎn)回主程序。等待下一次計時開始。在按下暫停鍵時,將此時的計時時間存入中間緩存區(qū),當(dāng)再次按下開始鍵時,則講中間緩存區(qū)的數(shù)據(jù)轉(zhuǎn)入最終緩存區(qū)。秒表停止后對查看鍵P2.5進行掃描,P2.5按下為低電平時,調(diào)用最終緩存區(qū)的數(shù)據(jù)進行顯示,即顯示上一次計時成績。當(dāng)P2.5位高電平時,調(diào)用顯示緩存區(qū)的數(shù)據(jù)進行顯示,即顯示當(dāng)此計時的成績。根據(jù)以上設(shè)計思路從而實現(xiàn)數(shù)字電子秒表的計時和查看上一次計時時間的功能。本文主要內(nèi)容包括三部分:第一部分介紹硬

6、件部分設(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è)計。其硬件電路主要有主控制器,計時與顯示電路和回零、啟動和停表電路等。主控制器采用單片機8051,顯示電路采用共陰極LED數(shù)碼管顯示計時時間。本設(shè)計利用8051單片機的定時器/計數(shù)器定時和記數(shù)的原理,使其能精確計時。利用中斷系統(tǒng)使其能實現(xiàn)開始暫停的功能。P0口輸出段碼數(shù)據(jù),P2.0-P2.4口作列

7、掃描輸出,P1.1、P3.2、P3.3、P2.5口接四個按鈕開關(guān),分別實現(xiàn)開始、暫停、清零和查看上次計時時間功能。電路原理圖設(shè)計最基本的要求是正確性,其次是布局合理,最后在正確性和布局合理的前提下力求美觀。硬件電路圖按照圖1.1進行設(shè)計。圖1.1 數(shù)字秒表硬件電路基本原理圖根據(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)均為十進制BCD碼。由于采用軟件動態(tài)掃描實現(xiàn)數(shù)據(jù)顯示功能,顯示用十進制BCD碼數(shù)據(jù)的對應(yīng)段碼

8、存放在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為當(dāng)前計時時間存儲區(qū)。計時采用定時器T0中斷完成,定時溢出中斷周期為1ms,當(dāng)一處中斷后向CPU發(fā)出溢出中斷請求,每發(fā)出一次中斷請求就對毫秒計數(shù)單元進行加一,達到10次就對十毫秒位進行加一,依次類推,直到99.99秒重新復(fù)位。 再

9、看按鍵的處理。這四個鍵可以采用中斷的方法,也可以采用掃描的方法來識別。復(fù)位鍵和查看主要功能在于數(shù)值復(fù)位和查詢上次計時時間,對于時間的要求不是很嚴(yán)格。而開始和停止鍵則是用于對時間的鎖定,需要比較準(zhǔn)確的控制。因此可以對復(fù)位和查看按鍵采取掃描的方式。而對開始和停止鍵采用外部中斷的方式。設(shè)計中包括硬件電路的設(shè)計和系統(tǒng)程序的設(shè)計。其硬件電路主要有主控制器,顯示電路和回零、啟動、查看、停表電路等。主控制器采用單片機8051,顯示電路采用共陰極LED數(shù)碼管顯示計時時間,四個按鍵均采用觸點式按鍵。1.2 單片機的選擇本課題在選取單片機時,充分借鑒了許多成形產(chǎn)品使用單片機的經(jīng)驗,并根據(jù)自己的實際情況,選擇了In

10、tel公司的8051。單片機的外部結(jié)構(gòu)8051單片機采用40引腳的雙列直插封裝方式。圖1.2為引腳排列圖, 40條引腳說明如下:主電源引腳Vss和Vcc Vss接地 Vcc正常操作時為+5伏電源外接晶振引腳XTAL1和XTAL2 XTAL1內(nèi)部振蕩電路反相放大器的輸入端,是外接晶體的一個引腳。當(dāng)采用外部振蕩器時,此引腳接地。 XTAL2內(nèi)部振蕩電路反相放大器的輸出端。是外接晶體的另一端。當(dāng)采用外部振蕩器時,此引腳接外部振蕩源。圖1.2 8051單片機引腳圖控制或與其它電源復(fù)用引腳RST/VPD,ALE/,和/Vpp RST/VPD 當(dāng)振蕩器運行時,在此引腳上出現(xiàn)兩個機器周期的高電平(由低到高跳

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

12、內(nèi)部程序存儲器,當(dāng)/Vpp為低電平時,則訪問外部程序存儲器。對于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位準(zhǔn)雙向I/O口。能驅(qū)動(吸收或輸出電流)四個LSTTL負(fù)載。 P2口(P2.0 - P2.7)是一個帶有

13、內(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)晶振及時鐘電路。另外,8051可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍

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

15、存放指令代碼。CPU執(zhí)行指令時,由程序存儲器中讀取的指令代碼送入指令寄存器,經(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)顯示。圖1.3 顯示電路基本原理圖動態(tài)顯示是一位一位地輪流點亮各位數(shù)碼管,這種逐位點亮顯示器的方式稱為位掃描。通常各位數(shù)碼管的段選線相應(yīng)并聯(lián)在一起,由一個8位的I/O口控制;各位的公共陰極位選線由另外的I/O口線

16、控制。動態(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ū)動電路的輸出端為低電平時,則該端所連接的字段導(dǎo)通并點亮,根據(jù)發(fā)光字段的不同組

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

18、的數(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段段選線分別與外接上拉電阻的單片機P0口對應(yīng)相連,而5個數(shù)碼管的位控制端則和NPN型三極管的集電極相連接。單片機的P2.0P2.4口則分別對應(yīng)數(shù)碼顯示管的最低位到最高位,P2.0P2

19、.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)部沒有上拉電阻,作為輸出口時驅(qū)動能力比較弱,不能點亮數(shù)碼顯示管,因此P0口必須接上拉電阻來提高驅(qū)動能力。另外一位共陰數(shù)碼管的驅(qū)動

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

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

22、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è)計單片機的時鐘信號用來提供單片機內(nèi)各種微操作的時間基準(zhǔn),8051片內(nèi)設(shè)有一個由反向放大器所構(gòu)成的振蕩電路,XTAL1和 XTAL2分別為振蕩電路的輸入和輸出端,8051單片機的時鐘信號通常用兩種電路形式得到:內(nèi)部振蕩方式與外部振蕩方式。外部方式的時鐘很少用,若要用時,只要將XTAL1接地,XTAL2接外部振蕩

23、器就行。對外部振蕩信號無特殊要求,只要保證脈沖寬度,一般采用頻率低于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所示電路進行設(shè)計連接就能使系統(tǒng)可靠起振并能穩(wěn)定運行。圖中,電容器C1、C2起穩(wěn)定振蕩頻率、快速起振的作用,電容值一般為533pF。但在時鐘電路的實際應(yīng)用中一定要注意正確選擇其大小,并保證電路的對稱性,盡可能匹配,選用正牌的瓷片或云母電容,如

24、果可能的話,溫度系數(shù)盡可能低。本設(shè)計中采用大小為30pF的電容和12MHz的晶振。圖1.6 內(nèi)部振蕩電路(4) 時序8051典型的指令周期(執(zhí)行一條指令的時間稱為指令周期)為一個機器周期,一個機器周期由六個狀態(tài)(十二振蕩周期)組成。每個狀態(tài)又被分成兩個時相P1和P2。所以,一個機器周期可以依次表示為S1P1,S1P2,S6P1,S6P2。通常算術(shù)邏輯操作在P1時相進行,而內(nèi)部寄存器傳送在P2時相進行。圖1.7 8051 時序圖1.7給出了8051單片機的取指和執(zhí)行指令的定時關(guān)系。這些內(nèi)部時鐘信號不能從外部觀察到,所用XTAL2振蕩信號作參考。在圖中可看到,低8位地址的鎖存信號ALE在每個機器周

25、期中兩次有效:一次在S1P2與S2P1期間,另一次在S4P2與S5P1期間。對于單周期指令,當(dāng)操作碼被送入指令寄存器時,便從S1P2開始執(zhí)行指令。如果是雙字節(jié)單機器周期指令,則在同一機器周期的S4期間讀入第二個字節(jié),若是單字節(jié)單機器周期指令,則在S4期間仍進行讀,但所讀的這個字節(jié)操作碼被忽略,程序計數(shù)器也不加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ù)位狀

26、態(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ù)位的可靠性等因素,必須有足夠的余量。根據(jù)應(yīng)用的要求,復(fù)位操作通常有兩種基本形式:上電復(fù)位、手動復(fù)位。上電復(fù)位要求接通電源后,自動實現(xiàn)復(fù)位操作。80C51單片機的上電復(fù)位POR(Power On Reset)實質(zhì)上就是上電延時復(fù)位,也就是在上電延時期間把單片機鎖定在復(fù)位狀態(tài)上。在單片機每次初始加電時,首先投入工作的功能部件是復(fù)位電路。復(fù)位電路把單片機鎖定在復(fù)位狀態(tài)上并且維持一個延時(記作

27、TRST),以便給予電源電壓從上升到穩(wěn)定的一個等待時間;在電源電壓穩(wěn)定之后,再插入一個延時,給予時鐘振蕩器從起振到穩(wě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(a)所示。其實,外接電阻R還是可以省略的,理由是一些CMOS單片機芯片內(nèi)部存在一個現(xiàn)成的下拉電阻Rrst

28、。例如,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還沒有充分放電的情況下,如果很快又加電,那么RC支路就失去了它應(yīng)有的延遲功能。因此,在圖1.8(a)的基礎(chǔ)上添加一個放電二極管D,上電復(fù)位延時電路就變成了如圖1.8(c)所示的改進電路。也就是說,只有RC

29、支路的充電過程對電路是有用的,放電過程不僅無用,而且會帶來潛在的危害。于是附加一個放電二極管D來大力縮短放電持續(xù)時間,以便消除隱患。二極管D只有在單片機斷電的瞬間(即VCC趨近于0 V,可以看作VCC對地短路)正向?qū)?,平時一直處于反偏截止?fàn)顟B(tài)。手動復(fù)位要求在電源接通的條件下,在單片機運行期間,如果發(fā)生死機,用按鈕開關(guān)操作使單片機復(fù)位。單片機要完成復(fù)位,必須向復(fù)位端輸出并持續(xù)兩個機器周期以上的高電平,從而實現(xiàn)復(fù)位操作。本設(shè)計采用上電且開關(guān)復(fù)位電路,如圖1.10所示上電后,由于電容充電,使RST持續(xù)一段高電平時間。當(dāng)單片機已在運行之中時,按下復(fù)位鍵也能使RST持續(xù)一段時間的高電平,從而實現(xiàn)上電且

30、開關(guān)復(fù)位的操作。通常選擇C=1030F,R=1K,本設(shè)計采用的電容值為22F的電容和電阻為1K的電阻。圖1.10 單片機復(fù)位電路1.7 系統(tǒng)總電路的設(shè)計系統(tǒng)總電路由以上設(shè)計的顯示電路,時鐘電路,按鍵電路和復(fù)位電路組成,只要將單片機與以上各部分電路合理的連接就組成了系統(tǒng)總電路。系統(tǒng)總電路圖附錄B所示。8051單片機為主電路的核心部分,各個電路均和單片機相連接,由單片機統(tǒng)籌和協(xié)調(diào)各個電路的運行工作。8051單片機提供了XTAL1和XTAL2兩個專用引腳接晶振電路,因此只要將晶振電路接到兩個專用引腳即可為單片機提供時鐘脈沖,但在焊接晶振電路時要盡量使晶振電路靠近單片機,這樣可以為單片機提供穩(wěn)定的始終

31、脈沖。 復(fù)位電路同晶振電路,單片機設(shè)有一個專用的硬件復(fù)位接口,并設(shè)置為高電平有效。按鍵電路與單片機的端口連接可以由用戶自己設(shè)定,本設(shè)計中軟件復(fù)位鍵和查看鍵分別接單片機的P1.1和P2.5,均設(shè)為低電平有效。而另外的開始鍵和暫停鍵兩鍵使用了外部中斷,所以需要連接到單片機的特殊接口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口沒有集成上拉電阻,高

32、電平的驅(qū)動能力很弱,所以需要接上拉電阻來提高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)將各部分電路與單片機有機的結(jié)合到一起,硬件部分的設(shè)計以大功告成,剩下的部分就是對單片機的編程,使單片機按程序運行,實現(xiàn)數(shù)字電子秒表的全部功能。2 軟件設(shè)計2.1 程序設(shè)計思想本設(shè)計采用了匯編語言編寫,匯編語言由于采用了助記符號來編寫程序,比用機器語言的二進制代碼編程要方便些,在一定程度上簡化了編程過程。匯編語言的特點是用符號代替了

33、機器指令代碼,而且助記符與指令代碼一一對應(yīng),基本保留了機器語言的靈活性。使用匯編語言能面向機器并較好地發(fā)揮機器的特性,得到質(zhì)量較高的程序。匯編語言的特點:(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ù)模塊

34、使得任務(wù)變得相對單純,對外的數(shù)據(jù)交換相對簡單,容易編寫,容易檢測,容易閱讀和維護。這種程序設(shè)計思想稱為模塊化程序設(shè)計思想。模塊化結(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-7DH1ms-10s位顯示寄存區(qū)00H69H-6DH1ms-10s位中

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

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

37、區(qū)的初始值、設(shè)置定時器初值以及開啟外部中斷等操作,當(dāng)定時時間到后就轉(zhuǎn)去執(zhí)行定時中斷程序。當(dāng)外部中斷有請求則去執(zhí)行外部中斷服務(wù)程序。并在執(zhí)行完后返回主程序。圖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)先級較低的中斷源的服務(wù),轉(zhuǎn)去響應(yīng)優(yōu)先級比它高的中斷請求,并為其服務(wù)。待服務(wù)結(jié)束,再繼續(xù)執(zhí)行原來較低級的中斷服務(wù)程序。而當(dāng)CPU為級別高的終

38、端服務(wù)程序服務(wù)時,如果級別低的中斷發(fā)出中斷請求,此時CPU是不會響應(yīng)的,所以為了避免開始和暫停兩個按鍵中的一個出現(xiàn)沒有響應(yīng)的情況,在進行程序編輯時要注意對中斷的使用,避免出現(xiàn)中斷的嵌套。,合理分配中斷對本設(shè)計的實現(xiàn)是至關(guān)重要的。另外由于數(shù)字式電子秒表的最小精度位1ms,屬于高精度電子秒表。定時器T0的定時周期也為1ms,為了使電子秒表暫停鍵按下后CPU能馬上去響應(yīng)中斷程序,必須將暫停的外部中斷級別高于定時計數(shù)器的中斷級別。避免出現(xiàn)CPU執(zhí)行完定時溢出中斷程序后再響應(yīng)外部中斷程序,影響計時精度。8051的自然優(yōu)先級順序排列如下:中斷源 最高外部中斷0定時/計數(shù)器0溢出中斷外部中斷1定時/計數(shù)器1

39、溢出中斷串行口中斷 最低數(shù)字式秒表中的兩個按鍵采用了中斷實現(xiàn)功能。開始采用外部中斷INT0,暫停采用外部中斷INT1。另外程序中還用到了定時/計數(shù)器0溢出中斷進行計時。依據(jù)設(shè)計要求,暫停的外部中斷INT1中斷級別最高,計時的定時/計數(shù)器0溢出中斷次之,開始的外部中斷INT0級別最低。(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)前顯示的時間進行一次存儲,存進中間寄存區(qū)。最后中斷返回。圖2.2 外部中斷0服務(wù)程序流程圖(2)

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

41、返回顯示程序。當(dāng)1ms位滿十后就對1ms位清零,向10ms位加一,同時檢測10ms位是否滿十,沒有滿十就跳出中斷程序,返回顯示程序。如果滿十就向100ms位加一,依次類推,最終達到99.99秒后歸零,從零開始再次計時。定時/計數(shù)器T0工作在方式0下,TH0和TL0組成一個13位的二進制數(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)生溢出中斷請求。顯然,T0定時器在方式0下引起一次中

42、斷所允許計數(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)?。設(shè)需要計數(shù)的脈沖個數(shù)為Y,則有:X+Y=213 在定時方式下:定時時間間隔位t=(213X)*振蕩周期*12現(xiàn)在本設(shè)計要求1ms實現(xiàn)一次中斷,選擇定時器T0工作在方式0。所以需要根據(jù)以上條件計算出T0的初值。設(shè)T0的初值為X,則 (

43、213X)*12/12*106 =1*10-3 轉(zhuǎn)換位十六進制數(shù)X=7192=00B即TH0=0E0H(取X的高8位)TL0=18H(取X的低5位)由于定時1ms只是一個理想化的時間,其中并沒有考慮到中斷后單片機執(zhí)行語句所花的時間。雖然執(zhí)行語句所花的時間很短只有即微秒,但積少成多,數(shù)字秒表一秒中要溢出中斷1000次,積累起來誤差就能達到毫秒級,這對于精度到達毫秒級的數(shù)字電子秒表來說是很大的誤差。所以要在后期編程時還要將單片機讀程序的時間考慮進去,在對定時器賦初值時將單片機需要執(zhí)行的語句所花的時間加上,這樣就能使數(shù)字電子秒表的誤差達到最小。圖2.4 定時中斷服務(wù)程序3 數(shù)字電子秒表的安裝與調(diào)試3

44、.1 軟件的仿真與調(diào)試Proteus ISIS是英國Labcenter公司開發(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)的Win

45、dows界面。它包括標(biāo)題欄、主菜單、狀態(tài)欄、標(biāo)準(zhǔn)工具欄、繪圖工具欄、對象選擇按鈕、預(yù)覽對象方位控制按鈕、仿真進程控制按鈕、預(yù)覽窗口、對象選擇器窗口、圖形編輯窗口等十幾個工具,方便了使用者的使用。首先打開已經(jīng)畫好的proteus DSN文件,雙擊圖中的AT89S52芯片,就彈出一個窗口,在Program File項中通過路徑選擇在WAVE中生成的HEX文件,雙擊選中后確定,這樣仿真圖中的AT89S52芯片就已經(jīng)讀取了本設(shè)計中的HEX文件。單擊“三角形按鈕”進行仿真。通過對仿真結(jié)果的觀察來對程序進行修改,最終使程序到達設(shè)計要求。3.2 硬件的安裝與調(diào)試按照之前設(shè)計好的數(shù)字電子秒表原理圖,詳細(xì)計算系統(tǒng)中各個元件的參數(shù),選擇相應(yīng)器件,制作實際電路板。由于考慮到萬能板大小的問題及元件之間連線的方便,在焊接元器件前必須考慮元件的布局然后進行實際操作。制作好的電路板可以用萬用表(200歐姆檔)的紅、黑表筆測試電路板的每條走線,當(dāng)其電阻非常小時,證明走線沒有斷開,當(dāng)其電阻很大時,證明該條走線斷了,應(yīng)該重新走線,使電路板在電氣上得到正確地連接。選用萬用表的20K歐姆檔,檢測電路中是否存在短路。因為系統(tǒng)采用的是共陰極數(shù)碼管作為顯示電路,必須確保數(shù)碼管的公共端接的是低電平。(1)晶振電路的測試在單片機正常運行的必要條件是

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論