基于單片機控制的多功能計時器系統的設計與實現_第1頁
基于單片機控制的多功能計時器系統的設計與實現_第2頁
基于單片機控制的多功能計時器系統的設計與實現_第3頁
基于單片機控制的多功能計時器系統的設計與實現_第4頁
基于單片機控制的多功能計時器系統的設計與實現_第5頁
已閱讀5頁,還剩27頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第一章 系統的總體設計1 . 1功能要求本系統要求能能完成電子時鐘顯示,調整,節能運行,電子秒表記數等多種功能,由按鍵電路或遙控電路完成功能的設置,秒表時鐘計時器要求用六位LED數碼管顯示時、分、秒,以24h(小時)計時方式。使用按鍵開關或遙控開關可實現時分調整、秒表時鐘功能轉換、省電(關閉顯示)等功能。1 . 2方案論證為了實現LED顯示器的數字顯示,可以采用靜態顯示法和動態顯示法。由于靜態顯示法需要數據鎖存器等硬件,接口復雜一些。考慮時鐘顯示只有六位,且系統沒有其它復雜的處理任務,所以決定采用動態掃描法實現LED的顯示。單片機采用易購的AT89C51系列,這樣單片機可具有足夠的空余硬件資源

2、實現其它的擴充功能,如考慮到要使用電池供電的話,則可采用LV系列單片機。硬件系統的總體構成框架如圖1所示。 圖1 單片機控制的多功能計時器系統的設計總體框圖 1 . 3系統總體設計本單片機控制的多功能計時器系統,采用單片機作為控制核心,具有控制靈活,簡單可靠,造價便宜等諸多優點。單片機雖然是一個五臟俱全的計算機,但由于本身無開發能力,必須借肋開發工具來開發應用軟件以及對硬件系統進行診斷。因此,我們要研制一個較完整的單片機產品時,必須完成以下幾步工作:硬件電路設計、組裝、調試應用軟件的編制、調試應用軟件的鏈接調試、固化、脫機運行(即脫離開發裝置)。本單片機控制系統的開發過程包括總體設計、硬件設計

3、、軟件設計等幾個階段,但各階段不是絕對分開的,有時是交叉進行的。本系統在設計上特點有如下所示1) 系統硬件結構結合應用軟件方案一并考慮。因為硬件結構與軟件設計方案會產生相互影響,我們考慮的原則是:軟件能實現的功能盡可能由軟件來實現,以簡化硬件結構。但必須注意如用軟件來實現的硬件功能,其響應時間要比直接用硬件來實現花的時間長,而且占用CPU時間。因此,選擇軟件方案時,要考慮到這此因素。2) 整個系統中相關的器件要盡可能做到性能匹配。3) 可靠性及抗干擾設計是硬件系統設計不可缺少的一部分,它包括芯片、器件選擇、去耦濾波、印刷電路板布線、通道隔離等。4) 單片機外接電路較多時,必須考慮其驅動能力。驅

4、動能力不足時,系統工作不可靠,解決的辦法是增加驅動能力,增設線驅動器或者減少芯片功耗,降低總線負載。本電路的硬件設計包括:加1電路、減1電路、復位電路、振蕩電路與驅動電路、顯示電路等。在完成各個單元電路的設計與調試后,我們與軟件系統進行了聯調,且達到了一個較為理想的結果。單片機控制的多功能計時器系統總體開發與設計的流程圖如圖2所示。圖2單片機控制的多功能計時器系統總體開發與設計的流程圖第二章系統硬件電路設計2 . 1硬件系統設計應考慮的問題本單片機控制的多功能計時器系統在硬件系統設計上主要考慮下列幾點:(1) 盡可能選擇典型電路(2) 系統的擴充與外圍裝置,應充分滿足應用系統的要求,并留一些擴

5、充槽,以便進行二次開發。(3) 硬件結構應結合應用軟件一并考慮。軟件有執行的功能盡可能由軟件來執行,以簡化硬件結構。但必須注意,由軟件執行硬件的功能,其響應時間比直接使用硬件要長,且占用CPU時間。(4) 整個系統器件盡可能做到性能匹配。(5) 可靠性及抗干擾設計是硬件設計極其重要的部分,包括器件選擇、電路板布線、通道隔離等。(6) 單片機微處理器外接電路較多時,必須考慮其驅動能力,驅動能力不足時,系統工作不可靠。解決辦法是增加驅動能力,或減少IC功耗,降低總線負載。2 . 2電路各部分硬件電路介紹1)單片機控制的多功能計時器系統的設計總體框圖如圖3所示。圖3 單片機控制的多功能計時器系統的設

