基于數(shù)字濾波的單片機仿真和C語言開發(fā)_第1頁
基于數(shù)字濾波的單片機仿真和C語言開發(fā)_第2頁
基于數(shù)字濾波的單片機仿真和C語言開發(fā)_第3頁
基于數(shù)字濾波的單片機仿真和C語言開發(fā)_第4頁
基于數(shù)字濾波的單片機仿真和C語言開發(fā)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計任務(wù)書學(xué)生姓名: 周國陽 專業(yè)班級: 電信1001 指導(dǎo)教師: 阮軍 工作單位: 信息工程學(xué)院 題 目: 基于數(shù)字濾波的單片機仿真和C語言開發(fā) 初始條件:本課程設(shè)計,要求用使用Proteus仿真軟件進行系統(tǒng)設(shè)計與仿真。 要求完成的主要任務(wù): (包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)1、課程設(shè)計工作量:1周內(nèi)完成對系統(tǒng)的設(shè)計、仿真。2、技術(shù)要求:1)設(shè)計一種數(shù)字濾波器,比如:中值濾波算法、算術(shù)平均濾波算法、加權(quán)平均濾波算法、滑動平均濾波算法等,自行設(shè)計輸入信號的形式(了解各種GENERATORS的使用)。要求進行電路仿真實驗,并使用C語言進行程序的開發(fā)。 2)要求學(xué)生

2、主動思考,自主發(fā)揮,實現(xiàn)系統(tǒng)的特色功能。3、查閱至少5篇參考文獻。按武漢理工大學(xué)課程設(shè)計工作規(guī)范要求撰寫設(shè)計報告書。全文用A4紙打印,圖紙應(yīng)符合繪圖規(guī)范。提交報告的主要內(nèi)容:(使用Proteus 7.5 sp3)1) 題目2) 仿真所完成的主要功能和特色簡介摘要(特別是自己擴展的功能,根據(jù)特色功能評優(yōu))3) Proteus仿真的基本流程4) 所使用芯片以及引腳功能簡介(需要提供對應(yīng)芯片DataSheet的下載鏈接)5) 設(shè)計方案與工作原理,給出仿真電路圖6) 實驗記錄與結(jié)果分析時間安排:1) 第1天, 查閱相關(guān)資料,學(xué)習(xí)設(shè)計原理。2) 第23天, 方案選擇和電路設(shè)計仿真。3) 第4天, 設(shè)計說

3、明書撰寫。4) 第5天, 上交報告,同時進行答辯。 指導(dǎo)教師簽名: 年 月 日系主任(或責(zé)任教師)簽名: 年 月 日目錄摘要IAbstractII1. 開發(fā)環(huán)境11.1仿真工具11.2編程工具12硬件模塊22.1 MCS-51單片機22.2 AD轉(zhuǎn)換器22.3 DA轉(zhuǎn)換器23.數(shù)字濾波器的算法33.1中值濾波器設(shè)計33.2加權(quán)平均濾波33.3限幅濾波43.4 滑動平均濾波44.系統(tǒng)的設(shè)計54.1系統(tǒng)框圖65.系統(tǒng)電路圖76.仿真結(jié)果97.系統(tǒng)分析118.總結(jié)12參考文獻13附錄一 程序代碼14武漢理工大學(xué)能力拓展訓(xùn)練課程設(shè)計說明書摘要本次項目是要我們利用51單片機設(shè)計出幾種數(shù)字濾波器。隨著現(xiàn)在

4、對濾波器的要求越來越高,模擬濾波器已經(jīng)不能滿足工業(yè)的要求。在這種情況下,數(shù)字濾波器得到了很大的發(fā)展。數(shù)字濾波器的實現(xiàn)過程的實現(xiàn)過程是把輸入的模擬信號數(shù)字化,也就是由采樣器對輸入的模擬信號進行周期性的采樣,并對每個樣本進行量化和編碼,即模數(shù)轉(zhuǎn)換。從ADC輸出的數(shù)字信號送入到數(shù)字信號處理器進行處理變化,處理器輸出的數(shù)字信號再通過數(shù)模轉(zhuǎn)換為模擬信號,這個過程要用到DAC來轉(zhuǎn)換實現(xiàn)模擬信號的輸出。關(guān)鍵字:51單片機;數(shù)字濾波器;ADC;DACAbstract The project is for us to take advantage of 51 single design several digi

