單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).ppt_第1頁
單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).ppt_第2頁
單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).ppt_第3頁
單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).ppt_第4頁
單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).ppt_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余68頁可下載查看

下載本文檔

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

文檔簡介

1、第12章 單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì),12.1.1 單片機(jī)應(yīng)用系統(tǒng)開發(fā)的基本過程,一系統(tǒng)需求與方案調(diào)研,系統(tǒng)需求與方案調(diào)研的目的是通過市場或用戶了解用戶對擬開發(fā)應(yīng)用系統(tǒng)的設(shè)計(jì)目標(biāo)和技術(shù)指標(biāo)。通過查找資料,分析研究,解決以下問題: 1)了解國內(nèi)外同類系統(tǒng)的開發(fā)水平、器材、設(shè)備水平、供應(yīng)狀態(tài);對接收委托研制項(xiàng)目,還應(yīng)充分了解對方技術(shù)要求、環(huán)境狀況、技術(shù)水平,以確定課題的技術(shù)難度。 2)了解可移植的硬、軟件技術(shù)。能移植的盡量移植,以防止大量低水平重復(fù)勞動。 3)摸清硬、軟件技術(shù)難度,明確技術(shù)主攻方向。 4)綜合考慮硬、軟件分工與配合方案。單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)中,硬、軟件工作具有密切的相關(guān)性。,可行性分析的目的

2、是對系統(tǒng)開發(fā)研制的必要性及可行性作出明確的判定結(jié)論。根據(jù)這一結(jié)論決定系統(tǒng)的開發(fā)研制工作是否進(jìn)行下去。 可行性分析通常從以下幾個(gè)方面進(jìn)行論證: 1)市場或用戶的需求情況。 2)經(jīng)濟(jì)效益和社會效益。 3)技術(shù)支持與開發(fā)環(huán)境。 4)現(xiàn)在的競爭力與未來的生命力。,二可行性分析,系統(tǒng)功能設(shè)計(jì)包括系統(tǒng)總體目標(biāo)功能的確定及系統(tǒng)硬、軟件模塊功能的劃分與協(xié)調(diào)關(guān)系。 系統(tǒng)功能設(shè)計(jì)是根據(jù)系統(tǒng)硬件、軟件功能的劃分及其協(xié)調(diào)關(guān)系,確定系統(tǒng)硬件結(jié)構(gòu)和軟件結(jié)構(gòu)。 系統(tǒng)硬件結(jié)構(gòu)設(shè)計(jì)的主要內(nèi)容包括單片機(jī)系統(tǒng)擴(kuò)展方案和外圍設(shè)備的配置及其接口電路方案,最后要以邏輯框圖形式描述出來。 系統(tǒng)軟件結(jié)構(gòu)設(shè)計(jì)主要完成的任務(wù)是確定出系統(tǒng)軟件功能

3、模塊的劃分及各功能模塊的程序?qū)崿F(xiàn)的技術(shù)方法,最后以結(jié)構(gòu)框圖或流程圖描述出來。,三系統(tǒng)功能設(shè)計(jì),12.12.1 單片機(jī)應(yīng)用系統(tǒng)的硬件組成,系統(tǒng)詳細(xì)設(shè)計(jì)與制作就是將前面的系統(tǒng)方案付諸實(shí)施,將硬件框圖轉(zhuǎn)化成具體電路,并制作成電路板,軟件框圖或流程圖用程序加以實(shí)現(xiàn)。,四系統(tǒng)詳細(xì)設(shè)計(jì)與制作,系統(tǒng)調(diào)試是檢測所設(shè)計(jì)系統(tǒng)的正確性與可靠性的必要過程。單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)是一個(gè)相當(dāng)復(fù)雜的勞動過程,在設(shè)計(jì)、制作中,難免存在一些局部性問題或錯(cuò)誤。系統(tǒng)調(diào)試可發(fā)現(xiàn)存在的問題和錯(cuò)誤,以便及時(shí)地進(jìn)行修改。調(diào)試與修改的過程可能要反復(fù)多次,最終使系統(tǒng)試運(yùn)行成功,并達(dá)到設(shè)計(jì)要求。,五系統(tǒng)調(diào)試與修改,硬件調(diào)試是利用開發(fā)系統(tǒng)、基本測試儀

4、器(萬用表、示波器等),通過執(zhí)行開發(fā)系統(tǒng)有關(guān)命令或測試程序,檢查用戶系統(tǒng)硬件中存在的故障。它又可分為靜態(tài)調(diào)試和動態(tài)調(diào)試兩步:, 靜態(tài)調(diào)試即用戶系統(tǒng)未工作時(shí)的一種硬件檢查。一般采用目測、萬用表測試、加電測試等方法對印制電路板及各芯片、器件進(jìn)行檢查。 動態(tài)調(diào)試是在用戶系統(tǒng)工作時(shí)發(fā)現(xiàn)和排除硬件故障的一種硬件檢查。其一般方法是先進(jìn)行各單元電路調(diào)試再進(jìn)行全系統(tǒng)調(diào)試。,仿真調(diào)試 仿真調(diào)試分硬件調(diào)試、軟件調(diào)試和系統(tǒng)聯(lián)調(diào)三個(gè)階段。(1)硬件調(diào)試,(2)軟件調(diào)試 軟件調(diào)試是通過對用戶程序的匯編、連接、執(zhí)行來發(fā)現(xiàn)程序中存在的語法錯(cuò)誤與邏輯錯(cuò)誤并加以排除糾正的過程。 軟件調(diào)試的一般方法是先獨(dú)立后聯(lián)機(jī)、先分塊后組合、