6、計總體框圖2)控制核心采用目前較為流行的、且價格低廉的89C51為控制核心,主要包括:單片機電路、加1電路、減1電路、復位電路、振蕩電路、數字驅動與顯示電路,下面我們一一進行闡明。硬件電路原理圖如圖4所示。 圖4 硬件電路原理圖2 . 2 . 1單片機AT89C51及其特點本系統以單片機AT89C51為控制核心,AT89C51是一種帶4K字節閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。單片機的可擦除只讀存儲器可以反復擦除100次。該器件采用ATMEL高

7、密度非易失存儲器制造技術制造,與工業標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器。AT89C單片機為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。1主要特性:與MCS-51 兼容 4K字節可編程閃爍存儲器 壽命:1000寫/擦循環數據保留時間:10年全靜態工作:0Hz-24Hz三級程序存儲器鎖定128*8位內部RAM32可編程I/O線兩個16位定時器/計數器5個中斷源 可編程串行通道低功耗的閑置和掉電模式片內振蕩器和時鐘電路 圖4 89C2051引腳排列圖和主要參數2管腳說明:VCC:供電電壓。G

8、ND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個內部上拉電阻的8位

9、雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸

10、入,由于外部下拉為低電平,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(記時器1外部輸入)P3.6 /WR(外部數據存儲器寫選通)P3.7 /RD(外部數據存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的

11、輸出電平用于鎖存地址的地位字節。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不

12、出現。/EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。3芯片擦除:整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節被重復編程以前,該操作必須被執行。此外,AT89C51

13、設有穩態邏輯,可以在低到零頻率的條件下靜態邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數器,串口和中斷系統仍在工作。在掉電模式下,保存RAM的內容并且凍結振蕩器,禁止所用其他芯片功能,直到下一個硬件復位為止。2 . 2 . 2振蕩器電路單片機振蕩器電路如圖所指示。XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅動器件,XTAL2應不接。有余輸入至內部時鐘信號要通過一個二分頻觸發器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。如圖()所示:圖()

14、振蕩電路2 . 2 . 3復位電路:MCS-51單片機的復位條件是在RST端出現正脈沖,并能保持10ms以上的高電平,其復位電路一般采用上電復位和開關復位兩種形式,本系統復位如圖所示: 圖系統復位電路2 . 2 . 4驅動與顯示電路.緩沖器74LS244本系統為了加大驅動顯示能力采用74LS244作為驅動器,74LS244是一種三態輸出的八緩沖器和線驅動器。74LS244緩沖器主要用于三態輸出的存儲地址驅動器、時鐘驅動器和總線定向接收器等。其管腳圖如圖7所指示,參數表如表174LS244是三態輸出的八緩沖器,由2組、每組四路輸入、輸出構成。每組有一個控制端,由控制端的高或低電平決定該組數據被接

15、通還是斷開。圖 7 74LS244管腳排列圖.5數碼管顯示電路本系統數碼管顯示電路如圖 所示,采用6個數碼管,數碼管管腳排列圖如圖所指示,在電子鐘里能分別顯示小時,分和秒,如13.26.21,在電子秒表中,分別顯示,分,表和毫秒,如99.56.86 數碼管管腳排列圖在本系統中,由于用到的LED顯示器的位數較多時,為減少I/O口數目,簡化電路,降低成本,我們在LED顯示器采用動態顯示方式,如圖8所示。動態LED顯示器接口及工作原理 動態LED顯示器的電路連接特點是將各位LED顯示器的所有對應段線并聯在一起,由一個8位I/O口控制輸出字段碼,而每位LED顯示器的公共端(共陽極點或共陰極點)不直接接

16、地或+5V電源,而是分別由另外的I/O口線控制(稱為位選)。LED顯示器的顯示內容通過段碼I/O口和位選I/O口的相互配合控制,以動態掃描顯示的工作方式輸出待顯示的內容。我們通過軟件程序系統,發出控制信號,用P2。0-P2。5動態控制各個三極管的導通,來達到動態掃描的效果。 圖8第三章 系統軟件電路設計31系統軟件設計概述在系統軟件設計時,應根據系統軟件功能要求,將系統軟件分成若干個相對獨立的部分,并根據它們的聯系和時間上的關系,設計出合理的軟件總體結構。通常在編制程序前先根據系統輸入和輸出變量建立起正確的數學模型,然后畫出程序流程框圖,要求流程框圖結構清晰、簡捷、合理,畫流程框圖時還要對系統

17、資源作具體的分配和說明。編制程序時一般采用自頂向下的程序設計技術,先設計監控程序再設計各應用程序模塊。各功能程序應模塊化、子程序化,這樣不僅便于調試、鏈接,還便于個性和移植。在進行應用系統的總體設計時,軟件設計和硬件設計應統一考慮,相結合進行。當系統的電路設計定型后,軟件的任務也就明確了。下圖為多功能計時器系統設計流程圖及系統框圖9:開始系統定義軟件結構設計建立數學模型繪制程序流程圖編寫程序匯編在線仿真調試程序是否有錯修改程序固化程序結束圖9 多功能計時器系統設計流程圖32)系統軟件程序介紹主程序本設計中計時采有定時器To中斷完成,其余狀態循環調用顯示子程序,當端口開按下時,轉入相應功能程序。