5、tal filters. With the filter now increasingly demanding, analog filters can not meet the industry requirements. In this case, the digital filter has been greatly developed. Realization of the process of realization of a digital filter to the analog input signal is digitized, that is sampled by the a

6、nalog input signal is periodically sampled and each sample is quantized and coded, i.e., analog to digital conversion. ADC output digital signal is fed to the digital signal processor for processing the change, and then outputs the digital signal processor is converted to analog by digital to analog

7、 signals, to use this process to convert the DAC output analog signal.Keywords: 51 single; digital filter; ADC; DACII武漢理工大學(xué)能力拓展訓(xùn)練課程設(shè)計說明書1. 開發(fā)環(huán)境1.1仿真工具我們這次在進行硬件仿真時運用的proteus工具,它具有以下功能:(1)能實現(xiàn)單片機仿真和SPICE電路仿真的結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機及其外圍電路組成的系統(tǒng)仿真、RS232動態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真等功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號

8、發(fā)生器等。(2)支持主流單片機系統(tǒng)的仿真。目前支持的單片機類型有68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。(3)提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點等調(diào)試功能,同時可以觀察各個變量、寄存器等的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil C51 uVision2等軟件。(4)具有強大的原理圖繪制功能。1.2編程工具 Keil軟件是目前最流行開發(fā)MCS-51系列單片機的軟件,這從近年來各仿真機廠商紛紛宣布全面支持Keil即可看出。

9、Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。 掌握這一軟件的使用對于使用51系列單片機的愛好者來說是十分必要的,如果你使用C語言編程,那么Keil幾乎就是你的不二之選(目前在國內(nèi)你只能買到該軟件、而你買的仿真機也很可能只支持該軟件),即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強大的軟件仿真調(diào)試工具也會令你事半功倍。2硬件模塊2.1 MCS-51單片機51單片機內(nèi)包含下列幾個部件:一個8位CPU;一個片內(nèi)振蕩器及時鐘電路;4KB ROM程序存儲器;128B RAM數(shù)據(jù)

10、存儲器;可尋址64KB外部數(shù)據(jù)存儲器和64KB外部程序存儲器空間的控制電路;32條可編程的I/O線(4個8位并行I/O端口);兩個16位的定時/計數(shù)器;5個中斷源、兩個優(yōu)先級嵌套中斷結(jié)構(gòu)。2.2 AD轉(zhuǎn)換器本次課程設(shè)計仿真使用的是ADC0808,ADC0808是采樣分辨率為8位的、以逐次逼近原理進行模/數(shù)轉(zhuǎn)換的器件。其內(nèi)部有一個8通道多路開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號,只選通8路模擬輸入信號中的一個進行A/D轉(zhuǎn)換。ADC0808是ADC0809的簡化版本,功能基本相同。一般在硬件仿真時采用ADC0808進行A/D轉(zhuǎn)換,實際使用時采用ADC0809進行A/D轉(zhuǎn)換。ADC0808是CMOS

11、單片型逐次逼近式A/D轉(zhuǎn)換器,它有8路模擬開關(guān)、地址鎖存與譯碼器、比較器、8位開關(guān)樹型A/D轉(zhuǎn)換器。2.3 DA轉(zhuǎn)換器 DAC0832引腳功能電路應(yīng)用原理圖DAC0832是采樣頻率為八位的D/A轉(zhuǎn)換芯片,集成電路內(nèi)有兩級輸入寄存器,使DAC0832芯片具備雙緩沖、單緩沖和直通三種輸入方式,以便適于各種電路的需要(如要求多路D/A異步輸入、同步轉(zhuǎn)換等)。D/A轉(zhuǎn)換結(jié)果采用電流形式輸出。若需要相應(yīng)的模擬電壓信號,可通過一個高輸入阻抗的線性運算放大器實現(xiàn)。運放的反饋電阻可通過RFB端引用片內(nèi)固有電阻,也可外接。DAC0832邏輯輸入滿足TTL電平,可直接與TTL電路或微機電路連接。3.數(shù)字濾波器的算