5、先單步后連續(xù)。,(3)系統(tǒng)聯(lián)調(diào) 系統(tǒng)聯(lián)調(diào)是指讓用戶系統(tǒng)的軟件在其硬件上實(shí)際運(yùn)行,并進(jìn)行軟、硬件聯(lián)合調(diào)試。,4程序固化及獨(dú)立運(yùn)行5文件編制階段 文件應(yīng)包括:,任務(wù)描述; 設(shè)計(jì)的指導(dǎo)思想及設(shè)計(jì)方案論證; 性能測定及現(xiàn)場試用報(bào)告與說明; 使用指南; 軟件資料(流程圖、子程序使用說明、地址分配、程序清單); 硬件資料(電路原理圖、元件布置圖及接線圖、接插件引腳圖、印制線路板圖、注意事項(xiàng)等)。,系統(tǒng)硬件、軟件調(diào)試通過后,就可以把調(diào)試完畢的軟件固化在EPROM中,然后脫機(jī)(脫離開發(fā)系統(tǒng))運(yùn)行。如果脫機(jī)運(yùn)行正常,再在真實(shí)環(huán)境或模擬真實(shí)環(huán)境下運(yùn)行,經(jīng)反復(fù)運(yùn)行正常,開發(fā)過程即告結(jié)束。,六生成正式系統(tǒng)或產(chǎn)品,12

6、.2 單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì),12.2.1 硬件系統(tǒng)設(shè)計(jì)原則,一個(gè)單片機(jī)應(yīng)用系統(tǒng)的硬件電路設(shè)計(jì)包括三個(gè)部分內(nèi)容:一是單片機(jī)芯片的選擇,二是單片機(jī)系統(tǒng)擴(kuò)展,三是系統(tǒng)配置。,一、單片機(jī)芯片的選擇,二、單片機(jī)系統(tǒng)擴(kuò)展,單片機(jī)系統(tǒng)擴(kuò)展是指單片機(jī)內(nèi)部的功能單元(如程序存儲器、數(shù)據(jù)存儲器、I/O口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)等)的容量不能滿足應(yīng)用系統(tǒng)的要求時(shí),必須在片外進(jìn)行擴(kuò)展,這時(shí)應(yīng)選擇適當(dāng)?shù)男酒?,設(shè)計(jì)相應(yīng)的擴(kuò)展連接電路;系統(tǒng)配置是按照系統(tǒng)功能要求配置外圍設(shè)備,如鍵盤、顯示器、打印機(jī)、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器等,設(shè)計(jì)相應(yīng)的接口電路。,單片機(jī)的選型原則,1.單片機(jī)的系統(tǒng)適應(yīng)性 所謂系統(tǒng)適應(yīng)性是指能否用這

7、個(gè)單片機(jī)完成對應(yīng)用系統(tǒng)的控制任務(wù)。 主要考慮以下幾點(diǎn): 是否有所需的I/O端口數(shù) 是否有所需的中斷源及定時(shí)器 是否有所需的外圍端口部件 是否有合適的計(jì)算處理能力 是否有足夠的極限性能,2單片機(jī)的可開發(fā)性(1)開發(fā)環(huán)境 包括匯編程序、編譯、連接程序。 (2)調(diào)試工具 包括在線仿真器、邏輯分析工具、調(diào)試監(jiān)控程序。,(3)在線BBS服務(wù) 包括實(shí)時(shí)執(zhí)行、應(yīng)用案例、缺陷故障報(bào)告、實(shí)用軟件、樣本源碼。 (4)應(yīng)用支持 包括是否存在專職的應(yīng)用支持機(jī)構(gòu)?是否存在應(yīng)用工程師及銷售人員的支持?支持人員的學(xué)識水平如何?是否有便利的通信工具,是否及時(shí)得到支持?,3制造商歷史及可購買性 產(chǎn)品的性價(jià)比以及是否可靠? 購買

8、途徑是否順暢? 供貨量是否充足穩(wěn)定? 是否停產(chǎn)? 是否在改進(jìn)之中?,總結(jié) 依據(jù)上述三個(gè)原則進(jìn)行單片機(jī)的選型,應(yīng)可以選擇出最能適用于具體應(yīng)用系統(tǒng)的單片機(jī),同時(shí)可以保證應(yīng)用系統(tǒng)具有高可靠性、高性價(jià)比、高使用壽命及可升級換代性。,三、系統(tǒng)擴(kuò)展和配置設(shè)計(jì)遵循的原則,(1)盡可能選擇典型通用的電路,并符合單片機(jī)的常規(guī)用法。 (2)系統(tǒng)的擴(kuò)展與外圍設(shè)備配置的水平應(yīng)充分滿足應(yīng)用系統(tǒng)當(dāng)前的功能要求,并留有適當(dāng)余地,便于以后進(jìn)行功能的擴(kuò)充。 (3)硬件結(jié)構(gòu)應(yīng)結(jié)合應(yīng)用軟件方案一并考慮。 (4)整個(gè)系統(tǒng)中相關(guān)的器件要盡可能做到性能匹配。 (5)可靠性及抗干擾設(shè)計(jì)是硬件設(shè)計(jì)中不可忽視的一部分。 (6)單片機(jī)外接電路較

