




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
13.1AT89C51單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)步驟設(shè)計(jì)一個(gè)單片機(jī)測(cè)控系統(tǒng),一般可分為四個(gè)步驟:(1)需求分析,方案論證和總體設(shè)計(jì)需求分析:被測(cè)控參數(shù)的形式(電量、非電量、模擬量、數(shù)字量等)、被測(cè)控參數(shù)的范圍、性能指標(biāo)、系統(tǒng)功能、工作環(huán)境、顯示、報(bào)警、打印要求等。方案論證:根據(jù)要求,設(shè)計(jì)出符合現(xiàn)場(chǎng)條件的軟硬件方案,又要使系統(tǒng)簡(jiǎn)單、經(jīng)濟(jì)、可靠,這是進(jìn)行方案論證與總體設(shè)計(jì)一貫堅(jiān)持的原則。13.1AT89C51單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)步驟1(2)器件選擇,電路設(shè)計(jì)制作,數(shù)據(jù)處理算法,軟件的編制階段。(3)系統(tǒng)調(diào)試與性能測(cè)定。(4)文件編制。文件包括:任務(wù)描述、設(shè)計(jì)的指導(dǎo)思想及設(shè)計(jì)方案論證、性能測(cè)定及現(xiàn)場(chǎng)試用報(bào)告與說(shuō)明、使用指南、軟件資料(流程圖、子程序使用說(shuō)明、地址分配、程序清單)、硬件資料(電原理圖、元件布置圖及接線圖、接插件引腳圖、線路板圖、注意事項(xiàng))。文件不僅是設(shè)計(jì)工作的結(jié)果,而且是以后使用、維修以及進(jìn)一步再設(shè)計(jì)的依據(jù)。因此,一定要精心編寫(xiě),描述清楚,使數(shù)據(jù)及資料齊全。(2)器件選擇,電路設(shè)計(jì)制作,數(shù)據(jù)處理算法,軟件的編制階段。213.2應(yīng)用系統(tǒng)的硬件設(shè)計(jì)為使硬件設(shè)計(jì)盡可能合理,應(yīng)重點(diǎn)考慮以下幾點(diǎn)。1.盡可能采用功能強(qiáng)的芯片(1)單片機(jī)的選型。隨著集成電路技術(shù)的飛速發(fā)展,許多外圍部件都已集成在芯片內(nèi),本身就是一個(gè)系統(tǒng),這樣可以省去許多外圍部件的擴(kuò)展工作,設(shè)計(jì)工作大大簡(jiǎn)化。例如,美國(guó)Cygnal公司的C8051F0208位單片機(jī),片內(nèi)集成有8通道A/D、兩路D/A、兩路電壓比較器,內(nèi)置溫度傳感器、定時(shí)器、可編程數(shù)字交叉開(kāi)關(guān)和64個(gè)通用I/O口、電源監(jiān)測(cè)、看門(mén)狗、多種類(lèi)型的串行總線(兩個(gè)UART、SPI)等。13.2應(yīng)用系統(tǒng)的硬件設(shè)計(jì)3(2)優(yōu)先選用片內(nèi)帶有閃爍存儲(chǔ)器的產(chǎn)品。例如,使用ATMEL公司的89C51/89C52/89C55,PHILIPS公司的89C58(內(nèi)有32KB的閃爍存儲(chǔ)器),可省去擴(kuò)展單片機(jī)程序存儲(chǔ)器的工作,減少芯片數(shù)量,縮小體積。(3)考慮EPROM空間和RAM空間。目前EPROM容量越來(lái)越大,一般盡量選用容量大的EPROM。89C51內(nèi)部的RAM單元有限,當(dāng)需增強(qiáng)軟件數(shù)據(jù)處理功能時(shí),往往覺(jué)得不足,這就要求系統(tǒng)配置外部RAM,如6264,62256芯片等。如果處理的數(shù)據(jù)量大,需要更大的數(shù)據(jù)存儲(chǔ)器空間,可采用數(shù)據(jù)存儲(chǔ)器芯片DS12887,其容量為256KB,內(nèi)有鋰電池保護(hù),保存數(shù)據(jù)可達(dá)10年以上。(2)優(yōu)先選用片內(nèi)帶有閃爍存儲(chǔ)器的產(chǎn)品。例如,使用ATMEL4(4)對(duì)I/O端口的考慮。在樣機(jī)研制出來(lái)進(jìn)行現(xiàn)場(chǎng)試用時(shí),往往會(huì)發(fā)現(xiàn)一些被忽視的問(wèn)題,而這些問(wèn)題是不能單靠軟件措施來(lái)解決的。如有些新的信號(hào)需要采集,就必須增加輸入檢測(cè)端;有些物理量需要控制,就必須增加輸出端。如果在硬件設(shè)計(jì)之初就多設(shè)計(jì)出一些I/O端口,這些問(wèn)題就會(huì)迎刃而解了。(5)預(yù)留A/D和D/A通道。和I/O端口同樣的原因,留出一些A/D和D/A通道將來(lái)可能會(huì)解決大問(wèn)題。(4)對(duì)I/O端口的考慮。在樣機(jī)研制出來(lái)進(jìn)行現(xiàn)場(chǎng)試用時(shí),往往52.以軟代硬原則上,只要軟件能做到且能滿足性能要求,就不用硬件。硬件多了不但增加成本,而且系統(tǒng)故障率也會(huì)提高。以軟帶硬的實(shí)質(zhì),是以時(shí)間換空間,軟件執(zhí)行過(guò)程需要消耗時(shí)間,因此這種代替帶來(lái)的問(wèn)題就是實(shí)時(shí)性下降。在實(shí)時(shí)性要求不高的場(chǎng)合,以軟代硬是很合算的。3.工藝設(shè)計(jì)包括機(jī)箱、面板、配線、接插件等。必須考慮到安裝、調(diào)試、維修的方便。另外,硬件抗干擾措施也必須在硬件設(shè)計(jì)時(shí)一并考慮進(jìn)去。2.以軟代硬613.3AT89C51單片機(jī)系統(tǒng)設(shè)計(jì)舉例首先介紹單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)時(shí)的地址空間分配和總線驅(qū)動(dòng)問(wèn)題,最后舉一個(gè)應(yīng)用系統(tǒng)設(shè)計(jì)的例子供讀者參考。13.3.1應(yīng)用系統(tǒng)設(shè)計(jì)中的地址空間分配與總線驅(qū)動(dòng)系統(tǒng)往往是多芯片系統(tǒng),這時(shí)要遇到兩個(gè)問(wèn)題:一是如何把64KB程序存儲(chǔ)器和64KB數(shù)據(jù)存儲(chǔ)器的空間分配給各個(gè)芯片;二是如何實(shí)現(xiàn)89C51單片機(jī)對(duì)多片芯片的驅(qū)動(dòng)。1.地址空間分配圖13-1是一個(gè)全地址譯碼的系統(tǒng)實(shí)例。各器件芯片所對(duì)應(yīng)的地址如表13-1所示。13.3AT89C51單片機(jī)系統(tǒng)設(shè)計(jì)舉例7地址空間分配的兩種方法:線選法和譯碼法。下面通過(guò)一個(gè)例子來(lái)說(shuō)明如何解決這個(gè)問(wèn)題。圖13-1地址空間分配的兩種方法:線選法和譯碼法。下面通過(guò)一個(gè)例子來(lái)說(shuō)8第13章AT89C51單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)與調(diào)試課件9因6264、2764都是8KB,故需要13條低位地址線(A12~A0)進(jìn)行片內(nèi)尋址,低8位地址線A7~A0經(jīng)8D鎖存器74LS373輸出,圖中沒(méi)有畫(huà)出。其他三條高位地址線A15~A13經(jīng)3-8譯碼器74LS138譯碼后作為外圍芯片的片選線。圖中尚剩余三條地址選擇線Y7*~Y5*,可擴(kuò)展三片存儲(chǔ)器芯片或外圍I/O接口電路芯片。2.總線驅(qū)動(dòng)設(shè)計(jì)時(shí),有時(shí)要擴(kuò)展多片芯片,注意AT89C51的I/O口驅(qū)動(dòng)能力。AT89C51有4個(gè)并行雙向口,P0、P1、P2、P34個(gè)口的驅(qū)動(dòng)能力不同,P0口的驅(qū)動(dòng)能力較大,每位可驅(qū)動(dòng)8個(gè)LSTTL輸入,當(dāng)其輸出高電平時(shí),可提供400A的電流;因6264、2764都是8KB,故需要13條低位地址線(A110當(dāng)其輸出低電平(0.45V)時(shí),可提供3.2mA的灌電流,如低電平允許提高,灌電流可相應(yīng)加大。P1、P2、P3口的每一位只能驅(qū)動(dòng)4個(gè)LSTTL。所以,任何一個(gè)口要想獲得較大的驅(qū)動(dòng)能力,只能用低電平輸出。AT89C51通常將P0、P2口用作訪問(wèn)外部存儲(chǔ)器,所以P1、P3口只能用作輸入/輸出口。P1、P3口的驅(qū)動(dòng)能力有限,在低電平輸出時(shí),一般也只能提供不到2mA的灌電流。當(dāng)應(yīng)用系統(tǒng)規(guī)模過(guò)大時(shí),可能造成負(fù)載過(guò)重,使驅(qū)動(dòng)能力不夠,系統(tǒng)不能可靠地工作,所以通常要附加總線驅(qū)動(dòng)器或其他驅(qū)動(dòng)電路。當(dāng)其輸出低電平(0.45V)時(shí),可提供3.2mA的灌電流,如11多芯片應(yīng)用系統(tǒng)中首先要估計(jì)總線的負(fù)載情況,以確定是否需要對(duì)總線的驅(qū)動(dòng)能力進(jìn)行擴(kuò)展。圖13-2為AT89C51單片機(jī)總線驅(qū)動(dòng)擴(kuò)展原理圖。地址總線和控制總線的驅(qū)動(dòng)器為單向驅(qū)動(dòng)器,并具有三態(tài)輸出功能。驅(qū)動(dòng)器有一個(gè)控制端,以控制驅(qū)動(dòng)器開(kāi)通或處于高阻狀態(tài)。通常,在單片機(jī)應(yīng)用系統(tǒng)中不采用DMA功能時(shí),地址總線及控制總線可一直處于開(kāi)通狀態(tài),這時(shí)控制端接地即可。常用的單向總線驅(qū)動(dòng)器為74LS244。圖13-3為74LS244引腳圖和邏輯圖。8個(gè)三態(tài)驅(qū)動(dòng)器分成兩組,分別由1G*和2G*控制。多芯片應(yīng)用系統(tǒng)中首先要估計(jì)總線的負(fù)載情況,以確定是否需要對(duì)總122.總線的驅(qū)動(dòng)圖13-22.總線的驅(qū)動(dòng)圖13-213圖13-3圖13-314圖13-4常用的雙向驅(qū)動(dòng)器為74LS245,圖13-4為其引腳圖和邏輯圖。圖13-4常用的雙向驅(qū)動(dòng)器為74LS245,圖13-4為其引15圖13-5是AT89C51單片機(jī)應(yīng)用系統(tǒng)總線驅(qū)動(dòng)擴(kuò)展電路。P0口的雙向驅(qū)動(dòng)采用74LS245,如圖13-5(b)所示;P2口的單向驅(qū)動(dòng)器采用74LS244,如圖13-5(a)所示。圖13-5圖13-5是AT89C51單片機(jī)應(yīng)用系統(tǒng)總線驅(qū)動(dòng)擴(kuò)展電路。P1613.4.2AT89C51的最小系統(tǒng)AT89C51內(nèi)部有4KB閃爍存儲(chǔ)器,芯片本身就是一個(gè)最小系統(tǒng)。在能滿足系統(tǒng)的性能要求的情況下,可優(yōu)先考慮采用此種方案。這種最小系統(tǒng)簡(jiǎn)單、可靠。在用89C51單片機(jī)構(gòu)成最小應(yīng)用系統(tǒng)時(shí),只要將單片機(jī)接上時(shí)鐘電路和復(fù)位電路即可,如圖13-6所示。本最小應(yīng)用系統(tǒng)只能用作一些小型的數(shù)字量的測(cè)控單元。13.4.2AT89C51的最小系統(tǒng)17圖13-6圖13-61813.4.3應(yīng)用設(shè)計(jì)舉例-水溫控制系統(tǒng)的設(shè)計(jì)水溫控制是經(jīng)常遇到的過(guò)程控制。下面介紹以89C51為核心的水溫控制系統(tǒng)的設(shè)計(jì)。本系統(tǒng)采用3位LED顯示器顯示水溫度,溫度控制采用改進(jìn)的PID數(shù)字控制算法。具有如下基本功能:(1)溫度控制的設(shè)定范圍為25-50℃,最小分辨率為0.1℃。(2)偏差≤0.6℃,靜態(tài)誤差≤0.4℃。(3)實(shí)時(shí)顯示當(dāng)前的溫度值。(4)命令按鍵5個(gè):復(fù)位鍵,功能轉(zhuǎn)換鍵,加1鍵,減1鍵。13.4.3應(yīng)用設(shè)計(jì)舉例-水溫控制系統(tǒng)的設(shè)計(jì)水溫控制是經(jīng)191.硬件電路設(shè)計(jì)硬件電路從功能模塊上來(lái)劃分有:主機(jī)電路數(shù)據(jù)采集電路鍵盤(pán)、顯示電路控制執(zhí)行電路(1)硬件功能結(jié)構(gòu)框圖硬件功能結(jié)構(gòu)框圖如圖13-7所示。1.硬件電路設(shè)計(jì)20圖13-7圖13-721(2)數(shù)據(jù)采集電路的設(shè)計(jì)主機(jī)采用AT89C51,系統(tǒng)時(shí)鐘采用12MHz,內(nèi)部含有4K字節(jié)的閃爍存儲(chǔ)器。無(wú)須外擴(kuò)程序存儲(chǔ)器。數(shù)據(jù)采集電路主要由溫度傳感器、A/D轉(zhuǎn)換器、放大電路等組成,見(jiàn)圖13-8。圖13-8(2)數(shù)據(jù)采集電路的設(shè)計(jì)圖13-822(3)控制執(zhí)行電路的設(shè)計(jì)由單片機(jī)的輸出來(lái)控制風(fēng)扇或電爐。設(shè)計(jì)中要采用光電耦合器進(jìn)行強(qiáng)電和弱電的隔離,但還要考慮到輸出信號(hào)要對(duì)可控硅進(jìn)行觸發(fā),以便接通風(fēng)扇或電爐電路??煽毓柽x用了既有光電隔離又有觸發(fā)功能的MC3041。其中使用P1.0控制電爐電路,P1.1控制風(fēng)扇電路,如圖13-9所示。(3)控制執(zhí)行電路的設(shè)計(jì)23圖13-9圖13-924(4)鍵盤(pán)與顯示器電路的設(shè)計(jì)鍵盤(pán)共有4個(gè)鍵,采用軟件查詢和外部中斷相結(jié)合的方法來(lái)設(shè)計(jì),當(dāng)某個(gè)鍵按下時(shí),低電平有效。4個(gè)鍵K1~K4的功能定義如表13-2所示。按鍵鍵名功能K1復(fù)位鍵使系統(tǒng)復(fù)位K2功能轉(zhuǎn)換鍵按鍵按下,L1亮,顯示溫度設(shè)定值,按鍵松開(kāi),L1不亮,顯示當(dāng)前的溫度值K3加1鍵設(shè)定的溫度值加1K4減1鍵設(shè)定的溫度值減1表13-24個(gè)鍵K1-K4的定義(4)鍵盤(pán)與顯示器電路的設(shè)計(jì)按鍵鍵名功能K1復(fù)位鍵使系統(tǒng)復(fù)位25按鍵K2與INT0*(P3.2)相連,采用外部中斷方式,且優(yōu)先級(jí)定為高優(yōu)先級(jí)。K3和K4分別與P1.7和P1.6相連,采用軟件查詢方式,K1為復(fù)位鍵,與RC構(gòu)成復(fù)位電路。顯示電路部分利用串行口來(lái)實(shí)現(xiàn)3位LED的共陽(yáng)靜態(tài)顯示,顯示內(nèi)容為溫度的十位、個(gè)位以及小數(shù)點(diǎn)后的一位。利用串行口實(shí)現(xiàn)LED的共陽(yáng)靜態(tài)顯示的工作原理及軟件編程請(qǐng)見(jiàn)9.5.2小節(jié)的有關(guān)內(nèi)容。按鍵K2與INT0*(P3.2)相連,采用外部中斷方式262.軟件設(shè)計(jì)模塊化設(shè)計(jì),三大模塊:主程序模塊、功能實(shí)現(xiàn)模塊和運(yùn)算控制模塊。(1)主程序模塊主程序流程如圖13-10所示。在主程序中首先給定PID算法的參數(shù)值,然后通過(guò)循環(huán)顯示當(dāng)前溫度,以等待中斷,并且使鍵盤(pán)外部中斷為高優(yōu)先級(jí),以便使主程序程序能實(shí)時(shí)響應(yīng)鍵盤(pán)處理。設(shè)定定時(shí)器T0為5s定時(shí),無(wú)鍵按下時(shí),應(yīng)每隔5s響應(yīng)一次,以用來(lái)采集溫度傳感器并經(jīng)A/D轉(zhuǎn)換的溫度信號(hào)。設(shè)置定時(shí)器T1為嵌套在T0之中的定時(shí)中斷,初值由PID算法子程序提供,以用來(lái)執(zhí)行對(duì)電爐或風(fēng)扇的控制。
2.軟件設(shè)計(jì)
27圖13-10圖13-1028(2)功能實(shí)現(xiàn)模塊①
T1中斷子程序②鍵盤(pán)中斷子程序③T0中斷子程序(3)運(yùn)算控制模塊①標(biāo)度變換子程序②PID算法子程序(2)功能實(shí)現(xiàn)模塊2913.4應(yīng)用系統(tǒng)的軟件設(shè)計(jì)13.4.1軟件設(shè)計(jì)考慮的問(wèn)題在進(jìn)行應(yīng)用系統(tǒng)的總體設(shè)計(jì)時(shí),軟件設(shè)計(jì)和硬件設(shè)計(jì)應(yīng)統(tǒng)一考慮,相互結(jié)合進(jìn)行。當(dāng)系統(tǒng)的電路設(shè)計(jì)定型后,軟件的任務(wù)也就明確了。一般來(lái)說(shuō),軟件的功能分為兩大類(lèi)。一類(lèi)是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測(cè)量、計(jì)算、顯示、打印、輸出控制等;另一類(lèi)是監(jiān)控軟件,它是專(zhuān)門(mén)用來(lái)協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度的角色。設(shè)計(jì)人員在進(jìn)行程序設(shè)計(jì)時(shí)應(yīng)從以下幾個(gè)方面加以考慮:13.4應(yīng)用系統(tǒng)的軟件設(shè)計(jì)30(1)根據(jù)軟件功能要求,將系統(tǒng)軟件分成若干相對(duì)獨(dú)立的部分,設(shè)計(jì)出合理的軟件總體結(jié)構(gòu),使其清晰、簡(jiǎn)潔、流程合理。(2)各功能程序?qū)嵭心K化、子程序化。既便于調(diào)試、鏈接,又便于移植、修改。(3)在編寫(xiě)應(yīng)用軟件之前,應(yīng)繪制出程序流程圖。多花一些時(shí)間來(lái)設(shè)計(jì)程序流程圖,就可以節(jié)約幾倍于源程序的編輯和調(diào)試時(shí)間。(4)要合理分配系統(tǒng)資源,包括ROM、RAM、定時(shí)器/計(jì)數(shù)器、中斷源等。其中最關(guān)鍵的是片內(nèi)RAM分配。對(duì)AT89C51來(lái)講,片內(nèi)RAM指00H~7FH單元,這128個(gè)字節(jié)的功能不完全相(1)根據(jù)軟件功能要求,將系統(tǒng)軟件分成若干相對(duì)獨(dú)立的部分,設(shè)31同,分配時(shí)應(yīng)充分發(fā)揮其特長(zhǎng),做到物盡其用。例如,在工作寄存器的8個(gè)單元中,R0和R1具有指針功能,是編程的重要角色,避免作為它用;20H~2FH這16個(gè)字節(jié)具有位尋址功能,用來(lái)存放各種標(biāo)志位、邏輯變量、狀態(tài)變量等;設(shè)置堆棧區(qū)時(shí)應(yīng)事先估算出子程序和中斷嵌套技術(shù)及程序中棧操作指令使用情況,其大小應(yīng)留有余量。若系統(tǒng)中擴(kuò)展了RAM存儲(chǔ)器,應(yīng)把使用頻率最高的數(shù)據(jù)緩沖器安排在片內(nèi)RAM中,以提高處理速度。當(dāng)RAM資源規(guī)劃好后,應(yīng)列出一張?jiān)敿?xì)的RAM資源分配表,以備編程時(shí)查用方便。同,分配時(shí)應(yīng)充分發(fā)揮其特長(zhǎng),做到物盡其用。3213.4.2系統(tǒng)軟件的總體框架設(shè)計(jì)應(yīng)用設(shè)計(jì)者在軟件設(shè)計(jì)時(shí),感覺(jué)比較困難的是如何進(jìn)行系統(tǒng)軟件的總體框架設(shè)計(jì)。下面給出一個(gè)典型的例子,供讀者在軟件設(shè)計(jì)時(shí)參考。例13-1有一個(gè)AT89C51的應(yīng)用系統(tǒng),假設(shè)5個(gè)中斷源都已用到,應(yīng)用系統(tǒng)的程序框架如下:
ORG 0000H ;系統(tǒng)程序入口 LJMP MAIN ;跳向主程序入口
ORG 0003H ;外中斷0中斷向量入口 LJMPIINT0P ;跳向外中斷0中斷處理程 ;序入口IINT0P
ORG 000BH ;T0中斷向量入口 LJMPIT0P ;跳向T0中斷入口IT0P13.4.2系統(tǒng)軟件的總體框架設(shè)計(jì)33
ORG 0013H ;外中斷0中斷向量入口 LJMPIINT1P;跳向外中斷1中斷處理程序入口IINT1P
ORG 001BH ;T1中斷向量入口 LJMPIT1P ;跳向T1中斷處理程序入口IT1P
ORG 0023H ;串行口中斷向量入口 LJMPISIOP ;跳向串行口中斷處理程序入口ISIOP
ORG0040H ;主程序入口MAIN:
對(duì)片內(nèi)各功能部件,如定時(shí)器、串行口、中斷系統(tǒng)進(jìn)行初始化;對(duì)擴(kuò)展的各個(gè)I/O接口芯片進(jìn)行初始化 MOVSP,#60H ;對(duì)堆棧區(qū)進(jìn)行初始化
主程序(根據(jù)實(shí)際處理任務(wù)編寫(xiě)) 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個(gè)中斷源的中斷入口XXXXH~VVVVH要根據(jù)主程序、各中斷源的中斷處理程序的長(zhǎng)度而定,不要重疊。上述程序框架僅供參考,5個(gè)中斷源的中斷入口XXXXH~VVV36
13.5軟件抗干擾設(shè)計(jì)單片機(jī)系統(tǒng)在噪聲環(huán)境下運(yùn)行,除了前面介紹的各種抗干擾的措施外,還可采用軟件來(lái)增強(qiáng)系統(tǒng)的抗干擾能力。本節(jié)介紹幾種常用軟件抗干擾的方法。13.5.1軟件濾波對(duì)于實(shí)時(shí)數(shù)據(jù)采集系統(tǒng),為了消除傳感器通道中的干擾信號(hào),硬件上,常采用模擬濾波器對(duì)信號(hào)實(shí)現(xiàn)頻率濾波。同樣,采用軟件也可以完成硬件模擬濾波器類(lèi)似的功能,這就是軟件濾波。
13.5軟件抗干擾設(shè)計(jì)371.算術(shù)平均濾波法對(duì)一點(diǎn)數(shù)據(jù)連續(xù)取n個(gè)值進(jìn)行采樣,然后算術(shù)平均。這種方法適用于對(duì)一般具有隨機(jī)干擾的信號(hào)進(jìn)行濾波。這樣信號(hào)的特點(diǎn)是有一個(gè)平均值,信號(hào)在某一數(shù)值范圍附近上下波動(dòng)。這種濾波法當(dāng)n值較大時(shí),信號(hào)的平滑度高,但是靈敏度低;當(dāng)n值較小時(shí),平滑度低,但靈敏度高。應(yīng)視具體情況選取n,以使既節(jié)約時(shí)間,又濾波效果好。對(duì)于一般流量測(cè)量,通常取n=12;若為壓力,則取n=4。一般情況下n=3~5次平均即可。1.算術(shù)平均濾波法382.滑動(dòng)平均濾波法上面介紹的算術(shù)平均濾波法,每計(jì)算一次數(shù)據(jù)需要測(cè)量N次。對(duì)于測(cè)量速度較慢或要求數(shù)據(jù)計(jì)算速度較快的實(shí)時(shí)控制系統(tǒng),上述方法無(wú)法使用。下面介紹一種只需測(cè)量一次,就能得到當(dāng)前算術(shù)平均值的方法--滑動(dòng)平均濾波法。本法是把n個(gè)采樣值看成一個(gè)隊(duì)列,隊(duì)列的長(zhǎng)度為n,每進(jìn)行一次采樣,就把采樣值放入隊(duì)尾,而扔掉原來(lái)隊(duì)首的一個(gè)采樣值,這樣在隊(duì)列中始終有n個(gè)“最新”采樣值。對(duì)隊(duì)列中的n個(gè)采樣值進(jìn)行平均,就可以得到新的濾波值。2.滑動(dòng)平均濾波法39滑動(dòng)平均濾波法對(duì)周期性干擾有良好的抑制作用,平滑度高,靈敏度低;但對(duì)偶然出現(xiàn)的脈沖性干擾的抑制作用差,不易消除由于脈沖干擾引起的采樣值的偏差。因此它不適用于脈沖干擾比較嚴(yán)重的場(chǎng)合,而適用于高頻振蕩系統(tǒng)。通常觀察不同N值下滑動(dòng)平均的輸出響應(yīng)來(lái)選取N值,以便既少占有時(shí)間,又能達(dá)到最好濾波效果,其工程經(jīng)驗(yàn)值為:
滑動(dòng)平均濾波法對(duì)周期性干擾有良好的抑制作用,平滑度高,靈敏度40下例為滑動(dòng)平均濾波法的參考程序?!纠?3-2】假定n個(gè)雙字節(jié)型采樣值,30H單元為采樣隊(duì)列內(nèi)存單元首地址,n個(gè)采樣值之和不大于16位。新的采樣值存于2EH、2FH單元,濾波值存于50H、51H單元,AVGFIL為本程序調(diào)用的算術(shù)平均濾波子程序。參考程序如下:SAVGFIL: MOV R2,#n-1 ;采樣個(gè)數(shù) MOV R0,#32H ;隊(duì)列單元首地址 MOVR1,#33HLOOP: MOVA,R0 ;移動(dòng)低字節(jié) DECR0 DECR0下例為滑動(dòng)平均濾波法的參考程序。41 MOVR0,A MOVA,R0 ;修改低字節(jié)地址 ADDA,#04H MOVR0,A MOVA,R1 ;移動(dòng)高字節(jié) DECR1 DECR1 MOVR1,A MOVA,R1 ;修改高字節(jié)地址 ADDA,#04H MOVR1,A DJNZR2,LOOP MOVR0,2EH ;存新的采樣值 MOVR1,2FH ACALLAVGFIL;AVGFIL算術(shù)平均值子程序,設(shè)已編寫(xiě) RET MOVR0,A423.中位值濾波法本方法就是對(duì)某一被測(cè)參數(shù)接連采樣n次(一般n取奇數(shù)),然后把n次采樣值按大小排列,取中間值為本次采樣值。中位值濾波能有效地克服因偶然因素引起的波動(dòng)干擾。對(duì)溫度、液位等變化緩慢的被測(cè)參數(shù)采用此法能收到良好的濾波效果。但對(duì)流量、速度等快速變化的參數(shù)一般不宜采用中位值濾波法。中位值濾波程序設(shè)計(jì)的實(shí)質(zhì)是,首先把n個(gè)采樣值從小到大或從大到小進(jìn)行排序,然后再取中間值。n個(gè)數(shù)據(jù)按大小“冒泡法”(排序程序設(shè)計(jì)見(jiàn)第4章)進(jìn)行比較,直到最大數(shù)沉底為止。然后再重新進(jìn)行比較,把次大值放到n-1位,依此類(lèi)推,則可將n個(gè)數(shù)從小到大順序排列。3.中位值濾波法43【例13-3】設(shè)采樣值從8位A/D轉(zhuǎn)換器輸入5次,存放在SAMP為首地址的內(nèi)存單元中,采用中位值濾波。程序如下:
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】設(shè)采樣值從8位A/D轉(zhuǎn)換器輸入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ù)進(jìn)行 DJNZ R2,SORT ;R2≠0,大循環(huán)繼續(xù)進(jìn)行 INC R0 MOV A,R0 RET MOV R1,A454.去極值平均值濾波法前面介紹的算術(shù)平均與滑動(dòng)平均濾波法,在脈沖干擾比較嚴(yán)重的場(chǎng)合,則干擾將會(huì)“平均”到結(jié)果中去,故上述兩種平均值法不易消除由于脈沖干擾而引起的誤差。這時(shí)可采用去極值平均值濾波法。思想:連續(xù)采樣n次后累加求和,同時(shí)找出其中的最大值與最小值,再?gòu)睦奂雍椭袦p去最大值和最小值,按n-2個(gè)采樣值求平均,即可得到有效采樣值。類(lèi)似于體育比賽中的去掉最高、最低分,再求平均分的評(píng)分辦法。4.去極值平均值濾波法46(2)打印機(jī)接口為使平均濾波算法簡(jiǎn)單,n-2應(yīng)為2,4,6,8或16,故n常取4,6,8,10或18。具體做法有兩種:對(duì)于快變參數(shù),先連續(xù)采樣n次,然后再處理,但要在RAM中開(kāi)辟出n個(gè)數(shù)據(jù)的暫存區(qū);對(duì)于慢變參數(shù),可一邊采樣,一邊處理,而不必在RAM中開(kāi)辟數(shù)據(jù)暫存區(qū)。實(shí)踐中,為了加快測(cè)量速度,一般n取4?!纠?3-4】以n=4為例,即連續(xù)進(jìn)行4次數(shù)據(jù)采樣,去掉其中最大值和最小值,然后求剩下兩個(gè)數(shù)據(jù)的平均值。R2R3存最大值,R4R5存最小值,R6R7存放累加和及最后結(jié)果。當(dāng)然,連續(xù)采樣不只限4次,可以進(jìn)行任意次,這時(shí),只需改變R0中的數(shù)值。 參考程序(見(jiàn)教材)(2)打印機(jī)接口為使平均濾波算法簡(jiǎn)單,n-2應(yīng)為2,4,6,47(3)A/D與D/A轉(zhuǎn)換器與單片機(jī)的接口13.5.2指令冗余及軟件陷阱單片機(jī)系統(tǒng)由于干擾而使運(yùn)行程序發(fā)生混亂、導(dǎo)致程序亂飛或陷入死循環(huán)時(shí),采取使程序納入正規(guī)的措施,如指令冗余、軟件陷阱等。1.指令冗余CPU取指令是先取操作碼,再取操作碼數(shù)。當(dāng)單片機(jī)系統(tǒng)受干擾出現(xiàn)錯(cuò)誤時(shí),程序便脫離正常軌道“亂飛”。當(dāng)亂飛到某雙字節(jié)指令,若取指令時(shí)刻落在操作數(shù)上,誤將操作數(shù)當(dāng)作操作碼,程序有可能出錯(cuò)。(3)A/D與D/A轉(zhuǎn)換器與單片機(jī)的接口13.5.2指令48若亂飛到三字節(jié)指令,出錯(cuò)機(jī)率更大。在關(guān)鍵的地方人為地插入一些單字節(jié)指令或?qū)⒂行巫止?jié)指令重寫(xiě)稱(chēng)為指令冗余。指令冗余無(wú)疑會(huì)降低系統(tǒng)的效率,通常是在雙字節(jié)指令和三字節(jié)指令后插入兩個(gè)字節(jié)以上“NOP”指令,可保護(hù)其后的指令不被拆散。因此,常在一些對(duì)程序流向起決定作用的指令之前插入兩條NOP指令,此類(lèi)指令有:RET、RETI、ACALL、LCALL、SJMP、AJMP、LJMP、JZ、JNZ、JC、JNC、JB、JNB、JBC、CJNE、DJNZ等,以保證亂飛的程序迅速納入正軌。在某些對(duì)系統(tǒng)工作狀態(tài)至關(guān)重要的指令,該措施可以減少程序亂飛的次數(shù),使其很快納入程序軌道。若亂飛到三字節(jié)指令,出錯(cuò)機(jī)率更大。在關(guān)鍵的地方人為地插入一些49但這并不能保證在失控期間不干壞事,更不能保證程序納入正常軌道后就太平無(wú)事了。程序的運(yùn)行事實(shí)上已經(jīng)偏離了正常順序,有可能做著它現(xiàn)在不該做的事情。解決這個(gè)問(wèn)題還必須采用軟件容錯(cuò)技術(shù)(限于篇幅,本書(shū)不作介紹),使系統(tǒng)的誤動(dòng)作減少,并消滅重大誤動(dòng)作。2.軟件陷阱就是一條引導(dǎo)指令,強(qiáng)行將亂飛的程序引向一個(gè)指定的地址,在那里有一段專(zhuān)門(mén)對(duì)程序出錯(cuò)進(jìn)行處理但這并不能保證在失控期間不干壞事,更不能保證程序納入正常軌道50的程序。如果我們把這段程序的入口標(biāo)號(hào)稱(chēng)為ERR的話,軟件陷阱即為一條LJMPERR指令。為加強(qiáng)其捕捉效果,一般還在它前面加兩條NOP指令。
NOP NOP
LJMPERR軟件陷阱一般安排在下列4種地方:(1)未使用的中斷向量區(qū):0003H-002FH當(dāng)干擾使未使用的中斷開(kāi)放,并激活這些中斷時(shí),就會(huì)進(jìn)一步引起混亂。如果在這些地方布上陷阱,就能及時(shí)捕捉到錯(cuò)誤中斷。的程序。如果我們把這段程序的入口標(biāo)號(hào)稱(chēng)為ERR的話,軟件陷阱51例如:系統(tǒng)共使用三個(gè)中斷:INT0*、T0、T1,它們的中斷子程序分別為PGINT0、PGT0、PGT1,建議按如下方式來(lái)設(shè)置中斷向量區(qū):例如:系統(tǒng)共使用三個(gè)中斷: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開(kāi)始再編寫(xiě)正式程序0023 LJMPERR;串口中斷54(2)未使用的EPROM空間對(duì)于剩余EPROM空間,若維持原狀態(tài)FFH,F(xiàn)FH是一條單字指令(MOVR7,A)程序彈飛到這一區(qū)域后將順流而下,只要每隔一段設(shè)置一個(gè)陷阱,就一定能捕捉到亂飛的程序。軟件陷阱一定要指向處理過(guò)程ERR。可以將ERR安排在0030H開(kāi)始的地方,這樣就可用0000020030五個(gè)字節(jié)作為陷阱來(lái)填充EPROM中的未使用空間,或每隔一段設(shè)置一個(gè)陷阱(020030),其它單元保持FFH不變。(2)未使用的EPROM空間55(3)表格有兩類(lèi)表格,一類(lèi)是數(shù)據(jù)表格,供MOVCA,A+PC或MOVCA,A+DPTR指令使用,其內(nèi)容完全不是指令。另一類(lèi)是跳轉(zhuǎn)表格,供JMPA+DPTR指令使用,其內(nèi)容為一系列的三字節(jié)指令LJMP或兩字節(jié)指令A(yù)JMP。由于表格內(nèi)容和檢索值有一一對(duì)應(yīng)關(guān)系,在表格中間安排陷阱將會(huì)破毀其連續(xù)性和對(duì)應(yīng)關(guān)系,只能在表格的最后安排五字節(jié)陷阱(NOP,NOP,LJMPERR)。由于表格區(qū)一般較長(zhǎng),安排在最后的陷阱不能保證一定捕捉住亂飛的程序,有可能在中途再次飛走。這時(shí)只好指望別處的陷阱或冗余指令來(lái)制服它了。(3)表格56(4)程序區(qū)程序區(qū)是由一串串執(zhí)行指令構(gòu)成的,不能在這些指令傳中間任意安排陷阱,否則影響正常執(zhí)行程序。但是,在這些指令串之間常有一些斷裂點(diǎn),正常執(zhí)行的程序到此便不會(huì)繼續(xù)往下執(zhí)行了,這類(lèi)指令有LJMP、SJMP、AJMP、RET、RETI。這時(shí)PC的值應(yīng)發(fā)生正常跳變。如果還要順次往下執(zhí)行,必然就出錯(cuò)了。我們?cè)谶@種地方安排陷阱之后,就能有效地捕捉住它,而又不影響正常執(zhí)行的程序流程。例如,在一個(gè)根據(jù)累加器的正、負(fù)、零情況進(jìn)行三分支的程序中,軟件陷阱的安置方式如下:(4)程序區(qū)57 JNZ L1 ;A中內(nèi)容非零,跳L1程序段 ┅┅┅ ;A中內(nèi)容為零的處理程序段
AJMP L3 ;斷裂點(diǎn)
NOP ;冗余指令與軟件陷阱 NOP LJMPERR
L1: JB ACC.7,L2 ┅┅┅
LJMPL3 ;斷裂點(diǎn)
NOP ;冗余指令與軟件陷阱 NOP LJMPERR ; JNZ L1 ;A中內(nèi)容非零,跳L1程序段58 L2:┅┅┅ L3:MOVA,R2;取結(jié)果 RET
NOP ;冗余指令與軟件陷阱 NOP LJMPERR由于軟件陷阱都安排在正常程序執(zhí)行不到的地方,故不影響程序執(zhí)行效率。在EPROM容量不成問(wèn)題的條件下,還是多多設(shè)置陷阱有益。 L2:┅┅┅5913.5.3開(kāi)關(guān)量輸入/輸出軟件抗干擾設(shè)計(jì)如果干擾只作用在系統(tǒng)的I/O通道上,則可用如下方法減小或消除其干擾。1.開(kāi)關(guān)量輸入軟件抗干擾措施干擾信號(hào)多呈毛刺狀,作用時(shí)間短。利用這一特點(diǎn),我們采用采集某一狀態(tài)信號(hào)時(shí),可多次重復(fù)采集,直到連續(xù)兩次或多次采集結(jié)果完全一致時(shí)才可視為有效。若相鄰的檢測(cè)內(nèi)容不一致,或多次檢測(cè)結(jié)果不一致,則是偽輸入信號(hào)??赏V共杉o出報(bào)警信號(hào)。13.5.3開(kāi)關(guān)量輸入/輸出軟件抗干擾設(shè)計(jì)60由于狀態(tài)信號(hào)主要來(lái)自各類(lèi)開(kāi)關(guān)型狀態(tài)傳感器,對(duì)這些信號(hào)采集不能用多次平均方法,必須絕對(duì)一致才行。在滿足實(shí)時(shí)性要求的前提下,如果在各次采集狀態(tài)信號(hào)之間增加一段延時(shí),效果就會(huì)更好,就能對(duì)抗較寬時(shí)間范圍的干擾。延時(shí)時(shí)間在10~100μS左右。對(duì)于每次采集的最高次數(shù)限制和連續(xù)相同次數(shù)均可按實(shí)際情況適當(dāng)調(diào)整。由于狀態(tài)信號(hào)主要來(lái)自各類(lèi)開(kāi)關(guān)型狀態(tài)傳感器,對(duì)這些信號(hào)采集不612.開(kāi)關(guān)量輸出軟件抗干擾措施輸出信號(hào)中,有很多是驅(qū)動(dòng)各種警報(bào)裝置,各種電磁裝置等的狀態(tài)驅(qū)動(dòng)信號(hào)。對(duì)這類(lèi)信號(hào)的抗干擾有效輸出方法是重復(fù)輸出同一個(gè)數(shù)據(jù),只要有可能,重復(fù)周期應(yīng)盡量短。外部設(shè)備接收到一個(gè)被干擾的錯(cuò)誤信息后,還來(lái)不及作出有效的反映,一個(gè)正確的輸出信息又到來(lái),就可以及時(shí)地防止錯(cuò)誤動(dòng)作的產(chǎn)生。2.開(kāi)關(guān)量輸出軟件抗干擾措施6213.6單片機(jī)應(yīng)用系統(tǒng)的仿真開(kāi)發(fā)與調(diào)試一個(gè)單片機(jī)應(yīng)用系統(tǒng)(用戶樣機(jī))經(jīng)過(guò)總體設(shè)計(jì),完成了用戶樣機(jī)的硬件和軟件設(shè)計(jì)開(kāi)發(fā)。元器件安裝后,在用戶樣機(jī)的程序存儲(chǔ)器中放入編制好的應(yīng)用程序,系統(tǒng)即可運(yùn)行。但程序運(yùn)行一次性成功幾乎是不可能的,多少會(huì)存在一些軟件、硬件上的錯(cuò)誤,這就需要借助單片機(jī)的仿真開(kāi)發(fā)工具進(jìn)行調(diào)試,發(fā)現(xiàn)錯(cuò)誤并加以改正。AT89C51單片機(jī)只是一個(gè)芯片,既沒(méi)有鍵盤(pán),又沒(méi)有CRT、LED顯示器,也無(wú)法運(yùn)行系統(tǒng)開(kāi)發(fā)軟件(如編輯、匯編、調(diào)試程序等),因此,必須借助某種仿真開(kāi)發(fā)工具(也稱(chēng)為仿真開(kāi)發(fā)系統(tǒng))所提供的開(kāi)發(fā)手段來(lái)進(jìn)行。一般來(lái)說(shuō),仿真開(kāi)發(fā)工具應(yīng)具有如下最基本的功能。13.6單片機(jī)應(yīng)用系統(tǒng)的仿真開(kāi)發(fā)與調(diào)試63(1)用戶樣機(jī)程序的輸入與修改。(2)程序的運(yùn)行、調(diào)試(單步運(yùn)行、設(shè)置斷點(diǎn)運(yùn)行)、排錯(cuò)、狀態(tài)查詢等功能。(3)用戶樣機(jī)硬件電路的診斷與檢查。(4)有較全的開(kāi)發(fā)軟件。用戶可用匯編語(yǔ)言或C語(yǔ)言編制應(yīng)用程序;由開(kāi)發(fā)系統(tǒng)編譯連接生成目標(biāo)文件、可執(zhí)行文件。配有反匯編軟件,能將目標(biāo)程序轉(zhuǎn)換成匯編語(yǔ)言程序;有豐富的子程序可供用戶選擇調(diào)用。(5)將調(diào)試正確的程序?qū)懭氲匠绦虼鎯?chǔ)器中。下面介紹常用的仿真開(kāi)發(fā)工具。13.6.1仿真開(kāi)發(fā)系統(tǒng)簡(jiǎn)介目前國(guó)內(nèi)使用較多的仿真開(kāi)發(fā)系統(tǒng)大致分為如下兩類(lèi)。(1)用戶樣機(jī)程序的輸入與修改。641.通用機(jī)仿真開(kāi)發(fā)系統(tǒng)這是一種通過(guò)PC機(jī)的并行口、串行口或USB口,外加在線仿真器的的仿真開(kāi)發(fā)系統(tǒng),如圖13-11所示。
圖13-111.通用機(jī)仿真開(kāi)發(fā)系統(tǒng)圖13-1165在線仿真器必須與PC的并行口、串行口或USB口相連,才能完成開(kāi)發(fā)任務(wù)。在線仿真器是一個(gè)與被開(kāi)發(fā)的用戶樣機(jī)具有相同單片機(jī)芯片的系統(tǒng),它是借助開(kāi)發(fā)系統(tǒng)的資源來(lái)模擬用戶樣機(jī)中的單片機(jī),對(duì)用戶樣機(jī)的資源(如存儲(chǔ)器、I/O接口)進(jìn)行管理。同時(shí)在線仿真器還具有跟蹤功能,它可將程序執(zhí)行過(guò)程中的有關(guān)數(shù)據(jù)和狀態(tài)在屏幕上顯示出來(lái),這給查找錯(cuò)誤和調(diào)試程序帶來(lái)了方便。同時(shí),其程序運(yùn)行的斷點(diǎn)功能、單步功能可直接發(fā)現(xiàn)硬件和軟件的問(wèn)題。在線仿真器必須與PC的并行口、串行口或USB口相連,才能完成66調(diào)試用戶樣機(jī)時(shí),在線仿真器的仿真插頭必須插入用戶樣機(jī)空出的單片機(jī)插座中。當(dāng)仿真開(kāi)發(fā)系統(tǒng)通過(guò)串行口(或并行口、USB口)與PC聯(lián)機(jī)后,用戶可利用仿真開(kāi)發(fā)軟件,在計(jì)算機(jī)上編輯、修改源程序,然后通過(guò)交叉匯編軟件將其匯編成機(jī)器代碼,傳送到在線仿真器中的仿真RAM中。這時(shí)用戶可用單步、斷點(diǎn)、跟蹤、全速等方式運(yùn)行用戶程序,系統(tǒng)狀態(tài)實(shí)時(shí)地顯示在屏幕上。待程序調(diào)試通過(guò)后,再使用仿真開(kāi)發(fā)系統(tǒng)提供的編程器或使用專(zhuān)用編程器,把調(diào)試完畢的程序?qū)懭氲絾纹瑱C(jī)內(nèi)的Flash存儲(chǔ)器中或外擴(kuò)的EPROM中。此類(lèi)仿真開(kāi)發(fā)系統(tǒng)是目前最流行的仿真開(kāi)發(fā)工具。配置不同的仿真插頭,可以仿真開(kāi)發(fā)各種單片機(jī)。
調(diào)試用戶樣機(jī)時(shí),在線仿真器的仿真插頭必須插入用戶樣機(jī)空出的單67通用機(jī)仿真開(kāi)發(fā)系統(tǒng)中還有另一種結(jié)構(gòu):獨(dú)立型仿真結(jié)構(gòu)。該類(lèi)仿真器采用模塊化結(jié)構(gòu),配有不同外設(shè),如外存板、打印機(jī)、鍵盤(pán)/顯示板等,用戶可根據(jù)需要選用。在沒(méi)有通用計(jì)算機(jī)支持的場(chǎng)合,利用鍵盤(pán)/顯示板也可在工業(yè)現(xiàn)場(chǎng)完成仿真調(diào)試工作。2.軟件仿真開(kāi)發(fā)工具Proteus軟件仿真開(kāi)發(fā)工具是一種完全用軟件手段對(duì)單片機(jī)系統(tǒng)進(jìn)行仿真開(kāi)發(fā)的,與用戶樣機(jī)在硬件上無(wú)任何聯(lián)系。由PC機(jī)上安裝仿真開(kāi)發(fā)工具軟件構(gòu)成,可進(jìn)行系統(tǒng)的設(shè)計(jì)、仿真、開(kāi)發(fā)與調(diào)試。Proteus軟件是英國(guó)LabCenterelectronics開(kāi)發(fā)的EDA工具軟件,它為各種實(shí)際的單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)提供了功能強(qiáng)大的EDA工具,已有近20年的歷史。它除了具有和其他EDA工具通用機(jī)仿真開(kāi)發(fā)系統(tǒng)中還有另一種結(jié)構(gòu):獨(dú)立型仿真結(jié)構(gòu)。該類(lèi)仿真68一樣的原理編輯、印刷電路板自動(dòng)或人工布線及電路仿真功能外,最大特色是其對(duì)單片機(jī)硬件電路的仿真是交互的、可視化的。通過(guò)其虛擬仿真技術(shù)(VSM),用戶可以對(duì)基于單片機(jī)應(yīng)用系統(tǒng)連同所有的外圍接口、電子器件以及外部的測(cè)試儀器一起仿真。針對(duì)單片機(jī)的應(yīng)用,可以直接在基于原理圖的虛擬模型上進(jìn)行編程,并實(shí)現(xiàn)源代碼級(jí)的實(shí)時(shí)調(diào)試。Proteus軟件具有如下特點(diǎn)。(1)能夠?qū)δM電路、數(shù)字電路進(jìn)行仿真。(2)除了仿真51系列單片機(jī)外,Proteus軟件還可仿真68000系列、AVR系列、PIC等其他各系列單片機(jī)。(3)具有硬件仿真開(kāi)發(fā)系統(tǒng)中的全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時(shí)可以觀察各個(gè)變量、寄存器等的當(dāng)前狀態(tài)。一樣的原理編輯、印刷電路板自動(dòng)或人工布線及電路仿真功能外,最69(4)該軟件提供了各種單片機(jī)與豐富的外圍接口芯片、存儲(chǔ)器芯片組成的系統(tǒng)仿真、RS-232動(dòng)態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤(pán)和LCD系統(tǒng)仿真的功能。(5)Proteus軟件提供了豐富的虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。利用虛擬儀器在仿真過(guò)程中可以測(cè)量系統(tǒng)外圍電路的特性,設(shè)計(jì)者可以充分利用Proteus軟件提供的虛擬儀器,來(lái)進(jìn)行系統(tǒng)的軟件仿真測(cè)試與調(diào)試。總之,Proteus軟件是一款功能極其強(qiáng)大的單片機(jī)軟件仿真開(kāi)發(fā)工具。目前,該軟件已經(jīng)在世界范圍內(nèi)得到了較為廣泛的使用,很多從事單片機(jī)開(kāi)發(fā)應(yīng)用的工程師都在使用該軟件。(4)該軟件提供了各種單片機(jī)與豐富的外圍接口芯片、存儲(chǔ)器芯片70在使用Proteus軟件對(duì)51系列單片機(jī)系統(tǒng)進(jìn)行仿真開(kāi)發(fā)時(shí),編譯調(diào)試環(huán)境可選用KeilC51uVision2軟件。該軟件支持眾多不同公司的MCS-51架構(gòu)的芯片,集編輯、編譯和程序仿真等于一體,同時(shí)還支持PLM、匯編和C語(yǔ)言的程序設(shè)計(jì),界面友好易學(xué),在調(diào)試程序、軟件仿真方面有很強(qiáng)大的功能。用軟件仿真開(kāi)發(fā)工具Proteus軟件模擬器調(diào)試軟件不需任何硬件在線仿真器,也不需要用戶硬件樣機(jī),直接就可以在PC機(jī)上開(kāi)發(fā)和調(diào)試單片機(jī)軟件。調(diào)試完畢的軟件可以將機(jī)器代碼固化,一般能直接投入運(yùn)行。在使用Proteus軟件對(duì)51系列單片機(jī)系統(tǒng)進(jìn)行仿真開(kāi)發(fā)時(shí),71盡管軟件仿真開(kāi)發(fā)工具Proteus具有開(kāi)發(fā)效率高,不需要附加的硬件開(kāi)發(fā)裝置成本。但是軟件模擬器是使用軟件來(lái)模擬硬件,且不能完全準(zhǔn)確地模擬硬件電路的實(shí)時(shí)性,因此不能進(jìn)行用戶樣機(jī)硬件部分的診斷與實(shí)時(shí)在線仿真。因此,一般的做法是:先繪制原理圖,編寫(xiě)程序,在Proteus仿真軟件里首先調(diào)試通過(guò)。調(diào)試通過(guò)后,然后再將編譯好的程序用編程器去燒錄,然后安裝到用戶樣機(jī)硬件板上去觀察運(yùn)行結(jié)果,如果有問(wèn)題,再連接硬件仿真器去分析、調(diào)試。盡管軟件仿真開(kāi)發(fā)工具Proteus具有開(kāi)發(fā)效率高,不需要附加7213.6.2用戶樣機(jī)的開(kāi)發(fā)調(diào)試本節(jié)介紹如何使用仿真開(kāi)發(fā)工具進(jìn)行匯編語(yǔ)言源程序編寫(xiě)、調(diào)試以及與用戶樣機(jī)硬件聯(lián)調(diào)工作。1.用戶樣機(jī)的軟件調(diào)試用戶樣機(jī)的軟件聯(lián)調(diào)過(guò)程如圖13-12所示,可分為以下4個(gè)步驟。13.6.2用戶樣機(jī)的開(kāi)發(fā)調(diào)試73圖13-12圖13-1274第一步,建立用戶源程序。用戶通過(guò)開(kāi)發(fā)系統(tǒng)的鍵盤(pán)、CRT顯示器及開(kāi)發(fā)系統(tǒng)的編輯軟件WS,按照匯編語(yǔ)言源程序所要求的格式、語(yǔ)法規(guī)定,把源程序輸入到開(kāi)發(fā)系統(tǒng)中,并存在磁盤(pán)上。第二步,在開(kāi)發(fā)系統(tǒng)機(jī)上,利用匯編程序?qū)Φ谝徊捷斎氲挠脩粼闯绦蜻M(jìn)行匯編,直至語(yǔ)法錯(cuò)誤全部糾正為止。如無(wú)語(yǔ)法錯(cuò)誤,則進(jìn)入下一個(gè)步驟。第三步,動(dòng)態(tài)在線調(diào)試。這一步對(duì)用戶的源程序進(jìn)行調(diào)試。上述的第一步、第二步是一個(gè)純粹的軟件運(yùn)行過(guò)程,而在這一步,必須要有在線仿真器配合,才能對(duì)用戶源程序進(jìn)行調(diào)試。用戶程序中分為與用戶樣機(jī)硬件無(wú)聯(lián)系的程序以及與其樣機(jī)緊密關(guān)聯(lián)的程序。第一步,建立用戶源程序。用戶通過(guò)開(kāi)發(fā)系統(tǒng)的鍵盤(pán)、CRT顯示器75對(duì)于與用戶樣機(jī)硬件無(wú)聯(lián)系的程序,如計(jì)算程序,雖然已經(jīng)沒(méi)有語(yǔ)法錯(cuò)誤,但可能存在邏輯錯(cuò)誤,使計(jì)算結(jié)果不正確,此時(shí)必須借助于動(dòng)態(tài)在線調(diào)試手段,如單步運(yùn)行、設(shè)置斷點(diǎn)等,發(fā)現(xiàn)邏輯錯(cuò)誤,然后返回到第一步修改,直至邏輯錯(cuò)誤糾正為止。對(duì)于與用戶樣機(jī)硬件緊密相關(guān)的程序段(如接口驅(qū)動(dòng)程序),一定要先把在線仿真器的仿真插頭插入用戶樣機(jī)的單片機(jī)插座中(如圖13-11所示),進(jìn)行在線仿真調(diào)試,仿真開(kāi)發(fā)系統(tǒng)提供單步、設(shè)置斷點(diǎn)等調(diào)試手段,來(lái)對(duì)用戶樣機(jī)進(jìn)行調(diào)試。第四步,將調(diào)試完畢的用戶程序通過(guò)編程寫(xiě)入器(也稱(chēng)燒寫(xiě)器),固化在程序存儲(chǔ)器中。對(duì)于與用戶樣機(jī)硬件無(wú)聯(lián)系的程序,如計(jì)算程序,雖然已經(jīng)沒(méi)有語(yǔ)法762.用戶樣機(jī)的硬件調(diào)試對(duì)用戶硬件樣機(jī)進(jìn)行調(diào)試,首先要進(jìn)行靜態(tài)調(diào)試,目的是排除明顯的硬件故障。(1)靜態(tài)調(diào)試。靜態(tài)調(diào)試工作分為兩步:第一步是在用戶樣機(jī)加電之前,先用萬(wàn)用表等工具,根據(jù)硬件邏輯設(shè)計(jì)圖,仔細(xì)檢查樣機(jī)線路是否連接正確,并核對(duì)元器件的型號(hào)、規(guī)格和安裝是否符合要求。應(yīng)特別注意電源系統(tǒng)的檢查,以防止電源的短路和極性錯(cuò)誤,并重點(diǎn)檢查系統(tǒng)總線(地址總線、數(shù)據(jù)總線、控制總線)是否存在相互之間短路或與其它信號(hào)線的短路。2.用戶樣機(jī)的硬件調(diào)試77第二步是加電后檢查各芯片插座上有關(guān)引腳的電位,仔細(xì)測(cè)量各點(diǎn)電平是否正常,尤其應(yīng)注意AT89C51插座的各點(diǎn)電位,若有高壓,與在線仿真器聯(lián)機(jī)調(diào)試時(shí),將會(huì)損壞在線仿真器。具體步驟如下:①電源檢查②各元器件電源檢查③檢查相應(yīng)芯片的邏輯關(guān)系(2)聯(lián)機(jī)仿真、在線動(dòng)態(tài)調(diào)試在靜態(tài)調(diào)試中,對(duì)用戶樣機(jī)硬件進(jìn)行了初步調(diào)試,只是排除了一些明顯的靜態(tài)故障。第二步是加電后檢查各芯片插座上有關(guān)引腳的電位,仔細(xì)測(cè)量各點(diǎn)電78用戶樣機(jī)中的硬件故障(如各個(gè)部件內(nèi)部存在的故障和部件之間連接的邏輯錯(cuò)誤)主要是靠聯(lián)機(jī)在線仿真來(lái)排除的。在斷電情況下,除AT89C51外,插上所有的元器件,并把在線仿真器的仿真插頭插入樣機(jī)上89C51的插座,然后與開(kāi)發(fā)系統(tǒng)的仿真器相連,分別打開(kāi)樣機(jī)和仿真器電源后便可開(kāi)始聯(lián)機(jī)在線仿真調(diào)試。前面已經(jīng)介紹硬件調(diào)試和軟件調(diào)試是不能完全分開(kāi)的,許多硬件錯(cuò)誤是在軟件調(diào)試中發(fā)現(xiàn)和被糾正的。所以,在前面介紹的軟件設(shè)計(jì)過(guò)程中的第三步:動(dòng)態(tài)在線調(diào)試中,也包括聯(lián)機(jī)仿真、硬件在線動(dòng)態(tài)調(diào)試以及硬件故障的排除。用戶樣機(jī)中的硬件故障(如各個(gè)部件內(nèi)部存在的故障和部件之間連接79下面介紹在仿真開(kāi)發(fā)機(jī)上如何利用簡(jiǎn)單調(diào)試程序檢查用戶樣機(jī)。利用仿真開(kāi)發(fā)系統(tǒng)對(duì)用戶樣機(jī)進(jìn)行硬件檢查,常常按其功能及I/O通道分別編寫(xiě)相應(yīng)簡(jiǎn)短的實(shí)驗(yàn)程序,來(lái)檢查各部分功能及邏輯是否正確,下面做簡(jiǎn)單介紹。①檢查各地址譯碼輸出通常,地址譯碼輸出是一個(gè)低電平有效信號(hào)。因此在選到某一個(gè)芯片時(shí)(無(wú)論是內(nèi)存還是外設(shè)),其片選信號(hào)用示波器檢查應(yīng)該是一個(gè)負(fù)脈沖信號(hào)。由于使用的時(shí)鐘頻率不同,其負(fù)脈沖的寬度和頻率也有所不同。下面介紹在仿真開(kāi)發(fā)機(jī)上如何利用簡(jiǎn)單調(diào)試程序檢查用戶樣機(jī)。80注意,在使用示波器測(cè)量用戶樣機(jī)板的某些信號(hào)時(shí),要將示波器電源插頭上的地線斷開(kāi),這是由于示波器測(cè)量探頭一端連到外殼,在有些電源系統(tǒng)中,保護(hù)地和電源地是連在一起的,有時(shí)會(huì)將電源插座插反,將交流220V直接引到測(cè)量端而將用戶樣機(jī)板全部燒毀,并且會(huì)殃及仿真開(kāi)發(fā)機(jī)。如何檢查地址譯碼器輸出?例如,一片6116存儲(chǔ)芯片地址為2000~27FFH,則可在開(kāi)發(fā)機(jī)上執(zhí)行如下程序:LOOP: MOV DPTR,#200OH MOVX A,DPTR SJMP LOOP注意,在使用示波器測(cè)量用戶樣機(jī)板的某些信號(hào)時(shí),要將示波器電源81程序執(zhí)行后,應(yīng)該從6116存儲(chǔ)器芯片的片選端看到等間隔的一串負(fù)脈沖,說(shuō)明該芯片片選信號(hào)連接是正確的,即使不插入該存儲(chǔ)器芯片,只測(cè)量插座相應(yīng)片選引腳也會(huì)有上述結(jié)果。用同樣的方法,可將各內(nèi)存及外設(shè)接口芯片的片選信號(hào)逐一進(jìn)行檢查。如出現(xiàn)不正確現(xiàn)象,就要檢查片選線連線是否正確,有無(wú)接觸不好或錯(cuò)線、斷線問(wèn)題。②檢查RAM存儲(chǔ)器檢查RAM存儲(chǔ)器可編譯程序,將RAM存儲(chǔ)器進(jìn)行寫(xiě)入,再讀出,將寫(xiě)入和讀出的數(shù)據(jù)進(jìn)行比較,發(fā)現(xiàn)錯(cuò)誤,立即停止。將存儲(chǔ)器芯片插上,執(zhí)行如下程序:程序執(zhí)行后,應(yīng)該從6116存儲(chǔ)器芯片的片選端看到等間隔的一串82 MOVA,#00H MOVDPTR,#RAM ;首地址LOOP:MOVXDPTR,A MOVRO,A MOVXA,DPTR CLRC SUBBA,R0 JNZLOOP1 INCDPTR MOVA,RO INCA SJMPLOOPLOOP1:出錯(cuò)停止 MOVA,#00H83③檢查I/O擴(kuò)展接口若外設(shè)端口連接一片82C55,端口地址為B000~B003H,A口為方式0輸入,B口、C口都為方式0輸出,則可用下述程序進(jìn)行檢查:
MOVDPTR,#0B003H MOVA,#90H ;90H為方式控制字 MOVXDPTR,A NOP MOVDPTR,#0B000H CLRC MOVA,#01H③檢查I/O擴(kuò)展接口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口外部開(kāi)關(guān)狀態(tài)同A中相 ;應(yīng)位狀態(tài)是否一致
INCDPTR85LP1: MOVXDPTR,A;將01H送C口,此指令 ;執(zhí)行完后,看C口第0 ;位輸出狀態(tài) RLCA JNZLP1
對(duì)鎖存器和緩沖器,可直接對(duì)端口進(jìn)行讀寫(xiě),不存在初始化的問(wèn)題。LP1: MOVXDPTR,A;將01H送C口,此指令86通過(guò)上面介紹的調(diào)試用戶樣機(jī)過(guò)程,讀者可以體會(huì)到離開(kāi)了仿真開(kāi)發(fā)系統(tǒng)就根本不可能進(jìn)行用戶樣機(jī)的調(diào)試,而調(diào)試的關(guān)鍵步驟—?jiǎng)討B(tài)在線仿真調(diào)試,又完全依賴(lài)于開(kāi)發(fā)系統(tǒng)中的在線仿真器。所以,開(kāi)發(fā)系統(tǒng)的性能優(yōu)劣,主要取決于在線仿真器的性能優(yōu)劣,在線仿真器所能提供的仿真開(kāi)發(fā)手段,直接影響設(shè)計(jì)者的設(shè)計(jì)、調(diào)試工作的效率。對(duì)于設(shè)計(jì)者來(lái)說(shuō),在了解目前的開(kāi)發(fā)系統(tǒng)的種類(lèi)和性能之后,選擇一個(gè)性能/價(jià)格比高的仿真開(kāi)發(fā)系統(tǒng),并能夠熟練地使用它來(lái)調(diào)試用戶樣機(jī)是十分重要的。
通過(guò)上面介紹的調(diào)試用戶樣機(jī)過(guò)程,讀者可以體會(huì)到離開(kāi)了仿87所以,開(kāi)發(fā)系統(tǒng)的性能優(yōu)劣,主要取決于在線仿真器的性能優(yōu)劣,在線仿真器所能提供的仿真開(kāi)發(fā)手段,直接影響設(shè)計(jì)者的設(shè)計(jì)、調(diào)試工作的效率。對(duì)于設(shè)計(jì)者來(lái)說(shuō),在了解了目前的開(kāi)發(fā)系統(tǒng)的種類(lèi)和性能之后,選擇一個(gè)性能/價(jià)格比高的仿真開(kāi)發(fā)系統(tǒng),并能夠熟練地使用它調(diào)試用戶樣機(jī)是十分重要的。
本章結(jié)束所以,開(kāi)發(fā)系統(tǒng)的性能優(yōu)劣,主要取決于在線仿真器的性能優(yōu)劣,在88
Thankyou拯畏怖汾關(guān)爐烹霉躲渠早膘岸緬蘭輛坐蔬光膊列板哮瞥疹傻俘源拯割宜跟三叉神經(jīng)痛-治療三叉神經(jīng)痛-治療拯畏怖汾關(guān)爐烹霉躲渠早膘岸緬蘭輛坐蔬光膊列板哮瞥疹89
拯畏怖汾關(guān)爐烹霉躲渠早膘岸緬蘭輛坐蔬光膊列板哮瞥疹傻俘源拯割宜跟三叉神經(jīng)痛-治療三叉神經(jīng)痛-治療拯畏怖汾關(guān)爐烹霉躲渠早膘岸緬蘭輛坐蔬光膊列板哮瞥疹9013.1AT89C51單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)步驟設(shè)計(jì)一個(gè)單片機(jī)測(cè)控系統(tǒng),一般可分為四個(gè)步驟:(1)需求分析,方案論證和總體設(shè)計(jì)需求分析:被測(cè)控參數(shù)的形式(電量、非電量、模擬量、數(shù)字量等)、被測(cè)控參數(shù)的范圍、性能指標(biāo)、系統(tǒng)功能、工作環(huán)境、顯示、報(bào)警、打印要求等。方案論證:根據(jù)要求,設(shè)計(jì)出符合現(xiàn)場(chǎng)條件的軟硬件方案,又要使系統(tǒng)簡(jiǎn)單、經(jīng)濟(jì)、可靠,這是進(jìn)行方案論證與總體設(shè)計(jì)一貫堅(jiān)持的原則。13.1AT89C51單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)步驟91(2)器件選擇,電路設(shè)計(jì)制作,數(shù)據(jù)處理算法,軟件的編制階段。(3)系統(tǒng)調(diào)試與性能測(cè)定。(4)文件編制。文件包括:任務(wù)描述、設(shè)計(jì)的指導(dǎo)思想及設(shè)計(jì)方案論證、性能測(cè)定及現(xiàn)場(chǎng)試用報(bào)告與說(shuō)明、使用指南、軟件資料(流程圖、子程序使用說(shuō)明、地址分配、程序清單)、硬件資料(電原理圖、元件布置圖及接線圖、接插件引腳圖、線路板圖、注意事項(xiàng))。文件不僅是設(shè)計(jì)工作的結(jié)果,而且是以后使用、維修以及進(jìn)一步再設(shè)計(jì)的依據(jù)。因此,一定要精心編寫(xiě),描述清楚,使數(shù)據(jù)及資料齊全。(2)器件選擇,電路設(shè)計(jì)制作,數(shù)據(jù)處理算法,軟件的編制階段。9213.2應(yīng)用系統(tǒng)的硬件設(shè)計(jì)為使硬件設(shè)計(jì)盡可能合理,應(yīng)重點(diǎn)考慮以下幾點(diǎn)。1.盡可能采用功能強(qiáng)的芯片(1)單片機(jī)的選型。隨著集成電路技術(shù)的飛速發(fā)展,許多外圍部件都已集成在芯片內(nèi),本身就是一個(gè)系統(tǒng),這樣可以省去許多外圍部件的擴(kuò)展工作,設(shè)計(jì)工作大大簡(jiǎn)化。例如,美國(guó)Cygnal公司的C8051F0208位單片機(jī),片內(nèi)集成有8通道A/D、兩路D/A、兩路電壓比較器,內(nèi)置溫度傳感器、定時(shí)器、可編程數(shù)字交叉開(kāi)關(guān)和64個(gè)通用I/O口、電源監(jiān)測(cè)、看門(mén)狗、多種類(lèi)型的串行總線(兩個(gè)UART、SPI)等。13.2應(yīng)用系統(tǒng)的硬件設(shè)計(jì)93(2)優(yōu)先選用片內(nèi)帶有閃爍存儲(chǔ)器的產(chǎn)品。例如,使用ATMEL公司的89C51/89C52/89C55,PHILIPS公司的89C58(內(nèi)有32KB的閃爍存儲(chǔ)器),可省去擴(kuò)展單片機(jī)程序存儲(chǔ)器的工作,減少芯片數(shù)量,縮小體積。(3)考慮EPROM空間和RAM空間。目前EPROM容量越來(lái)越大,一般盡量選用容量大的EPROM。89C51內(nèi)部的RAM單元有限,當(dāng)需增強(qiáng)軟件數(shù)據(jù)處理功能時(shí),往往覺(jué)得不足,這就要求系統(tǒng)配置外部RAM,如6264,62256芯片等。如果處理的數(shù)據(jù)量大,需要更大的數(shù)據(jù)存儲(chǔ)器空間,可采用數(shù)據(jù)存儲(chǔ)器芯片DS12887,其容量為256KB,內(nèi)有鋰電池保護(hù),保存數(shù)據(jù)可達(dá)10年以上。(2)優(yōu)先選用片內(nèi)帶有閃爍存儲(chǔ)器的產(chǎn)品。例如,使用ATMEL94(4)對(duì)I/O端口的考慮。在樣機(jī)研制出來(lái)進(jìn)行現(xiàn)場(chǎng)試用時(shí),往往會(huì)發(fā)現(xiàn)一些被忽視的問(wèn)題,而這些問(wèn)題是不能單靠軟件措施來(lái)解決的。如有些新的信號(hào)需要采集,就必須增加輸入檢測(cè)端;有些物理量需要控制,就必須增加輸出端。如果在硬件設(shè)計(jì)之初就多設(shè)計(jì)出一些I/O端口,這些問(wèn)題就會(huì)迎刃而解了。(5)預(yù)留A/D和D/A通道。和I/O端口同樣的原因,留出一些A/D和D/A通道將來(lái)可能會(huì)解決大問(wèn)題。(4)對(duì)I/O端口的考慮。在樣機(jī)研制出來(lái)進(jìn)行現(xiàn)場(chǎng)試用時(shí),往往952.以軟代硬原則上,只要軟件能做到且能滿足性能要求,就不用硬件。硬件多了不但增加成本,而且系統(tǒng)故障率也會(huì)提高。以軟帶硬的實(shí)質(zhì),是以時(shí)間換空間,軟件執(zhí)行過(guò)程需要消耗時(shí)間,因此這種代替帶來(lái)的問(wèn)題就是實(shí)時(shí)性下降。在實(shí)時(shí)性要求不高的場(chǎng)合,以軟代硬是很合算的。3.工藝設(shè)計(jì)包括機(jī)箱、面板、配線、接插件等。必須考慮到安裝、調(diào)試、維修的方便。另外,硬件抗干擾措施也必須在硬件設(shè)計(jì)時(shí)一并考慮進(jìn)去。2.以軟代硬9613.3AT89C51單片機(jī)系統(tǒng)設(shè)計(jì)舉例首先介紹單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)時(shí)的地址空間分配和總線驅(qū)動(dòng)問(wèn)題,最后舉一個(gè)應(yīng)用系統(tǒng)設(shè)計(jì)的例子供讀者參考。13.3.1應(yīng)用系統(tǒng)設(shè)計(jì)中的地址空間分配與總線驅(qū)動(dòng)系統(tǒng)往往是多芯片系統(tǒng),這時(shí)要遇到兩個(gè)問(wèn)題:一是如何把64KB程序存儲(chǔ)器和64KB數(shù)據(jù)存儲(chǔ)器的空間分配給各個(gè)芯片;二是如何實(shí)現(xiàn)89C51單片機(jī)對(duì)多片芯片的驅(qū)動(dòng)。1.地址空間分配圖13-1是一個(gè)全地址譯碼的系統(tǒng)實(shí)例。各器件芯片所對(duì)應(yīng)的地址如表13-1所示。13.3AT89C51單片機(jī)系統(tǒng)設(shè)計(jì)舉例97地址空間分配的兩種方法:線選法和譯碼法。下面通過(guò)一個(gè)例子來(lái)說(shuō)明如何解決這個(gè)問(wèn)題。圖13-1地址空間分配的兩種方法:線選法和譯碼法。下面通過(guò)一個(gè)例子來(lái)說(shuō)98第13章AT89C51單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)與調(diào)試課件99因6264、2764都是8KB,故需要13條低位地址線(A12~A0)進(jìn)行片內(nèi)尋址,低8位地址線A7~A0經(jīng)8D鎖存器74LS373輸出,圖中沒(méi)有畫(huà)出。其他三條高位地址線A15~A13經(jīng)3-8譯碼器74LS138譯碼后作為外圍芯片的片選線。圖中尚剩余三條地址選擇線Y7*~Y5*,可擴(kuò)展三片存儲(chǔ)器芯片或外圍I/O接口電路芯片。2.總線驅(qū)動(dòng)設(shè)計(jì)時(shí),有時(shí)要擴(kuò)展多片芯片,注意AT89C51的I/O口驅(qū)動(dòng)能力。AT89C51有4個(gè)并行雙向口,P0、P1、P2、P34個(gè)口的驅(qū)動(dòng)能力不同,P0口的驅(qū)動(dòng)能力較大,每位可驅(qū)動(dòng)8個(gè)LSTTL輸入,當(dāng)其輸出高電平時(shí),可提供400A的電流;因6264、2764都是8KB,故需要13條低位地址線(A1100當(dāng)其輸出低電平(0.45V)時(shí),可提供3.2mA的灌電流,如低電平允許提高,灌電流可相應(yīng)加大。P1、P2、P3口的每一位只能驅(qū)動(dòng)4個(gè)LSTTL。所以,任何一個(gè)口要想獲得較大的驅(qū)動(dòng)能力,只能用低電平輸出。AT89C51通常將P0、P2口用作訪問(wèn)外部存儲(chǔ)器,所以P1、P3口只能用作輸入/輸出口。P1、P3口的驅(qū)動(dòng)能力有限,在低電平輸出時(shí),一般也只能提供不到2mA的灌電流。當(dāng)應(yīng)用系統(tǒng)規(guī)模過(guò)大時(shí),可能造成負(fù)載過(guò)重,使驅(qū)動(dòng)能力不夠,系統(tǒng)不能可靠地工作,所以通常要附加總線驅(qū)動(dòng)器或其他驅(qū)動(dòng)電路。當(dāng)其輸出低電平(0.45V)時(shí),可提供3.2mA的灌電流,如101多芯片應(yīng)用系統(tǒng)中首先要估計(jì)總線的負(fù)載情況,以確定是否需要對(duì)總線的驅(qū)動(dòng)能力進(jìn)行擴(kuò)展。圖13-2為AT89C51單片機(jī)總線驅(qū)動(dòng)擴(kuò)展原理圖。地址總線和控制總線的驅(qū)動(dòng)器為單向驅(qū)動(dòng)器,并具有三態(tài)輸出功能。驅(qū)動(dòng)器有一個(gè)控制端,以控制驅(qū)動(dòng)器開(kāi)通或處于高阻狀態(tài)。通常,在單片機(jī)應(yīng)用系統(tǒng)中不采用DMA功能時(shí),地址總線及控制總線可一直處于開(kāi)通狀態(tài),這時(shí)控制端接地即可。常用的單向總線驅(qū)動(dòng)器為74LS244。圖13-3為74LS244引腳圖和邏輯圖。8個(gè)三態(tài)驅(qū)動(dòng)器分成兩組,分別由1G*和2G*控制。多芯片應(yīng)用系統(tǒng)中首先要估計(jì)總線的負(fù)載情況,以確定是否需要對(duì)總1022.總線的驅(qū)動(dòng)圖13-22.總線的驅(qū)動(dòng)圖13-2103圖13-3圖13-3104圖13-4常用的雙向驅(qū)動(dòng)器為74LS245,圖13-4為其引腳圖和邏輯圖。圖13-4常用的雙向驅(qū)動(dòng)器為74LS245,圖13-4為其引105圖13-5是AT89C51單片機(jī)應(yīng)用系統(tǒng)總線驅(qū)動(dòng)擴(kuò)展電路。P0口的雙向驅(qū)動(dòng)采用74LS245,如圖13-5(b)所示;P2口的單向驅(qū)動(dòng)器采用74LS244,如圖13-5(a)所示。圖13-5圖13-5是AT89C51單片機(jī)應(yīng)用系統(tǒng)總線驅(qū)動(dòng)擴(kuò)展電路。P10613.4.2AT89C51的最小系統(tǒng)AT89C51內(nèi)部有4KB閃爍存儲(chǔ)器,芯片本身就是一個(gè)最小系統(tǒng)。在能滿足系統(tǒng)的性能要求的情況下,可優(yōu)先考慮采用此種方案。這種最小系統(tǒng)簡(jiǎn)單、可靠。在用89C51單片機(jī)構(gòu)成最小應(yīng)用系統(tǒng)時(shí),只要將單片機(jī)接上時(shí)鐘電路和復(fù)位電路即可,如圖13-6所示。本最小應(yīng)用系統(tǒng)只能用作一些小型的數(shù)字量的測(cè)控單元。13.4.2AT89C51的最小系統(tǒng)107圖13-6圖13-610813.4.3應(yīng)用設(shè)計(jì)舉例-水溫控制系統(tǒng)的設(shè)計(jì)水溫控制是經(jīng)常遇到的過(guò)程控制。下面介紹以89C51為核心的水溫控制系統(tǒng)的設(shè)計(jì)。本系統(tǒng)采用3位LED顯示器顯示水溫度,溫度控制采用改進(jìn)的PID數(shù)字控制算法。具有如下基本功能:(1)溫度控制的設(shè)定范圍為25-50℃,最小分辨率為0.1℃。(2)偏差≤0.6℃,靜態(tài)誤差≤0.4℃。(3)實(shí)時(shí)顯示當(dāng)前的溫度值。(4)命令按鍵5個(gè):復(fù)位鍵,功能轉(zhuǎn)換鍵,加1鍵,減1鍵。13.4.3應(yīng)用設(shè)計(jì)舉例-水溫控制系統(tǒng)的設(shè)計(jì)水溫控制是經(jīng)1091.硬件電路設(shè)計(jì)硬件電路從功能模塊上來(lái)劃分有:主機(jī)電路數(shù)據(jù)采集電路鍵盤(pán)、顯示電路控制執(zhí)行電路(1)硬件功能結(jié)構(gòu)框圖硬件功能結(jié)構(gòu)框圖如圖13-7所示。1.硬件電路設(shè)計(jì)110圖13-7圖13-7111(2)數(shù)據(jù)采集電路的設(shè)計(jì)主機(jī)采用AT89C51,系統(tǒng)時(shí)鐘采用12MHz,內(nèi)部含有4K字節(jié)的閃爍存儲(chǔ)器。無(wú)須外擴(kuò)程序存儲(chǔ)器。數(shù)據(jù)采集電路主要由溫度傳感器、A/D轉(zhuǎn)換器、放大電路等組成,見(jiàn)圖13-8。圖13-8(2)數(shù)據(jù)采集電路的設(shè)計(jì)圖13-8112(3)控制執(zhí)行電路的設(shè)計(jì)由單片機(jī)的輸出來(lái)控制風(fēng)扇或電爐。設(shè)計(jì)中要采用光電耦合器進(jìn)行強(qiáng)電和弱電的隔離,但還要考慮到輸出信號(hào)要對(duì)可控硅進(jìn)行觸發(fā),以便接通風(fēng)扇或電爐電路??煽毓柽x用了既有光電隔離又有觸發(fā)功能的MC3041。其中使用P1.0控制電爐電路,P1.1控制風(fēng)扇電路,如圖13-9所示。(3)控制執(zhí)行電路的設(shè)計(jì)113圖13-9圖13-9114(4)鍵盤(pán)與顯示器電路的設(shè)計(jì)鍵盤(pán)共有4個(gè)鍵,采用軟件查詢和外部中斷相結(jié)合的方法來(lái)設(shè)計(jì),當(dāng)某個(gè)鍵按下時(shí),低電平有效。4個(gè)鍵K1~K4的功能定義如表13-2所示。按鍵鍵名功能K1復(fù)位鍵使系統(tǒng)復(fù)位K2功能轉(zhuǎn)換鍵按鍵按下,L1亮,顯示溫度設(shè)定值,按鍵松開(kāi),L1不亮,顯示當(dāng)前的溫度值K3加1鍵設(shè)定的溫度值加1K4減1鍵設(shè)定的溫度值減1表13-24個(gè)鍵K1-K4的定義(4)鍵盤(pán)與顯示器電路的設(shè)計(jì)按鍵鍵名功能K1復(fù)位鍵使系統(tǒng)復(fù)位115按鍵K2與INT0*(P3.2)相連,采用外部中斷方式,且優(yōu)先級(jí)定為高優(yōu)先級(jí)。K3和K4分別與P1.7和P1.6相連,采用軟件查詢方式,K1為復(fù)位鍵,與RC構(gòu)成復(fù)位電路。顯示電路部分利用串行口來(lái)實(shí)現(xiàn)3位LED的共陽(yáng)靜態(tài)顯示,顯示內(nèi)容為溫度的十位、個(gè)位以及小數(shù)點(diǎn)后的一位。利用串行口實(shí)現(xiàn)LED的共陽(yáng)靜態(tài)顯示的工作原理及軟件編程請(qǐng)見(jiàn)9.5.2小節(jié)的有關(guān)內(nèi)容。按鍵K2與INT0*(P3.2)相連,采用外部中斷方式1162.軟件設(shè)計(jì)模塊化設(shè)計(jì),三大模塊:主程序模塊、功能實(shí)現(xiàn)模塊和運(yùn)算控制模塊。(1)主程序模塊主程序流程如圖13-10所示。在主程序中首先給定PID算法的參數(shù)值,然后通過(guò)循環(huán)顯示當(dāng)前溫度,以等待中斷,并且使鍵盤(pán)外部中斷為高優(yōu)先級(jí),以便使主程序程序能實(shí)時(shí)響應(yīng)鍵盤(pán)處理。設(shè)定定時(shí)器T0為5s定時(shí),無(wú)鍵按下時(shí),應(yīng)每隔5s響應(yīng)一次,以用來(lái)采集溫度傳感器并經(jīng)A/D轉(zhuǎn)換的溫度信號(hào)。設(shè)置定時(shí)器T1為嵌套在T0之中的定時(shí)中斷,初值由PID算法子程序提供,以用來(lái)執(zhí)行對(duì)電爐或風(fēng)扇的控制。
2.軟件設(shè)計(jì)
117圖13-10圖13-10118(2)功能實(shí)現(xiàn)模塊①
T1中斷子程序②鍵盤(pán)中斷子程序③T0中斷子程序(3)運(yùn)算控制模塊①標(biāo)度變換子程序②PID算法子程序(2)功能實(shí)現(xiàn)模塊11913.4應(yīng)用系統(tǒng)的軟件設(shè)計(jì)13.4.1軟件設(shè)計(jì)考慮的問(wèn)題在進(jìn)行應(yīng)用系統(tǒng)的總體設(shè)計(jì)時(shí),軟件設(shè)計(jì)和硬件設(shè)計(jì)應(yīng)統(tǒng)一考慮,相互結(jié)合進(jìn)行。當(dāng)系統(tǒng)的電路設(shè)計(jì)定型后,軟件的任務(wù)也就明確了。一般來(lái)說(shuō),軟件的功能分為兩大類(lèi)。一類(lèi)是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測(cè)量、計(jì)算、顯示、打印、輸出控制等;另一類(lèi)是監(jiān)控軟件,它是專(zhuān)門(mén)用來(lái)協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度的角色。設(shè)計(jì)人員在進(jìn)行程序設(shè)計(jì)時(shí)應(yīng)從以下幾個(gè)方面加以考慮:13.4應(yīng)用系統(tǒng)的軟件設(shè)計(jì)120(1)根據(jù)軟件功能要求,將系統(tǒng)軟件分成若干相對(duì)獨(dú)立的部分,設(shè)計(jì)出合理的軟件總體結(jié)構(gòu),使其清晰、簡(jiǎn)潔、流程合理。(2)各功能程序?qū)嵭心K化、子程序化。既便于調(diào)試、鏈接,又便于移植、修改。(3)在編寫(xiě)應(yīng)用軟件之前,應(yīng)繪制出程序流程圖。多花一些時(shí)間來(lái)設(shè)計(jì)程序流程圖,就可以節(jié)約幾倍于源程序的編輯和調(diào)試時(shí)間。(4)要合理分配系統(tǒng)資源,包括ROM、RAM、定時(shí)器/計(jì)數(shù)器、中斷源等。其中最關(guān)鍵的是片內(nèi)RAM分配。對(duì)AT89C51來(lái)講,片內(nèi)RAM指00H~7FH單元,這128個(gè)字節(jié)的功能不完全相(1)根據(jù)軟件功能要求,將系統(tǒng)軟件分成若干相對(duì)獨(dú)立的部分,設(shè)121同,分配時(shí)應(yīng)充分發(fā)揮其特長(zhǎng),做到物盡其用。例如,在工作寄存器的8個(gè)單元中,R0和R1具有指針功能,是編程的重要角色,避免作為它用;20H~2FH這16個(gè)字節(jié)具有位尋址功能,用來(lái)存放各種標(biāo)志位、邏輯變量、狀態(tài)變量等;設(shè)置堆棧區(qū)時(shí)應(yīng)事先估算出子程序和中斷嵌套技術(shù)及程序中棧操作指令使用情況,其大小應(yīng)留有余量。若系統(tǒng)中擴(kuò)展了RAM存儲(chǔ)器,應(yīng)把使用頻率最高的數(shù)據(jù)緩沖器安排在片內(nèi)RAM中,以提高處理速度。當(dāng)RAM資源規(guī)劃好后,應(yīng)列出一張?jiān)敿?xì)的RAM資源分配表,以備編程時(shí)查用方便。同,分配時(shí)應(yīng)充分發(fā)揮其特長(zhǎng),做到物盡其用。12213.4.2系統(tǒng)軟件的總體框架設(shè)計(jì)應(yīng)用設(shè)計(jì)者在軟件設(shè)計(jì)時(shí),感覺(jué)比較困難的是如何進(jìn)行系統(tǒng)軟件的總體框架設(shè)計(jì)。下面給出一個(gè)典型的例子,供讀者在軟件設(shè)計(jì)時(shí)參考。例13-1有一個(gè)AT89C51的應(yīng)用系統(tǒng),假設(shè)5個(gè)中斷源都已用到,應(yīng)用系統(tǒng)的程序框架如下:
ORG 0000H ;系統(tǒng)程序入口 LJMP MAIN ;跳向主程序入口
ORG 0003H ;外中斷0中斷向量入口 LJMPIINT0P ;跳向外中斷0中斷處理程 ;序入口IINT0P
ORG 000BH ;T0中斷向量入口 LJMPIT0P ;跳向T0中斷入口IT0P13.4.2系統(tǒng)軟件的總體框架設(shè)計(jì)123
ORG 0013H ;外中斷0中斷向量入口 LJMPIINT1P;跳向外中斷1中斷處理程序入口IINT1P
ORG 001BH ;T1中斷向量入口 LJMPIT1P ;跳向T1中斷處理程序入口IT1P
ORG 0023H ;串行口中斷向量入口 LJMPISIOP ;跳向串行口中斷處理程序入口ISIOP
ORG0040H ;主程序入口MAIN:
對(duì)片內(nèi)各功能部件,如定時(shí)器、串行口、中斷系統(tǒng)進(jìn)行初始化;對(duì)擴(kuò)展的各個(gè)I/O接口芯片進(jìn)行初始化 MOVSP,#60H ;對(duì)堆棧區(qū)進(jìn)行初始化
主程序(根據(jù)實(shí)際處理任務(wù)編寫(xiě)) 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個(gè)中斷源的中斷入口XXXXH~VVVVH要根據(jù)主程序、各中斷源的中斷處理程序的長(zhǎng)度而定,不要重疊。上述程序框架僅供參考,5個(gè)中斷源的中斷入口XXXXH~VVV126
13.5軟件抗干擾設(shè)計(jì)單片機(jī)系統(tǒng)在噪聲環(huán)境下運(yùn)行,除了前面介紹的各種抗干擾的措施外,還可采用軟件來(lái)增強(qiáng)系統(tǒng)的抗干擾能力。本節(jié)介紹幾種常用軟件抗干擾的方法。13.5.1軟件濾波對(duì)于實(shí)時(shí)數(shù)據(jù)采集系統(tǒng),為了消除傳感器通道中的干擾信號(hào),硬件上,常采用模擬濾波器對(duì)信號(hào)實(shí)現(xiàn)頻率濾波。同樣,采用軟件也可以完成硬件模擬濾波器類(lèi)似的功能,這就是軟件濾波。
13.5軟件抗干擾設(shè)計(jì)1271.算術(shù)平均濾波法對(duì)一點(diǎn)數(shù)據(jù)連續(xù)取n個(gè)值進(jìn)行采樣,然后算術(shù)平均。這種方法適用于對(duì)一般具有隨機(jī)干擾的信號(hào)進(jìn)行濾波。這樣信號(hào)的特點(diǎn)是有一個(gè)平均值,信號(hào)在某一數(shù)值范圍附近上下波動(dòng)。這種濾波法當(dāng)n值較大時(shí),信號(hào)的平滑度高,但是靈敏度低;當(dāng)n值較小時(shí),平滑度低,但靈敏度高。應(yīng)視具體情況選取n,以使既節(jié)約時(shí)間,又濾波效果好。對(duì)于一般流量測(cè)量,通常取n
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)器學(xué)習(xí)原理與應(yīng)用課件 第6章 K近鄰
- 2025至2030年中國(guó)數(shù)控雙柱立式銑車(chē)床數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年湖北體育職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)新版
- 萬(wàn)兆網(wǎng)絡(luò)的市場(chǎng)需求分析
- 2025至2030年中國(guó)扭擺鐘數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 商業(yè)銀行網(wǎng)絡(luò)金融個(gè)人客戶服務(wù)協(xié)議
- 2025至2030年中國(guó)快走絲大錐度線切割機(jī)床數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 陜西政協(xié)月度協(xié)商聚焦加強(qiáng)和改進(jìn)法律援助工作-
- 2025至2030年中國(guó)開(kāi)式快速返程壓力機(jī)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 二零二五年度防盜門(mén)產(chǎn)品安全檢測(cè)與風(fēng)險(xiǎn)評(píng)估合同
- 水泥攪拌樁記錄表格范本
- DL∕T 458-2020 板框式旋轉(zhuǎn)濾網(wǎng)
- GB∕T 8163-2018 輸送流體用無(wú)縫鋼管
- Windows Azure云平臺(tái)基本操作手冊(cè)
- 短視頻:策劃制作與運(yùn)營(yíng)課件
- T∕ASC 17-2021 電動(dòng)汽車(chē)充換電設(shè)施系統(tǒng)設(shè)計(jì)標(biāo)準(zhǔn)
- 水閘設(shè)計(jì)步驟計(jì)算書(shū)(多表)
- PowerPoint使用技巧培訓(xùn)課件(共35張)
- SMA瀝青路面的設(shè)計(jì)與施工
- 腎內(nèi)科相關(guān)基礎(chǔ)知識(shí)學(xué)習(xí)教案
- (完整版)Frenchay構(gòu)音障礙評(píng)定
評(píng)論
0/150
提交評(píng)論