版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、. . . . 第一章 系統(tǒng)的總體設(shè)計1 . 1功能要求本系統(tǒng)要求能能完成電子時鐘顯示,調(diào)整,節(jié)能運行,電子秒表記數(shù)等多種功能,由按鍵電路或遙控電路完成功能的設(shè)置,秒表時鐘計時器要求用六位LED數(shù)碼管顯示時、分、秒,以24h(小時)計時方式。使用按鍵開關(guān)或遙控開關(guān)可實現(xiàn)時分調(diào)整、秒表時鐘功能轉(zhuǎn)換、省電(關(guān)閉顯示)等功能。1 . 2方案論證為了實現(xiàn)LED顯示器的數(shù)字顯示,可以采用靜態(tài)顯示法和動態(tài)顯示法。由于靜態(tài)顯示法需要數(shù)據(jù)鎖存器等硬件,接口復(fù)雜一些??紤]時鐘顯示只有六位,且系統(tǒng)沒有其它復(fù)雜的處理任務(wù),所以決定采用動態(tài)掃描法實現(xiàn)LED的顯示。單片機采用易購的AT89C51系列,這樣單片機可具有足
2、夠的空余硬件資源實現(xiàn)其它的擴充功能,如考慮到要使用電池供電的話,則可采用LV系列單片機。硬件系統(tǒng)的總體構(gòu)成框架如圖1所示。圖1 單片機控制的多功能計時器系統(tǒng)的設(shè)計總體框圖1 . 3系統(tǒng)總體設(shè)計本單片機控制的多功能計時器系統(tǒng),采用單片機作為控制核心,具有控制靈活,簡單可靠,造價便宜等諸多優(yōu)點。單片機雖然是一個五臟俱全的計算機,但由于本身無開發(fā)能力,必須借肋開發(fā)工具來開發(fā)應(yīng)用軟件以與對硬件系統(tǒng)進行診斷。因此,我們要研制一個較完整的單片機產(chǎn)品時,必須完成以下幾步工作:硬件電路設(shè)計、組裝、調(diào)試應(yīng)用軟件的編制、調(diào)試應(yīng)用軟件的調(diào)試、固化、脫機運行(即脫離開發(fā)裝置)。本單片機控制系統(tǒng)的開發(fā)過程包括總體設(shè)計、
3、硬件設(shè)計、軟件設(shè)計等幾個階段,但各階段不是絕對分開的,有時是交叉進行的。本系統(tǒng)在設(shè)計上特點有如下所示1) 系統(tǒng)硬件結(jié)構(gòu)結(jié)合應(yīng)用軟件方案一并考慮。因為硬件結(jié)構(gòu)與軟件設(shè)計方案會產(chǎn)生相互影響,我們考慮的原則是:軟件能實現(xiàn)的功能盡可能由軟件來實現(xiàn),以簡化硬件結(jié)構(gòu)。但必須注意如用軟件來實現(xiàn)的硬件功能,其響應(yīng)時間要比直接用硬件來實現(xiàn)花的時間長,而且占用CPU時間。因此,選擇軟件方案時,要考慮到這此因素。2) 整個系統(tǒng)中相關(guān)的器件要盡可能做到性能匹配。3) 可靠性與抗干擾設(shè)計是硬件系統(tǒng)設(shè)計不可缺少的一部分,它包括芯片、器件選擇、去耦濾波、印刷電路板布線、通道隔離等。4) 單片機外接電路較多時,必須考慮其驅(qū)動
4、能力。驅(qū)動能力不足時,系統(tǒng)工作不可靠,解決的辦法是增加驅(qū)動能力,增設(shè)線驅(qū)動器或者減少芯片功耗,降低總線負(fù)載。本電路的硬件設(shè)計包括:加1電路、減1電路、復(fù)位電路、振蕩電路與驅(qū)動電路、顯示電路等。在完成各個單元電路的設(shè)計與調(diào)試后,我們與軟件系統(tǒng)進行了聯(lián)調(diào),且達(dá)到了一個較為理想的結(jié)果。單片機控制的多功能計時器系統(tǒng)總體開發(fā)與設(shè)計的流程圖如圖2所示。圖2單片機控制的多功能計時器系統(tǒng)總體開發(fā)與設(shè)計的流程圖第二章系統(tǒng)硬件電路設(shè)計2 . 1硬件系統(tǒng)設(shè)計應(yīng)考慮的問題本單片機控制的多功能計時器系統(tǒng)在硬件系統(tǒng)設(shè)計上主要考慮下列幾點:(1) 盡可能選擇典型電路(2) 系統(tǒng)的擴充與外圍裝置,應(yīng)充分滿足應(yīng)用系統(tǒng)的要求,并
5、留一些擴充槽,以便進行二次開發(fā)。(3) 硬件結(jié)構(gòu)應(yīng)結(jié)合應(yīng)用軟件一并考慮。軟件有執(zhí)行的功能盡可能由軟件來執(zhí)行,以簡化硬件結(jié)構(gòu)。但必須注意,由軟件執(zhí)行硬件的功能,其響應(yīng)時間比直接使用硬件要長,且占用CPU時間。(4) 整個系統(tǒng)器件盡可能做到性能匹配。(5) 可靠性與抗干擾設(shè)計是硬件設(shè)計極其重要的部分,包括器件選擇、電路板布線、通道隔離等。(6) 單片機微處理器外接電路較多時,必須考慮其驅(qū)動能力,驅(qū)動能力不足時,系統(tǒng)工作不可靠。解決辦法是增加驅(qū)動能力,或減少IC功耗,降低總線負(fù)載。2 . 2電路各部分硬件電路介紹1)單片機控制的多功能計時器系統(tǒng)的設(shè)計總體框圖如圖3所示。圖3 單片機控制的多功能計時器
6、系統(tǒng)的設(shè)計總體框圖2)控制核心采用目前較為流行的、且價格低廉的89C51為控制核心,主要包括:單片機電路、加1電路、減1電路、復(fù)位電路、振蕩電路、數(shù)字驅(qū)動與顯示電路,下面我們一一進行闡明。硬件電路原理圖如圖4所示。圖4 硬件電路原理圖2 . 2 . 1單片機AT89C51與其特點 本系統(tǒng)以單片機AT89C51為控制核心,AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除100次。該器
7、件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器。AT89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。1主要特性:·與MCS-51 兼容 ·4K字節(jié)可編程閃爍存儲器 壽命:1000寫/擦循環(huán)數(shù)據(jù)保留時間:10年·全靜態(tài)工作:0Hz-24Hz·三級程序存儲器鎖定·128*8位部RAM·32可編程I/O線·兩個16位定時器/計數(shù)器·5個中斷源 ·可編程
8、串行通道·低功耗的閑置和掉電模式·片振蕩器和時鐘電路 圖4 89C2051引腳排列圖和主要參數(shù)2管腳說明:VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。 P1口:P1口是一個部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫
9、入1后,被部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其
10、特殊功能寄存器的容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳 備選功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時器0外部輸入)P3.5 T1(記時器
11、1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。 RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出
12、可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。 /EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有部程序存儲器。注意加密方式1時,/EA將部鎖定為RESET;當(dāng)/EA端保持高電平時,此間部程
13、序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入與部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。3芯片擦除: 整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可
14、選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復(fù)位為止。2 . 2 . 2振蕩器電路單片機振蕩器電路如圖所指示。 XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片振蕩器。石晶振蕩和瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。有余輸入至部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。如圖()所示:圖()振蕩電路2 . 2 .
15、 3復(fù)位電路:MCS-51單片機的復(fù)位條件是在RST端出現(xiàn)正脈沖,并能保持10ms以上的高電平,其復(fù)位電路一般采用上電復(fù)位和開關(guān)復(fù)位兩種形式,本系統(tǒng)復(fù)位如圖所示:圖系統(tǒng)復(fù)位電路2 . 2 . 4驅(qū)動與顯示電路.緩沖器74LS244本系統(tǒng)為了加大驅(qū)動顯示能力采用74LS244作為驅(qū)動器,74LS244是一種三態(tài)輸出的八緩沖器和線驅(qū)動器。 74LS244緩沖器主要用于三態(tài)輸出的存儲地址驅(qū)動器、時鐘驅(qū)動器和總線定向接收器等。其管腳圖如圖7所指示,參數(shù)表如表174LS244是三態(tài)輸出的八緩沖器,由2組、每組四路輸入、輸出構(gòu)成。每組有一個控制端,由控制端的高或低電平?jīng)Q定該組數(shù)據(jù)被接通還是斷開。
16、圖 7 74LS244管腳排列圖.5數(shù)碼管顯示電路本系統(tǒng)數(shù)碼管顯示電路如圖 所示,采用6個數(shù)碼管,數(shù)碼管管腳排列圖如圖所指示,在電子鐘里能分別顯示小時,分和秒,如13.26.21,在電子秒表中,分別顯示,分,表和毫秒,如99.56.86數(shù)碼管管腳排列圖在本系統(tǒng)中,由于用到的LED顯示器的位數(shù)較多時,為減少I/O口數(shù)目,簡化電路,降低成本,我們在LED顯示器采用動態(tài)顯示方式,如圖8所示。動態(tài)LED顯示器接口與工作原理 動態(tài)LED顯示器的電路連接特點是將各位LED顯示器的所有對應(yīng)段線并聯(lián)在一起,由一個8位I/O口控制輸出字段碼,而每位LED顯示器的公共端(共陽極點或共陰極點)不直接接地或+5V電源
17、,而是分別由另外的I/O口線控制(稱為位選)。LED顯示器的顯示容通過段碼I/O口和位選I/O口的相互配合控制,以動態(tài)掃描顯示的工作方式輸出待顯示的容。我們通過軟件程序系統(tǒng),發(fā)出控制信號,用P2。0-P2。5動態(tài)控制各個三極管的導(dǎo)通,來達(dá)到動態(tài)掃描的效果。圖8第三章 系統(tǒng)軟件電路設(shè)計31系統(tǒng)軟件設(shè)計概述在系統(tǒng)軟件設(shè)計時,應(yīng)根據(jù)系統(tǒng)軟件功能要求,將系統(tǒng)軟件分成若干個相對獨立的部分,并根據(jù)它們的聯(lián)系和時間上的關(guān)系,設(shè)計出合理的軟件總體結(jié)構(gòu)。通常在編制程序前先根據(jù)系統(tǒng)輸入和輸出變量建立起正確的數(shù)學(xué)模型,然后畫出程序流程框圖,要求流程框圖結(jié)構(gòu)清晰、簡捷、合理,畫流程框圖時還要對系統(tǒng)資源作具體的分配和說
18、明。編制程序時一般采用自頂向下的程序設(shè)計技術(shù),先設(shè)計監(jiān)控程序再設(shè)計各應(yīng)用程序模塊。各功能程序應(yīng)模塊化、子程序化,這樣不僅便于調(diào)試、,還便于個性和移植。在進行應(yīng)用系統(tǒng)的總體設(shè)計時,軟件設(shè)計和硬件設(shè)計應(yīng)統(tǒng)一考慮,相結(jié)合進行。當(dāng)系統(tǒng)的電路設(shè)計定型后,軟件的任務(wù)也就明確了。下圖為多功能計時器系統(tǒng)設(shè)計流程圖與系統(tǒng)框圖9:開始系統(tǒng)定義軟件結(jié)構(gòu)設(shè)計建立數(shù)學(xué)模型繪制程序流程圖編寫程序匯編在線仿真調(diào)試程序是否有錯修改程序固化程序結(jié)束圖9 多功能計時器系統(tǒng)設(shè)計流程圖32)系統(tǒng)軟件程序介紹主程序本設(shè)計中計時采有定時器To中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,當(dāng)端口開按下時,轉(zhuǎn)入相應(yīng)功能程序。基主程序執(zhí)行流程見圖10
19、圖10程序執(zhí)行流程.顯示子程序:數(shù)碼管顯示的數(shù)據(jù)存放在存單元70H75H中。其70H71H存放秒數(shù)據(jù),72H73H存放分?jǐn)?shù)據(jù),74H75H存時數(shù)據(jù),每一地真址單元均為十進制BCD碼。由于采用軟件動態(tài)掃描實現(xiàn)數(shù)據(jù)顯示功能,顯示用十進制BCD碼數(shù)據(jù)的對應(yīng)段碼存放在ROM表中。顯示時,先取出70H75H某一地址中的數(shù)據(jù),然后查得對應(yīng)的顯示用段碼,并從P0口輸出,P2口將對應(yīng)的數(shù)碼管選中供電,就能顯示該地址單元的數(shù)據(jù)值。為了顯示小數(shù)點與“一”、“A”等特殊字符,在顯示班級與計時時采用不同的顯示子程序。定時器T0中斷服務(wù)程序:定時器T0用于時間計時。定時溢,出中斷周期可分設(shè)為50ms和10ms。中斷進入
20、后,先判斷是時鐘計時還是秒表計時,時鐘計時累計中斷20次(即1s)時,對秒計數(shù)單元進行加1操作,秒表計時每10ms 進行加1操作.時釧計數(shù)單元地址分別在70H71H(秒)、76H77H(分)和78H79H(時),最大計時值為23時59分59秒.而秒表計數(shù)單元地址也在70H71H(0.001毫秒) 、76H77H(秒)和78H79H(分),最大工業(yè)計時值為99分59.99秒。7AH單元存放“熄滅符”數(shù)據(jù)(#0AH)。在計數(shù)單元中采用十進制BCD碼計數(shù),滿60(秒)表功能時有100)進位,T0中斷服務(wù)程序執(zhí)行流程見圖11 圖11T1中斷服務(wù)程序T1中斷服務(wù)程序用于指示調(diào)整單元數(shù)字的亮閃。在時間調(diào)整
21、狀態(tài)下,每過0.3 s,將對應(yīng)單元的顯示數(shù)據(jù)換成“熄滅符”數(shù)據(jù)(#0AH)。這樣在調(diào)整時間時,對應(yīng)調(diào)整單元的顯示數(shù)據(jù)會間隔閃亮。調(diào)時功能程序調(diào)時功能程序的設(shè)計方法是:按下P1.0口按鍵,若按下時間短于1s,則進入省電狀態(tài)(數(shù)碼管不亮,時鐘不停);否則進入調(diào)分狀態(tài),等待操作,此時計時器停止走動。當(dāng)再按下按鈕時,若按下時間短于0.5s,則時間加1分;若按下時間長于0.5s,則進入小時調(diào)整狀態(tài)。在小時調(diào)整狀態(tài)下,當(dāng)按鍵按下的時間長于0.5s時,退出調(diào)整狀態(tài),時鐘繼續(xù)走動。P1.1口按鍵在調(diào)時狀態(tài)下可實現(xiàn)減功能。時鐘秒表功能程序在正常計時狀態(tài)下,若按下P1.1口按鍵,則進行時鐘秒表功能的轉(zhuǎn)換,轉(zhuǎn)換后計
22、時從零開始。當(dāng)按下P1.2口的按鍵時,可實現(xiàn)清、計時啟動、暫停功能。第四章 系統(tǒng)調(diào)試與調(diào)試與抗干擾設(shè)計4 .1硬件調(diào)試硬件調(diào)試時,可先檢查印制與焊接的質(zhì)量情況,在檢查無誤后,可通電檢查顯示器的點亮狀況,若亮度不理想,可以調(diào)整口的電阻大小,一般情況下,取電阻即可獲得滿意的亮度效果。實驗室制作時,可結(jié)合示波器測試晶振與、端口的波形情況,進行綜合硬件測試分析。我們對硬件電路進行了調(diào)試,主要包括:(1) 在焊接前元器件要一一檢查是否完好,在焊接過程中逐一檢查電路是否接通。(2) 管座、元件焊接完畢,還要仔細(xì)檢查元件面各元件之間裸露部分有無相互接觸現(xiàn)象,焊接面的各捍點間、焊點與近鄰線有無連接,對布線密或
23、未加陰處理的應(yīng)注意檢查,這此可能造成短路的原因。(3) 在完成檢查后,先空載上電(未插芯片),檢查線路各管腳級插件的電位是否正常,特別是單片機管腳注上的各點電位(若有高壓,聯(lián)機調(diào)試時會通過仿真線進入仿真系統(tǒng),損壞有關(guān)器件)。若一切下沉將芯片插入各管座,再通電檢查各點電壓是否達(dá)到要求,邏輯電平是否符合電路或器件的邏輯關(guān)系。若有問題,掉電后再認(rèn)真檢查故障原因。4 .2軟件調(diào)試軟件調(diào)試在Wave E000編譯器下進行,源程序編譯與仿真調(diào)試應(yīng)分段或以子程序為單位一個一個進行,最后可結(jié)合硬件實時調(diào)試。系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試。硬件調(diào)試的任務(wù)是排除系統(tǒng)的硬件電路故障,包括設(shè)計性錯誤和工藝性故障。軟件
24、調(diào)試是利用開發(fā)工具進行在線仿真調(diào)試,除發(fā)現(xiàn)和解決程序錯誤外,也可以發(fā)現(xiàn)硬件故障。程序調(diào)試一般是一個模塊一個模塊地進行,一個子程序一個子程度地調(diào)試,最后聯(lián)起來統(tǒng)調(diào)。利用開發(fā)工具的單步和斷點運行方式,通過檢查應(yīng)用系統(tǒng)的CPU現(xiàn)場、RAM和SFR的容以與I/O口的狀態(tài),來檢查程序的執(zhí)行結(jié)果和系統(tǒng)I/O設(shè)備的狀態(tài)變化是否正常,從中發(fā)現(xiàn)程序的邏輯錯誤,轉(zhuǎn)移地址錯誤以與隨機的錄入錯誤等。也可以發(fā)現(xiàn)硬件設(shè)計與工藝錯誤和軟件算法錯誤。在調(diào)試過程中,要不斷調(diào)整、修改系統(tǒng)的硬件和軟件,直到其正確為止。聯(lián)機調(diào)試運行正常后,將軟件固化到EPROM中,脫機運行,并到生產(chǎn)現(xiàn)場投入實際工作,檢驗其可靠性和抗干擾能力,直到完
25、全滿足要求,系統(tǒng)才算研制成功。4 3系統(tǒng)抗干擾設(shè)計在提高硬件系統(tǒng)抗干擾能力的同時,軟件抗干擾以其設(shè)計靈活、節(jié)省硬件資源、可靠性好越來越受到重視。下面以MCS-51單片機系統(tǒng)為例,對微機系統(tǒng)軟件抗干擾方法進行研究。 1 軟件抗干擾方法的研究 在工程實踐中,軟件抗干擾研究的容主要是: 一、消除模擬輸入信號的嗓聲(如數(shù)字濾波技術(shù));二、程序運行混亂時使程序重入正軌的方法。本文針對后者提出了幾種有效的軟件抗干擾方法。 1.1 指令冗余 CPU取指令過程是先取操作碼,再取操作數(shù)。當(dāng)PC受干擾出現(xiàn)
26、錯誤,程序便脫離正常軌道“亂飛”,當(dāng)亂飛到某雙字節(jié)指令,若取指令時刻落在操作數(shù)上,誤將操作數(shù)當(dāng)作操作碼,程序?qū)⒊鲥e。若“飛” 到了三字節(jié)指令,出錯機率更大。 在關(guān)鍵地方人為插入一些單字節(jié)指令,或?qū)⒂行巫止?jié)指令重寫稱為指令冗余。通常是在雙字節(jié)指令和三字節(jié)指令后插入兩個字節(jié)以上的NOP。這樣即使亂飛程序飛到操作數(shù)上,由于空操作指令NOP的存在,避免了后面的指令被當(dāng)作操作數(shù)執(zhí)行,程序自動納入正軌。 此外,對系統(tǒng)流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入兩條NOP,也可將亂飛程序納入正軌,確保這些重要指令的執(zhí)
27、行。 1.2 攔截技術(shù) 所謂攔截,是指將亂飛的程序引向指定位置,再進行出錯處理。通常用軟件陷阱來攔截亂飛的程序。因此先要合理設(shè)計陷阱,其次要將陷阱安排在適當(dāng)?shù)奈恢谩?#160; 1.2.1 軟件陷阱的設(shè)計 當(dāng)亂飛程序進入非程序區(qū),冗余指令便無法起作用。通過軟件陷阱,攔截亂飛程序,將其引向指定位置,再進行出錯處理。軟件陷阱是指用來將捕獲的亂飛程序引向復(fù)位入口地址0000H的指令。通常在EPROM中非程序區(qū)填入以下指令作為軟件陷阱: &
28、#160; NOP NOP
29、60; LJMP 0000H 其機器碼為0000020000。 1.2.2 陷阱的安排 通常在程序中未使用的EPROM空間填0000020000。最后一條應(yīng)填入020000,當(dāng)亂飛程序 落到此區(qū),即可自動入軌。在用戶程序區(qū)各模塊之間的空余單元也可填入陷阱指令。當(dāng)使用的中斷因干擾而開放時,在對應(yīng)的中斷服務(wù)程序中設(shè)置軟件陷阱,能與時捕獲錯誤的中斷。如某應(yīng)用系統(tǒng)雖未用到外部中斷1,外部中斷1的中斷服務(wù)程序可為如下形式:
30、160; NOP NOP
31、0; RETI 返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障診斷程序與系統(tǒng)自恢復(fù)程序的設(shè)計可靠、 完善,用“LJMP 0000H”作返回指令可直接進入故障診斷程序,盡早地處理故障并恢復(fù)程序的運行。 考慮到程序存貯器的容量,軟件陷阱一般1K空間有2-3個就可以進行有效攔截。 1.3 軟件“看門狗”技術(shù)
32、0; 若失控的程序進入“死循環(huán)”,通常采用“看門狗”技術(shù)使程序脫離“死循環(huán)”。通過不斷檢測程序循環(huán)運行時間,若發(fā)現(xiàn)程序循環(huán)時間超過最大循環(huán)運行時間,則認(rèn)為系統(tǒng)陷入“死循環(huán)”,需進行出錯處理。 “看門狗”技術(shù)可由硬件實現(xiàn),也可由軟件實現(xiàn)。 在工業(yè)應(yīng)用中,嚴(yán)重的干擾有時會破壞中斷方式控制字,關(guān)閉中斷。則系統(tǒng)無法定時“喂狗”,硬件看門狗電路失效。而軟件看門狗可有效地解決這類問題。 在實際應(yīng)用中,采用環(huán)形中斷監(jiān)視系統(tǒng)。用定時器T0監(jiān)視定時器T1,用定時器T1監(jiān)視主程序,主程序監(jiān)視定時器T0。采用這種環(huán)形結(jié)構(gòu)的軟件“看門狗”具有良好的抗干擾性能
33、,大大提高了系統(tǒng)可靠性。對于需經(jīng)常使用T1定時器進行串口通訊的測控系統(tǒng),則定時器T1不能進行中斷,可改由串口中斷進行監(jiān)控(如果用的是MCS-52系列單片機,也可用T2代替T1進行監(jiān)視)。這種軟件“看門狗”監(jiān)視原理是:在主程序、T0中斷服務(wù)程序、T1中斷服務(wù)程序中各設(shè)一運行觀測變量,假設(shè)為MWatch、T0Watch 、T1Watch,主程序每循環(huán)一次,MWatch加,同樣T0、T1中斷服務(wù)程序執(zhí)行一次,T0Watch、 T1Watch加。在T0中斷服務(wù)程序過檢測T1Watch的變化情況判定T1運行是否正常,在T1中斷服務(wù)程序中檢測MWatch的變化情況判定主程序是否正常運行,在主程序過檢測T0
34、Watch的變化情況判別T0是否正常工作。若檢測到某觀測變量變化不正常,比如應(yīng)當(dāng)加1而未加1,則轉(zhuǎn)到出錯處理程序作排除故障處理。當(dāng)然,對主程序最大循環(huán)周期、定時器T0和T1定時周期應(yīng)予以全盤合理考慮。 2 系統(tǒng)故障處理、自恢復(fù)程序的設(shè)計 單片機系統(tǒng)因干擾復(fù)位或掉電后復(fù)位均屬非正常復(fù)位,應(yīng)進行故障診斷并能自動恢復(fù)非正常復(fù)位前的狀態(tài)。 2.1 非正常復(fù)位的識別 程序的執(zhí)行總是從0000H開始,導(dǎo)致程序從 0000H開始執(zhí)行有四種可能:一、系統(tǒng)開機上電復(fù)位;二、軟件故障復(fù)位;三、看門
35、狗超時未喂狗硬件復(fù)位; 四、任務(wù)正在執(zhí)行中掉電后來電復(fù)位。四種情況中除第一種情況外均屬非正常復(fù)位,需加以識別。 2.1.1 硬件復(fù)位與軟件復(fù)位的識別 此處硬件復(fù)位指開機復(fù)位與看門狗復(fù)位,硬件復(fù)位對寄存器有影響,如復(fù)位后PC=0000H, SP07H,PSW00H等。而軟件復(fù)位則對SP、SPW無影響。故對于微機測控系統(tǒng),當(dāng)程序正常運行時,將SP設(shè)置地址大于07H,或者將PSW的第5位用戶標(biāo)志位在系統(tǒng)正常運行時設(shè)為1。那么系統(tǒng)復(fù)位時只需檢測PSW.5標(biāo)志位或SP值便可判此是否硬件復(fù)位。圖12是采用PSW.5作上電標(biāo)志位判別硬、軟件復(fù)位的程序流程圖。
36、圖12 硬、軟件復(fù)位識別流程圖此外,由于硬件復(fù)位時片RAM狀態(tài)是隨機的,而軟件復(fù)位片RAM則可保持復(fù)位前狀態(tài),因此可選取片某一個或兩個單元作為上電標(biāo)志。設(shè) 40H用來做上電標(biāo)志,上電標(biāo)志字為78H,若系統(tǒng)復(fù)位后40H單元容不等于78H,則認(rèn)為是硬件復(fù)位,否則認(rèn)為是軟件復(fù)位,轉(zhuǎn)向出錯處理。若用兩個單元作上電標(biāo)志,則這種判別方法的可靠性更高。 2.1.2 開機復(fù)位與看門狗故障復(fù)位的識別 開機復(fù)位與看門狗故障復(fù)位因同屬硬件復(fù)位, 所以要想予以正確識別,一般要借助非易失性RAM或者EEROM。當(dāng)系統(tǒng)正常運行時,設(shè)置一可掉電保護的觀測單元。當(dāng)系統(tǒng)正常運行時
37、,在定時喂狗的中斷服務(wù)程序中使該觀測單元保持正常值(設(shè)為 AAH),而在主程中將該單元清零,因觀測單元掉電可保護,則開機時通過檢測該單元是否為正常值可判斷是否看門狗復(fù)位。 2.1.3 正常開機復(fù)位與非正常開機復(fù)位的識別 識別測控系統(tǒng)中因意外情況如系統(tǒng)掉電等情況引起的開機復(fù)位與正常開機復(fù)位,對于過程控制系統(tǒng)尤為重要。如某以時間為控制標(biāo)準(zhǔn)的測控系統(tǒng),完成一次測控任務(wù)需1小時。在已執(zhí)行測控50分鐘的情況下,系統(tǒng)電壓異常引起復(fù)位,此時若系統(tǒng)復(fù)位后又從頭開始進行測控則會造成不必要的時間消耗。因此可通過一監(jiān)測單元對當(dāng)前系統(tǒng)的運行狀態(tài)、系統(tǒng)時間予以監(jiān)控,將控制
38、過程分解為若干步或若干時間段,每執(zhí)行完一步或每運行一個時間段則對監(jiān)測單元置為關(guān)機允許值,不同的任務(wù)或任務(wù)的不同階段有不同的值,若系統(tǒng)正在進行測控任務(wù)或正在執(zhí)某時間段,則將監(jiān)測單元置為非正常關(guān)機值。那么系統(tǒng)復(fù)位后可據(jù)此單元判系統(tǒng)原來的運行狀態(tài),并跳到出錯處理程序中恢復(fù)系統(tǒng)原運行狀態(tài)。 2.2 非正常復(fù)位后系統(tǒng)自恢復(fù)運行的程序設(shè)計 對順序要求嚴(yán)格的一些過程控制系統(tǒng),系統(tǒng)非正常復(fù)位否,一般都要求從失控的那一個模塊或任務(wù)恢復(fù)運行。所以測控系統(tǒng)要作好重要數(shù)據(jù)單元、參數(shù)的備份,如系統(tǒng)運行狀態(tài)、系統(tǒng)的進程值、當(dāng)前輸入、輸出的值,當(dāng)前時鐘值、觀測單元值等,這些數(shù)據(jù)既要定時
39、備份,同時若有修改也應(yīng)立即予以備份。 當(dāng)在已判別出系統(tǒng)非正常復(fù)位的情況下,先要恢復(fù)一些必要的系統(tǒng)數(shù)據(jù),如顯示模塊的初始化、片外擴展芯片的初始化等。其次再對測控系包括顯示界面等的恢復(fù)。之后再把復(fù)位前的任務(wù)、參數(shù)、運行時間等恢復(fù), 再進入系統(tǒng)運行狀態(tài)。 應(yīng)當(dāng)說明的是,真實地恢復(fù)系統(tǒng)的運行狀態(tài)需 要極為細(xì)致地對系統(tǒng)的重要數(shù)據(jù)予以備份,并加以數(shù)據(jù)可靠性檢查,以保證恢復(fù)的數(shù)據(jù)的可靠性。 其次,對多任務(wù)、多進程測控系統(tǒng),數(shù)據(jù)的恢復(fù)需考慮恢復(fù)的次序問題,筆者實際應(yīng)用的數(shù)據(jù)恢復(fù)過程流程圖如圖13所示。統(tǒng)的系統(tǒng)狀態(tài)、運行參數(shù)等予以恢復(fù), 圖13
40、系統(tǒng)自恢復(fù)程序流程圖圖中恢復(fù)系統(tǒng)基本數(shù)據(jù)是指取出備份的數(shù)據(jù)覆蓋當(dāng)前的系統(tǒng)數(shù)據(jù)。系統(tǒng)基本初始化是指對芯片、顯示、輸入輸出方式等進行初始化,要注意輸入輸出的初始化不應(yīng)造成誤動作。而復(fù)位前任務(wù)的初始化是指任務(wù)的執(zhí)行狀態(tài)、運行時間等。 3 結(jié)束語 對于軟件抗干擾的一些其它常用方法如數(shù)字濾波、RAM數(shù)據(jù)保護與糾錯等,限于篇幅,本文未作討論。在工程實踐常都是幾種抗干擾方法并用,互相補充完善,才能取得較好的抗干擾效果。從根本上來說,硬件抗干擾是主動的,而軟件是抗干擾是被動的。細(xì)致周到地分析干擾源,硬件與軟件抗干擾相結(jié)合,完善系統(tǒng)監(jiān)控程序,設(shè)計一穩(wěn)定可靠的單片
41、機系統(tǒng)是完全可行的。4 .4性能分析按照設(shè)計程序分析,顯示器動態(tài)掃描的頻率約為z,實際使用觀察時完全沒有閃爍。由于計時中斷程序中加了中斷延時誤差處理,所以實際計時的走時精度非常高,可滿足多種場合的應(yīng)用需要;另外上電時的班級、學(xué)號、制作日期滾動顯示可以方便學(xué)生設(shè)計作業(yè)的辯認(rèn)區(qū)別。系統(tǒng)程序清單中斷入口程序主程序1s計時程序T0中斷服務(wù)程序秒表計時程序閃動調(diào)時程序T1中斷服務(wù)程序,用作時間調(diào)整時調(diào)整單元閃爍指示加1子程序分減1子程序時減1子程序清0程序時鐘調(diào)整程序顯示程序ST子程序,上電時顯示年月班級用,采用移動顯示延時程序控制源程序清單以下是秒表時鐘計時器的控制源程序AT89C5秒表時鐘程序定時器
42、、溢出周期為ms(ms),T0為調(diào)整時閃爍用,1.0、P1.1、P1.2為調(diào)整按鈕,口為字符輸出口,采用共陽顯示管。中斷入口程序ORG 0000H 程序執(zhí)行開始地址LJMP START 跳到標(biāo)號START執(zhí)行ORG 0003H駛 外中斷中斷程序入口RETI 外中斷中斷返回ORG 000BH 定時器T0中斷程序入口LJMP INTT0 跳至INTT0執(zhí)行ORG 0013H 外中斷中斷程序入口RETI 外斷中斷返回ORG 001BH 定時器T1中斷程序入口LJMP INTT1 跳至INTT1執(zhí)行ORG 0023H 串行中斷程序入口地址RETI 串行中斷程序返回主程序START: LCALL ST
43、上電顯示年月日與班級學(xué)號 MOV R0, #70H清70H7AH共11個存單元 MOV R7, #0BHCldisp: MOV R0, #00h INC R0 DJNZ R7,CLdisp MOV 20H,#00H 清20H(標(biāo)志用) MOV 7AH,#0AH 放入“熄滅符”數(shù)據(jù) MOV TMOD,#11H設(shè)T1、T1為16時器 MOV TL0,#0B0H50定時初值(計時用) MOV TH0,#3CH50定時初值 MOV TL1,#0B0H50ms定時初值(T1爍定時用) MOV TH1,#3CH 50ms定時初值 SETB EA 總中斷開放 SETB ET0 允許T0中斷 SETB TR0
44、 開啟T0定時器 MOV R4,#14H 1s定時用初值(50msX20)START1: LCALL DISPLAY 調(diào)用顯示子程序 JNB P1.0,SETMM1 P1.0口為0時,轉(zhuǎn)時間調(diào)整程序 JNB P1.1,FUNSS 秒表功能,P1.1按鍵調(diào)時時作減1操作 JNB P1.2,FUNPT STOP,PUSE,CLR SJMP START1 P1.0口為1時跳回START1SETMM1: LJMP SETMM 轉(zhuǎn)到時間調(diào)整程序SETMMFUNSS: LCALL DS20MS P1.1,start1WAIT11: JNB P1.1,WAIT11 CPL 03H MOV 70H,#00H
45、MOV 71H,#00H MOV 76H,#00H MOV 77H,#00H MOV 78H,#00H MOV 79H,#00H AJMP START1FUNPT: LCALL DS20MS P1.2,START1WAIT22: JNB P1.2,WAIT21 CLR ET0 CLR TR0WAIT33: P1.2,WAIT31 LCALL DS20MS P1.2,WAIT33WAIT66: JNB P1.2,WAIT61 MOV R0,#70H 清70H79H共10個存單元 MOV R7,#0AHCLEARP: MOV R0,#00H INC R0 DJNZ R7,CLEARPWAIT44:
46、 P1.2,WAIT41 LCALL DS20MS P1.2,WAIT44WAIT55: JNB P1.2,WAIT51 SETB ET0 SETB TR0 AjmP START1WAIT21: LCALL DISPLAY AJMP WAIT22WAIT31: LCALL DISPLAY AJMP WAIT33wait41: lcall display ajmp wait44WAIT51: LCALL DISPLAY AJMP WAIT55WAIT61: LCALL DISPLAY AJMP WAIT66;1s計時程序T0中斷服務(wù)程序INTT0: PUSH ACC 累加器入棧保護 PUSH P
47、SW 狀態(tài)字入棧保護 CLR ET0 關(guān)T0中斷允許 CLR TR0 關(guān)閉定器T0 03H,FSS 標(biāo)志為1轉(zhuǎn)秒表處理程序(10ms定時) MOV A,#0B7H 中斷響應(yīng)時間同步修正 ADD A,TL0 低8位初值修正 MOV TL0,A 重裝初值(低8位修正值) MOV A,#3CH 高8位初值修正 ADDC A,TH0 MOV TH0,A 重裝初值(高8位修正值) SETB TR0 開啟定時器T0 DJNZ R4,OUTT0 20次中斷未到中斷退出ADDSS: MOV R4,#14H 20次中斷到(1s)重賦初值 MOV R0,#71H 指向秒計時單元(71H79H) ACALL ADD
48、1 調(diào)用加1程序(加1s操作) MOV A,R3 秒數(shù)據(jù)放入A(R3為2位十進制數(shù)組合) CLR C 清進位標(biāo)志 CJNE A,#60H,ADDMMADDMM: JC OUTT0 短于60s時中斷退出 AcALL CLR0 長于或等于60s時對秒計時單元清0 MOV R0,#77H 指向分計時單元(76H77H) ACALL ADD1 分計時單元加1min MOV A,R3 分?jǐn)?shù)據(jù)放入A CLR C 清進位標(biāo)志 CJNE A,#60H,ADDHHADDHH: JC OUTT0 短于60min時中斷退出 ACALL CLR0 長于或等于60min時分計時單元清0 MOV R0,#79H 指幾小時
49、計時單元(78H79H) ACALL ADD1 小時計時單元加1h MOV A,R3 時數(shù)據(jù)放入A CLR C 清進位標(biāo)志 03H,OUTT0 秒表時最大數(shù)為99 CJNE A,#24H,HOURHOUR: JC OUTT0 短于24h中斷退出 ACALL CLR0 長于或等于24h小時計時單元清0OUTT0: MOV 72H,76H 中斷退出時將分、時計時單元數(shù)據(jù)移 MOV 73H,77H 入對應(yīng)顯示單元 MOV 74H,78H MOV 75H,79H POP PSW 恢復(fù)狀態(tài)字(出棧) POP ACC 恢復(fù)累加器 SETB ET0 開放T0中斷 RETI 中斷返回秒表計時程序(10min加1),低2位為0.1、0.01秒,中間2位為秒,最高壓鍋位為分最大計數(shù)值為99分59.99秒FSS: MOV A,#0F7H 重裝初值(10ms),中斷響應(yīng)時間同步修正 ADD A,TL0 低8位初值修正 MOV TL0,A 重裝初值(低8位修正值) MOV A,#0D8H 高8位初值修正 ADDC A,TH0 mov th0,a 重裝初值(高8位修正值) setb tr0 開啟定時器T0 MOV R0,#71H 指向秒計時單元(71H72H) ACALL ADD1 調(diào)用加1程序(加1s操作) CLR C MOV A,R3 JZ
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年全球及中國洗衣劑市場銷售狀況及競爭趨勢預(yù)測報告
- 2024-2030年全球及中國智慧停車引導(dǎo)系統(tǒng)行業(yè)發(fā)展規(guī)模及投資前景展望報告
- 2024-2030年全球及中國工業(yè)級N,N二甲基乙酰胺行業(yè)需求動態(tài)及發(fā)展前景預(yù)測報告
- 2024-2030年全球及中國個人防護設(shè)備行業(yè)銷售現(xiàn)狀及需求規(guī)模預(yù)測報告
- 2024-2030年全球pH鹽行業(yè)營銷策略及競爭前景預(yù)測報告
- 2024-2030年中國高速鐵路建設(shè)行業(yè)運營模式發(fā)展規(guī)劃分析報告
- 2024-2030年中國高端禮品酒行業(yè)市場運營狀況及投資前景展望報告版
- 2024-2030年中國高碳醇行業(yè)競爭力策略及發(fā)展風(fēng)險分析報告版
- 2024-2030年中國高強度捆帶項目可行性研究報告
- 2024-2030年中國高分子泡沫材料行業(yè)產(chǎn)銷狀況及供應(yīng)情況預(yù)測報告
- 銀行面試無領(lǐng)導(dǎo)小組討論題目及答案
- 中建抗浮錨桿專項施工方案范例
- 【課件】信息系統(tǒng)的組成與功能 2023-2024學(xué)年人教中圖版(2019)高中信息技術(shù)必修2
- 主播藝人入職面試信息登記表
- 灌注樁樁基工程樁頭破除、缺陷修補、接樁施工方案
- 掘進工作面貫通專項辨識評估報告
- 疼痛評估:準(zhǔn)確評估病人疼痛
- 部編版五年級上冊第二單元習(xí)作《“漫畫”老師》教學(xué)實錄
- 《嚴(yán)以律已+做遵紀(jì)守法的好少年+主題班會教育》
- 強生干式生化V350檢測儀標(biāo)準(zhǔn)操作程序(SOP)
- 06-2018泥石流災(zāi)害防治工程勘查規(guī)范(試行)
評論
0/150
提交評論