9、多時(shí),必須考慮其驅(qū)動能力。,12.2.2 硬件設(shè)計(jì),一程序存儲器,二數(shù)據(jù)存儲器,三I/O接口,四譯碼電路,五總線驅(qū)動器,六抗干擾電路,12.3 單片機(jī)應(yīng)用系統(tǒng)的軟件設(shè)計(jì),一個(gè)應(yīng)用系統(tǒng)中的軟件一般是由系統(tǒng)監(jiān)控程序和應(yīng)用程序兩部分構(gòu)成的。其中: 應(yīng)用程序是用來完成諸如測量、計(jì)算、顯示、打印、輸出控制等各種實(shí)質(zhì)性功能的軟件; 系統(tǒng)監(jiān)控程序是控制單片機(jī)系統(tǒng)按預(yù)定操作方式運(yùn)行的程序,它負(fù)責(zé)組織調(diào)度各應(yīng)用程序模塊,完成系統(tǒng)自檢、初始化、處理鍵盤命令、處理接口命令、處理?xiàng)l件觸發(fā)和顯示等功能。,軟件設(shè)計(jì)時(shí),應(yīng)根據(jù)系統(tǒng)軟件功能要求,將軟件分成若干個(gè)相對獨(dú)立的部分,并根據(jù)它們之間的聯(lián)系和時(shí)間上的關(guān)系,設(shè)計(jì)出軟件的

10、總體結(jié)構(gòu),畫出程序流程框圖。畫流程框圖時(shí)還要對系統(tǒng)資源作具體的分配和說明。根據(jù)系統(tǒng)特點(diǎn)和用戶的了解情況選擇編程語言,現(xiàn)在一般用匯編語言和C語言。 匯編語言編寫程序?qū)τ布僮骱芊奖悖帉懙某绦虼a短,以前單片機(jī)應(yīng)用系統(tǒng)軟件主要用匯編語言編寫; C語言功能豐富,表達(dá)能力強(qiáng),使用靈活方便,應(yīng)用面廣,目標(biāo)程序效率高,可移植性好,現(xiàn)在單片機(jī)應(yīng)用系統(tǒng)開發(fā)很多都用C語言來進(jìn)行開發(fā)和設(shè)計(jì)。,12.3.1 軟件設(shè)計(jì)的特點(diǎn),一個(gè)優(yōu)秀的應(yīng)用系統(tǒng)的軟件應(yīng)具有以下特點(diǎn): (1)軟件結(jié)構(gòu)清晰、簡捷、流程合理。 (2)各功能程序?qū)崿F(xiàn)模塊化,系統(tǒng)化。這樣,既便于調(diào)試、連接,又便于移植、修改和維護(hù)。 (3)程序存儲區(qū)、數(shù)據(jù)存儲

11、區(qū)規(guī)劃合理,既能節(jié)約存儲容量,又能給程序設(shè)計(jì)與操作帶來方便。 (4)運(yùn)行狀態(tài)實(shí)現(xiàn)標(biāo)志化管理。各個(gè)功能程序運(yùn)行狀態(tài)、運(yùn)行結(jié)果以及運(yùn)行需求都設(shè)置狀態(tài)標(biāo)志以便查詢,程序的轉(zhuǎn)移、運(yùn)行、控制都可通過狀態(tài)標(biāo)志來控制。,(5)經(jīng)過調(diào)試修改后的程序應(yīng)進(jìn)行規(guī)范化,除去修改“痕跡”。規(guī)范化的程序便于交流、借鑒,也為今后的軟件模塊化、標(biāo)準(zhǔn)化打下基礎(chǔ)。 (6)實(shí)現(xiàn)全面軟件抗干擾設(shè)計(jì)。軟件抗干擾是計(jì)算機(jī)應(yīng)用系統(tǒng)提高可靠性的有力措施。 (7)為了提高運(yùn)行的可靠性,在應(yīng)用軟件中設(shè)置自診斷程序,在系統(tǒng)運(yùn)行前先運(yùn)行自診斷程序,用以檢查系統(tǒng)各特征參數(shù)是否正常。,12.3.2 資源分配,一程序存儲器ROM/EPROM資源的分配,在

12、這些資源分配中,定時(shí)/計(jì)數(shù)器、中斷、串行口等分配比較容易,這里介紹程序存儲器和數(shù)據(jù)存儲器的分配。,程序存儲器ROM/EPROM用于存放程序和數(shù)據(jù)表格。按照MCS-51單片機(jī)的復(fù)位及中斷入口的規(guī)定,002FH以前的地址單元作為中斷、復(fù)位入口地址區(qū)。在這些單元中一般都設(shè)置了轉(zhuǎn)移指令,用于轉(zhuǎn)移到相應(yīng)的中斷服務(wù)程序或復(fù)位啟動程序。當(dāng)程序存儲器中存放的功能程序及子程序數(shù)量較多時(shí),應(yīng)盡可能為它們設(shè)置入口地址表。一般的常數(shù)、表格集中設(shè)置在表格區(qū)。二次開發(fā),擴(kuò)展部分盡可能放在高位地址區(qū)。,RAM分為片內(nèi)RAM和片外RAM。片外RAM的容量比較大,通常用來存放批量大的數(shù)據(jù),如采樣結(jié)果數(shù)據(jù);片內(nèi)RAM容量較少,應(yīng)

