第13章AT89C51單片機應用系統(tǒng)的設計與調試課件_第1頁
第13章AT89C51單片機應用系統(tǒng)的設計與調試課件_第2頁
第13章AT89C51單片機應用系統(tǒng)的設計與調試課件_第3頁
第13章AT89C51單片機應用系統(tǒng)的設計與調試課件_第4頁
第13章AT89C51單片機應用系統(tǒng)的設計與調試課件_第5頁
已閱讀5頁,還剩175頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

13.1AT89C51單片機應用系統(tǒng)的設計步驟設計一個單片機測控系統(tǒng),一般可分為四個步驟:(1)需求分析,方案論證和總體設計需求分析:被測控參數(shù)的形式(電量、非電量、模擬量、數(shù)字量等)、被測控參數(shù)的范圍、性能指標、系統(tǒng)功能、工作環(huán)境、顯示、報警、打印要求等。方案論證:根據(jù)要求,設計出符合現(xiàn)場條件的軟硬件方案,又要使系統(tǒng)簡單、經濟、可靠,這是進行方案論證與總體設計一貫堅持的原則。13.1AT89C51單片機應用系統(tǒng)的設計步驟1(2)器件選擇,電路設計制作,數(shù)據(jù)處理算法,軟件的編制階段。(3)系統(tǒng)調試與性能測定。(4)文件編制。文件包括:任務描述、設計的指導思想及設計方案論證、性能測定及現(xiàn)場試用報告與說明、使用指南、軟件資料(流程圖、子程序使用說明、地址分配、程序清單)、硬件資料(電原理圖、元件布置圖及接線圖、接插件引腳圖、線路板圖、注意事項)。文件不僅是設計工作的結果,而且是以后使用、維修以及進一步再設計的依據(jù)。因此,一定要精心編寫,描述清楚,使數(shù)據(jù)及資料齊全。(2)器件選擇,電路設計制作,數(shù)據(jù)處理算法,軟件的編制階段。213.2應用系統(tǒng)的硬件設計為使硬件設計盡可能合理,應重點考慮以下幾點。1.盡可能采用功能強的芯片(1)單片機的選型。隨著集成電路技術的飛速發(fā)展,許多外圍部件都已集成在芯片內,本身就是一個系統(tǒng),這樣可以省去許多外圍部件的擴展工作,設計工作大大簡化。例如,美國Cygnal公司的C8051F0208位單片機,片內集成有8通道A/D、兩路D/A、兩路電壓比較器,內置溫度傳感器、定時器、可編程數(shù)字交叉開關和64個通用I/O口、電源監(jiān)測、看門狗、多種類型的串行總線(兩個UART、SPI)等。13.2應用系統(tǒng)的硬件設計3(2)優(yōu)先選用片內帶有閃爍存儲器的產品。例如,使用ATMEL公司的89C51/89C52/89C55,PHILIPS公司的89C58(內有32KB的閃爍存儲器),可省去擴展單片機程序存儲器的工作,減少芯片數(shù)量,縮小體積。(3)考慮EPROM空間和RAM空間。目前EPROM容量越來越大,一般盡量選用容量大的EPROM。89C51內部的RAM單元有限,當需增強軟件數(shù)據(jù)處理功能時,往往覺得不足,這就要求系統(tǒng)配置外部RAM,如6264,62256芯片等。如果處理的數(shù)據(jù)量大,需要更大的數(shù)據(jù)存儲器空間,可采用數(shù)據(jù)存儲器芯片DS12887,其容量為256KB,內有鋰電池保護,保存數(shù)據(jù)可達10年以上。(2)優(yōu)先選用片內帶有閃爍存儲器的產品。例如,使用ATMEL4(4)對I/O端口的考慮。在樣機研制出來進行現(xiàn)場試用時,往往會發(fā)現(xiàn)一些被忽視的問題,而這些問題是不能單靠軟件措施來解決的。如有些新的信號需要采集,就必須增加輸入檢測端;有些物理量需要控制,就必須增加輸出端。如果在硬件設計之初就多設計出一些I/O端口,這些問題就會迎刃而解了。(5)預留A/D和D/A通道。和I/O端口同樣的原因,留出一些A/D和D/A通道將來可能會解決大問題。(4)對I/O端口的考慮。在樣機研制出來進行現(xiàn)場試用時,往往52.以軟代硬原則上,只要軟件能做到且能滿足性能要求,就不用硬件。硬件多了不但增加成本,而且系統(tǒng)故障率也會提高。以軟帶硬的實質,是以時間換空間,軟件執(zhí)行過程需要消耗時間,因此這種代替帶來的問題就是實時性下降。在實時性要求不高的場合,以軟代硬是很合算的。3.工藝設計包括機箱、面板、配線、接插件等。必須考慮到安裝、調試、維修的方便。另外,硬件抗干擾措施也必須在硬件設計時一并考慮進去。2.以軟代硬613.3AT89C51單片機系統(tǒng)設計舉例首先介紹單片機應用系統(tǒng)設計時的地址空間分配和總線驅動問題,最后舉一個應用系統(tǒng)設計的例子供讀者參考。13.3.1應用系統(tǒng)設計中的地址空間分配與總線驅動系統(tǒng)往往是多芯片系統(tǒng),這時要遇到兩個問題:一是如何把64KB程序存儲器和64KB數(shù)據(jù)存儲器的空間分配給各個芯片;二是如何實現(xiàn)89C51單片機對多片芯片的驅動。1.地址空間分配圖13-1是一個全地址譯碼的系統(tǒng)實例。各器件芯片所對應的地址如表13-1所示。13.3AT89C51單片機系統(tǒng)設計舉例7地址空間分配的兩種方法:線選法和譯碼法。下面通過一個例子來說明如何解決這個問題。圖13-1地址空間分配的兩種方法:線選法和譯碼法。下面通過一個例子來說8第13章AT89C51單片機應用系統(tǒng)的設計與調試課件9因6264、2764都是8KB,故需要13條低位地址線(A12~A0)進行片內尋址,低8位地址線A7~A0經8D鎖存器74LS373輸出,圖中沒有畫出。其他三條高位地址線A15~A13經3-8譯碼器74LS138譯碼后作為外圍芯片的片選線。圖中尚剩余三條地址選擇線Y7*~Y5*,可擴展三片存儲器芯片或外圍I/O接口電路芯片。2.總線驅動設計時,有時要擴展多片芯片,注意AT89C51的I/O口驅動能力。AT89C51有4個并行雙向口,P0、P1、P2、P34個口的驅動能力不同,P0口的驅動能力較大,每位可驅動8個LSTTL輸入,當其輸出高電平時,可提供400A的電流;因6264、2764都是8KB,故需要13條低位地址線(A110當其輸出低電平(0.45V)時,可提供3.2mA的灌電流,如低電平允許提高,灌電流可相應加大。P1、P2、P3口的每一位只能驅動4個LSTTL。所以,任何一個口要想獲得較大的驅動能力,只能用低電平輸出。AT89C51通常將P0、P2口用作訪問外部存儲器,所以P1、P3口只能用作輸入/輸出口。P1、P3口的驅動能力有限,在低電平輸出時,一般也只能提供不到2mA的灌電流。當應用系統(tǒng)規(guī)模過大時,可能造成負載過重,使驅動能力不夠,系統(tǒng)不能可靠地工作,所以通常要附加總線驅動器或其他驅動電路。當其輸出低電平(0.45V)時,可提供3.2mA的灌電流,如11多芯片應用系統(tǒng)中首先要估計總線的負載情況,以確定是否需要對總線的驅動能力進行擴展。圖13-2為AT89C51單片機總線驅動擴展原理圖。地址總線和控制總線的驅動器為單向驅動器,并具有三態(tài)輸出功能。驅動器有一個控制端,以控制驅動器開通或處于高阻狀態(tài)。通常,在單片機應用系統(tǒng)中不采用DMA功能時,地址總線及控制總線可一直處于開通狀態(tài),這時控制端接地即可。常用的單向總線驅動器為74LS244。圖13-3為74LS244引腳圖和邏輯圖。8個三態(tài)驅動器分成兩組,分別由1G*和2G*控制。多芯片應用系統(tǒng)中首先要估計總線的負載情況,以確定是否需要對總122.總線的驅動圖13-22.總線的驅動圖13-213圖13-3圖13-314圖13-4常用的雙向驅動器為74LS245,圖13-4為其引腳圖和邏輯圖。圖13-4常用的雙向驅動器為74LS245,圖13-4為其引15圖13-5是AT89C51單片機應用系統(tǒng)總線驅動擴展電路。P0口的雙向驅動采用74LS245,如圖13-5(b)所示;P2口的單向驅動器采用74LS244,如圖13-5(a)所示。圖13-5圖13-5是AT89C51單片機應用系統(tǒng)總線驅動擴展電路。P1613.4.2AT89C51的最小系統(tǒng)AT89C51內部有4KB閃爍存儲器,芯片本身就是一個最小系統(tǒng)。在能滿足系統(tǒng)的性能要求的情況下,可優(yōu)先考慮采用此種方案。這種最小系統(tǒng)簡單、可靠。在用89C51單片機構成最小應用系統(tǒng)時,只要將單片機接上時鐘電路和復位電路即可,如圖13-6所示。本最小應用系統(tǒng)只能用作一些小型的數(shù)字量的測控單元。13.4.2AT89C51的最小系統(tǒng)17圖13-6圖13-61813.4.3應用設計舉例-水溫控制系統(tǒng)的設計水溫控制是經常遇到的過程控制。下面介紹以89C51為核心的水溫控制系統(tǒng)的設計。本系統(tǒng)采用3位LED顯示器顯示水溫度,溫度控制采用改進的PID數(shù)字控制算法。具有如下基本功能:(1)溫度控制的設定范圍為25-50℃,最小分辨率為0.1℃。(2)偏差≤0.6℃,靜態(tài)誤差≤0.4℃。(3)實時顯示當前的溫度值。(4)命令按鍵5個:復位鍵,功能轉換鍵,加1鍵,減1鍵。13.4.3應用設計舉例-水溫控制系統(tǒng)的設計水溫控制是經191.硬件電路設計硬件電路從功能模塊上來劃分有:主機電路數(shù)據(jù)采集電路鍵盤、顯示電路控制執(zhí)行電路(1)硬件功能結構框圖硬件功能結構框圖如圖13-7所示。1.硬件電路設計20圖13-7圖13-721(2)數(shù)據(jù)采集電路的設計主機采用AT89C51,系統(tǒng)時鐘采用12MHz,內部含有4K字節(jié)的閃爍存儲器。無須外擴程序存儲器。數(shù)據(jù)采集電路主要由溫度傳感器、A/D轉換器、放大電路等組成,見圖13-8。圖13-8(2)數(shù)據(jù)采集電路的設計圖13-822(3)控制執(zhí)行電路的設計由單片機的輸出來控制風扇或電爐。設計中要采用光電耦合器進行強電和弱電的隔離,但還要考慮到輸出信號要對可控硅進行觸發(fā),以便接通風扇或電爐電路??煽毓柽x用了既有光電隔離又有觸發(fā)功能的MC3041。其中使用P1.0控制電爐電路,P1.1控制風扇電路,如圖13-9所示。(3)控制執(zhí)行電路的設計23圖13-9圖13-924(4)鍵盤與顯示器電路的設計鍵盤共有4個鍵,采用軟件查詢和外部中斷相結合的方法來設計,當某個鍵按下時,低電平有效。4個鍵K1~K4的功能定義如表13-2所示。按鍵鍵名功能K1復位鍵使系統(tǒng)復位K2功能轉換鍵按鍵按下,L1亮,顯示溫度設定值,按鍵松開,L1不亮,顯示當前的溫度值K3加1鍵設定的溫度值加1K4減1鍵設定的溫度值減1表13-24個鍵K1-K4的定義(4)鍵盤與顯示器電路的設計按鍵鍵名功能K1復位鍵使系統(tǒng)復位25按鍵K2與INT0*(P3.2)相連,采用外部中斷方式,且優(yōu)先級定為高優(yōu)先級。K3和K4分別與P1.7和P1.6相連,采用軟件查詢方式,K1為復位鍵,與RC構成復位電路。顯示電路部分利用串行口來實現(xiàn)3位LED的共陽靜態(tài)顯示,顯示內容為溫度的十位、個位以及小數(shù)點后的一位。利用串行口實現(xiàn)LED的共陽靜態(tài)顯示的工作原理及軟件編程請見9.5.2小節(jié)的有關內容。按鍵K2與INT0*(P3.2)相連,采用外部中斷方式262.軟件設計模塊化設計,三大模塊:主程序模塊、功能實現(xiàn)模塊和運算控制模塊。(1)主程序模塊主程序流程如圖13-10所示。在主程序中首先給定PID算法的參數(shù)值,然后通過循環(huán)顯示當前溫度,以等待中斷,并且使鍵盤外部中斷為高優(yōu)先級,以便使主程序程序能實時響應鍵盤處理。設定定時器T0為5s定時,無鍵按下時,應每隔5s響應一次,以用來采集溫度傳感器并經A/D轉換的溫度信號。設置定時器T1為嵌套在T0之中的定時中斷,初值由PID算法子程序提供,以用來執(zhí)行對電爐或風扇的控制。

2.軟件設計

27圖13-10圖13-1028(2)功能實現(xiàn)模塊①

T1中斷子程序②鍵盤中斷子程序③T0中斷子程序(3)運算控制模塊①標度變換子程序②PID算法子程序(2)功能實現(xiàn)模塊2913.4應用系統(tǒng)的軟件設計13.4.1軟件設計考慮的問題在進行應用系統(tǒng)的總體設計時,軟件設計和硬件設計應統(tǒng)一考慮,相互結合進行。當系統(tǒng)的電路設計定型后,軟件的任務也就明確了。一般來說,軟件的功能分為兩大類。一類是執(zhí)行軟件,它能完成各種實質性的功能,如測量、計算、顯示、打印、輸出控制等;另一類是監(jiān)控軟件,它是專門用來協(xié)調各執(zhí)行模塊和操作者的關系,在系統(tǒng)軟件中充當組織調度的角色。設計人員在進行程序設計時應從以下幾個方面加以考慮:13.4應用系統(tǒng)的軟件設計30(1)根據(jù)軟件功能要求,將系統(tǒng)軟件分成若干相對獨立的部分,設計出合理的軟件總體結構,使其清晰、簡潔、流程合理。(2)各功能程序實行模塊化、子程序化。既便于調試、鏈接,又便于移植、修改。(3)在編寫應用軟件之前,應繪制出程序流程圖。多花一些時間來設計程序流程圖,就可以節(jié)約幾倍于源程序的編輯和調試時間。(4)要合理分配系統(tǒng)資源,包括ROM、RAM、定時器/計數(shù)器、中斷源等。其中最關鍵的是片內RAM分配。對AT89C51來講,片內RAM指00H~7FH單元,這128個字節(jié)的功能不完全相(1)根據(jù)軟件功能要求,將系統(tǒng)軟件分成若干相對獨立的部分,設31同,分配時應充分發(fā)揮其特長,做到物盡其用。例如,在工作寄存器的8個單元中,R0和R1具有指針功能,是編程的重要角色,避免作為它用;20H~2FH這16個字節(jié)具有位尋址功能,用來存放各種標志位、邏輯變量、狀態(tài)變量等;設置堆棧區(qū)時應事先估算出子程序和中斷嵌套技術及程序中棧操作指令使用情況,其大小應留有余量。若系統(tǒng)中擴展了RAM存儲器,應把使用頻率最高的數(shù)據(jù)緩沖器安排在片內RAM中,以提高處理速度。當RAM資源規(guī)劃好后,應列出一張詳細的RAM資源分配表,以備編程時查用方便。同,分配時應充分發(fā)揮其特長,做到物盡其用。3213.4.2系統(tǒng)軟件的總體框架設計應用設計者在軟件設計時,感覺比較困難的是如何進行系統(tǒng)軟件的總體框架設計。下面給出一個典型的例子,供讀者在軟件設計時參考。例13-1有一個AT89C51的應用系統(tǒng),假設5個中斷源都已用到,應用系統(tǒng)的程序框架如下:

ORG 0000H ;系統(tǒng)程序入口 LJMP MAIN ;跳向主程序入口

ORG 0003H ;外中斷0中斷向量入口 LJMPIINT0P ;跳向外中斷0中斷處理程 ;序入口IINT0P

ORG 000BH ;T0中斷向量入口 LJMPIT0P ;跳向T0中斷入口IT0P13.4.2系統(tǒng)軟件的總體框架設計33

ORG 0013H ;外中斷0中斷向量入口 LJMPIINT1P;跳向外中斷1中斷處理程序入口IINT1P

ORG 001BH ;T1中斷向量入口 LJMPIT1P ;跳向T1中斷處理程序入口IT1P

ORG 0023H ;串行口中斷向量入口 LJMPISIOP ;跳向串行口中斷處理程序入口ISIOP

ORG0040H ;主程序入口MAIN:

對片內各功能部件,如定時器、串行口、中斷系統(tǒng)進行初始化;對擴展的各個I/O接口芯片進行初始化 MOVSP,#60H ;對堆棧區(qū)進行初始化

主程序(根據(jù)實際處理任務編寫) ORG 0013H ;外中斷0中斷向量入口34

ORGXXXXH ;外中斷0中斷處理子程序IINT0P入口IINT0P:外中斷0中斷處理子程序 RETI

ORGYYYYH

IT0P:T0中斷處理子程序RETI

ORGZZZZH

IINT1P:外中斷1中斷處理子程序 RETI

ORGUUUUH

IT1P:T1中斷處理子程序 RETI

ORGVVVVH

ISIOP:串行口中斷處理子程序 RETI ORGXXXXH ;外中斷0中斷處理子程序IINT035上述程序框架僅供參考,5個中斷源的中斷入口XXXXH~VVVVH要根據(jù)主程序、各中斷源的中斷處理程序的長度而定,不要重疊。上述程序框架僅供參考,5個中斷源的中斷入口XXXXH~VVV36

13.5軟件抗干擾設計單片機系統(tǒng)在噪聲環(huán)境下運行,除了前面介紹的各種抗干擾的措施外,還可采用軟件來增強系統(tǒng)的抗干擾能力。本節(jié)介紹幾種常用軟件抗干擾的方法。13.5.1軟件濾波對于實時數(shù)據(jù)采集系統(tǒng),為了消除傳感器通道中的干擾信號,硬件上,常采用模擬濾波器對信號實現(xiàn)頻率濾波。同樣,采用軟件也可以完成硬件模擬濾波器類似的功能,這就是軟件濾波。

13.5軟件抗干擾設計371.算術平均濾波法對一點數(shù)據(jù)連續(xù)取n個值進行采樣,然后算術平均。這種方法適用于對一般具有隨機干擾的信號進行濾波。這樣信號的特點是有一個平均值,信號在某一數(shù)值范圍附近上下波動。這種濾波法當n值較大時,信號的平滑度高,但是靈敏度低;當n值較小時,平滑度低,但靈敏度高。應視具體情況選取n,以使既節(jié)約時間,又濾波效果好。對于一般流量測量,通常取n=12;若為壓力,則取n=4。一般情況下n=3~5次平均即可。1.算術平均濾波法382.滑動平均濾波法上面介紹的算術平均濾波法,每計算一次數(shù)據(jù)需要測量N次。對于測量速度較慢或要求數(shù)據(jù)計算速度較快的實時控制系統(tǒng),上述方法無法使用。下面介紹一種只需測量一次,就能得到當前算術平均值的方法--滑動平均濾波法。本法是把n個采樣值看成一個隊列,隊列的長度為n,每進行一次采樣,就把采樣值放入隊尾,而扔掉原來隊首的一個采樣值,這樣在隊列中始終有n個“最新”采樣值。對隊列中的n個采樣值進行平均,就可以得到新的濾波值。2.滑動平均濾波法39滑動平均濾波法對周期性干擾有良好的抑制作用,平滑度高,靈敏度低;但對偶然出現(xiàn)的脈沖性干擾的抑制作用差,不易消除由于脈沖干擾引起的采樣值的偏差。因此它不適用于脈沖干擾比較嚴重的場合,而適用于高頻振蕩系統(tǒng)。通常觀察不同N值下滑動平均的輸出響應來選取N值,以便既少占有時間,又能達到最好濾波效果,其工程經驗值為:

滑動平均濾波法對周期性干擾有良好的抑制作用,平滑度高,靈敏度40下例為滑動平均濾波法的參考程序?!纠?3-2】假定n個雙字節(jié)型采樣值,30H單元為采樣隊列內存單元首地址,n個采樣值之和不大于16位。新的采樣值存于2EH、2FH單元,濾波值存于50H、51H單元,AVGFIL為本程序調用的算術平均濾波子程序。參考程序如下:SAVGFIL: MOV R2,#n-1 ;采樣個數(shù) MOV R0,#32H ;隊列單元首地址 MOVR1,#33HLOOP: MOVA,R0 ;移動低字節(jié) DECR0 DECR0下例為滑動平均濾波法的參考程序。41 MOVR0,A MOVA,R0 ;修改低字節(jié)地址 ADDA,#04H MOVR0,A MOVA,R1 ;移動高字節(jié) DECR1 DECR1 MOVR1,A MOVA,R1 ;修改高字節(jié)地址 ADDA,#04H MOVR1,A DJNZR2,LOOP MOVR0,2EH ;存新的采樣值 MOVR1,2FH ACALLAVGFIL;AVGFIL算術平均值子程序,設已編寫 RET MOVR0,A423.中位值濾波法本方法就是對某一被測參數(shù)接連采樣n次(一般n取奇數(shù)),然后把n次采樣值按大小排列,取中間值為本次采樣值。中位值濾波能有效地克服因偶然因素引起的波動干擾。對溫度、液位等變化緩慢的被測參數(shù)采用此法能收到良好的濾波效果。但對流量、速度等快速變化的參數(shù)一般不宜采用中位值濾波法。中位值濾波程序設計的實質是,首先把n個采樣值從小到大或從大到小進行排序,然后再取中間值。n個數(shù)據(jù)按大小“冒泡法”(排序程序設計見第4章)進行比較,直到最大數(shù)沉底為止。然后再重新進行比較,把次大值放到n-1位,依此類推,則可將n個數(shù)從小到大順序排列。3.中位值濾波法43【例13-3】設采樣值從8位A/D轉換器輸入5次,存放在SAMP為首地址的內存單元中,采用中位值濾波。程序如下:

SAMPEQU30H

ORG 1000HINTER:MOVR2,#04H ;置最大循環(huán)次數(shù)SORT: MOVA,R2 ;小循環(huán)次數(shù)→(R3) MOVR3,A MOVR0,#SAMP ;采樣數(shù)據(jù)首地址→(R0)LOOP: MOVA,R0 INCR0【例13-3】設采樣值從8位A/D轉換器輸入5次,存放在S44 MOV R1,A CLR C SUBB A,R0 MOV A,R1 JC DONE MOV A,R0 ;((R0))→((R0)+1) DEC R0 XCH A,R0 INC R0 MOV R0,ADONE: DJNZ R3,LOOP ;R3≠0,小循環(huán)繼續(xù)進行 DJNZ R2,SORT ;R2≠0,大循環(huán)繼續(xù)進行 INC R0 MOV A,R0 RET MOV R1,A454.去極值平均值濾波法前面介紹的算術平均與滑動平均濾波法,在脈沖干擾比較嚴重的場合,則干擾將會“平均”到結果中去,故上述兩種平均值法不易消除由于脈沖干擾而引起的誤差。這時可采用去極值平均值濾波法。思想:連續(xù)采樣n次后累加求和,同時找出其中的最大值與最小值,再從累加和中減去最大值和最小值,按n-2個采樣值求平均,即可得到有效采樣值。類似于體育比賽中的去掉最高、最低分,再求平均分的評分辦法。4.去極值平均值濾波法46(2)打印機接口為使平均濾波算法簡單,n-2應為2,4,6,8或16,故n常取4,6,8,10或18。具體做法有兩種:對于快變參數(shù),先連續(xù)采樣n次,然后再處理,但要在RAM中開辟出n個數(shù)據(jù)的暫存區(qū);對于慢變參數(shù),可一邊采樣,一邊處理,而不必在RAM中開辟數(shù)據(jù)暫存區(qū)。實踐中,為了加快測量速度,一般n取4?!纠?3-4】以n=4為例,即連續(xù)進行4次數(shù)據(jù)采樣,去掉其中最大值和最小值,然后求剩下兩個數(shù)據(jù)的平均值。R2R3存最大值,R4R5存最小值,R6R7存放累加和及最后結果。當然,連續(xù)采樣不只限4次,可以進行任意次,這時,只需改變R0中的數(shù)值。 參考程序(見教材)(2)打印機接口為使平均濾波算法簡單,n-2應為2,4,6,47(3)A/D與D/A轉換器與單片機的接口13.5.2指令冗余及軟件陷阱單片機系統(tǒng)由于干擾而使運行程序發(fā)生混亂、導致程序亂飛或陷入死循環(huán)時,采取使程序納入正規(guī)的措施,如指令冗余、軟件陷阱等。1.指令冗余CPU取指令是先取操作碼,再取操作碼數(shù)。當單片機系統(tǒng)受干擾出現(xiàn)錯誤時,程序便脫離正常軌道“亂飛”。當亂飛到某雙字節(jié)指令,若取指令時刻落在操作數(shù)上,誤將操作數(shù)當作操作碼,程序有可能出錯。(3)A/D與D/A轉換器與單片機的接口13.5.2指令48若亂飛到三字節(jié)指令,出錯機率更大。在關鍵的地方人為地插入一些單字節(jié)指令或將有效單字節(jié)指令重寫稱為指令冗余。指令冗余無疑會降低系統(tǒng)的效率,通常是在雙字節(jié)指令和三字節(jié)指令后插入兩個字節(jié)以上“NOP”指令,可保護其后的指令不被拆散。因此,常在一些對程序流向起決定作用的指令之前插入兩條NOP指令,此類指令有:RET、RETI、ACALL、LCALL、SJMP、AJMP、LJMP、JZ、JNZ、JC、JNC、JB、JNB、JBC、CJNE、DJNZ等,以保證亂飛的程序迅速納入正軌。在某些對系統(tǒng)工作狀態(tài)至關重要的指令,該措施可以減少程序亂飛的次數(shù),使其很快納入程序軌道。若亂飛到三字節(jié)指令,出錯機率更大。在關鍵的地方人為地插入一些49但這并不能保證在失控期間不干壞事,更不能保證程序納入正常軌道后就太平無事了。程序的運行事實上已經偏離了正常順序,有可能做著它現(xiàn)在不該做的事情。解決這個問題還必須采用軟件容錯技術(限于篇幅,本書不作介紹),使系統(tǒng)的誤動作減少,并消滅重大誤動作。2.軟件陷阱就是一條引導指令,強行將亂飛的程序引向一個指定的地址,在那里有一段專門對程序出錯進行處理但這并不能保證在失控期間不干壞事,更不能保證程序納入正常軌道50的程序。如果我們把這段程序的入口標號稱為ERR的話,軟件陷阱即為一條LJMPERR指令。為加強其捕捉效果,一般還在它前面加兩條NOP指令。

NOP NOP

LJMPERR軟件陷阱一般安排在下列4種地方:(1)未使用的中斷向量區(qū):0003H-002FH當干擾使未使用的中斷開放,并激活這些中斷時,就會進一步引起混亂。如果在這些地方布上陷阱,就能及時捕捉到錯誤中斷。的程序。如果我們把這段程序的入口標號稱為ERR的話,軟件陷阱51例如:系統(tǒng)共使用三個中斷:INT0*、T0、T1,它們的中斷子程序分別為PGINT0、PGT0、PGT1,建議按如下方式來設置中斷向量區(qū):例如:系統(tǒng)共使用三個中斷:INT0*、T0、T1,它們的中52

ORG0000H0000START: LJMPMAIN ;跳向主程序入口0003 LJMPPGINT0 ;外中斷0中斷入口0006

NOP ;冗余和陷阱0007 NOP 0008 LJMPERR

000B LJMPPGT0 ;T0中斷正常入口0016

NOP

;冗余和陷阱

0017 NOP

0018 LJMPERR001B LJMPPGT1 ;T1中斷正常入口001E NOP ;冗余和陷阱 001F NOP0020 LJMPERR

530023 LJMPERR;串口中斷未用0026 NOP ;冗余和陷阱 0027 NOP0028 LJMPERR

┇0030MAIN: ┇;主程序 ┇ 從0030H開始再編寫正式程序0023 LJMPERR;串口中斷54(2)未使用的EPROM空間對于剩余EPROM空間,若維持原狀態(tài)FFH,F(xiàn)FH是一條單字指令(MOVR7,A)程序彈飛到這一區(qū)域后將順流而下,只要每隔一段設置一個陷阱,就一定能捕捉到亂飛的程序。軟件陷阱一定要指向處理過程ERR??梢詫RR安排在0030H開始的地方,這樣就可用0000020030五個字節(jié)作為陷阱來填充EPROM中的未使用空間,或每隔一段設置一個陷阱(020030),其它單元保持FFH不變。(2)未使用的EPROM空間55(3)表格有兩類表格,一類是數(shù)據(jù)表格,供MOVCA,A+PC或MOVCA,A+DPTR指令使用,其內容完全不是指令。另一類是跳轉表格,供JMPA+DPTR指令使用,其內容為一系列的三字節(jié)指令LJMP或兩字節(jié)指令AJMP。由于表格內容和檢索值有一一對應關系,在表格中間安排陷阱將會破毀其連續(xù)性和對應關系,只能在表格的最后安排五字節(jié)陷阱(NOP,NOP,LJMPERR)。由于表格區(qū)一般較長,安排在最后的陷阱不能保證一定捕捉住亂飛的程序,有可能在中途再次飛走。這時只好指望別處的陷阱或冗余指令來制服它了。(3)表格56(4)程序區(qū)程序區(qū)是由一串串執(zhí)行指令構成的,不能在這些指令傳中間任意安排陷阱,否則影響正常執(zhí)行程序。但是,在這些指令串之間常有一些斷裂點,正常執(zhí)行的程序到此便不會繼續(xù)往下執(zhí)行了,這類指令有LJMP、SJMP、AJMP、RET、RETI。這時PC的值應發(fā)生正常跳變。如果還要順次往下執(zhí)行,必然就出錯了。我們在這種地方安排陷阱之后,就能有效地捕捉住它,而又不影響正常執(zhí)行的程序流程。例如,在一個根據(jù)累加器的正、負、零情況進行三分支的程序中,軟件陷阱的安置方式如下:(4)程序區(qū)57 JNZ L1 ;A中內容非零,跳L1程序段 ┅┅┅ ;A中內容為零的處理程序段

AJMP L3 ;斷裂點

NOP ;冗余指令與軟件陷阱 NOP LJMPERR

L1: JB ACC.7,L2 ┅┅┅

LJMPL3 ;斷裂點

NOP ;冗余指令與軟件陷阱 NOP LJMPERR ; JNZ L1 ;A中內容非零,跳L1程序段58 L2:┅┅┅ L3:MOVA,R2;取結果 RET

NOP ;冗余指令與軟件陷阱 NOP LJMPERR由于軟件陷阱都安排在正常程序執(zhí)行不到的地方,故不影響程序執(zhí)行效率。在EPROM容量不成問題的條件下,還是多多設置陷阱有益。 L2:┅┅┅5913.5.3開關量輸入/輸出軟件抗干擾設計如果干擾只作用在系統(tǒng)的I/O通道上,則可用如下方法減小或消除其干擾。1.開關量輸入軟件抗干擾措施干擾信號多呈毛刺狀,作用時間短。利用這一特點,我們采用采集某一狀態(tài)信號時,可多次重復采集,直到連續(xù)兩次或多次采集結果完全一致時才可視為有效。若相鄰的檢測內容不一致,或多次檢測結果不一致,則是偽輸入信號??赏V共杉?,給出報警信號。13.5.3開關量輸入/輸出軟件抗干擾設計60由于狀態(tài)信號主要來自各類開關型狀態(tài)傳感器,對這些信號采集不能用多次平均方法,必須絕對一致才行。在滿足實時性要求的前提下,如果在各次采集狀態(tài)信號之間增加一段延時,效果就會更好,就能對抗較寬時間范圍的干擾。延時時間在10~100μS左右。對于每次采集的最高次數(shù)限制和連續(xù)相同次數(shù)均可按實際情況適當調整。由于狀態(tài)信號主要來自各類開關型狀態(tài)傳感器,對這些信號采集不612.開關量輸出軟件抗干擾措施輸出信號中,有很多是驅動各種警報裝置,各種電磁裝置等的狀態(tài)驅動信號。對這類信號的抗干擾有效輸出方法是重復輸出同一個數(shù)據(jù),只要有可能,重復周期應盡量短。外部設備接收到一個被干擾的錯誤信息后,還來不及作出有效的反映,一個正確的輸出信息又到來,就可以及時地防止錯誤動作的產生。2.開關量輸出軟件抗干擾措施6213.6單片機應用系統(tǒng)的仿真開發(fā)與調試一個單片機應用系統(tǒng)(用戶樣機)經過總體設計,完成了用戶樣機的硬件和軟件設計開發(fā)。元器件安裝后,在用戶樣機的程序存儲器中放入編制好的應用程序,系統(tǒng)即可運行。但程序運行一次性成功幾乎是不可能的,多少會存在一些軟件、硬件上的錯誤,這就需要借助單片機的仿真開發(fā)工具進行調試,發(fā)現(xiàn)錯誤并加以改正。AT89C51單片機只是一個芯片,既沒有鍵盤,又沒有CRT、LED顯示器,也無法運行系統(tǒng)開發(fā)軟件(如編輯、匯編、調試程序等),因此,必須借助某種仿真開發(fā)工具(也稱為仿真開發(fā)系統(tǒng))所提供的開發(fā)手段來進行。一般來說,仿真開發(fā)工具應具有如下最基本的功能。13.6單片機應用系統(tǒng)的仿真開發(fā)與調試63(1)用戶樣機程序的輸入與修改。(2)程序的運行、調試(單步運行、設置斷點運行)、排錯、狀態(tài)查詢等功能。(3)用戶樣機硬件電路的診斷與檢查。(4)有較全的開發(fā)軟件。用戶可用匯編語言或C語言編制應用程序;由開發(fā)系統(tǒng)編譯連接生成目標文件、可執(zhí)行文件。配有反匯編軟件,能將目標程序轉換成匯編語言程序;有豐富的子程序可供用戶選擇調用。(5)將調試正確的程序寫入到程序存儲器中。下面介紹常用的仿真開發(fā)工具。13.6.1仿真開發(fā)系統(tǒng)簡介目前國內使用較多的仿真開發(fā)系統(tǒng)大致分為如下兩類。(1)用戶樣機程序的輸入與修改。641.通用機仿真開發(fā)系統(tǒng)這是一種通過PC機的并行口、串行口或USB口,外加在線仿真器的的仿真開發(fā)系統(tǒng),如圖13-11所示。

圖13-111.通用機仿真開發(fā)系統(tǒng)圖13-1165在線仿真器必須與PC的并行口、串行口或USB口相連,才能完成開發(fā)任務。在線仿真器是一個與被開發(fā)的用戶樣機具有相同單片機芯片的系統(tǒng),它是借助開發(fā)系統(tǒng)的資源來模擬用戶樣機中的單片機,對用戶樣機的資源(如存儲器、I/O接口)進行管理。同時在線仿真器還具有跟蹤功能,它可將程序執(zhí)行過程中的有關數(shù)據(jù)和狀態(tài)在屏幕上顯示出來,這給查找錯誤和調試程序帶來了方便。同時,其程序運行的斷點功能、單步功能可直接發(fā)現(xiàn)硬件和軟件的問題。在線仿真器必須與PC的并行口、串行口或USB口相連,才能完成66調試用戶樣機時,在線仿真器的仿真插頭必須插入用戶樣機空出的單片機插座中。當仿真開發(fā)系統(tǒng)通過串行口(或并行口、USB口)與PC聯(lián)機后,用戶可利用仿真開發(fā)軟件,在計算機上編輯、修改源程序,然后通過交叉匯編軟件將其匯編成機器代碼,傳送到在線仿真器中的仿真RAM中。這時用戶可用單步、斷點、跟蹤、全速等方式運行用戶程序,系統(tǒng)狀態(tài)實時地顯示在屏幕上。待程序調試通過后,再使用仿真開發(fā)系統(tǒng)提供的編程器或使用專用編程器,把調試完畢的程序寫入到單片機內的Flash存儲器中或外擴的EPROM中。此類仿真開發(fā)系統(tǒng)是目前最流行的仿真開發(fā)工具。配置不同的仿真插頭,可以仿真開發(fā)各種單片機。

調試用戶樣機時,在線仿真器的仿真插頭必須插入用戶樣機空出的單67通用機仿真開發(fā)系統(tǒng)中還有另一種結構:獨立型仿真結構。該類仿真器采用模塊化結構,配有不同外設,如外存板、打印機、鍵盤/顯示板等,用戶可根據(jù)需要選用。在沒有通用計算機支持的場合,利用鍵盤/顯示板也可在工業(yè)現(xiàn)場完成仿真調試工作。2.軟件仿真開發(fā)工具Proteus軟件仿真開發(fā)工具是一種完全用軟件手段對單片機系統(tǒng)進行仿真開發(fā)的,與用戶樣機在硬件上無任何聯(lián)系。由PC機上安裝仿真開發(fā)工具軟件構成,可進行系統(tǒng)的設計、仿真、開發(fā)與調試。Proteus軟件是英國LabCenterelectronics開發(fā)的EDA工具軟件,它為各種實際的單片機應用系統(tǒng)開發(fā)提供了功能強大的EDA工具,已有近20年的歷史。它除了具有和其他EDA工具通用機仿真開發(fā)系統(tǒng)中還有另一種結構:獨立型仿真結構。該類仿真68一樣的原理編輯、印刷電路板自動或人工布線及電路仿真功能外,最大特色是其對單片機硬件電路的仿真是交互的、可視化的。通過其虛擬仿真技術(VSM),用戶可以對基于單片機應用系統(tǒng)連同所有的外圍接口、電子器件以及外部的測試儀器一起仿真。針對單片機的應用,可以直接在基于原理圖的虛擬模型上進行編程,并實現(xiàn)源代碼級的實時調試。Proteus軟件具有如下特點。(1)能夠對模擬電路、數(shù)字電路進行仿真。(2)除了仿真51系列單片機外,Proteus軟件還可仿真68000系列、AVR系列、PIC等其他各系列單片機。(3)具有硬件仿真開發(fā)系統(tǒng)中的全速、單步、設置斷點等調試功能,同時可以觀察各個變量、寄存器等的當前狀態(tài)。一樣的原理編輯、印刷電路板自動或人工布線及電路仿真功能外,最69(4)該軟件提供了各種單片機與豐富的外圍接口芯片、存儲器芯片組成的系統(tǒng)仿真、RS-232動態(tài)仿真、I2C調試器、SPI調試器、鍵盤和LCD系統(tǒng)仿真的功能。(5)Proteus軟件提供了豐富的虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。利用虛擬儀器在仿真過程中可以測量系統(tǒng)外圍電路的特性,設計者可以充分利用Proteus軟件提供的虛擬儀器,來進行系統(tǒng)的軟件仿真測試與調試??傊?,Proteus軟件是一款功能極其強大的單片機軟件仿真開發(fā)工具。目前,該軟件已經在世界范圍內得到了較為廣泛的使用,很多從事單片機開發(fā)應用的工程師都在使用該軟件。(4)該軟件提供了各種單片機與豐富的外圍接口芯片、存儲器芯片70在使用Proteus軟件對51系列單片機系統(tǒng)進行仿真開發(fā)時,編譯調試環(huán)境可選用KeilC51uVision2軟件。該軟件支持眾多不同公司的MCS-51架構的芯片,集編輯、編譯和程序仿真等于一體,同時還支持PLM、匯編和C語言的程序設計,界面友好易學,在調試程序、軟件仿真方面有很強大的功能。用軟件仿真開發(fā)工具Proteus軟件模擬器調試軟件不需任何硬件在線仿真器,也不需要用戶硬件樣機,直接就可以在PC機上開發(fā)和調試單片機軟件。調試完畢的軟件可以將機器代碼固化,一般能直接投入運行。在使用Proteus軟件對51系列單片機系統(tǒng)進行仿真開發(fā)時,71盡管軟件仿真開發(fā)工具Proteus具有開發(fā)效率高,不需要附加的硬件開發(fā)裝置成本。但是軟件模擬器是使用軟件來模擬硬件,且不能完全準確地模擬硬件電路的實時性,因此不能進行用戶樣機硬件部分的診斷與實時在線仿真。因此,一般的做法是:先繪制原理圖,編寫程序,在Proteus仿真軟件里首先調試通過。調試通過后,然后再將編譯好的程序用編程器去燒錄,然后安裝到用戶樣機硬件板上去觀察運行結果,如果有問題,再連接硬件仿真器去分析、調試。盡管軟件仿真開發(fā)工具Proteus具有開發(fā)效率高,不需要附加7213.6.2用戶樣機的開發(fā)調試本節(jié)介紹如何使用仿真開發(fā)工具進行匯編語言源程序編寫、調試以及與用戶樣機硬件聯(lián)調工作。1.用戶樣機的軟件調試用戶樣機的軟件聯(lián)調過程如圖13-12所示,可分為以下4個步驟。13.6.2用戶樣機的開發(fā)調試73圖13-12圖13-1274第一步,建立用戶源程序。用戶通過開發(fā)系統(tǒng)的鍵盤、CRT顯示器及開發(fā)系統(tǒng)的編輯軟件WS,按照匯編語言源程序所要求的格式、語法規(guī)定,把源程序輸入到開發(fā)系統(tǒng)中,并存在磁盤上。第二步,在開發(fā)系統(tǒng)機上,利用匯編程序對第一步輸入的用戶源程序進行匯編,直至語法錯誤全部糾正為止。如無語法錯誤,則進入下一個步驟。第三步,動態(tài)在線調試。這一步對用戶的源程序進行調試。上述的第一步、第二步是一個純粹的軟件運行過程,而在這一步,必須要有在線仿真器配合,才能對用戶源程序進行調試。用戶程序中分為與用戶樣機硬件無聯(lián)系的程序以及與其樣機緊密關聯(lián)的程序。第一步,建立用戶源程序。用戶通過開發(fā)系統(tǒng)的鍵盤、CRT顯示器75對于與用戶樣機硬件無聯(lián)系的程序,如計算程序,雖然已經沒有語法錯誤,但可能存在邏輯錯誤,使計算結果不正確,此時必須借助于動態(tài)在線調試手段,如單步運行、設置斷點等,發(fā)現(xiàn)邏輯錯誤,然后返回到第一步修改,直至邏輯錯誤糾正為止。對于與用戶樣機硬件緊密相關的程序段(如接口驅動程序),一定要先把在線仿真器的仿真插頭插入用戶樣機的單片機插座中(如圖13-11所示),進行在線仿真調試,仿真開發(fā)系統(tǒng)提供單步、設置斷點等調試手段,來對用戶樣機進行調試。第四步,將調試完畢的用戶程序通過編程寫入器(也稱燒寫器),固化在程序存儲器中。對于與用戶樣機硬件無聯(lián)系的程序,如計算程序,雖然已經沒有語法762.用戶樣機的硬件調試對用戶硬件樣機進行調試,首先要進行靜態(tài)調試,目的是排除明顯的硬件故障。(1)靜態(tài)調試。靜態(tài)調試工作分為兩步:第一步是在用戶樣機加電之前,先用萬用表等工具,根據(jù)硬件邏輯設計圖,仔細檢查樣機線路是否連接正確,并核對元器件的型號、規(guī)格和安裝是否符合要求。應特別注意電源系統(tǒng)的檢查,以防止電源的短路和極性錯誤,并重點檢查系統(tǒng)總線(地址總線、數(shù)據(jù)總線、控制總線)是否存在相互之間短路或與其它信號線的短路。2.用戶樣機的硬件調試77第二步是加電后檢查各芯片插座上有關引腳的電位,仔細測量各點電平是否正常,尤其應注意AT89C51插座的各點電位,若有高壓,與在線仿真器聯(lián)機調試時,將會損壞在線仿真器。具體步驟如下:①電源檢查②各元器件電源檢查③檢查相應芯片的邏輯關系(2)聯(lián)機仿真、在線動態(tài)調試在靜態(tài)調試中,對用戶樣機硬件進行了初步調試,只是排除了一些明顯的靜態(tài)故障。第二步是加電后檢查各芯片插座上有關引腳的電位,仔細測量各點電78用戶樣機中的硬件故障(如各個部件內部存在的故障和部件之間連接的邏輯錯誤)主要是靠聯(lián)機在線仿真來排除的。在斷電情況下,除AT89C51外,插上所有的元器件,并把在線仿真器的仿真插頭插入樣機上89C51的插座,然后與開發(fā)系統(tǒng)的仿真器相連,分別打開樣機和仿真器電源后便可開始聯(lián)機在線仿真調試。前面已經介紹硬件調試和軟件調試是不能完全分開的,許多硬件錯誤是在軟件調試中發(fā)現(xiàn)和被糾正的。所以,在前面介紹的軟件設計過程中的第三步:動態(tài)在線調試中,也包括聯(lián)機仿真、硬件在線動態(tài)調試以及硬件故障的排除。用戶樣機中的硬件故障(如各個部件內部存在的故障和部件之間連接79下面介紹在仿真開發(fā)機上如何利用簡單調試程序檢查用戶樣機。利用仿真開發(fā)系統(tǒng)對用戶樣機進行硬件檢查,常常按其功能及I/O通道分別編寫相應簡短的實驗程序,來檢查各部分功能及邏輯是否正確,下面做簡單介紹。①檢查各地址譯碼輸出通常,地址譯碼輸出是一個低電平有效信號。因此在選到某一個芯片時(無論是內存還是外設),其片選信號用示波器檢查應該是一個負脈沖信號。由于使用的時鐘頻率不同,其負脈沖的寬度和頻率也有所不同。下面介紹在仿真開發(fā)機上如何利用簡單調試程序檢查用戶樣機。80注意,在使用示波器測量用戶樣機板的某些信號時,要將示波器電源插頭上的地線斷開,這是由于示波器測量探頭一端連到外殼,在有些電源系統(tǒng)中,保護地和電源地是連在一起的,有時會將電源插座插反,將交流220V直接引到測量端而將用戶樣機板全部燒毀,并且會殃及仿真開發(fā)機。如何檢查地址譯碼器輸出?例如,一片6116存儲芯片地址為2000~27FFH,則可在開發(fā)機上執(zhí)行如下程序:LOOP: MOV DPTR,#200OH MOVX A,DPTR SJMP LOOP注意,在使用示波器測量用戶樣機板的某些信號時,要將示波器電源81程序執(zhí)行后,應該從6116存儲器芯片的片選端看到等間隔的一串負脈沖,說明該芯片片選信號連接是正確的,即使不插入該存儲器芯片,只測量插座相應片選引腳也會有上述結果。用同樣的方法,可將各內存及外設接口芯片的片選信號逐一進行檢查。如出現(xiàn)不正確現(xiàn)象,就要檢查片選線連線是否正確,有無接觸不好或錯線、斷線問題。②檢查RAM存儲器檢查RAM存儲器可編譯程序,將RAM存儲器進行寫入,再讀出,將寫入和讀出的數(shù)據(jù)進行比較,發(fā)現(xiàn)錯誤,立即停止。將存儲器芯片插上,執(zhí)行如下程序:程序執(zhí)行后,應該從6116存儲器芯片的片選端看到等間隔的一串82 MOVA,#00H MOVDPTR,#RAM ;首地址LOOP:MOVXDPTR,A MOVRO,A MOVXA,DPTR CLRC SUBBA,R0 JNZLOOP1 INCDPTR MOVA,RO INCA SJMPLOOPLOOP1:出錯停止 MOVA,#00H83③檢查I/O擴展接口若外設端口連接一片82C55,端口地址為B000~B003H,A口為方式0輸入,B口、C口都為方式0輸出,則可用下述程序進行檢查:

MOVDPTR,#0B003H MOVA,#90H ;90H為方式控制字 MOVXDPTR,A NOP MOVDPTR,#0B000H CLRC MOVA,#01H③檢查I/O擴展接口84 INCDPTRLP:MOVXDPTR,A;將01H送B口,此指令執(zhí)行完后, ;暫停??碆口連接的發(fā)光二極管 ;狀態(tài),第0位是否是高電平 RLCA ;將1從0位移到第1位 JNZLP INCDPTR RLCA

MOVXA,DPTR;將A口輸入狀態(tài)讀入累加器A, ;執(zhí)單步行完此步后暫停, ;檢查PA口外部開關狀態(tài)同A中相 ;應位狀態(tài)是否一致

INCDPTR85LP1: MOVXDPTR,A;將01H送C口,此指令 ;執(zhí)行完后,看C口第0 ;位輸出狀態(tài) RLCA JNZLP1

對鎖存器和緩沖器,可直接對端口進行讀寫,不存在初始化的問題。LP1: MOVXDPTR,A;將01H送C口,此指令86通過上面介紹的調試用戶樣機過程,讀者可以體會到離開了仿真開發(fā)系統(tǒng)就根本不可能進行用戶樣機的調試,而調試的關鍵步驟—動態(tài)在線仿真調試,又完全依賴于開發(fā)系統(tǒng)中的在線仿真器。所以,開發(fā)系統(tǒng)的性能優(yōu)劣,主要取決于在線仿真器的性能優(yōu)劣,在線仿真器所能提供的仿真開發(fā)手段,直接影響設計者的設計、調試工作的效率。對于設計者來說,在了解目前的開發(fā)系統(tǒng)的種類和性能之后,選擇一個性能/價格比高的仿真開發(fā)系統(tǒng),并能夠熟練地使用它來調試用戶樣機是十分重要的。

通過上面介紹的調試用戶樣機過程,讀者可以體會到離開了仿87所以,開發(fā)系統(tǒng)的性能優(yōu)劣,主要取決于在線仿真器的性能優(yōu)劣,在線仿真器所能提供的仿真開發(fā)手段,直接影響設計者的設計、調試工作的效率。對于設計者來說,在了解了目前的開發(fā)系統(tǒng)的種類和性能之后,選擇一個性能/價格比高的仿真開發(fā)系統(tǒng),并能夠熟練地使用它調試用戶樣機是十分重要的。

本章結束所以,開發(fā)系統(tǒng)的性能優(yōu)劣,主要取決于在線仿真器的性能優(yōu)劣,在88

Thankyou拯畏怖汾關爐烹霉躲渠早膘岸緬蘭輛坐蔬光膊列板哮瞥疹傻俘源拯割宜跟三叉神經痛-治療三叉神經痛-治療拯畏怖汾關爐烹霉躲渠早膘岸緬蘭輛坐蔬光膊列板哮瞥疹89

拯畏怖汾關爐烹霉躲渠早膘岸緬蘭輛坐蔬光膊列板哮瞥疹傻俘源拯割宜跟三叉神經痛-治療三叉神經痛-治療拯畏怖汾關爐烹霉躲渠早膘岸緬蘭輛坐蔬光膊列板哮瞥疹9013.1AT89C51單片機應用系統(tǒng)的設計步驟設計一個單片機測控系統(tǒng),一般可分為四個步驟:(1)需求分析,方案論證和總體設計需求分析:被測控參數(shù)的形式(電量、非電量、模擬量、數(shù)字量等)、被測控參數(shù)的范圍、性能指標、系統(tǒng)功能、工作環(huán)境、顯示、報警、打印要求等。方案論證:根據(jù)要求,設計出符合現(xiàn)場條件的軟硬件方案,又要使系統(tǒng)簡單、經濟、可靠,這是進行方案論證與總體設計一貫堅持的原則。13.1AT89C51單片機應用系統(tǒng)的設計步驟91(2)器件選擇,電路設計制作,數(shù)據(jù)處理算法,軟件的編制階段。(3)系統(tǒng)調試與性能測定。(4)文件編制。文件包括:任務描述、設計的指導思想及設計方案論證、性能測定及現(xiàn)場試用報告與說明、使用指南、軟件資料(流程圖、子程序使用說明、地址分配、程序清單)、硬件資料(電原理圖、元件布置圖及接線圖、接插件引腳圖、線路板圖、注意事項)。文件不僅是設計工作的結果,而且是以后使用、維修以及進一步再設計的依據(jù)。因此,一定要精心編寫,描述清楚,使數(shù)據(jù)及資料齊全。(2)器件選擇,電路設計制作,數(shù)據(jù)處理算法,軟件的編制階段。9213.2應用系統(tǒng)的硬件設計為使硬件設計盡可能合理,應重點考慮以下幾點。1.盡可能采用功能強的芯片(1)單片機的選型。隨著集成電路技術的飛速發(fā)展,許多外圍部件都已集成在芯片內,本身就是一個系統(tǒng),這樣可以省去許多外圍部件的擴展工作,設計工作大大簡化。例如,美國Cygnal公司的C8051F0208位單片機,片內集成有8通道A/D、兩路D/A、兩路電壓比較器,內置溫度傳感器、定時器、可編程數(shù)字交叉開關和64個通用I/O口、電源監(jiān)測、看門狗、多種類型的串行總線(兩個UART、SPI)等。13.2應用系統(tǒng)的硬件設計93(2)優(yōu)先選用片內帶有閃爍存儲器的產品。例如,使用ATMEL公司的89C51/89C52/89C55,PHILIPS公司的89C58(內有32KB的閃爍存儲器),可省去擴展單片機程序存儲器的工作,減少芯片數(shù)量,縮小體積。(3)考慮EPROM空間和RAM空間。目前EPROM容量越來越大,一般盡量選用容量大的EPROM。89C51內部的RAM單元有限,當需增強軟件數(shù)據(jù)處理功能時,往往覺得不足,這就要求系統(tǒng)配置外部RAM,如6264,62256芯片等。如果處理的數(shù)據(jù)量大,需要更大的數(shù)據(jù)存儲器空間,可采用數(shù)據(jù)存儲器芯片DS12887,其容量為256KB,內有鋰電池保護,保存數(shù)據(jù)可達10年以上。(2)優(yōu)先選用片內帶有閃爍存儲器的產品。例如,使用ATMEL94(4)對I/O端口的考慮。在樣機研制出來進行現(xiàn)場試用時,往往會發(fā)現(xiàn)一些被忽視的問題,而這些問題是不能單靠軟件措施來解決的。如有些新的信號需要采集,就必須增加輸入檢測端;有些物理量需要控制,就必須增加輸出端。如果在硬件設計之初就多設計出一些I/O端口,這些問題就會迎刃而解了。(5)預留A/D和D/A通道。和I/O端口同樣的原因,留出一些A/D和D/A通道將來可能會解決大問題。(4)對I/O端口的考慮。在樣機研制出來進行現(xiàn)場試用時,往往952.以軟代硬原則上,只要軟件能做到且能滿足性能要求,就不用硬件。硬件多了不但增加成本,而且系統(tǒng)故障率也會提高。以軟帶硬的實質,是以時間換空間,軟件執(zhí)行過程需要消耗時間,因此這種代替帶來的問題就是實時性下降。在實時性要求不高的場合,以軟代硬是很合算的。3.工藝設計包括機箱、面板、配線、接插件等。必須考慮到安裝、調試、維修的方便。另外,硬件抗干擾措施也必須在硬件設計時一并考慮進去。2.以軟代硬9613.3AT89C51單片機系統(tǒng)設計舉例首先介紹單片機應用系統(tǒng)設計時的地址空間分配和總線驅動問題,最后舉一個應用系統(tǒng)設計的例子供讀者參考。13.3.1應用系統(tǒng)設計中的地址空間分配與總線驅動系統(tǒng)往往是多芯片系統(tǒng),這時要遇到兩個問題:一是如何把64KB程序存儲器和64KB數(shù)據(jù)存儲器的空間分配給各個芯片;二是如何實現(xiàn)89C51單片機對多片芯片的驅動。1.地址空間分配圖13-1是一個全地址譯碼的系統(tǒng)實例。各器件芯片所對應的地址如表13-1所示。13.3AT89C51單片機系統(tǒng)設計舉例97地址空間分配的兩種方法:線選法和譯碼法。下面通過一個例子來說明如何解決這個問題。圖13-1地址空間分配的兩種方法:線選法和譯碼法。下面通過一個例子來說98第13章AT89C51單片機應用系統(tǒng)的設計與調試課件99因6264、2764都是8KB,故需要13條低位地址線(A12~A0)進行片內尋址,低8位地址線A7~A0經8D鎖存器74LS373輸出,圖中沒有畫出。其他三條高位地址線A15~A13經3-8譯碼器74LS138譯碼后作為外圍芯片的片選線。圖中尚剩余三條地址選擇線Y7*~Y5*,可擴展三片存儲器芯片或外圍I/O接口電路芯片。2.總線驅動設計時,有時要擴展多片芯片,注意AT89C51的I/O口驅動能力。AT89C51有4個并行雙向口,P0、P1、P2、P34個口的驅動能力不同,P0口的驅動能力較大,每位可驅動8個LSTTL輸入,當其輸出高電平時,可提供400A的電流;因6264、2764都是8KB,故需要13條低位地址線(A1100當其輸出低電平(0.45V)時,可提供3.2mA的灌電流,如低電平允許提高,灌電流可相應加大。P1、P2、P3口的每一位只能驅動4個LSTTL。所以,任何一個口要想獲得較大的驅動能力,只能用低電平輸出。AT89C51通常將P0、P2口用作訪問外部存儲器,所以P1、P3口只能用作輸入/輸出口。P1、P3口的驅動能力有限,在低電平輸出時,一般也只能提供不到2mA的灌電流。當應用系統(tǒng)規(guī)模過大時,可能造成負載過重,使驅動能力不夠,系統(tǒng)不能可靠地工作,所以通常要附加總線驅動器或其他驅動電路。當其輸出低電平(0.45V)時,可提供3.2mA的灌電流,如101多芯片應用系統(tǒng)中首先要估計總線的負載情況,以確定是否需要對總線的驅動能力進行擴展。圖13-2為AT89C51單片機總線驅動擴展原理圖。地址總線和控制總線的驅動器為單向驅動器,并具有三態(tài)輸出功能。驅動器有一個控制端,以控制驅動器開通或處于高阻狀態(tài)。通常,在單片機應用系統(tǒng)中不采用DMA功能時,地址總線及控制總線可一直處于開通狀態(tài),這時控制端接地即可。常用的單向總線驅動器為74LS244。圖13-3為74LS244引腳圖和邏輯圖。8個三態(tài)驅動器分成兩組,分別由1G*和2G*控制。多芯片應用系統(tǒng)中首先要估計總線的負載情況,以確定是否需要對總1022.總線的驅動圖13-22.總線的驅動圖13-2103圖13-3圖13-3104圖13-4常用的雙向驅動器為74LS245,圖13-4為其引腳圖和邏輯圖。圖13-4常用的雙向驅動器為74LS245,圖13-4為其引105圖13-5是AT89C51單片機應用系統(tǒng)總線驅動擴展電路。P0口的雙向驅動采用74LS245,如圖13-5(b)所示;P2口的單向驅動器采用74LS244,如圖13-5(a)所示。圖13-5圖13-5是AT89C51單片機應用系統(tǒng)總線驅動擴展電路。P10613.4.2AT89C51的最小系統(tǒng)AT89C51內部有4KB閃爍存儲器,芯片本身就是一個最小系統(tǒng)。在能滿足系統(tǒng)的性能要求的情況下,可優(yōu)先考慮采用此種方案。這種最小系統(tǒng)簡單、可靠。在用89C51單片機構成最小應用系統(tǒng)時,只要將單片機接上時鐘電路和復位電路即可,如圖13-6所示。本最小應用系統(tǒng)只能用作一些小型的數(shù)字量的測控單元。13.4.2AT89C51的最小系統(tǒng)107圖13-6圖13-610813.4.3應用設計舉例-水溫控制系統(tǒng)的設計水溫控制是經常遇到的過程控制。下面介紹以89C51為核心的水溫控制系統(tǒng)的設計。本系統(tǒng)采用3位LED顯示器顯示水溫度,溫度控制采用改進的PID數(shù)字控制算法。具有如下基本功能:(1)溫度控制的設定范圍為25-50℃,最小分辨率為0.1℃。(2)偏差≤0.6℃,靜態(tài)誤差≤0.4℃。(3)實時顯示當前的溫度值。(4)命令按鍵5個:復位鍵,功能轉換鍵,加1鍵,減1鍵。13.4.3應用設計舉例-水溫控制系統(tǒng)的設計水溫控制是經1091.硬件電路設計硬件電路從功能模塊上來劃分有:主機電路數(shù)據(jù)采集電路鍵盤、顯示電路控制執(zhí)行電路(1)硬件功能結構框圖硬件功能結構框圖如圖13-7所示。1.硬件電路設計110圖13-7圖13-7111(2)數(shù)據(jù)采集電路的設計主機采用AT89C51,系統(tǒng)時鐘采用12MHz,內部含有4K字節(jié)的閃爍存儲器。無須外擴程序存儲器。數(shù)據(jù)采集電路主要由溫度傳感器、A/D轉換器、放大電路等組成,見圖13-8。圖13-8(2)數(shù)據(jù)采集電路的設計圖13-8112(3)控制執(zhí)行電路的設計由單片機的輸出來控制風扇或電爐。設計中要采用光電耦合器進行強電和弱電的隔離,但還要考慮到輸出信號要對可控硅進行觸發(fā),以便接通風扇或電爐電路??煽毓柽x用了既有光電隔離又有觸發(fā)功能的MC3041。其中使用P1.0控制電爐電路,P1.1控制風扇電路,如圖13-9所示。(3)控制執(zhí)行電路的設計113圖13-9圖13-9114(4)鍵盤與顯示器電路的設計鍵盤共有4個鍵,采用軟件查詢和外部中斷相結合的方法來設計,當某個鍵按下時,低電平有效。4個鍵K1~K4的功能定義如表13-2所示。按鍵鍵名功能K1復位鍵使系統(tǒng)復位K2功能轉換鍵按鍵按下,L1亮,顯示溫度設定值,按鍵松開,L1不亮,顯示當前的溫度值K3加1鍵設定的溫度值加1K4減1鍵設定的溫度值減1表13-24個鍵K1-K4的定義(4)鍵盤與顯示器電路的設計按鍵鍵名功能K1復位鍵使系統(tǒng)復位115按鍵K2與INT0*(P3.2)相連,采用外部中斷方式,且優(yōu)先級定為高優(yōu)先級。K3和K4分別與P1.7和P1.6相連,采用軟件查詢方式,K1為復位鍵,與RC構成復位電路。顯示電路部分利用串行口來實現(xiàn)3位LED的共陽靜態(tài)顯示,顯示內容為溫度的十位、個位以及小數(shù)點后的一位。利用串行口實現(xiàn)LED的共陽靜態(tài)顯示的工作原理及軟件編程請見9.5.2小節(jié)的有關內容。按鍵K2與INT0*(P3.2)相連,采用外部中斷方式1162.軟件設計模塊化設計,三大模塊:主程序模塊、功能實現(xiàn)模塊和運算控制模塊。(1)主程序模塊主程序流程如圖13-10所示。在主程序中首先給定PID算法的參數(shù)值,然后通過循環(huán)顯示當前溫度,以等待中斷,并且使鍵盤外部中斷為高優(yōu)先級,以便使主程序程序能實時響應鍵盤處理。設定定時器T0為5s定時,無鍵按下時,應每隔5s響應一次,以用來采集溫度傳感器并經A/D轉換的溫度信號。設置定時器T1為嵌套在T0之中的定時中斷,初值由PID算法子程序提供,以用來執(zhí)行對電爐或風扇的控制。

2.軟件設計

117圖13-10圖13-10118(2)功能實現(xiàn)模塊①

T1中斷子程序②鍵盤中斷子程序③T0中斷子程序(3)運算控制模塊①標度變換子程序②PID算法子程序(2)功能實現(xiàn)模塊11913.4應用系統(tǒng)的軟件設計13.4.1軟件設計考慮的問題在進行應用系統(tǒng)的總體設計時,軟件設計和硬件設計應統(tǒng)一考慮,相互結合進行。當系統(tǒng)的電路設計定型后,軟件的任務也就明確了。一般來說,軟件的功能分為兩大類。一類是執(zhí)行軟件,它能完成各種實質性的功能,如測量、計算、顯示、打印、輸出控制等;另一類是監(jiān)控軟件,它是專門用來協(xié)調各執(zhí)行模塊和操作者的關系,在系統(tǒng)軟件中充當組織調度的角色。設計人員在進行程序設計時應從以下幾個方面加以考慮:13.4應用系統(tǒng)的軟件設計120(1)根據(jù)軟件功能要求,將系統(tǒng)軟件分成若干相對獨立的部分,設計出合理的軟件總體結構,使其清晰、簡潔、流程合理。(2)各功能程序實行模塊化、子程序化。既便于調試、鏈接,又便于移植、修改。(3)在編寫應用軟件之前,應繪制出程序流程圖。多花一些時間來設計程序流程圖,就可以節(jié)約幾倍于源程序的編輯和調試時間。(4)要合理分配系統(tǒng)資源,包括ROM、RAM、定時器/計數(shù)器、中斷源等。其中最關鍵的是片內RAM分配。對AT89C51來講,片內RAM指00H~7FH單元,這128個字節(jié)的功能不完全相(1)根據(jù)軟件功能要求,將系統(tǒng)軟件分成若干相對獨立的部分,設121同,分配時應充分發(fā)揮其特長,做到物盡其用。例如,在工作寄存器的8個單元中,R0和R1具有指針功能,是編程的重要角色,避免作為它用;20H~2FH這16個字節(jié)具有位尋址功能,用來存放各種標志位、邏輯變量、狀態(tài)變量等;設置堆棧區(qū)時應事先估算出子程序和中斷嵌套技術及程序中棧操作指令使用情況,其大小應留有余量。若系統(tǒng)中擴展了RAM存儲器,應把使用頻率最高的數(shù)據(jù)緩沖器安排在片內RAM中,以提高處理速度。當RAM資源規(guī)劃好后,應列出一張詳細的RAM資源分配表,以備編程時查用方便。同,分配時應充分發(fā)揮其特長,做到物盡其用。12213.4.2系統(tǒng)軟件的總體框架設計應用設計者在軟件設計時,感覺比較困難的是如何進行系統(tǒng)軟件的總體框架設計。下面給出一個典型的例子,供讀者在軟件設計時參考。例13-1有一個AT89C51的應用系統(tǒng),假設5個中斷源都已用到,應用系統(tǒng)的程序框架如下:

ORG 0000H ;系統(tǒng)程序入口 LJMP MAIN ;跳向主程序入口

ORG 0003H ;外中斷0中斷向量入口 LJMPIINT0P ;跳向外中斷0中斷處理程 ;序入口IINT0P

ORG 000BH ;T0中斷向量入口 LJMPIT0P ;跳向T0中斷入口IT0P13.4.2系統(tǒng)軟件的總體框架設計123

ORG 0013H ;外中斷0中斷向量入口 LJMPIINT1P;跳向外中斷1中斷處理程序入口IINT1P

ORG 001BH ;T1中斷向量入口 LJMPIT1P ;跳向T1中斷處理程序入口IT1P

ORG 0023H ;串行口中斷向量入口 LJMPISIOP ;跳向串行口中斷處理程序入口ISIOP

ORG0040H ;主程序入口MAIN:

對片內各功能部件,如定時器、串行口、中斷系統(tǒng)進行初始化;對擴展的各個I/O接口芯片進行初始化 MOVSP,#60H ;對堆棧區(qū)進行初始化

主程序(根據(jù)實際處理任務編寫) ORG 0013H ;外中斷0中斷向量入口124

ORGXXXXH ;外中斷0中斷處理子程序IINT0P入口IINT0P:外中斷0中斷處理子程序 RETI

ORGYYYYH

IT0P:T0中斷處理子程序RETI

ORGZZZZH

IINT1P:外中斷1中斷處理子程序 RETI

ORGUUUUH

IT1P:T1中斷處理子程序 RETI

ORGVVVVH

ISIOP:串行口中斷處理子程序 RETI ORGXXXXH ;外中斷0中斷處理子程序IINT0125上述程序框架僅供參考,5個中斷源的中斷入口XXXXH~VVVVH要根據(jù)主程序、各中斷源的中斷處理程序的長度而定,不要重疊。上述程序框架僅供參考,5個中斷源的中斷入口XXXXH~VVV126

13.5軟件抗干擾設計單片機系統(tǒng)在噪聲環(huán)境下運行,除了前面介紹的各種抗干擾的措施外,還可采用軟件來增強系統(tǒng)的抗干擾能力。本節(jié)介紹幾種常用軟件抗干擾的方法。13.5.1軟件濾波對于實時數(shù)據(jù)采集系統(tǒng),為了消除傳感器通道中的干擾信號,硬件上,常采用模擬濾波器對信號實現(xiàn)頻率濾波。同樣,采用軟件也可以完成硬件模擬濾波器類似的功能,這就是軟件濾波。

13.5軟件抗干擾設計1271.算術平均濾波法對一點數(shù)據(jù)連續(xù)取n個值進行采樣,然后算術平均。這種方法適用于對一般具有隨機干擾的信號進行濾波。這樣信號的特點是有一個平均值,信號在某一數(shù)值范圍附近上下波動。這種濾波法當n值較大時,信號的平滑度高,但是靈敏度低;當n值較小時,平滑度低,但靈敏度高。應視具體情況選取n,以使既節(jié)約時間,又濾波效果好。對于一般流量測量,通常取n

溫馨提示

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

評論

0/150

提交評論