12、法3.1中值濾波器設(shè)計中值濾波是先對某一參數(shù)連續(xù)采樣N次(一般N取奇數(shù)),然后把N次采樣值按從小到大排列,取中間值為本次采樣值。該濾波方法實際上是一種排序方法,我在此采用的是冒泡法排序。由于在冒泡法排序中,每出現(xiàn)一次前者數(shù)據(jù)大于后者數(shù)據(jù),就要進行二者數(shù)據(jù)的交換。中值濾波是基于排序統(tǒng)計理論的一種能有效抑制噪聲的非線性信號處理技術(shù),中值濾波的基本原理是把數(shù)字圖像或數(shù)字序列中一點的值用該點的一個鄰域中各點值的中值代替,讓周圍的像素值接近的真實值,從而消除孤立的噪聲點。方法是去某種結(jié)構(gòu)的二維滑動模板,將板內(nèi)像素按照像素值的大小進行排序,生成單調(diào)上升(或下降)的為二維數(shù)據(jù)序列。二維中值濾波輸出為g(x,

13、y)=medf(x-k,y-l),(k,lW) ,其中,f(x,y),g(x,y)分別為原始圖像和處理后圖像。W為二維模板,通常為2*2,3*3區(qū)域,也可以是不同的的形狀,如線狀,圓形,十字形,圓環(huán)形等。中值濾波能有效地克服偶然因素引起的波動或采樣器不穩(wěn)定引起的誤碼等脈沖干擾。對溫度、液位等緩慢變化的被測參數(shù)采用此算法能收到良好的濾波效果,但對于流量、壓力等快速變化的數(shù)據(jù),不宜采用中位值濾波。3.2加權(quán)平均濾波在算術(shù)平均濾波和移動平均濾波中,N次采樣值在輸出結(jié)果中的權(quán)重是均等的,取1/N。用這樣的濾波算法,對于時變信號會引入滯后,N值越大,滯后越嚴重。為了增加新采樣數(shù)據(jù)在移動平均中的權(quán)重,以提

14、高系統(tǒng)對當(dāng)前采樣值中所受干擾的靈敏度,可采用加權(quán)平均濾波,它是移動平均濾波算法的改進。加權(quán)平均濾波是對連續(xù)N次采樣值分別乘上不同的加權(quán)系統(tǒng)之后再求累加和,加權(quán)系統(tǒng)一般先小后大,以突出后面若干采樣的效果,加強系統(tǒng)對參數(shù)變化趨勢的辨識。各個加權(quán)系統(tǒng)均為小于1的小數(shù),且滿足總和等于1的約束條件。這樣,加權(quán)運算之后的累加和即為有效采樣值。為方便計算,可取各加權(quán)系數(shù)均為整數(shù),且總和為256,加權(quán)運算后的累加和除以256,即舍去低字節(jié)后便是有效采樣值。3.3限幅濾波限幅濾波的基本原理是把兩次相鄰時刻(n和n-1)的采樣值Yn和Yn-1相減,求出其差值,以絕對值表示,然后將這個差值與兩次采樣允許的最大偏差值