13、盡量重疊使用,比如數(shù)據(jù)暫存區(qū)與顯示、打印緩沖區(qū)重疊。 對于MCS-51單片機(jī)來說,片內(nèi)RAM是指00H7FH單元,這128個(gè)單元的功能并不完全相同,分配時(shí)應(yīng)注意發(fā)揮各自的特點(diǎn),做到物盡其用。,二數(shù)據(jù)RAM資源分配,12.3.3 單片機(jī)應(yīng)用系統(tǒng)開發(fā)工具,一個(gè)單片機(jī)應(yīng)用系統(tǒng)經(jīng)過總體設(shè)計(jì),完成硬件開發(fā)和軟件設(shè)計(jì),就進(jìn)行硬件安裝。硬件安裝好后,把編制好的程序?qū)懭氪鎯ζ髦?,調(diào)試好后系統(tǒng)就可以運(yùn)行了。但用戶設(shè)計(jì)的應(yīng)用系統(tǒng)本身并不具備自開發(fā)的能力,不能夠?qū)懭氤绦蚝驼{(diào)試程序,這必須借助于單片機(jī)開發(fā)系統(tǒng)才能完成這些工作。單片機(jī)開發(fā)系統(tǒng)是能夠模擬用戶實(shí)際的單片機(jī),并且能隨時(shí)觀察運(yùn)行的中間過程和結(jié)果,從而能對現(xiàn)場進(jìn)

14、行模仿的仿真開發(fā)系統(tǒng)。通過它能很方便的對硬件電路進(jìn)行診斷和調(diào)試,得到正確的結(jié)果。,目前國內(nèi)使用的通用單片機(jī)的仿真開發(fā)系統(tǒng)很多,如復(fù)旦大學(xué)研制的SICE系列、啟東計(jì)算機(jī)廠制造的DVCC系列、中國科大研制的KDV系列、南京偉福實(shí)業(yè)有限公司的偉福E6000以及西安唐都科教儀器公司的TDS51開發(fā)及教學(xué)實(shí)驗(yàn)系統(tǒng)。它們都具有對用戶程序進(jìn)行輸入、編輯、匯編和調(diào)試的功能。此外,有些還具備在線仿真功能,能夠直接將程序固化到EEPROM中。一般都支持匯編語言編程,有的可以通過開發(fā)軟件,支持C語言編程。例如可通過Keil C51軟件來編寫C語言源程序,編譯連接生成目標(biāo)文件、可執(zhí)行文件,仿真、調(diào)試、生成代碼并下載到

15、應(yīng)用系統(tǒng)中。,12.4 單片機(jī)應(yīng)用系統(tǒng)的抗干擾設(shè)計(jì),1. 干擾源及干擾途徑 單片機(jī)系統(tǒng)中的干擾有多種類型。 一種是來自空間輻射的干擾。可控硅逆變電源、變頻調(diào)速器、發(fā)射機(jī)等特殊設(shè)備在工作時(shí)會產(chǎn)生很強(qiáng)的干擾,在這種環(huán)境中單片機(jī)系統(tǒng)難以正常運(yùn)行; 另一種是來自電源的干擾。各種開關(guān)的通斷、火花干擾、大電機(jī)啟停等現(xiàn)象在工業(yè)現(xiàn)場很常見,這些來自交流電源的干擾對單片機(jī)系統(tǒng)的正常運(yùn)行危害極大; 還有一種就是來自信號通道的干擾。在實(shí)際的應(yīng)用系統(tǒng)中,測控信號的輸入/輸出是必不可少的。在工業(yè)現(xiàn)場中,這些I/O信號線、控制線有時(shí)長達(dá)幾百米,不可避免地會把干擾引入到系統(tǒng)中。如果受控對象是強(qiáng)干擾源,如可控硅、電焊機(jī)等,則

16、單片機(jī)系統(tǒng)根本就無法運(yùn)行。,2、硬件抗干擾措施 根據(jù)干擾的產(chǎn)生及傳輸特點(diǎn),在硬件上可以采取以下措施: (1)硬件屏蔽。將系統(tǒng)安裝在對電磁輻射干擾具有屏蔽作用的金屬機(jī)箱中,并進(jìn)行正確接地,可以有效地抑制強(qiáng)電設(shè)備產(chǎn)生的空間輻射干擾。 (2)光電隔離。對于開關(guān)量信號用光電耦合器隔離以后再進(jìn)行輸入/輸出,對于模擬量信號可選用光電隔離器或變壓器隔離后再進(jìn)行輸入/輸出,并使用雙絞線或屏蔽線進(jìn)行信號傳輸,這樣就可以有效地克服信號傳輸通道帶來的干擾。 (3)電源濾波。對于來自電源的干擾,可采用低通濾波器以及帶有屏蔽層的電源變壓器來進(jìn)行抑制。,(4)電源去耦。對于系統(tǒng)中每一片集成電路,在電源和地之間都加上去耦電

17、容,既是本芯片的蓄能電容,還能抑制高頻噪聲。 (5)在滿足要求的前提下盡量用較低的時(shí)鐘頻率和低頻的器件。 (6)合理布置元件在線路板上的位置,把模擬電路、高速數(shù)字電路和產(chǎn)生噪聲的功率驅(qū)動部分合理地分開,各部件之間的引線盡量短,對各種輸入/輸出線分類打把,以減少寄生電容的干擾。 (7)系統(tǒng)中芯片的未用端不要懸空,應(yīng)根據(jù)實(shí)際情況接到電源端、地端或已用端。 (8)盡量不用IC插座,而將集成電路直接焊接在電路板上。,3、軟件抗干擾措施 (1)在程序中插入空操作指令實(shí)現(xiàn)指令冗余。系統(tǒng)在工作時(shí)容易因干擾而使PC指向程序存儲器的非代碼區(qū),從而導(dǎo)致“死機(jī)”。為此可以在程序中插入一些單字節(jié)的空操作指令NOP,失

18、控的程序遇到該指令后得到調(diào)整而轉(zhuǎn)入正常。 (2)對未用的中斷向量進(jìn)行處理。在程序中對未用的中斷都編寫出相應(yīng)的錯(cuò)誤處理程序,若因干擾觸發(fā)了這些中斷,則執(zhí)行完簡單的出錯(cuò)處理程序后可以正常返回。 (3)采用超時(shí)判斷克服程序的死鎖。在系統(tǒng)的數(shù)據(jù)采集部分,如A/D轉(zhuǎn)換結(jié)果采用查詢方式讀取,若因干擾使A/D轉(zhuǎn)換結(jié)束標(biāo)志無效,程序就會進(jìn)入死循環(huán)。針對類似情況,可在程序中采用超時(shí)判斷,若系統(tǒng)在一定的時(shí)間內(nèi)采不到有效的標(biāo)志,就自動放棄本次采樣,從而避免程序死鎖的發(fā)生。,(4)采用軟件陷阱。當(dāng)程序因干擾而“跑飛”時(shí),可在非程序區(qū)設(shè)置陷阱,強(qiáng)迫PC進(jìn)入一個(gè)指定的地址,執(zhí)行一段專門對死機(jī)進(jìn)行處理的程序,使系統(tǒng)恢復(fù)正常

19、。軟件陷阱可安排在未使用的中斷區(qū)和未使用的大片ROM空間,可由以下三條指令構(gòu)成: NOP NOP LJMP ERR,(5)采用看門狗。當(dāng)程序“跑飛”而前述方法又沒有捕捉到時(shí),可以用看門狗來恢復(fù)系統(tǒng)的正常運(yùn)行。具體設(shè)計(jì)時(shí)可以用軟件實(shí)現(xiàn),也可以用專用的看門狗芯片如MAX693、X25045等來實(shí)現(xiàn)。軟件方法利是用單片機(jī)中未用的定時(shí)器進(jìn)行定時(shí),在主程序每一次循環(huán)的特定時(shí)刻刷新定時(shí)器的時(shí)間常數(shù),若定時(shí)器因系統(tǒng)死機(jī)而得不到刷新,就會產(chǎn)生溢出而引起中斷,在其中斷服務(wù)程序中進(jìn)行出錯(cuò)處理后轉(zhuǎn)入正常運(yùn)行??撮T狗芯片也相當(dāng)于定時(shí)器,系統(tǒng)在每一次循環(huán)中用一根口線使芯片復(fù)位,若芯片因系統(tǒng)異常而得不到復(fù)位,其接到MCU

20、復(fù)位端的溢出信號就能使系統(tǒng)恢復(fù)正常運(yùn)行。,(6)采用數(shù)字濾波。為了提高數(shù)據(jù)采集的可靠性,減小虛假信息的影響,可以采用數(shù)字濾波的方法,如程序判斷濾波、中值濾波、滑動平均值濾波、防脈沖干擾平均值濾波、一階滯后濾波等。也可以對數(shù)據(jù)進(jìn)行非線性補(bǔ)償和誤差修正,提高數(shù)據(jù)精度。,單片機(jī)系統(tǒng)的故障診斷,(1)同類比較法。 (2)分段檢查法。 (3)隔離壓縮法。 (4)故障跟蹤法。 (5)振動加固法。 (6)拉偏檢測法。 (7)直接查找法。,系統(tǒng)級故障診斷,在單片機(jī)系統(tǒng)的電氣連接沒有問題的條件下,可以進(jìn)一步利用程序存儲器中固化的系統(tǒng)自檢程序?qū)ο到y(tǒng)進(jìn)行預(yù)定的幾項(xiàng)檢查。對系統(tǒng)故障進(jìn)行檢查時(shí),一個(gè)十分有效的辦法是利用