18、基主程序執行流程見圖10圖10程序執行流程.顯示子程序:數碼管顯示的數據存放在內存單元70H75H中。其70H71H存放秒數據,72H73H存放分數據,74H75H存時數據,每一地真址單元內均為十進制BCD碼。由于采用軟件動態掃描實現數據顯示功能,顯示用十進制BCD碼數據的對應段碼存放在ROM表中。顯示時,先取出70H75H某一地址中的數據,然后查得對應的顯示用段碼,并從P0口輸出,P2口將對應的數碼管選中供電,就能顯示該地址單元的數據值。為了顯示小數點及“一”、“A”等特殊字符,在顯示班級及計時時采用不同的顯示子程序。定時器T0中斷服務程序:定時器T0用于時間計時。定時溢,出中斷周期可分設為

19、50ms和10ms。中斷進入后,先判斷是時鐘計時還是秒表計時,時鐘計時累計中斷20次(即1s)時,對秒計數單元進行加1操作,秒表計時每10ms 進行加1操作.時釧計數單元地址分別在70H71H(秒)、76H77H(分)和78H79H(時),最大計時值為23時59分59秒.而秒表計數單元地址也在70H71H(0.001毫秒) 、76H77H(秒)和78H79H(分),最大工業計時值為99分59.99秒。7AH單元內存放“熄滅符”數據(#0AH)。在計數單元中采用十進制BCD碼計數,滿60(秒)表功能時有100)進位,T0中斷服務程序執行流程見圖11 圖11T1中斷服務程序T1中斷服務程序用于指示

20、調整單元數字的亮閃。在時間調整狀態下,每過0.3 s,將對應單元的顯示數據換成“熄滅符”數據(#0AH)。這樣在調整時間時,對應調整單元的顯示數據會間隔閃亮。調時功能程序調時功能程序的設計方法是:按下P1.0口按鍵,若按下時間短于1s,則進入省電狀態(數碼管不亮,時鐘不停);否則進入調分狀態,等待操作,此時計時器停止走動。當再按下按鈕時,若按下時間短于0.5s,則時間加1分;若按下時間長于0.5s,則進入小時調整狀態。在小時調整狀態下,當按鍵按下的時間長于0.5s時,退出調整狀態,時鐘繼續走動。P1.1口按鍵在調時狀態下可實現減功能。時鐘秒表功能程序在正常計時狀態下,若按下P1.1口按鍵,則進

21、行時鐘秒表功能的轉換,轉換后計時從零開始。當按下P1.2口的按鍵時,可實現清、計時啟動、暫停功能。第四章 系統調試與調試及抗干擾設計4 .1硬件調試硬件調試時,可先檢查印制及焊接的質量情況,在檢查無誤后,可通電檢查顯示器的點亮狀況,若亮度不理想,可以調整口的電阻大小,一般情況下,取電阻即可獲得滿意的亮度效果。實驗室制作時,可結合示波器測試晶振及、端口的波形情況,進行綜合硬件測試分析。我們對硬件電路進行了調試,主要包括:(1) 在焊接前元器件要一一檢查是否完好,在焊接過程中逐一檢查電路是否接通。(2) 管座、元件焊接完畢,還要仔細檢查元件面各元件之間裸露部分有無相互接觸現象,焊接面的各捍點間、焊

22、點與近鄰線有無連接,對布線密或未加陰處理的應注意檢查,這此可能造成短路的原因。(3) 在完成檢查后,先空載上電(未插芯片),檢查線路各管腳級插件的電位是否正常,特別是單片機管腳注上的各點電位(若有高壓,聯機調試時會通過仿真線進入仿真系統,損壞有關器件)。若一切下沉將芯片插入各管座,再通電檢查各點電壓是否達到要求,邏輯電平是否符合電路或器件的邏輯關系。若有問題,掉電后再認真檢查故障原因。4 .2軟件調試軟件調試在Wave E000編譯器下進行,源程序編譯及仿真調試應分段或以子程序為單位一個一個進行,最后可結合硬件實時調試。系統調試包括硬件調試和軟件調試。硬件調試的任務是排除系統的硬件電路故障,包

23、括設計性錯誤和工藝性故障。軟件調試是利用開發工具進行在線仿真調試,除發現和解決程序錯誤外,也可以發現硬件故障。程序調試一般是一個模塊一個模塊地進行,一個子程序一個子程度地調試,最后聯起來統調。利用開發工具的單步和斷點運行方式,通過檢查應用系統的CPU現場、RAM和SFR的內容以及I/O口的狀態,來檢查程序的執行結果和系統I/O設備的狀態變化是否正常,從中發現程序的邏輯錯誤,轉移地址錯誤以及隨機的錄入錯誤等。也可以發現硬件設計與工藝錯誤和軟件算法錯誤。在調試過程中,要不斷調整、修改系統的硬件和軟件,直到其正確為止。聯機調試運行正常后,將軟件固化到EPROM中,脫機運行,并到生產現場投入實際工作,

24、檢驗其可靠性和抗干擾能力,直到完全滿足要求,系統才算研制成功。4 3系統抗干擾設計在提高硬件系統抗干擾能力的同時,軟件抗干擾以其設計靈活、節省硬件資源、可靠性好越來越受到重視。下面以MCS-51單片機系統為例,對微機系統軟件抗干擾方法進行研究。 1 軟件抗干擾方法的研究 在工程實踐中,軟件抗干擾研究的內容主要是: 一、消除模擬輸入信號的嗓聲(如數字濾波技術);二、程序運行混亂時使程序重入正軌的方法。本文針對后者提出了幾種有效的軟件抗干擾方法。 1.1 指令冗余 CPU取指令過程是先取操作碼,再取操作數。當PC受干擾出現錯誤,程序便脫離正常軌道“亂飛”,當亂飛到某雙字節指令,若取指令時刻落在操作

25、數上,誤將操作數當作操作碼,程序將出錯。若“飛” 到了三字節指令,出錯機率更大。 在關鍵地方人為插入一些單字節指令,或將有效單字節指令重寫稱為指令冗余。通常是在雙字節指令和三字節指令后插入兩個字節以上的NOP。這樣即使亂飛程序飛到操作數上,由于空操作指令NOP的存在,避免了后面的指令被當作操作數執行,程序自動納入正軌。 此外,對系統流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入兩條NOP,也可將亂飛程序納入正軌,確保這些重要指令的執行。 1.2 攔截技術 所謂攔截,是指將亂飛的程序引向指定位置,再進行出錯處理。通常用軟件陷阱來攔截亂飛的程序。因此先要合理設計

26、陷阱,其次要將陷阱安排在適當的位置。 1.2.1 軟件陷阱的設計 當亂飛程序進入非程序區,冗余指令便無法起作用。通過軟件陷阱,攔截亂飛程序,將其引向指定位置,再進行出錯處理。軟件陷阱是指用來將捕獲的亂飛程序引向復位入口地址0000H的指令。通常在EPROM中非程序區填入以下指令作為軟件陷阱: NOP NOP LJMP 0000H 其機器碼為0000020000。 1.2.2 陷阱的安排 通常在程序中未使用的EPROM空間填0000020000。最后一條應填入020000,當亂飛程序 落到此區,即可自動入軌。在用戶程序區各模塊之間的空余單元也可填入陷阱指令。當使用的中斷因干擾而開放時,在對應的中

27、斷服務程序中設置軟件陷阱,能及時捕獲錯誤的中斷。如某應用系統雖未用到外部中斷1,外部中斷1的中斷服務程序可為如下形式: NOP NOP RETI 返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障診斷程序與系統自恢復程序的設計可靠、 完善,用“LJMP 0000H”作返回指令可直接進入故障診斷程序,盡早地處理故障并恢復程序的運行。 考慮到程序存貯器的容量,軟件陷阱一般1K空間有2-3個就可以進行有效攔截。 1.3 軟件“看門狗”技術 若失控的程序進入“死循環”,通常采用“看門狗”技術使程序脫離“死循環”。通過不斷檢測程序循環運行時間,若發現程序循環時間超過最大循環運行時間,則認

28、為系統陷入“死循環”,需進行出錯處理。 “看門狗”技術可由硬件實現,也可由軟件實現。 在工業應用中,嚴重的干擾有時會破壞中斷方式控制字,關閉中斷。則系統無法定時“喂狗”,硬件看門狗電路失效。而軟件看門狗可有效地解決這類問題。 在實際應用中,采用環形中斷監視系統。用定時器T0監視定時器T1,用定時器T1監視主程序,主程序監視定時器T0。采用這種環形結構的軟件“看門狗”具有良好的抗干擾性能,大大提高了系統可靠性。對于需經常使用T1定時器進行串口通訊的測控系統,則定時器T1不能進行中斷,可改由串口中斷進行監控(如果用的是MCS-52系列單片機,也可用T2代替T1進行監視)。這種軟件“看門狗”監視原理

29、是:在主程序、T0中斷服務程序、T1中斷服務程序中各設一運行觀測變量,假設為MWatch、T0Watch 、T1Watch,主程序每循環一次,MWatch加,同樣T0、T1中斷服務程序執行一次,T0Watch、 T1Watch加。在T0中斷服務程序中通過檢測T1Watch的變化情況判定T1運行是否正常,在T1中斷服務程序中檢測MWatch的變化情況判定主程序是否正常運行,在主程序中通過檢測T0Watch的變化情況判別T0是否正常工作。若檢測到某觀測變量變化不正常,比如應當加1而未加1,則轉到出錯處理程序作排除故障處理。當然,對主程序最大循環周期、定時器T0和T1定時周期應予以全盤合理考慮。 2

30、 系統故障處理、自恢復程序的設計 單片機系統因干擾復位或掉電后復位均屬非正常復位,應進行故障診斷并能自動恢復非正常復位前的狀態。 2.1 非正常復位的識別 程序的執行總是從0000H開始,導致程序從 0000H開始執行有四種可能:一、系統開機上電復位;二、軟件故障復位;三、看門狗超時未喂狗硬件復位; 四、任務正在執行中掉電后來電復位。四種情況中除第一種情況外均屬非正常復位,需加以識別。 2.1.1 硬件復位與軟件復位的識別 此處硬件復位指開機復位與看門狗復位,硬件復位對寄存器有影響,如復位后PC=0000H, SP07H,PSW00H等。而軟件復位則對SP、SPW無影響。故對于微機測控系統,當

31、程序正常運行時,將SP設置地址大于07H,或者將PSW的第5位用戶標志位在系統正常運行時設為1。那么系統復位時只需檢測PSW.5標志位或SP值便可判此是否硬件復位。圖12是采用PSW.5作上電標志位判別硬、軟件復位的程序流程圖。圖12 硬、軟件復位識別流程圖此外,由于硬件復位時片內RAM狀態是隨機的,而軟件復位片內RAM則可保持復位前狀態,因此可選取片內某一個或兩個單元作為上電標志。設 40H用來做上電標志,上電標志字為78H,若系統復位后40H單元內容不等于78H,則認為是硬件復位,否則認為是軟件復位,轉向出錯處理。若用兩個單元作上電標志,則這種判別方法的可靠性更高。 2.1.2 開機復位與

32、看門狗故障復位的識別 開機復位與看門狗故障復位因同屬硬件復位, 所以要想予以正確識別,一般要借助非易失性RAM或者EEROM。當系統正常運行時,設置一可掉電保護的觀測單元。當系統正常運行時,在定時喂狗的中斷服務程序中使該觀測單元保持正常值(設為 AAH),而在主程中將該單元清零,因觀測單元掉電可保護,則開機時通過檢測該單元是否為正常值可判斷是否看門狗復位。 2.1.3 正常開機復位與非正常開機復位的識別 識別測控系統中因意外情況如系統掉電等情況引起的開機復位與正常開機復位,對于過程控制系統尤為重要。如某以時間為控制標準的測控系統,完成一次測控任務需1小時。在已執行測控50分鐘的情況下,系統電壓

33、異常引起復位,此時若系統復位后又從頭開始進行測控則會造成不必要的時間消耗。因此可通過一監測單元對當前系統的運行狀態、系統時間予以監控,將控制過程分解為若干步或若干時間段,每執行完一步或每運行一個時間段則對監測單元置為關機允許值,不同的任務或任務的不同階段有不同的值,若系統正在進行測控任務或正在執某時間段,則將監測單元置為非正常關機值。那么系統復位后可據此單元判系統原來的運行狀態,并跳到出錯處理程序中恢復系統原運行狀態。 2.2 非正常復位后系統自恢復運行的程序設計 對順序要求嚴格的一些過程控制系統,系統非正常復位否,一般都要求從失控的那一個模塊或任務恢復運行。所以測控系統要作好重要數據單元、參

34、數的備份,如系統運行狀態、系統的進程值、當前輸入、輸出的值,當前時鐘值、觀測單元值等,這些數據既要定時備份,同時若有修改也應立即予以備份。 當在已判別出系統非正常復位的情況下,先要恢復一些必要的系統數據,如顯示模塊的初始化、片外擴展芯片的初始化等。其次再對測控系包括顯示界面等的恢復。之后再把復位前的任務、參數、運行時間等恢復, 再進入系統運行狀態。 應當說明的是,真實地恢復系統的運行狀態需 要極為細致地對系統的重要數據予以備份,并加以數據可靠性檢查,以保證恢復的數據的可靠性。 其次,對多任務、多進程測控系統,數據的恢復需考慮恢復的次序問題,筆者實際應用的數據恢復過程流程圖如圖13所示。統的系統

35、狀態、運行參數等予以恢復, 圖13 系統自恢復程序流程圖圖中恢復系統基本數據是指取出備份的數據覆蓋當前的系統數據。系統基本初始化是指對芯片、顯示、輸入輸出方式等進行初始化,要注意輸入輸出的初始化不應造成誤動作。而復位前任務的初始化是指任務的執行狀態、運行時間等。 3 結束語 對于軟件抗干擾的一些其它常用方法如數字濾波、RAM數據保護與糾錯等,限于篇幅,本文未作討論。在工程實踐中通常都是幾種抗干擾方法并用,互相補充完善,才能取得較好的抗干擾效果。從根本上來說,硬件抗干擾是主動的,而軟件是抗干擾是被動的。細致周到地分析干擾源,硬件與軟件抗干擾相結合,完善系統監控程序,設計一穩定可靠的單片機系統是完

36、全可行的。4 .4性能分析按照設計程序分析,顯示器動態掃描的頻率約為z,實際使用觀察時完全沒有閃爍。由于計時中斷程序中加了中斷延時誤差處理,所以實際計時的走時精度非常高,可滿足多種場合的應用需要;另外上電時的班級、學號、制作日期滾動顯示可以方便學生設計作業的辯認區別。系統程序清單中斷入口程序主程序1s計時程序T0中斷服務程序秒表計時程序閃動調時程序T1中斷服務程序,用作時間調整時調整單元閃爍指示加1子程序分減1子程序時減1子程序清0程序時鐘調整程序顯示程序ST子程序,上電時顯示年月班級用,采用移動顯示延時程序控制源程序清單以下是秒表時鐘計時器的控制源程序AT89C5秒表時鐘程序定時器、溢出周期

37、為ms(ms),T0為調整時閃爍用,1.0、P1.1、P1.2為調整按鈕,口為字符輸出口,采用共陽顯示管。中斷入口程序ORG 0000H 程序執行開始地址LJMP START 跳到標號START執行ORG 0003H駛 外中斷中斷程序入口RETI 外中斷中斷返回ORG 000BH 定時器T0中斷程序入口LJMP INTT0 跳至INTT0執行ORG 0013H 外中斷中斷程序入口RETI 外斷中斷返回ORG 001BH 定時器T1中斷程序入口LJMP INTT1 跳至INTT1執行ORG 0023H 串行中斷程序入口地址RETI 串行中斷程序返回主程序START: LCALL ST 上電顯示年

38、月日及班級學號 MOV R0, #70H清70H7AH共11個內存單元 MOV R7, #0BHCldisp: MOV R0, #00h INC R0 DJNZ R7,CLdisp MOV 20H,#00H 清20H(標志用) MOV 7AH,#0AH 放入“熄滅符”數據 MOV TMOD,#11H設T1、T1為16時器 MOV TL0,#0B0H50定時初值(計時用) MOV TH0,#3CH50定時初值 MOV TL1,#0B0H50ms定時初值(T1內爍定時用) MOV TH1,#3CH 50ms定時初值 SETB EA 總中斷開放 SETB ET0 允許T0中斷 SETB TR0 開啟

39、T0定時器 MOV R4,#14H 1s定時用初值(50msX20)START1: LCALL DISPLAY 調用顯示子程序 JNB P1.0,SETMM1 P1.0口為0時,轉時間調整程序 JNB P1.1,FUNSS 秒表功能,P1.1按鍵調時時作減1操作 JNB P1.2,FUNPT STOP,PUSE,CLR SJMP START1 P1.0口為1時跳回START1SETMM1: LJMP SETMM 轉到時間調整程序SETMMFUNSS: LCALL DS20MS JB P1.1,start1WAIT11: JNB P1.1,WAIT11 CPL 03H MOV 70H,#00H

40、MOV 71H,#00H MOV 76H,#00H MOV 77H,#00H MOV 78H,#00H MOV 79H,#00H AJMP START1FUNPT: LCALL DS20MS JB P1.2,START1WAIT22: JNB P1.2,WAIT21 CLR ET0 CLR TR0WAIT33: JB P1.2,WAIT31 LCALL DS20MS JB P1.2,WAIT33WAIT66: JNB P1.2,WAIT61 MOV R0,#70H 清70H79H共10個內存單元 MOV R7,#0AHCLEARP: MOV R0,#00H INC R0 DJNZ R7,CLE

41、ARPWAIT44: JB P1.2,WAIT41 LCALL DS20MS JB 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中斷服務程序INTT0: PUSH AC

42、C 累加器入棧保護 PUSH PSW 狀態字入棧保護 CLR ET0 關T0中斷允許 CLR TR0 關閉定器T0 JB 03H,FSS 標志為1轉秒表處理程序(10ms定時) MOV A,#0B7H 中斷響應時間同步修正 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 指向秒計時單

43、元(71H79H) ACALL ADD1 調用加1程序(加1s操作) MOV A,R3 秒數據放入A(R3為2位十進制數組合) CLR C 清進位標志 CJNE A,#60H,ADDMMADDMM: JC OUTT0 短于60s時中斷退出 AcALL CLR0 長于或等于60s時對秒計時單元清0 MOV R0,#77H 指向分計時單元(76H77H) ACALL ADD1 分計時單元加1min MOV A,R3 分數據放入A CLR C 清進位標志 CJNE A,#60H,ADDHHADDHH: JC OUTT0 短于60min時中斷退出 ACALL CLR0 長于或等于60min時分計時單元

44、清0 MOV R0,#79H 指幾小時計時單元(78H79H) ACALL ADD1 小時計時單元加1h MOV A,R3 時數據放入A CLR C 清進位標志 JB 03H,OUTT0 秒表時最大數為99 CJNE A,#24H,HOURHOUR: JC OUTT0 短于24h中斷退出 ACALL CLR0 長于或等于24h小時計時單元清0OUTT0: MOV 72H,76H 中斷退出時將分、時計時單元數據移 MOV 73H,77H 入對應顯示單元 MOV 74H,78H MOV 75H,79H POP PSW 恢復狀態字(出棧) POP ACC 恢復累加器 SETB ET0 開放T0中斷

45、RETI 中斷返回秒表計時程序(10min加1),低2位為0.1、0.01秒,中間2位為秒,最高壓鍋位為分最大計數值為99分59.99秒FSS: MOV A,#0F7H 重裝初值(10ms),中斷響應時間同步修正 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 調用加1程序(加1s操作) CLR C MOV A,R3 JZ FSS1 加1后為00,C=0 SETB C 加1后不為00,C=1FSS1:AJMP ADDMM;閃動調時程序T1中斷服務程序,用作時間調整時調整單元閃爍指示INTT1:

溫馨提示

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

評論

0/150

提交評論