15、Y比較,如果兩次采樣值的差值超過了允許的最大偏差值Y,則認為發(fā)生了隨機干擾,并認為最后一次采樣值Yn非法,應(yīng)予剔除。剔除Yn后,可用Yn-1代替Yn;若未超過允許的最大偏差值范圍,則認為本次采樣值有效??捎萌缦鹿奖硎荆簗Yn-Yn-1|Y;則Yn有效|Yn-Yn-1|Y;則Yn-1有效。3.4 滑動平均濾波把連續(xù)取N個采樣值看成一個隊列,隊列的長度固定為N每次采樣到一個新數(shù)據(jù)放入隊尾,并扔掉原來隊首的一次數(shù)據(jù).(先進先出原則)把隊列中的N個數(shù)據(jù)進行算術(shù)平均運算,就可獲得新的濾波結(jié)果N值的選?。毫髁?,N=12;壓力:N=4;液面,N=412;溫度,N=14。對周期性干擾有良好的抑制作用,平滑度

16、高適用于高頻振蕩的系統(tǒng)。4.系統(tǒng)的設(shè)計在我們這個項目中要求我們選取其中的一種數(shù)字濾波器來設(shè)計,但在做的過程中我們發(fā)現(xiàn)這些數(shù)字濾波器在我們學(xué)習(xí)MATLAB時很多都是接觸過的,它們的算法都可以找到。所以我在做項目時把四種方式都加上去了,我們可以根據(jù)實際的波形靈活選擇濾波器的方式。在一開始輸入的波形是模擬波形,我們要把它轉(zhuǎn)換成數(shù)字波形,這樣我們才能用數(shù)字濾波的方法對它進行濾波,所以我們用到了AD轉(zhuǎn)換器。當(dāng)使用算法進行濾波后,現(xiàn)在的波是數(shù)字方式存在,我們要輸出它,要以模擬波形的方式輸出,所以我們用到了DA轉(zhuǎn)換器。在選擇波形的時候,在這里我們選擇了在鍵盤。鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通

17、常將按鍵排列成矩陣形式。式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如P1口)就可以構(gòu)成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯。由此可見,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是合理的。4.1系統(tǒng)框圖開始 待鍵盤信號系統(tǒng)初始化選擇K1AD采樣量化是 中值濾波單片機處理否選擇K2是DA轉(zhuǎn)換輸出 加權(quán)平均濾波否選擇K3 是結(jié)束限幅濾波否選擇K4 是 滑動平均濾波 否圖1 程序框圖5.系統(tǒng)電路圖圖2系統(tǒng)電路圖 我們在做個項目時在控制部分我們用的是51系列單片機AT89C51,利用這個單片機進行編程,實現(xiàn)對輸入信

18、號的濾波。我使用了P0口作為接受AD轉(zhuǎn)換的結(jié)果的端口,而P1口則輸出數(shù)據(jù)到DA轉(zhuǎn)換器。另外還利用了P2作為控制端口,P2.0-P2.2用來控制AD轉(zhuǎn)換器,而P2.3-P2.6外接四個開關(guān),用來實現(xiàn)濾波方式的選擇。在采集波形電路部分,ADC0809是帶地址鎖存的模數(shù)轉(zhuǎn)換器件,ADDA、ADDB、ADDC為模擬通道選擇,編碼為000111分別選中IN0IN7。ALE為地址鎖存信號,其上升沿鎖存ADDA、ADDB、ADDC的信號,譯碼后控制模擬開關(guān),接通八路模擬輸入中相應(yīng)的一路。CLK為輸入時鐘,為AD轉(zhuǎn)換器提供轉(zhuǎn)換的時鐘信號,典型工作頻率為640KHz。START為AD轉(zhuǎn)換啟動信號,正脈沖啟動AD

19、DAADDC選中的一路模擬信號開始轉(zhuǎn)換。OE為輸出允許信號,高電平時候打開三態(tài)輸出緩存器,是轉(zhuǎn)換后的數(shù)字量從D0D7輸出。EOC為轉(zhuǎn)換結(jié)束信號,啟動轉(zhuǎn)換后EOC變?yōu)榈碗娖?,轉(zhuǎn)換完成后EOC編程高電平。在數(shù)模轉(zhuǎn)換電路中,我用了DA0832來進行數(shù)模轉(zhuǎn)換。DA0832有三種數(shù)模轉(zhuǎn)換方法,直通方式、單緩沖方式、雙緩沖方式,因為單片機輸出后可以直接進行數(shù)模轉(zhuǎn)換,所以這里我采用了不需要單片機控制的最為簡單的直通方式,但是DA0832若用于直通方式。若用于直通方式下,則GND均接地,而VCC和ILE則接正電源。VREF是參考電源。IOUT1、IOUT2是兩個輸出端。DA0832輸出的是電流,要利用運算放大