21、系統(tǒng)本身的自檢功能,包括指令系統(tǒng)自檢、數(shù)據(jù)存儲器自檢、程序存儲器自檢、I/O接口自檢、傳感器裝置自檢、調(diào)節(jié)機(jī)構(gòu)自檢等。自檢手段不僅可用自檢軟件,而且還可以配置一定的自檢硬件電路來實(shí)現(xiàn)系統(tǒng)自檢。尤其是對于控制系統(tǒng)的末級部分,利用硬件手段效果更好。,12.5 設(shè)計(jì)實(shí)例:多功能數(shù)字鐘,12.5.1 設(shè)計(jì)要求,設(shè)計(jì)制作具有下列功能的數(shù)字鐘: l 自動計(jì)時(shí),由6位LED顯示器顯示時(shí)、分和秒; l 具備校準(zhǔn)功能,可以直接由0-9數(shù)字鍵設(shè)置當(dāng)前時(shí)間; l 具備定時(shí)鬧鐘功能。,12.5.2 設(shè)計(jì)方案,1. 計(jì)時(shí)方案 利用單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器進(jìn)行中斷定時(shí),配合軟件延時(shí)實(shí)現(xiàn)時(shí)、分和秒的計(jì)時(shí)。 2. 鍵盤/顯示

22、方案 設(shè)計(jì)方案中采用43鍵盤實(shí)現(xiàn)輸入設(shè)置,采用動態(tài)顯示方式實(shí)現(xiàn)LED顯示,如圖所示。,3、控制方案 (1)時(shí)間顯示 上電后系統(tǒng)自動進(jìn)入時(shí)鐘顯示,從00:00:00開始計(jì)時(shí),此時(shí)可以設(shè)定當(dāng)前時(shí)間。 (2)時(shí)間調(diào)整 按下C/R鍵(時(shí)間設(shè)定/啟動計(jì)時(shí)鍵),系統(tǒng)停止計(jì)時(shí),進(jìn)入時(shí)間設(shè)定狀態(tài),系統(tǒng)保持原有顯示,等待鍵入當(dāng)前時(shí)間,按下09數(shù)字鍵可以順序設(shè)置時(shí)、分和秒,并在相應(yīng)的LED上顯示設(shè)置值,6位設(shè)置完畢后系統(tǒng)將從設(shè)定后的時(shí)間開始計(jì)時(shí)顯示。,(3)鬧鐘設(shè)置 按下ALM鍵(鬧鐘設(shè)置/啟鬧/停鬧鍵),系統(tǒng)繼續(xù)計(jì)時(shí),顯示00:00:00,進(jìn)入鬧鐘設(shè)置狀態(tài),等待鍵入啟鬧時(shí)間,按下0-9數(shù)字鍵可以順序進(jìn)行相應(yīng)的時(shí)

