版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第13章AT89S51單片機(jī)的應(yīng)用
設(shè)計(jì)與調(diào)試1內(nèi)容概要介紹AT89S51單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)。主要包括:應(yīng)用系統(tǒng)的設(shè)計(jì)步驟和方法以及應(yīng)用系統(tǒng)設(shè)計(jì)舉例。此外,還介紹了目前流行的單片機(jī)應(yīng)用系統(tǒng)的仿真開發(fā)工具以及如何利用仿真開發(fā)工具對單片機(jī)應(yīng)用系統(tǒng)進(jìn)行開發(fā)調(diào)試。對單片機(jī)應(yīng)用系統(tǒng)的抗干擾和可靠性設(shè)計(jì)作以介紹。
213.1單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)步驟應(yīng)用系統(tǒng)指以單片機(jī)為核心,配以一定的外圍電路和軟件、能實(shí)現(xiàn)用戶所要求的測控功能。系統(tǒng)的設(shè)計(jì),首先需深入細(xì)致的需求分析,周密而科學(xué)的方案論證。應(yīng)用系統(tǒng)設(shè)計(jì),一般可分為4階段。(1)明確任務(wù)和需求分析以及擬定設(shè)計(jì)方案階段明確系統(tǒng)所要完成的任務(wù),是系統(tǒng)設(shè)計(jì)工作的基礎(chǔ),系統(tǒng)設(shè)計(jì)方案正確性保證。3需求分析主要包括:被測控參數(shù)的形式(電量、非電量、模擬量、數(shù)字量等)、范圍、性能指標(biāo)、系統(tǒng)功能、工作環(huán)境、顯示、報(bào)警、打印要求等。擬定設(shè)計(jì)方案是需求分析,先確定大致方向和準(zhǔn)備采用的手段。注意,在進(jìn)行設(shè)計(jì)方案確定的時候,簡單的方法往往可以解決大問題,切忌“將簡單的問題復(fù)雜化”(2)硬件和軟件設(shè)計(jì)階段根據(jù)擬定的設(shè)計(jì)方案,設(shè)計(jì)出相應(yīng)的系統(tǒng)硬件電路。硬件設(shè)計(jì)的前提是必須能夠完成系統(tǒng)的要求和保證可靠性。在硬件設(shè)計(jì)時,如果能夠?qū)⒂布娐吩O(shè)計(jì)與軟件設(shè)計(jì)結(jié)合起來考慮效果會更好。因?yàn)楫?dāng)有些問題在硬件電路中無法完成時,4可直接由軟件來完成(如某些軟件濾波、校準(zhǔn)功能等);當(dāng)軟件編寫程序很麻煩的時候,通過稍稍改動硬件電路(或盡可能不改動)可能會使軟件變得十分簡單。另外在另一些要求系統(tǒng)實(shí)時性強(qiáng)、響應(yīng)速度快的場合,則往往必須用硬件代替軟件來完成某些功能。所以在硬件設(shè)計(jì)時,最好能與軟件的設(shè)計(jì)結(jié)合起來,統(tǒng)一考慮,合理安排軟、硬件的比例,使系統(tǒng)具有最佳的性/價比。當(dāng)硬件電路設(shè)計(jì)完成后,就可以進(jìn)行硬件電路板的繪制和焊接工作了。接下來就是軟件設(shè)計(jì)。正確的編程就是根據(jù)需求分析,先繪制出軟件的流程圖,十分重要。繪制往往不能一次成功,通常需進(jìn)行多次修改。
5流程圖的繪制可按照由簡到繁的方式再逐步細(xì)化,先繪制系統(tǒng)大體上需要執(zhí)行的程序模塊,然后將這些模塊按照要求組合在一起(如主程序、子程序以及中斷服務(wù)子程序等)。在大方向沒有問題后,再將每個模塊進(jìn)行細(xì)化,最后形成軟件流程圖,這樣程序的編寫速度就會很快,同時程序流程圖還會為后面的調(diào)試工作帶來很多方便,如程序調(diào)試中某個模塊不正常,就可以通過流程圖來查找問題的原因。軟件編寫者一定要克服不繪制流程圖直接在計(jì)算機(jī)上編寫程序的習(xí)慣。設(shè)計(jì)者也可在上述軟硬件設(shè)計(jì)完成后,先使用單片機(jī)的EDA軟件仿真開發(fā)工具Proteus,來進(jìn)行仿真設(shè)計(jì)。用Proteus設(shè)計(jì)的系統(tǒng)與用戶樣機(jī)在硬件上無任何聯(lián)系,是一種完全用軟件手段來對單片機(jī)硬件電路和軟件來進(jìn)行設(shè)計(jì)、開發(fā)與仿真調(diào)試的開發(fā)工具。如果先在軟件仿真工具的環(huán)境下進(jìn)行設(shè)計(jì)并調(diào)試通過,雖然還不能完全說明實(shí)際系統(tǒng)就完全通過,至少在邏輯上是行得通的。軟件仿真通過后,再進(jìn)行軟硬件設(shè)計(jì)與實(shí)現(xiàn),可大大減少設(shè)計(jì)上所走的彎路。也是目前世界上流行的一種開發(fā)方法。7(3)硬件與軟件聯(lián)合調(diào)試階段下一步就是軟硬件的聯(lián)合調(diào)試。需通過硬件仿真開發(fā)工具來進(jìn)行,具體的調(diào)試方法和過程,在本章后面介紹。所有軟件和硬件電路全部調(diào)試通過,并不意味系統(tǒng)設(shè)計(jì)成功,還需通過運(yùn)行來調(diào)整系統(tǒng)的運(yùn)行狀態(tài),例如系統(tǒng)中的A/D轉(zhuǎn)換結(jié)果是否正確,如果不正確,是否要調(diào)零和調(diào)整基準(zhǔn)電壓等。(4)資料與文件整理編制階段系統(tǒng)調(diào)試通過,就進(jìn)入資料與文件整理編制階段。8資料與文件包括:任務(wù)描述、設(shè)計(jì)的指導(dǎo)思想及設(shè)計(jì)方案論證、性能測定及現(xiàn)場試用報(bào)告與說明、使用指南、軟件資料(流程圖、子程序使用說明、地址分配、程序清單)、硬件資料(電原理圖、元件布置圖及接線圖、接插件引腳圖、線路板圖、注意事項(xiàng))。文件不僅是設(shè)計(jì)工作的結(jié)果,而且是以后使用、維修以及進(jìn)一步再設(shè)計(jì)的依據(jù)。因此,要精心編寫,描述清楚,使數(shù)據(jù)及資料齊全。913.2單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)的設(shè)計(jì)。主要從硬件設(shè)計(jì)和軟件設(shè)計(jì)兩方面考慮。13.2.1硬件設(shè)計(jì)應(yīng)考慮的問題硬件設(shè)計(jì)時,應(yīng)重點(diǎn)考慮以下問題。1.盡可能采用功能強(qiáng)的芯片(1)單片機(jī)選型。單片機(jī)的集成度越來越高,許多外圍部件都已集成在芯片內(nèi),有的單片機(jī)本身就是一個系統(tǒng),這可省去許多外圍部件的擴(kuò)展工作,使設(shè)計(jì)工作簡化。10第1章已介紹較為流行的各種單片機(jī),根據(jù)需求,選擇合適機(jī)型。例如,目前市場上較為流行的美國Cygnal公司的C8051F0208位單片機(jī),片內(nèi)集成有8通道A/D、兩路D/A、兩路電壓比較器,內(nèi)置溫度傳感器、定時器、可編程數(shù)字交叉開關(guān)和64個通用I/O口、電源監(jiān)測、看門狗、多種類型的串行總線(兩個UART、SPI)等。用1片C8051F020單片機(jī),就構(gòu)成一個應(yīng)用系統(tǒng)。再如,如系統(tǒng)需要較大的I/O驅(qū)動能力和較強(qiáng)的抗干擾能力,可考慮選用AVR單片機(jī)。11(2)優(yōu)先選片內(nèi)有閃存的產(chǎn)品。例如,使用ATMEL公司的AT89S5x系列產(chǎn)品,PHILIPS公司的89C58(內(nèi)有32KB的閃爍存儲器)等,可省去片外擴(kuò)展程序存儲器的工作,減少芯片數(shù)量,縮小系統(tǒng)體積。(3)RAM容量的考慮。多數(shù)單片機(jī)片內(nèi)的RAM單元有限,當(dāng)需增強(qiáng)數(shù)據(jù)處理功能時,往往覺得不足,這就要求系統(tǒng)配置外部RAM,如6264、62256芯片等。如處理的數(shù)據(jù)量大,需更大的數(shù)據(jù)存儲器空間,可采用數(shù)據(jù)存儲器芯片DS12887,其容量為256KB,內(nèi)有鋰電池保護(hù),保存數(shù)據(jù)可達(dá)10年以上。12(4)對I/O端口留有余地。在樣機(jī)研制出來現(xiàn)場試用時,往往會發(fā)現(xiàn)一些被忽視的問題,而這些問題是不能單靠軟件措施來解決的。如有新的信號需要采集,就必須增加輸入檢測端;有些物理量需要控制,就必須增加輸出端。如果在硬件設(shè)計(jì)之初就多設(shè)計(jì)留有一些I/O端口,這些問題就會迎刃而解。(5)預(yù)留A/D和D/A通道。與上述I/O端口同樣原因,留出一些A/D和D/A通道將來可能會解決大問題。132.以軟代硬原則上,只要軟件能做到且能滿足性能要求,就不用硬件。硬件多不但增加成本,而且系統(tǒng)故障率也會提高。以軟帶硬的實(shí)質(zhì),是以時間換空間,軟件執(zhí)行過程需要消耗時間,因此帶來的問題就是實(shí)時性下降。在實(shí)時性要求不高的場合,以軟代硬是很合算的。3.工藝設(shè)計(jì)包括機(jī)箱、面板、配線、接插件等。須考慮到安裝、調(diào)試、維修方便。另外,硬件抗干擾措施(將在本章后面介紹)也須在硬件設(shè)計(jì)時一并考慮進(jìn)去。1413.2.2典型的單片機(jī)應(yīng)用系統(tǒng)典型單片機(jī)應(yīng)用系統(tǒng)框圖如圖13-1所示。
圖13-1
單片機(jī)典型應(yīng)用系統(tǒng)框圖15主要由單片機(jī)基本部分、輸入部分和輸出部分組成。(1)單片機(jī)基本部分由單片機(jī)及其擴(kuò)展的外設(shè)及芯片,如鍵盤、顯示器、打印機(jī)、數(shù)據(jù)存儲器、程序存儲器、數(shù)字I/O等組成。(2)輸入部分“測”的部分,被“測”的信號類型有:數(shù)字量、模擬量和開關(guān)量。模擬量輸入檢測的主要包括信號調(diào)理電路以及A/D轉(zhuǎn)換器。A/D轉(zhuǎn)換器中又包括多路切換、采樣保持、A/D轉(zhuǎn)換電路,目前都集成在A/D轉(zhuǎn)換器芯片中,或直接集成在單片機(jī)片內(nèi)。16連接傳感器與A/D轉(zhuǎn)換器之間的橋梁是信號調(diào)理電路,傳感器輸出的模擬信號要經(jīng)信號調(diào)理電路對信號進(jìn)行放大、濾波、隔離、量程調(diào)整等,變換成適合A/D轉(zhuǎn)換的電壓信號。信號放大通常由單片式儀表放大器承擔(dān)。儀表放大器對信號進(jìn)行放大比普通運(yùn)算放大器具有更優(yōu)異的性能。如何根據(jù)不同的傳感器正確地選擇儀表放大器來進(jìn)行信號調(diào)理電路的設(shè)計(jì),請參閱有關(guān)資料和文獻(xiàn)。(3)輸出部分是應(yīng)用系統(tǒng)“控”的部分,包括數(shù)字量、開關(guān)量控制信號的輸出和模擬量控制信號(常用于伺服控制)的輸出。1713.2.3系統(tǒng)設(shè)計(jì)中的地址空間分配與總線驅(qū)動應(yīng)用系統(tǒng)有時往往是多芯片系統(tǒng),這時會遇到兩個問題:一是如何把64KB程序存儲器和64KB數(shù)據(jù)存儲器的空間分配給各個芯片;二是如何實(shí)現(xiàn)AT89S51單片機(jī)對多片芯片的驅(qū)動。本小節(jié)介紹單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)時經(jīng)常遇到的地址空間分配和總線驅(qū)動問題,供設(shè)計(jì)參考。181.地址空間分配擴(kuò)展多片芯片的應(yīng)用系統(tǒng),首先應(yīng)考慮如何把64KB程序存儲器和64KB數(shù)據(jù)存儲器的空間分配給各個芯片。第8章已介紹地址空間分配的兩種方法:線選法和譯碼法。下面通過一個例子來說明如何解決這個問題。圖13-2所示為一個全地址譯碼的系統(tǒng)實(shí)例。圖中所示的AT89S51單片機(jī)擴(kuò)展的各器件芯片所對應(yīng)的地址如表13-1。19
圖13-2
全地址譯碼的系統(tǒng)實(shí)例2021因6264、2764都是8KB,故需要13條低位地址線(A12~A0)進(jìn)行片內(nèi)尋址,低8位地址線A7~A0經(jīng)8D鎖存器74LS373輸出(圖中沒有畫出),其他3條高位地址線A15~A13經(jīng)3-8譯碼器74LS138譯碼后作為外圍芯片的片選線。圖中尚剩余3條地址選擇線Y7*~Y5*,還可擴(kuò)展3片存儲器芯片或外圍I/O接口芯片。2.總線驅(qū)動擴(kuò)展多片芯片時,注意單片機(jī)4個并行雙向口的P0~P3口的驅(qū)動能力。下面討論這個問題。22AT89S51的P0、P2口通常作為總線端口,當(dāng)擴(kuò)展芯片較多,可造成負(fù)載過重,致使驅(qū)動能力不夠,通常要附加總線驅(qū)動器或其他驅(qū)動電路。因此在多芯片應(yīng)用系統(tǒng)設(shè)計(jì)中首先要估計(jì)總線負(fù)載情況,以確定是否需對總線驅(qū)動能力進(jìn)行擴(kuò)展。圖13-3為AT89S51單片機(jī)總線驅(qū)動擴(kuò)展原理圖。P2口需單向驅(qū)動,常見的單向總線驅(qū)動器為74LS244。圖13-4為74LS244引腳圖和邏輯圖。8個三態(tài)驅(qū)動器分成兩組,分別由1G*和2G*控制。2324圖13-3AT89S51單片機(jī)總線驅(qū)動擴(kuò)展原理圖P0口作為數(shù)據(jù)總線,雙向傳輸,其驅(qū)動器應(yīng)為雙向驅(qū)動、三態(tài)輸出,由兩個控制端來控制數(shù)傳方向。如圖13-3所示,數(shù)據(jù)輸出允許控制端DBEO有效時,數(shù)據(jù)總線輸入為高阻狀態(tài),輸出為開通狀態(tài);數(shù)據(jù)輸入允許控制端DBEI有效時,則狀態(tài)與上相反。常見雙向驅(qū)動器為74LS245,圖13-5為引腳圖和邏輯圖。驅(qū)動方向由
G*、DIR兩個控制端控制,
G*控制端控制驅(qū)動器有效或高阻態(tài),G*在
控制端有效(G*
=0)時,DIR控制端控制驅(qū)動器的驅(qū)動方向,DIR=0時驅(qū)動方向?yàn)閺腂至A,DIR=1時則相反。25圖13-4
單向驅(qū)動器74LS244引腳圖和邏輯圖圖13-574LS245的引腳圖和邏輯圖圖13-6所示為AT89S51系統(tǒng)總線驅(qū)動擴(kuò)展電路圖。P0口的雙向驅(qū)動采用74LS245,如圖13-6(a)所示;P2口的單向驅(qū)動器采用74LS244,如圖13-6(b)所示。
28圖13-6AT89S51單片機(jī)應(yīng)用系統(tǒng)中的總線驅(qū)動擴(kuò)展電路圖P0口雙向驅(qū)動器74LS245的G*接地,保證芯片一直處于工作狀態(tài),而輸入/輸出的方向控制由單片機(jī)的數(shù)據(jù)存儲器的“讀”控制引腳(RD*)和程序存儲器的取指控制引腳(PSEN*)通過與門控制DIR引腳實(shí)現(xiàn)。無論是“讀”數(shù)據(jù)存儲器中數(shù)據(jù)(
有效)還是從程序存儲器中取指令(PSEN*有效),都能保證對P0口的輸入驅(qū)動;除此以外的時間(RD*及PSEN*均無效),保證對P0口的輸出驅(qū)動。對于P2口,因?yàn)橹挥米鲉蜗虻牡刂份敵?,?4LS244的驅(qū)動門控制端1G*、2G*接地。2913.2.4應(yīng)用設(shè)計(jì)例1—最小應(yīng)用系統(tǒng)設(shè)計(jì)
AT89S51有4KB閃爍存儲器,本身就是一個數(shù)字量輸入/輸出的最小應(yīng)用系統(tǒng)。在構(gòu)建AT89S51最小應(yīng)用系統(tǒng)時,AT89S51需要外接時鐘電路和復(fù)位電路即可,如圖13-7。注意,本最小應(yīng)用系統(tǒng)只能作為小型的數(shù)字量的測控單元。30圖13-7AT89S51單片機(jī)構(gòu)成的最小應(yīng)用系統(tǒng)13.2.5應(yīng)用設(shè)計(jì)例2—數(shù)字電壓表的設(shè)計(jì)設(shè)計(jì)一個數(shù)字電壓表。測量0~5V的模擬電壓,并把電壓的測量值顯示在LED數(shù)碼顯示器上。1.硬件接口電路設(shè)計(jì)數(shù)字電壓表接口電路如圖13-8。A/D轉(zhuǎn)換器采用ADC0809,把加到IN0腳的模擬輸入電壓轉(zhuǎn)換為數(shù)字量,送至單片機(jī)內(nèi)進(jìn)行處理,電壓值顯示在LED數(shù)碼顯示器上。時鐘由定時器定時中斷提供,在定時器中斷服務(wù)程序中,對時鐘輸出引腳P1.3取反。本數(shù)字電壓表的分辨率為5V/256=1LSB=0.0196V,測量誤差為±1LSB。3233圖13-8
數(shù)字電壓表接口電路2.軟件設(shè)計(jì)參考程序如下:#include<reg51.h>#defineucharunsignedchar #defineuintunsignedint
ucharcodetable[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x07,0x7f,0x6f}; /*共陰極數(shù)碼管段碼表*/ sbitOE=P1^0; /*ADC各引腳定義*/sbitEOC=P1^1;sbitSTART=P1^2;sbitCLK=P1^3;/*延時子程序*/voidDelayMS(uintms)34{uchari;while(ms--)for(i=0;i<150;i++);}/*顯示轉(zhuǎn)換結(jié)果*/voidDislay(uchard){P2=0xf7; /*右邊數(shù)碼管顯示個位數(shù)*/P0=LEDdata[d%10];DelayMS(uintms);P2=0xfb;P0=LEDdata[d%100/10]; /*中間數(shù)碼管顯示十位數(shù)*/DelayMS(uintms);P2=0xfd;P0=LEDdata[d%100]; /*左邊數(shù)碼管顯示十位數(shù)*/DelayMS(uintms);unsignedchari}35/*主程序*/voidmain(); {TMOD=0x02; /*設(shè)置定時器T0為定時器方式2*/TH0=0x14; /*給T0裝入初值*/TL0=0x00;IE=0x82; /*總中斷允許,定時器T0中斷允許*/TR0=1; /*接通T0計(jì)數(shù)*/P1=0x07; /*CLK、START、EOC、OE為低、高、高、高*/while(1){START=0;START=1;START=0;/*START腳加正脈沖,啟動轉(zhuǎn)換*/while(EOC==0); /*是否轉(zhuǎn)換結(jié)束*/OE=1; /*允許讀轉(zhuǎn)換結(jié)果*/36Dislay(P3); /*顯示轉(zhuǎn)換結(jié)果*/OE=0; /*關(guān)閉轉(zhuǎn)換結(jié)果輸出*/}}/*定時器T0中斷服務(wù)程序*/voidT0INT()interrupt1{ CLK=!CLK; /*轉(zhuǎn)換器時鐘CLK取反*/}3713.2.6應(yīng)用設(shè)計(jì)例3—帶有報(bào)警功能的溫度測量儀的設(shè)計(jì)設(shè)計(jì)一個帶有報(bào)警功能的溫度測量儀。被測溫度經(jīng)溫度傳感器及信號調(diào)理電路,變?yōu)?~5V的模擬電壓信號,經(jīng)A/D轉(zhuǎn)換器ADC0809轉(zhuǎn)換為數(shù)字量,送至單片機(jī)內(nèi)進(jìn)行處理。測量的溫度值顯示在數(shù)碼顯示器上。測得溫度值與設(shè)定值進(jìn)行比較,當(dāng)溫度大于上限值和小于下限值時分別發(fā)出報(bào)警信號。硬件電路設(shè)計(jì)溫度測量儀的硬件功能結(jié)構(gòu)框圖如圖13-9所示。3839圖13-9
硬件功能結(jié)構(gòu)框圖硬件電路從功能模塊上來劃分有兩部分:數(shù)據(jù)采集電路和溫度顯示與超限報(bào)警電路。(1)數(shù)據(jù)采集電路的設(shè)計(jì)數(shù)據(jù)采集電路電路如圖13-10所示,主要由溫度傳感器、信號調(diào)理、A/D轉(zhuǎn)換器等組成。溫度傳感器采用常見的二端式電流型集成溫度傳感器AD590。溫度變化1℃,其輸出電流變化1μA,在25℃時,其輸出電流為298.2μA。AD590具有較高精度和重復(fù)性,測溫范圍為?55℃~+150℃,重復(fù)性優(yōu)于0.1℃,通過激光平衡調(diào)整,校準(zhǔn)精度可達(dá)0.5℃。由于AD590的上述特點(diǎn),使其在溫度測量中得到了廣泛應(yīng)用。
圖13-10
數(shù)據(jù)采集電路圖放大電路采用低溫穩(wěn)定、高精度的普通運(yùn)算放大器OP07,它將溫度傳感器的電壓信號放大0~5V,加到A/D轉(zhuǎn)換器0809的模擬輸入端,以便A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。A/D轉(zhuǎn)換器采用AD0809,假設(shè)被采集的溫度信號為緩變信號,足以滿足轉(zhuǎn)換速度的要求。42(2)溫度顯示與超限報(bào)警電路的設(shè)計(jì)溫度顯示與超限報(bào)警電路如圖13-11所示。測得的溫度值利用LED數(shù)碼管進(jìn)行顯示。數(shù)碼管的a~dp段的段碼由單片機(jī)的P0口控制,a段對應(yīng)P0口的最低位。數(shù)碼管的顯示位由P2.0~P2.3分別控制,本例中用到了P2.0~P2.2對應(yīng)的數(shù)碼管。超限報(bào)警電路部分,由P3.0和P3.1分別控制兩個發(fā)光二極管LED1和LED2的亮與滅。當(dāng)溫度低于下限值時黃色發(fā)光二極管亮,當(dāng)溫度高于上限值時,紅色發(fā)光二極管亮。圖13-11
溫度顯示與超限報(bào)警電路2.軟件設(shè)計(jì)參考程序如下:#include<reg51.h>#defineucharunsignedchar #defineuintunsignedint
ucharcodesegcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/*顯示段碼表*/ucharTemperature[]={0,0,0}; /*3個顯示位的溫度值*/sbitOE=P2^7; /*ADC0809各引腳定義*/sbitEOC=P2^6; sbitSTART=P2^5; sbitCLK=P2^4; sbitH_LED=P3^0; /*報(bào)警指示燈/ sbitL_LED=P3^1; sbitBEEP=P3^7; /*蜂鳴器*/45uchart=0;voidDeley_ms(uintx) /*延時函數(shù)*/{uchari;while(x--)for(i=0;i<120;i++);}voidDisplay() /*溫度顯示函數(shù)*/{uchari,bitcode[]={0xf7,0xfb,0xfd} /*顯示位的位控值*/for(i=0;i<3;i++); /*循環(huán)顯示3位的控制*/{P0=segcode[Temperature[i]];P2&=bitcode[i];Deley_ms(5);P2|=0x0f;}}46voidmain(); {uchardIE=0x8a; /*允許T1、T0中斷*/TMOD=0x18; /*設(shè)置T1、T0的工作模式與方式*/TH0=245; TL0=0;TH1=(65536-1000)/256; TL1=(65536-1000)%256; TR0=1;H_LED=L_LED=1;while(1){START=0;START=1;START=0; /*啟動轉(zhuǎn)換*/while(1){if(EOC==1)47OE=1;d=P1; /*讀取A/D轉(zhuǎn)換結(jié)果*/OE=0;Temperature[2]=d/100;Temperature[1]=d%100/10;Temperature[0]=d%10;Display()if(d<10) /*判溫度是否低于下限*/{TR1=1;L_LED=!H_LED;}elseif(d>130) /*判溫度是否高于上限*/{TR1=1;H_LED=!L_LED;}else{TR1=0;H_LED=L_LED=1;}48break;}}}voidT0_INT()interupt1/*定時器T0中斷函數(shù),T0為ADC0809提供時鐘*/{clk=~clk}voidT1_INT()interupt3 /*定時器T1中斷函數(shù)*/{TH1=(65536-1000)/256; TL1=(65536-1000)%256; TL1=(65536-1000)%256;BEEP=~BEEP;if(L_LED==0) /*根據(jù)上限還是下限報(bào)警來設(shè)定不同的延時間隔*/{if(++t!=150)return;}49else{if(++t!=60)return;}t=0;Deley_ms(20)}5013.3單片機(jī)應(yīng)用系統(tǒng)的仿真開發(fā)與調(diào)試
“仿真”就是利用仿真開發(fā)工具提供的可控手段來模仿單片機(jī)系統(tǒng)真實(shí)運(yùn)行的情況。在單片機(jī)系統(tǒng)調(diào)試中,仿真應(yīng)用的范圍主要集中在對程序的仿真上。例如,在單片機(jī)的開發(fā)過程中,程序的設(shè)計(jì)是最為重要的但也是難度最大的。一種最簡單和原始的開發(fā)流程是:編寫程序→燒寫芯片→驗(yàn)證功能,這種方法對于簡單的小系統(tǒng)是可行的,但在較大的程序中使用這種方法則是行不通的。仿真的種類主要分為兩大類:軟件仿真和硬件仿真。
51(1)軟件仿真主要是使用軟件來模擬單片機(jī)運(yùn)行,因此仿真與硬件無關(guān)的系統(tǒng)具有優(yōu)點(diǎn)。不需搭建硬件電路就可以對程序進(jìn)行驗(yàn)證,特別適合于偏重算法的程序。缺點(diǎn)是無法完全仿真與硬件相關(guān)的部分,最終還要通過硬件仿真來完成最終的設(shè)計(jì)。(2)硬件仿真使用附加的硬件來替代用戶系統(tǒng)的單片機(jī)并完成單片機(jī)全部或大部分的功能,就可對程序的運(yùn)行進(jìn)行控制。例如單步,全速,斷點(diǎn)等。例如在程序的運(yùn)行中,在設(shè)置斷點(diǎn)處查看某寄存器、存儲器單元內(nèi)容。硬件仿真是開發(fā)過程中所必
52須的,人們把實(shí)現(xiàn)硬件仿真功能的開發(fā)工具稱為仿真器。
仿真開發(fā)工具應(yīng)具有如下最基本的功能。(1)用戶程序的輸入與修改。(2)程序運(yùn)行、調(diào)試(單步運(yùn)行、設(shè)置斷點(diǎn)運(yùn)行)、排錯、狀態(tài)查詢等功能。(3)用戶樣機(jī)硬件電路的診斷與檢查。(4)有較全的開發(fā)軟件。用戶可用匯編語言或C語言編制應(yīng)用程序;由開發(fā)系統(tǒng)編譯連接生成目標(biāo)文件、可執(zhí)行文件。配有反匯編軟件,能將目標(biāo)程序轉(zhuǎn)換成匯編語言程序;有豐富的子程序或庫函數(shù)可供用戶選擇調(diào)用。(5)將調(diào)試正確的程序?qū)懭氲匠绦虼鎯ζ髦?。下面介紹常用的仿真開發(fā)工具。13.3.1仿真開發(fā)系統(tǒng)簡介目前使用較多的仿真開發(fā)系統(tǒng)大致分為如下兩類。1.通用機(jī)仿真開發(fā)系統(tǒng)目前使用最多的一類開發(fā)裝置。通過PC機(jī)的并行口、串行口或USB口,外加在線仿真器,如圖13-12所示。
圖13-13為在線仿真器與PC機(jī)以及用戶樣機(jī)的實(shí)際連接圖。在線仿真器一側(cè)與PC機(jī)的USB口(或并行口、串行口)相連。在調(diào)試程序時,在線仿真器另一側(cè)的仿真插頭插入到用5455圖13-12
通用機(jī)仿真開發(fā)系統(tǒng)圖13-13
在線仿真器與PC機(jī)以及用戶樣機(jī)的連接戶樣機(jī)空出的的單片機(jī)插座上,來對樣機(jī)上的單片機(jī)進(jìn)行“仿真”。從仿真插頭向在線仿真器看去,看到的就是一個“單片機(jī)”。這個“單片機(jī)”是用來“代替”用戶樣機(jī)上的單片機(jī)。但是這個“單片機(jī)”片內(nèi)程序的運(yùn)行是由PC機(jī)軟件控制的。由于在線仿真器有PC機(jī)及其仿真開發(fā)軟件的強(qiáng)大支持,可在PC機(jī)的屏幕上觀察用戶程序的運(yùn)行情況,可采用單步、設(shè)斷點(diǎn)等手段逐條跟蹤用戶程序并進(jìn)行修改和調(diào)試,查找軟、硬件故障。在線仿真器除了“出借”單片機(jī)外,還“出借”存儲器,即仿真RAM。也就是說,在用戶樣機(jī)調(diào)試期間,仿真器把開發(fā)系統(tǒng)的一部分存儲器“變換”成為用戶樣機(jī)的存儲器。
57這部分存儲器與用戶樣機(jī)的程序存儲器具有相同的存儲空間,用來存放待調(diào)試的用戶程序。當(dāng)仿真器與PC機(jī)聯(lián)機(jī)后,用戶可利用PC機(jī)上的仿真開發(fā)軟件,在PC機(jī)上編輯、修改源程序,然后通過交叉匯編軟件將其匯編成機(jī)器代碼,傳送到在線仿真器中的仿真RAM中。這時用戶可用單步、斷點(diǎn)、跟蹤、全速等方式運(yùn)行用戶程序,系統(tǒng)狀態(tài)實(shí)時地顯示在屏幕上。待程序調(diào)試通過后,再使用仿真開發(fā)系統(tǒng)提供的編程器或?qū)S镁幊唐?,把調(diào)試完畢的程序?qū)懭氲絾纹瑱C(jī)的Flash存儲器中或外擴(kuò)的EPROM中。目前國內(nèi)生產(chǎn)的在線仿真器部分產(chǎn)品多采用Bondout和
58HOOKS技術(shù)。隨著集成電路芯片技術(shù)的發(fā)展,很多單片機(jī)生產(chǎn)廠商在芯片內(nèi)部增加了仿真功能,即內(nèi)嵌仿真功能的單片機(jī)芯片,仿真調(diào)試一般通過JTAG接口進(jìn)行控制。為了降低成本和增加可靠性,內(nèi)嵌的仿真部分一般功能比較簡單。為滿足工業(yè)現(xiàn)場調(diào)試的需要,還有一種獨(dú)立型仿真器。該類仿真器采用模塊化結(jié)構(gòu),配有不同外設(shè),如外存板、打印機(jī)、鍵盤/顯示器等,用戶可根據(jù)需要選用。在工業(yè)現(xiàn)場,往往沒有PC機(jī)的支持,這時使用獨(dú)立型仿真器也可進(jìn)行仿真調(diào)試工作,只不過要輸入機(jī)器碼,稍顯麻煩一些。
592.單片機(jī)系統(tǒng)虛擬仿真開發(fā)工具Proteus單片機(jī)虛擬仿真開發(fā)工具是一種完全用軟件手段對單片機(jī)應(yīng)用系統(tǒng)進(jìn)行仿真開發(fā),它與用戶樣機(jī)在硬件上無任何聯(lián)系,通常這種系統(tǒng)是由PC機(jī)上安裝仿真開發(fā)工具軟件構(gòu)成,可進(jìn)行系統(tǒng)的虛擬設(shè)計(jì)與仿真調(diào)試。Proteus軟件是英國LabCenterelectronics開發(fā)的虛擬仿真軟件,為各種實(shí)際的單片機(jī)系統(tǒng)開發(fā)提供了功能強(qiáng)大的EDA工具,已有近20年的歷史。除了具有和其他EDA工具一樣的原理編輯、印刷電路板自動或人工布線及電路仿真功能外,最大特色是用戶可對單片機(jī)連同所有外圍接口、電子器件以及外部的測試儀器一起60仿真。可直接在基于單片機(jī)原理圖的虛擬模型上進(jìn)行編程,并實(shí)現(xiàn)源代碼級的實(shí)時調(diào)試。Proteus軟件的特點(diǎn)。(1)能夠?qū)δM電路、數(shù)字電路進(jìn)行仿真。(2)除了仿真51系列單片機(jī)外,Proteus軟件還可仿真68000系列、AVR系列、PIC12-18系列、Z80系列、HC11等其他各系列單片機(jī)。(3)具有硬件仿真開發(fā)系統(tǒng)中的全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時可觀察各個變量、寄存器等的當(dāng)前狀態(tài)。61(4)該軟件提供各種單片機(jī)與豐富的外圍接口芯片、存儲器芯片組成的系統(tǒng)仿真、RS-232動態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能。(5)提供豐富的虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。利用虛擬儀器在仿真過程中可以測量系統(tǒng)外圍電路的特性,設(shè)計(jì)者可充分利用Proteus軟件提供的虛擬儀器,來進(jìn)行系統(tǒng)的軟件仿真測試與調(diào)試??傊?,是一款功能強(qiáng)大的單片機(jī)軟件仿真開發(fā)工具。62在使用Proteus進(jìn)行仿真開發(fā)時,編譯調(diào)試環(huán)境可選用KeilC51μVision3軟件。該軟件支持眾多不同公司的MCS-51架構(gòu)的芯片,集編輯、編譯和程序仿真等于一體,同時還支持匯編和C語言的程序設(shè)計(jì),界面友好易學(xué),在調(diào)試程序、軟件仿真方面有強(qiáng)大的功能。
用Proteus調(diào)試不需任何硬件在線仿真器,也不需要用戶硬件樣機(jī),直接就可以在PC機(jī)上開發(fā)和調(diào)試單片機(jī)軟件。調(diào)試完畢的軟件可以將機(jī)器代碼固化,一般能直接投入運(yùn)行。63盡管Proteus具有開發(fā)效率高,不需附加的硬件開發(fā)裝置成本。但是軟件模擬器是使用純軟件來仿真,對實(shí)時性還不能完全準(zhǔn)確地模擬,不能進(jìn)行用戶樣機(jī)硬件部分的診斷與實(shí)時在線仿真。因此在系統(tǒng)開發(fā)中,一般是先用Proteus設(shè)計(jì)出系統(tǒng)的硬件電路,編寫程序,在Proteus環(huán)境下仿真調(diào)試通過。然后依照仿真的結(jié)果,完成實(shí)際硬件設(shè)計(jì)。再將仿真通過的程序用燒錄到程序存儲器中,然后安裝到用戶樣機(jī)硬件板上去觀察運(yùn)行結(jié)果,如有問題,再連接硬件仿真器去分析、調(diào)試。6413.3.3用戶樣機(jī)的仿真調(diào)試介紹如何使用仿真開發(fā)工具進(jìn)行匯編語言源程序編寫、調(diào)試以及與用戶樣機(jī)硬件聯(lián)調(diào)工作。1.用戶樣機(jī)的程序調(diào)試用戶源程序調(diào)試過程如圖13-14,分以下4個步驟。(1)輸入用戶源程序。用戶使用編輯軟件WS,按照匯編語言源程序要求的格式、語法規(guī)定,把源程序輸入到PC機(jī)中,并保存在磁盤上。65圖13-14
用戶樣機(jī)軟件設(shè)計(jì)、調(diào)試的過程(2)在PC機(jī)上,利用匯編程序?qū)τ脩粼闯绦蜻M(jìn)行匯編,直至語法錯誤全部糾正為止。如無語法錯誤,則進(jìn)入下一個步驟。(3)動態(tài)在線調(diào)試。這一步對用戶的源程序進(jìn)行調(diào)試。上述的步驟(1)、步驟(2)是一個純粹的軟件運(yùn)行過程,這一步,必須要有在線仿真器配合,才能對用戶源程序進(jìn)行調(diào)試。用戶程序中分為與用戶樣機(jī)硬件無關(guān)以及與用戶樣機(jī)緊密相關(guān)的程序。67對于與用戶樣機(jī)硬件無關(guān)的程序,如計(jì)算程序,雖無語法錯誤,但可能存在邏輯錯誤,使計(jì)算結(jié)果不正確,此時必須借助于在線仿真器的動態(tài)在線調(diào)試手段,如單步運(yùn)行、設(shè)置斷點(diǎn)等,發(fā)現(xiàn)邏輯錯誤,然后返回到步驟(1)修改,直至邏輯錯誤糾正為止。對于與樣機(jī)硬件緊密相關(guān)的程序段(如接口驅(qū)動程序),一定先把在線仿真器的仿真插頭插入用戶樣機(jī)的單片機(jī)插座中(見圖13-13),進(jìn)行在線仿真調(diào)試,利用仿真開發(fā)系統(tǒng)提供單步、設(shè)置斷點(diǎn)等調(diào)試手段,來進(jìn)行系統(tǒng)的調(diào)試。68部分程序段運(yùn)行有可能不正常,可能是軟件邏輯上有問題,也可能是硬件有故障,必須通過仿真工具提供的調(diào)試手段,把硬件故障排除后,再與硬件配合,對用戶程序進(jìn)行動態(tài)在線調(diào)試。對于軟件的邏輯錯誤,則返回到第一步進(jìn)行修改,直至邏輯錯誤消除為止。在調(diào)試這類程序時,硬件調(diào)試與軟件調(diào)試是不能完全分開的。許多硬件錯誤是通過軟件的調(diào)試而發(fā)現(xiàn)和糾正的。(4)將調(diào)試完畢的用戶程序通過編程寫入器(也稱燒寫器),固化在程序存儲器中。692.用戶樣機(jī)的硬件調(diào)試用戶樣機(jī)全部焊接完畢,就可對樣機(jī)的硬件進(jìn)行調(diào)試。首先進(jìn)行靜態(tài)調(diào)試,目的是排除明顯的硬件故障。(1)靜態(tài)調(diào)試分兩步:第一步在樣機(jī)加電前,根據(jù)硬件設(shè)計(jì)圖,用萬用表等工具,仔細(xì)檢查樣機(jī)線路是否連接正確,并核對元器件型號、規(guī)格和安裝是否符合要求,應(yīng)特別注意電源系統(tǒng)的檢查,防止電源的短路和極性錯誤,并重點(diǎn)檢查系統(tǒng)總線(地址總線、數(shù)據(jù)總線、控制總線)是否存在相互之間短路或與其他信號線短路。70第二步加電后檢查各芯片插座上有關(guān)引腳的電位,測量各點(diǎn)電平是否正常,尤其應(yīng)注意AT89S51插座的各點(diǎn)電位,若有高壓,與在線仿真器聯(lián)機(jī)調(diào)試時,將會損壞在線仿真器。具體步驟如下。
電源檢查。當(dāng)用戶樣機(jī)板連接或焊接完成之后,先不插主要元器件,通上電源。通常用+5V直流電源(這是TTL電源),用萬用表電壓檔測試各元器件插座上相應(yīng)電源引腳電壓數(shù)值是否正確,極性是否符合。如有錯誤,要及時檢查、排除,以使每個電源引腳的數(shù)值都符合要求。71各元器件電源檢查。斷開電源,按正確的元器件方向插上元器件。最好是分別插入,分別通電,逐一檢查每個元器件上的電源是否正確,直到最后全部插上元器件。通電后,每個元器件上電源值應(yīng)正確無誤。檢查相應(yīng)芯片的邏輯關(guān)系。通常采用靜態(tài)電平檢查法,即在一個芯片信號輸入端加入一個相應(yīng)電平,檢查輸出電平是否正確。單片機(jī)系統(tǒng)大都是數(shù)字邏輯電路,使用電平檢查法可首先檢查出邏輯設(shè)計(jì)是否正確,選用的元器件是否符合要求,邏輯關(guān)系是否匹配,元器件連接關(guān)系是否符合要求等。72(2)在線仿真與動態(tài)調(diào)試用戶樣機(jī)中的硬件故障(如各個部件內(nèi)部存在的故障和部件之間連接的邏輯錯誤)主要靠聯(lián)機(jī)在線仿真來排除在斷電情況下,除單片機(jī)外,插上所有的元器件,并把在線仿真器的仿真插頭插入樣機(jī)上AT89S51的插座(見圖13-13),然后分別打開用戶樣機(jī)和仿真器電源后便可開始聯(lián)機(jī)在線仿真調(diào)試。前面已介紹,硬件調(diào)試和軟件調(diào)試是不能完全分開的,許多硬件錯誤是在軟件調(diào)試中發(fā)現(xiàn)和被糾正的。73所以,在之前介紹的有關(guān)用戶樣機(jī)軟件調(diào)試的第(3)步的動態(tài)在線調(diào)試中,即包括聯(lián)機(jī)仿真、硬件在線動態(tài)調(diào)試以及硬件故障的排除。下面介紹在仿真開發(fā)機(jī)上如何利用簡單調(diào)試程序檢查用戶樣機(jī)。利用仿真開發(fā)系統(tǒng)對用戶樣機(jī)進(jìn)行硬件檢查,常常按其功能及I/O通道分別編寫相應(yīng)簡短的實(shí)驗(yàn)程序,來檢查各部分功能及邏輯是否正確,下面簡單介紹。74①檢查各地址譯碼輸出通常,地址譯碼輸出是一個低電平有效信號。因此在選到某一個芯片時(無論是內(nèi)存還是外設(shè)),其片選信號用示波器檢查應(yīng)該是一個負(fù)脈沖信號。由于使用的時鐘頻率不同,其負(fù)脈沖的寬度和頻率也有所不同。注意,在使用示波器測量用戶樣機(jī)板的某些信號時,要將示波器電源插頭上的地線斷開,這是由于示波器測量探頭一端連到外殼,在有些電源系統(tǒng)中,保護(hù)地和電源地是連在一起的,有時會將電源插座插反,將交流220V直接引到測量端,而將用戶樣機(jī)板全部燒毀,并且會殃及在線仿真器。75下面討論如何檢查地址譯碼器輸出。例如,一片6116存儲芯片地址為2000~27FFH,則可在開發(fā)系統(tǒng)上執(zhí)行循環(huán)讀2000H單元的內(nèi)容到A累加器中。程序執(zhí)行后,應(yīng)該從6116存儲器芯片的片選端看到等間隔的一串負(fù)脈沖,說明該芯片片選信號連接是正確的,即使不插入該存儲器芯片,只測量插座相應(yīng)片選引腳也會有上述結(jié)果。76用同樣的方法,可將各內(nèi)存及外設(shè)接口芯片的片選信號逐一進(jìn)行檢查。如出現(xiàn)不正確的現(xiàn)象,就要檢查片選線連線是否正確,有無接觸不良或錯線、斷線問題。②檢查RAM存儲器檢查RAM存儲器時可編寫程序,對RAM存儲器進(jìn)行寫入,然后再讀出,將寫入和讀出的數(shù)據(jù)進(jìn)行比較,發(fā)現(xiàn)錯誤,立即停止。77③檢查I/O擴(kuò)展接口對可編程接口芯片,如82C55,首先要對該接口芯片進(jìn)行初始化,再對其I/O端口進(jìn)行I/O操作。初始化要按設(shè)計(jì)要求進(jìn)行,這個初始化程序調(diào)試好后就可作為正式編程的相應(yīng)內(nèi)容。初始化后,可對其端口進(jìn)行讀/寫。對開關(guān)量I/O,在樣機(jī)上利用鈕子開關(guān)和發(fā)光二極管模擬,也可接上驅(qū)動板檢查。一般情況下,用戶樣機(jī)先調(diào)試,驅(qū)動板單獨(dú)進(jìn)行調(diào)試,這樣故障排除更方便些。78如用自動程序檢查端口狀態(tài)不易觀察時,可用開發(fā)系統(tǒng)的單步功能,單步執(zhí)行程序,檢查內(nèi)部寄存器的有關(guān)內(nèi)容或外部相應(yīng)信號狀態(tài),并確定開關(guān)量輸入/輸出通道連接是否正確。對于鎖存器和緩沖器,可直接對其端口進(jìn)行讀/寫,不存在初始化的問題。79通過介紹的調(diào)試用戶樣機(jī)過程,可體會到離開仿真開發(fā)系統(tǒng)就根本不可能進(jìn)行用戶樣機(jī)的調(diào)試,而調(diào)試的關(guān)鍵步驟—動態(tài)在線仿真調(diào)試,又完全依賴于開發(fā)系統(tǒng)中的在線仿真器。所以,開發(fā)系統(tǒng)性能,主要取決于在線仿真器的性能,在線仿真器提供的仿真開發(fā)手段,直接影響設(shè)計(jì)者的設(shè)計(jì)、調(diào)試工作的效率。所以,對設(shè)計(jì)者來說,在了解開發(fā)系統(tǒng)的種類和性能之后,選擇一個性/價比高的仿真開發(fā)系統(tǒng),并能夠熟練地使用它來調(diào)試用戶樣機(jī)是十分重要的。
8013.4單片機(jī)應(yīng)用系統(tǒng)的抗干擾與可靠性設(shè)計(jì)單片機(jī)應(yīng)用系統(tǒng)在測控領(lǐng)域的廣泛應(yīng)用,單片機(jī)系統(tǒng)的可靠性越來越受到人們的關(guān)注??煽啃允怯啥喾N因素決定,其中的抗干擾性能的好壞是影響可靠性的重要因素。一般把影響單片機(jī)測控系統(tǒng)正常工作的信號稱為噪聲,又稱干擾。在系統(tǒng)中,出現(xiàn)干擾,就會影響指令的正常執(zhí)行,造成控制事故或控制失靈;會在測量通道中產(chǎn)生干擾,使測量產(chǎn)生誤差。本節(jié)介紹單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)中的抗干擾設(shè)計(jì)及提高可靠性的一些方法和措施。8113.4.1AT89S51片內(nèi)看門狗定時器的使用當(dāng)AT89S51系統(tǒng)受到干擾可能會失控,會引起程序“跑飛”或使程序陷入“死循環(huán)”,系統(tǒng)將完全癱瘓。如果操作人員在場,可按下人工復(fù)位按鈕,強(qiáng)制系統(tǒng)復(fù)位。但操作人員不可能一直監(jiān)視著系統(tǒng),即使監(jiān)視著系統(tǒng),也往往是在引起不良后果之后才進(jìn)行人工復(fù)位。能不能不要人來監(jiān)視,使系統(tǒng)擺脫“死循環(huán)”,重新執(zhí)行正常的程序呢?這可采用“看門狗”(Watchdog,簡寫WDT)技術(shù)來解決這一問題。82“看門狗”是使用一個WDT計(jì)數(shù)器來不斷計(jì)數(shù),監(jiān)視程序的運(yùn)行。當(dāng)WDT計(jì)數(shù)器運(yùn)行后,為防止不必要溢出,程序正常運(yùn)行中,應(yīng)定期地把WDT計(jì)數(shù)器清0,以保證不溢出。AT89S51片內(nèi)集成的“看門狗”WDT包含一個14位計(jì)數(shù)器和看門狗定時器復(fù)位寄存器(WDTRST)。當(dāng)程序“跑飛”或陷入“死循環(huán)”時,也就不能定時地把WDT計(jì)數(shù)器清0,計(jì)數(shù)器值計(jì)滿溢出時,將在AT89S51的RST引腳上輸出一個正脈沖使單片機(jī)復(fù)位,在系統(tǒng)的復(fù)位入口0000H處安排一條跳向出錯處理程序段的指令或重新從頭執(zhí)行程序,而使程序擺脫“跑飛”或“死循環(huán)”。83使用看門狗時,用戶只要向寄存器WDTRST(地址為A6H)先寫1EH,緊接著寫入E1H,WDT計(jì)數(shù)器便啟動計(jì)數(shù)。實(shí)際應(yīng)用中,為防止WDT計(jì)數(shù)器啟動后產(chǎn)生不必要的溢出,應(yīng)在執(zhí)行程序的過程中,用戶不斷地復(fù)位WDTRST,即向WDTRST寄存器寫入數(shù)據(jù)1EH和E1H。在程序編寫中,一般把復(fù)位WDTRST的這兩條指令,設(shè)計(jì)為一個子程序,只要在程序的正常運(yùn)行中,不斷調(diào)用該子程序,把計(jì)數(shù)器清0,使其不溢出即可。8413.4.2軟件濾波對實(shí)時數(shù)據(jù)采集系統(tǒng),為了消除傳感器通道中的干擾信號,常采用硬件濾波器先濾除干擾信號,再進(jìn)行A/D轉(zhuǎn)換。也可采用先A/D轉(zhuǎn)換,再對A/D轉(zhuǎn)換后的數(shù)字量進(jìn)行軟件濾波消除干擾。下面介紹幾種軟件濾波的方法。1.算術(shù)平均濾波法對一點(diǎn)數(shù)據(jù)連續(xù)取n個值進(jìn)行采樣,然后求算術(shù)平均。這種方法一般適用于具有隨機(jī)干擾的信號的濾波。這種信號的特點(diǎn)是有一個平均值,信號在某一數(shù)值范圍附近上下波動。85這種濾波法,當(dāng)n值較大時,信號的平滑度高,但靈敏度低;當(dāng)n值較小時,平滑度低,但靈敏度高。應(yīng)視具體情況選取n值,既要節(jié)約時間,又要濾波效果好。對于一般流量測量,通常取經(jīng)驗(yàn)值n
=
12;若為壓力測量,則取經(jīng)驗(yàn)值n
=
4。一般情況下,經(jīng)驗(yàn)值n取3~5次平均即可。
862.滑動平均濾波法算術(shù)平均濾波法,每計(jì)算一次數(shù)據(jù)需要測量n次。對于測量速度較慢或要求數(shù)據(jù)計(jì)算速度較快的實(shí)時控制系統(tǒng)來說,該法無效。介紹一種只需測量一次,就能得到當(dāng)前算術(shù)平均值的方法—滑動平均濾波法?;瑒悠骄鶠V波法把n個采樣值看成一個隊(duì)列,隊(duì)列的長度為n,每進(jìn)行一次采樣,就把最新的采樣值放入隊(duì)尾,而扔掉原來隊(duì)首的一個采樣值,這樣在隊(duì)列中始終有n個“最新”采樣值。對隊(duì)列中的n個采樣值進(jìn)行平均,就可以得到新的濾波值。87滑動平均濾波法對周期性干擾有良好的抑制作用,平滑度高,靈敏度低;但對偶然出現(xiàn)的脈沖性干擾的抑制作用差,不易消除由此引起的采樣值的偏差。因此不適用于脈沖干擾比較嚴(yán)重的場合。通常,觀察不同n值下滑動平均的輸出響應(yīng),據(jù)此選取n值,以便既少占有時間,又能達(dá)到最好的濾波效果,其工程經(jīng)驗(yàn)值參考如下:
88參數(shù)溫度壓力流量液面n值1~44124~123.中位值濾波法是對某一被測參數(shù)接連采樣n次(一般n取奇數(shù)),然后把n次采樣值按大小排列,取中間值為本次采樣值。能有效地克服因偶然因素引起的波動干擾。對溫度、液位等變化緩慢的被測參數(shù)能收到良好的濾波效果。但對流量、速度等快速變化的參數(shù)一般不宜采用本法。89中位值濾波法的實(shí)質(zhì)是,首先把n個采樣值從小到大或從大到小進(jìn)行排序,然后再取中間值。n個數(shù)據(jù)按大小順序排隊(duì)的具體做法是采用“冒泡法”(排序程序設(shè)計(jì)見第4章)進(jìn)行比較,直到最大數(shù)沉底為止,然后再重新進(jìn)行比較,把次大值放到n
?
1位,依次類推,則可將n個數(shù)按從小到大順序排列。
904.去極值平均值濾波法 在脈沖干擾比較嚴(yán)重的場合,則干擾將會“平均”到結(jié)果中去,故前述兩種平均值法不易消除由于脈沖干擾而引起的誤差。這時可采用去極值平均值濾波法。 思想:連續(xù)采樣n次后累加求和,同時找出其中的最大值與最小值,再從累加和中減去最大值和最小值,按n
?
2個采樣值求平均,即可得到有效采樣值。這種方法類似于體育比賽中的去掉最高、最低分,再求平均分的評分辦法。為使平均濾波算法簡單,n
?
2應(yīng)為2、4、6、8或16,故n常取4、6、8、10或18。91具體做法有兩種: 對快變參數(shù),先連續(xù)采樣n次,然后再處理,但要在RAM中開辟n個數(shù)據(jù)的暫存區(qū); 對慢變參數(shù),可邊采樣,邊處理,而不必在RAM中開辟數(shù)據(jù)暫存區(qū)。實(shí)踐中,為加快測量速度,一般n取4。
9213.4.4開關(guān)量輸入/輸出軟件抗干擾設(shè)計(jì)如干擾只作用在系統(tǒng)I/O通道上,可用如下方法減小或消除其干擾。1.開關(guān)量輸入軟件抗干擾措施干擾信號多呈毛刺狀,作用時間短。利用該特點(diǎn),在采集某一狀態(tài)信號時,可多次重復(fù)采集,直到連續(xù)兩次或多次采集結(jié)果完全一致時才可視為有效。若相鄰的檢測內(nèi)容不一致,或多次檢測結(jié)果不一致,則是偽輸入信號,此時可停止采集,給出報(bào)警信號。由于狀態(tài)信號主要來自各類開關(guān)型狀態(tài)傳感器,對這些信號采集不能用多次平均方法,必須絕對一致才行。93在滿足實(shí)時性前提下,如果在各次采集狀態(tài)信號間增加一段延時,效果會更好,以對抗較寬時間范圍的干擾。延時時間在10~100μs。每次采集的最高次數(shù)限制和連續(xù)相同次數(shù)均可按實(shí)際情況適當(dāng)調(diào)整。2.開關(guān)量輸出軟件抗干擾措施輸出信號中,很多是驅(qū)動各種警報(bào)裝置、各種電磁裝置的狀態(tài)驅(qū)動信號??垢蓴_的有效輸出方法是,重復(fù)輸出同一個數(shù)據(jù),只要有可能,重復(fù)周期應(yīng)盡量短。外設(shè)收到一個被干擾的錯誤信息后,還來不及做出有效的反應(yīng),一個正確的輸出信息又到來了,可及時防止錯誤動作的產(chǎn)生。94在執(zhí)行輸出功能時,應(yīng)將有關(guān)輸出芯片的狀態(tài)也一并重復(fù)設(shè)置。例如,82C55芯片常用來擴(kuò)展輸入/輸出功能,很多外設(shè)通過它們獲得單片機(jī)的控制信息。這類芯片均應(yīng)進(jìn)行初始化編程,已明確各端口的功能。由于干擾的作用,有可能無意中將芯片的編程方式改變。為了確保輸出功能正確實(shí)現(xiàn),輸出功能模塊在執(zhí)行具體的數(shù)據(jù)輸出之前,應(yīng)先執(zhí)行對芯片的初始化編程指令,再輸出有關(guān)數(shù)據(jù)。9513.4.5過程通道干擾的抑制措施--隔離在數(shù)據(jù)采集或?qū)崟r控制中,過程通道是系統(tǒng)輸入、輸出與單片機(jī)之間進(jìn)行信息傳輸?shù)穆窂?,模擬量的輸入輸出、開關(guān)量輸入輸出是必不可少的。過程通道的輸入輸出信號線和控制線多,且長度往往達(dá)幾百米或幾千米,因此不可避免地將干擾引入單片機(jī)系統(tǒng)。消除或減弱過程通道的干擾主要采用光電隔離技術(shù)。961.光電隔離的基本配置 采用光電耦合器可以將單片機(jī)與前向、后向以及其他部分切斷電路的聯(lián)系,能有效地防止干擾從過程通道進(jìn)入單片機(jī)。其原理如圖13-15所示。
圖13-15
光電耦合隔離的基本配置97優(yōu)點(diǎn)是能有效抑制尖峰脈沖以及各種噪聲干擾,從而使過程通道上的信噪比大大提高。2.光電隔離的實(shí)現(xiàn)(1)數(shù)據(jù)總線的隔離對單片機(jī)數(shù)據(jù)總線進(jìn)行隔離是一種十分理想方法,全部I/O端口均被隔離。但由于在CPU數(shù)據(jù)總線上是高速(μS級)雙向傳輸,就要求頻率響應(yīng)為MHz級的隔離器件,而這種器件目前價格較高。因此,這種方法采用不多。通常采用下列方法將ADC、DAC與單片機(jī)之間的電氣聯(lián)系切斷。98(2)對A/D、D/A進(jìn)行模擬隔離
對A/D、D/A變換前后的模擬信號進(jìn)行隔離,是常用的一種方法。通常采用隔離放大器對模擬量進(jìn)行隔離。但所用的隔離型放大器必須滿足A/D、D/A變換的精度和線性要求。例如,如果對12位A/D、D/A變換器進(jìn)行隔離,其隔離放大器要達(dá)到13位,甚至14位精度,如此高精度的隔離放大器,價格昂貴。
99(3)在I/O與A/D、D/A之間進(jìn)行數(shù)字隔離這種方案最經(jīng)濟(jì),也稱數(shù)字隔離。A/D變換時,先將模擬量變?yōu)閿?shù)字量,對數(shù)字量進(jìn)行隔離,然后再送入單片機(jī)。D/A變換時,先將數(shù)字量進(jìn)行隔離,然后進(jìn)行D/A變換。這種方法的優(yōu)點(diǎn)是方便、可靠、廉價,不影響A/D、D/A的精度和線性度。缺點(diǎn)是速度不高。如果用廉價的光電隔離器件,最大轉(zhuǎn)換速度約為每秒3000~5000點(diǎn),這對于一般工業(yè)測控對象(如溫度、濕度、壓力等)已能滿足要求。圖13-16所示是實(shí)現(xiàn)數(shù)字隔離的一個例子。
100
圖13-16
數(shù)字隔離原理圖101該例將輸出的數(shù)字量經(jīng)鎖存器鎖存后,驅(qū)動光電隔離器,經(jīng)光電隔離之后的數(shù)字量被送到D/A變換器。但要注意的是,現(xiàn)場電源F+5V,現(xiàn)場地FGND和系統(tǒng)電源S+5V及系統(tǒng)地SGND,必須分別由兩個隔離電源供電。還應(yīng)指出的是,光電隔離器件的數(shù)量不能太多,由于光電隔離器件的發(fā)光二極管與受光三極管之間存在分布電容。當(dāng)數(shù)量較多時,必須考慮將并聯(lián)輸出改為串聯(lián)輸出的方式,這樣可使光電器件大大減少,且保持很高的抗干擾能力,但傳送速度下降了。13.4.6印刷電路板抗干擾布線的基本原則印刷電路板布線好壞對抗干擾能力影響很大,決不單是器件、線路的簡單布局安排,須符合抗干擾布線原則。1.地線的布置在單片機(jī)測控系統(tǒng)中,地線的布置是否合理,將決定電路板的抗干擾能力。(1)地線寬度加粗地線能降低導(dǎo)線電阻,是它能通過三倍于印制板上的允許電流。如有可能,地址寬度應(yīng)在2~3mm以上,元件引腳上的接地線應(yīng)該在1.5mm左右。103(2)接地線構(gòu)成閉環(huán)路在設(shè)計(jì)邏輯電路的印刷電路板時,其地線構(gòu)成閉環(huán)路能明顯地提高抗噪聲能力。閉環(huán)形狀能顯著地縮短線路的環(huán)路,降低線路阻抗,從而減少干擾。但要注意環(huán)路所包圍的面積越小越好。(3)地線應(yīng)盡量寬最好使用大面積敷銅,這對接地點(diǎn)問題有相當(dāng)大的改善。在布線工作的最后,用地線將電路板沒有走線的地方鋪滿。有助于增強(qiáng)電路的抗干擾能力。104(4)分區(qū)集中并聯(lián)一點(diǎn)接地當(dāng)同一印制板上有多個不同功能的電路時,可將同一功能單元的元器件集中于一點(diǎn)接地,自成獨(dú)立回路。這就可使地線電流不會流到其它功能單元的回路中去,避免對其它單元的干擾。與此同時,還應(yīng)將各功能單元的接地塊與主機(jī)的電源地相連接,如圖13
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人房屋買賣合同模板(含貸款條款)4篇
- 2025年度個人借款三方擔(dān)保合同糾紛解決條款4篇
- 年度腎上腺皮質(zhì)激素類藥產(chǎn)業(yè)分析報(bào)告
- 2025年個人購房合同(含房屋保險(xiǎn)服務(wù))
- 2025年度高速公路隧道照明安裝與維護(hù)合同模板3篇
- 二零二五年度高品質(zhì)抹灰施工班組勞務(wù)分包協(xié)議3篇
- 2025年度個人入股合作協(xié)議書范本:航空航天股權(quán)投資協(xié)議3篇
- 2025年度有機(jī)茶園種植與產(chǎn)品銷售合作協(xié)議范本4篇
- 網(wǎng)絡(luò)教育課程設(shè)計(jì)
- 2024版新房購買中介合作協(xié)議
- T-SDLPA 0001-2024 研究型病房建設(shè)和配置標(biāo)準(zhǔn)
- (人教PEP2024版)英語一年級上冊Unit 1 教學(xué)課件(新教材)
- 全國職業(yè)院校技能大賽高職組(市政管線(道)數(shù)字化施工賽項(xiàng))考試題庫(含答案)
- 2024胃腸間質(zhì)瘤(GIST)診療指南更新解讀 2
- 光儲電站儲能系統(tǒng)調(diào)試方案
- 2024年二級建造師繼續(xù)教育題庫及答案(500題)
- 小學(xué)數(shù)學(xué)二年級100以內(nèi)連加連減口算題
- 建設(shè)單位如何做好項(xiàng)目管理
- 三年級上遞等式計(jì)算400題
- 一次性餐具配送投標(biāo)方案
- 《中華民族多元一體格局》
評論
0/150
提交評論