20、器轉(zhuǎn)換成電壓信號。在電路的供電部分,由于此次系統(tǒng)的芯片工作電壓為+5v,所以用常用的三端穩(wěn)壓器LM317和LM337構(gòu)成的電源系統(tǒng)供電,其中ADC0809要提供一個準確的參考電源才能正常的工作,而LM317正好能夠達到要求。6.仿真結(jié)果限幅濾波波形圖中值濾波波形圖加權(quán)平均濾波波形圖滑動平均濾波波形圖7.系統(tǒng)分析通過仿真我們發(fā)現(xiàn),系統(tǒng)中所設(shè)計出的四種濾波器濾波方法基本上都能夠得到了實現(xiàn)。限幅濾波的效果是和A值有關(guān)的,一般情況下,A值越小,則代表允許的噪聲要越小,限幅濾波很適用于使幅值突變的噪聲。中值濾波由于要求中值,所用到的排序算法會大大消耗時間,因此延時比較嚴重,但是總的來說選擇排序比冒泡排序

21、的延時情況要好。加權(quán)遞推平均算法和上面一樣,因為會求平均值,因此也會有時候產(chǎn)生中間值,但是如果把當(dāng)前值得權(quán)值設(shè)的很大,而越久遠之前的權(quán)值設(shè)的越小,則可明顯改善此問題,另外由于加權(quán)遞推平均濾波中用到的乘法,因此會有一定的延時。8.總結(jié)參考文獻1. 李全利,單片機原理及接口技術(shù), 北京:高等教育出版社,2004 2. 張毅剛,單片機原理及應(yīng)用,北京:高等教育出版社,20073. 徐仁貴,微型計算機接口技術(shù)及應(yīng)用,北京:機械工業(yè)出版社,2007 4. 諸昌鈐,單片機原理,成都:電子科技大學(xué)出版社,2004 5. 梅開鄉(xiāng),數(shù)字邏輯電路,北京:電子工業(yè)出版社,2003附錄一 程序代碼#include &

22、lt;reg51.h>#define uchar unsigned char#define A 0.005#define N 11sbit OE = P20;sbit START = P21;sbit EOC = P22;sbit key1=P10;sbit key2=P11;sbit key3=P16;sbit key4=P17;uchar a,z1,z2,z3,z4;ucharbufN =0;void change()int i;for(i=0;i<N-1;i+)bufi=bufi+1;bufN-1=a;ucharget_data(n)change();returnbufn;u

23、charKeyscan(void) /判斷按鍵P1=0x3f;if(key1=0) /行掃描z1=1,z2=0;if(key2=0)z2=1,z1=0;if(z1=1) /列掃描 P1=0xfc;if(key4=0)z3=1;if(key3=0)z3=2;if(z2=1)P1=0xfc;if(key4=0)z3=3;if(key3=0)z3=4;return z3; uchar filter1()/中值濾波ucharvalue_buffN,temp; intcount,j,k;for(count=0;count<N;count+) value_buffcount=get_data(cou

24、nt);for(j=0;j<N-1;j+) k=j;for(j=j+1;j<N;j+)if(value_buffj<value_buffk) temp=value_buffk;value_buffk=value_buffj;value_buffj=temp; returnvalue_buff(N-1)/2;uchar filter2() /限幅濾波 ucharnew_value,value;value=get_data(N-2); new_value = get_data(N-1); if ( ( new_value - value > A ) | ( value - new_

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論