23、間設(shè)置,并在相應(yīng)的LED上顯示設(shè)置值,6位設(shè)置完畢后系統(tǒng)啟動定時(shí)啟鬧功能,并恢復(fù)時(shí)間顯示。定時(shí)時(shí)間到,蜂鳴器鳴叫,直至重新按下ALM鍵停鬧,并取消鬧鐘設(shè)置。,12.5.3 硬件原理,數(shù)字鐘電路由單片機(jī)、可編程I/O接口芯片8155、43鍵盤輸入電路、6位LED顯示輸出電路及蜂鳴器啟鬧電路組成,如圖125所示為系統(tǒng)電路原理圖。 12.單片機(jī):選用89C51可滿足要求。 2I/O接口電路: 采用8155作為鍵盤/顯示接口電路,其中8155的A口作為6位LED顯示的位選口(低電平有效),B口作為段選口(高電平有效),C口的低3位為鍵盤輸入口,對應(yīng)02行,A口同時(shí)用做鍵盤的列掃描口。由系統(tǒng)電路原理圖可

24、知:,8155的地址分配如下: 控制寄存器:8000H,定義為PORT A口:8001H,定義為PORTA B口:8002H,定義為PORTB C口:8003H,定義為PORTC,3 43鍵盤輸入電路: 采用43鍵盤,包括09十個(gè)數(shù)字鍵(鍵號為00H09H)、C/R鍵(時(shí)間設(shè)定/啟動計(jì)時(shí)鍵,鍵號為0AH)和ALM鍵(鬧鐘設(shè)置/啟鬧/停鬧鍵,鍵號為0BH)。 4 LED數(shù)碼顯示電路: 采用共陰極數(shù)碼管實(shí)現(xiàn)時(shí)鐘顯示,6位LED從左到右依次顯示時(shí)、分和秒,采用24小時(shí)計(jì)時(shí)。 5 蜂鳴器啟鬧電路: 由89C51的P12.0控制驅(qū)動蜂鳴器(低電平有效)。,圖125 數(shù)字鐘硬件電路圖,12.5.4 程序設(shè)

25、計(jì),1.系統(tǒng)資源分配 定時(shí)器T0按照定時(shí)方式1工作,片內(nèi)RAM及標(biāo)志位的分配與定義見表121。,2主要程序設(shè)計(jì) (1)主程序 實(shí)現(xiàn)初始化與鍵盤監(jiān)控,流程圖如圖126所示。 (2)定時(shí)器T0中斷服務(wù)程序 實(shí)現(xiàn)計(jì)時(shí)功能,同時(shí)刷新計(jì)時(shí)緩沖區(qū)。流程圖如圖127所示。 定時(shí)器T0每隔100 ms溢出中斷一次(設(shè)系統(tǒng)使用6 MHz晶振,定時(shí)器T0工作在方式1的定時(shí)器初值為3CB0H,即TH0=3CH,TL0=0B0H),每循環(huán)中斷10次則延時(shí)時(shí)間為1s,重復(fù)60次為1分,分計(jì)時(shí)60次為1小時(shí),小時(shí)計(jì)時(shí)24次則時(shí)間重新回到00:00:00。,圖126 主程序流程圖,圖127 計(jì)時(shí)流程圖,(3)時(shí)間設(shè)置與鬧鐘

26、設(shè)置子程序 實(shí)現(xiàn)當(dāng)前時(shí)間及定時(shí)啟鬧時(shí)間的鍵盤輸入設(shè)置。流程圖如圖128所示。,圖128 時(shí)間設(shè)置/鬧鐘定時(shí)流程圖,其功能是用鍵盤設(shè)置子程序?qū)㈡I入的6位時(shí)間值送入鍵盤設(shè)置緩沖區(qū),用合字子程序?qū)㈡I盤設(shè)置緩沖區(qū)中的6位BCD碼合并為3位壓縮BCD碼,送入計(jì)時(shí)緩沖區(qū)或鬧鐘值寄存區(qū)。若鍵盤輸入的小時(shí)值大于23,分和秒值大于59,則不合法,將取消本次設(shè)置,清零重新開始計(jì)時(shí)。,(4)鍵盤掃描子程序,圖129 鍵盤掃描程序流程圖,作用: 判斷是否有鍵按下,無鍵按下則循環(huán)等待,有鍵按下則求取鍵號后返回。流程圖如圖129所示。,圖1210 顯示程序流程圖,(5)顯示子程序 實(shí)現(xiàn)顯示緩沖區(qū)的6位BCD碼的動態(tài)掃描方

27、式顯示。,(6)定時(shí)比較子程序 實(shí)現(xiàn)當(dāng)前時(shí)間(計(jì)時(shí)緩沖區(qū)的值)與預(yù)設(shè)的啟鬧時(shí)間(鬧鐘設(shè)置寄存區(qū)的值)的比較,若二者完全相同時(shí),啟動蜂鳴器鳴叫并置位鬧鐘標(biāo)志位。當(dāng)重新按下ALM鍵時(shí),停鬧并清零鬧鐘標(biāo)志。流程圖如右圖所示。,(7)其它輔助功能子程序 鍵盤設(shè)置子程序:將鍵入的6位時(shí)間值送入鍵盤設(shè)置緩沖區(qū),流程圖見圖1212所示。 拆字子程序:將3字節(jié)計(jì)時(shí)緩沖區(qū)中時(shí)、分和秒壓縮BCD碼拆分為6字節(jié)BCD碼并刷新顯示緩沖區(qū)。 合字子程序:將鍵盤設(shè)置緩沖區(qū)中6位BCD碼合并為3位壓縮BCD碼,送入計(jì)時(shí)緩沖區(qū)或鬧鐘值寄存區(qū),同時(shí)檢測時(shí)間值的合法性。,圖1212 鍵盤設(shè)置子程序流程圖,3源程序清單 主程序:

28、ORG0000H AJMP MAIN ORG 000BH AJMP CLOCK ORG 0030H PORT EQU 8000H PORTA EQU8001H PORTB EQU8002H PORTCEQU 8003H DISP0 EQU 30H DISP1 EQU 31H,DISP2 EQU 32H DISP3 EQU 33H DISP4 EQU 34H DISP5 EQU 35H HOUR EQU 3CH MIN EQU 3DH SEC EQU 3EH MSEC EQU 3FH AHOUR EQU 40H AMINEQU 41H ASEC EQU 42H F1 BIT PSW.1,MAIN

29、:MOV SP,#50H ;設(shè)置堆棧區(qū) MOVX DPTR,#PORT ;8155初始化 MOVA,#03H MOVX DPTR,A CLR F1 ;清零鬧鐘標(biāo)志位 CLRF0 ;允許計(jì)時(shí)顯示 MOV AHOUR,#0FFH ;鬧鐘值寄存區(qū)置初值 MOV AMIN,#0FFH MOV ASEC,#0FFH MOV R7,#10H ;顯示緩沖區(qū)、計(jì)時(shí)緩沖區(qū)清零 MOV R0,#DISP0 CLR A,LOOP: MOV R0,A INCR0 DJNZ R7,LOOP MOV TMOD,#01H ;定時(shí)器T0初始化 MOV TL0,#0B0H MOV TH0,#3CH SETB TR0 ;啟動定時(shí)

30、器 SETB EA ;開中斷 SETB ET0 BEGIN:ACALLALARM ;調(diào)用定時(shí)比較 ACALLKEYSCAN;調(diào)用鍵盤掃描 CJNEA,#0AH,NEXT1;是C/R鍵否? CLR TR0 ;暫時(shí)停止計(jì)時(shí),MOV R1,#HOUR ;地址指針指向計(jì)時(shí) 緩沖區(qū)首地址 AJMPMOD,NEXT1:CJNE A,#0BH,BEGIN;是ALM鍵否? JBF1,NEXT2;鬧鐘正在鬧響否? MOV R1,#AHOUR;地址指針指向鬧鐘值寄存區(qū) 首地址 MOD: SETBF0;禁止顯示計(jì)時(shí)時(shí)間 ACALL MODIFY ;調(diào)用時(shí)間設(shè)置/鬧鐘定時(shí)程序 SETBTR0 ;重新開始計(jì)時(shí) CLR

31、F0 ;恢復(fù)顯示計(jì)時(shí)時(shí)間 AJMP BEGIN,NEXT2: SETBP12.0 ;鬧鐘正在鬧響,停鬧 CLRF1;清零鬧鐘標(biāo)志 AJMPBEGIN 定時(shí)器T0中斷服務(wù)子程序: CLOCK:PUSHPSW PUSHACC;保護(hù)現(xiàn)場 MOV TL0,#0B7H MOVTH0,#3CH;重裝初值,時(shí)間校正 INCMSEC MOVA,MSEC CJNEA,#0AH,DONE MOVMSEC,#00H,MOVA,SEC INCA DAA;二十進(jìn)制轉(zhuǎn)換 MOVSEC,A CJNEA,#60H,DONE MOVSEC,#00H MOVA,MIN INCA DAA MOVMIN,A CJNEA,#60H,D

32、ONE,MOVMIN,#00H MOVA,HOUR INCA DAA MOVHOUR,A CJNEA,#24H,DONE MOVHOUR,#00H DONE:POPACC POPPSW RETI,時(shí)間設(shè)置/鬧鐘定時(shí)子程序: MODIFY:ACALL KEYIN;調(diào)用鍵盤設(shè)置子程序 ACALL COMB ;調(diào)用合字子程序 RET 鍵盤設(shè)置子程序: KEYIN:PUSHPSW ;保護(hù)現(xiàn)場 PUSH ACC SETB RS1 MOVR0,#DISP0 ;R0指向顯示 MOVR7,#06H ;設(shè)置鍵盤輸入次數(shù) L1: CLR RS1 ACALL KEYSCAN ;調(diào)用鍵盤掃描程序取按下鍵號 SETBR

33、S1,CJNEA,#0AH,L2;鍵入數(shù)合法性檢測(是否大于9) L2: JNC L1 ;大于9,重新鍵入 MOVR0,A ;鍵號送顯示緩沖區(qū) INCR0 DJNZ R7,L1 ;6位時(shí)間輸入完否?未完繼續(xù) CLR RS1 ;恢復(fù)現(xiàn)場 POPACC POPPSW RET,鍵盤掃描子程序: KEYSCAN: ACALLTEST ;調(diào)判按鍵是否按下子程序TEST JNZ REMOV ;有鍵按下調(diào)消抖延時(shí) ACALLDISPLAY ACALLALARM AJMPKEYSCAN ;無鍵按下繼續(xù)判是否按鍵 REMOV: ACALL DISPLAY ;調(diào)用顯示子程序延時(shí)消抖 ACALLTEST ;再判是否

34、有鍵按下 JNZ LIST ;有鍵按下轉(zhuǎn)逐列掃描 ACALLDISPLAY ACALL ALARM AJMPKEYSCAN ;無鍵按下繼續(xù)判是否按鍵 LIST: MOVR2,#0FEH ;首列掃描字送R2 MOVR3,#00H ;首列鍵號送R3,LINE0: MOVDPTR,#PORTA ;DPTR指針指向 ; 8155的A口 MOV A,R2 ;首列掃描字送R2 MOVX DPTR,A ;首列掃描字送8155的A口 MOV DPTR,#PORTC ;DPTR指針指向8155的C口 MOVX A,DPTR ;讀入C口的行狀態(tài) JB ACC.0,LINE1 ;第0行鍵無鍵按下,轉(zhuǎn)第1行 MOVA

35、,#00H ;第0行有鍵按下,行首鍵號送A AJMPTRYK ;求鍵號 LINE1: JBACC.1,LINE2 ;第1行鍵無鍵按下,轉(zhuǎn)第2行 MOV A, #04H ;第1行有鍵按下,行首鍵號送A AJMPTRYK ;求鍵號 LINE2: JB ACC.2,NEXT ;第2行鍵無鍵按下,轉(zhuǎn)下一列 MOV A,#08H ;第2行有鍵按下,行首鍵號送A,AJMPTRYK ;求鍵號 NEXT: INCR3 ;掃描下一列 MOV A,R2 ;列掃描字送A JNB ACC.3,EXIT ;4列掃描完,重新進(jìn)行下一輪掃描 RL A ;4列未掃描完,掃描字左移掃描下一列 MOV R2,A ;掃描字送A A

36、JMP LINE0 ;轉(zhuǎn)向掃描下一列 EXIT: AJMP KEYSCAN ;等待下一次按鍵 TRYK: ADDA, R3 ;按公式計(jì)算鍵碼,求得鍵號 PUSH ACC ;鍵號入棧保護(hù) LETK: ACALLTEST ;等待按鍵釋放 JNZ LETK ;按鍵未釋放,繼續(xù)等待 POP ACC ;按鍵釋放,鍵號出棧 RET,TEST: MOVDPTR,#PORTA ;DPTR指針指向8155的A口 MOV A,#00H MOVX DPTR,A ;全掃描字00H送8155的A口 MOVDPTR,#PORTC ;DPTR指針指向8155的C口 MOVXA,DPTR ;讀入C口行狀態(tài) CPL A ;A取

37、反,以高電平表示有鍵按下 ANL A,#07H ;屏蔽高5位 RET,顯示子程序: DISPLAY:JB F0,DISP ;允許時(shí)間顯示標(biāo)志F0=1轉(zhuǎn)DISP ACALL SEPA ;否則調(diào)用SEPA刷新顯示緩沖區(qū) DISP:PUSHPSW ;動態(tài)掃描顯示子程序 PUSH ACC SETB RS0 MOV DPTR,#PORTA ;關(guān)顯示 MOV A,#0FFH MOVX DPTR,A MOV R0,#DISP0 MOV R7,#00H MOV R6,#06H MOV R5,#0FEH DIS1: MOVDPTR,#TAB,MOVA,R0 MOVC A,A+ DPTR MOVDPTR,# PORTB MOVX DPTR,A MOV DPTR,# PORTA MOVA,R5 MOVXDPTR,A HERE: DJNZ R7,HERE INC R0,MOV A,R5 RLA MOV R5,A DJNZR6,DIS1 CLR RS0 POP ACC POP PSW RET TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論