基于單片機的數字濾波器設計_第1頁
基于單片機的數字濾波器設計_第2頁
基于單片機的數字濾波器設計_第3頁
基于單片機的數字濾波器設計_第4頁
基于單片機的數字濾波器設計_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上基于單片機數字濾波器設計摘 要數據采集又稱數據獲取,是利用一種裝置,從系統外部采集數據并輸入到系統內部的一個接口。數據采集技術廣泛應用在各個領域。比如攝像頭,麥克風,都是數據采集工具。被采集數據是已被轉換為電訊號的各種物理量,如溫度,水位,風速,壓力等,可以是模擬量,也可以是數字量。在互聯網行業(yè)快速發(fā)展的今天,數據采集已經被廣泛應用于互聯網及分布式領域,數據采集領域已經發(fā)生重要變化。而在數據采集中存在各種噪聲。濾除噪聲的方法有很多種,既有數字濾波器,也有模擬濾波器。本文采用了基于單片機和c語言來設計并開發(fā)數字濾波系統。針對于單片機數據采集系統中經常出現的隨機干擾,通過

2、交流信號發(fā)生器輸入來模擬數據采集過程,驗證了幾種使用較為普遍的克服隨機干擾的單片機數字濾波算法,并給出了相應的c程序,同時也對這幾種濾波算法進行了比較,并指出每一種算法具體適用范圍和注意事項。另外本文使用了proteus進行仿真驗證這幾種濾波方法,用了AD和DA來采集及輸出數據。關鍵詞 單片機/proteus/數字濾波。BASED ON SCM DIGITALFILTER DESIGNABSTRACTData acquisition, also called data acquisition is the use of a device from the system input to ext

3、ernal data collection and an interface that internal system. Data collection technology is widely quoted in various fields. Such as cameras, microphones, are data acquisition tools. Are collected data has been converted to telecommunications number of various physical quantities such as temperature,

4、 pressure, water, wind speed, etc, can be analogue, also can be the digital quantity. In the Internet industry fast development today, data acquisition has been widely used in Internet and distributed field, data acquisition field has changed in important changes. And in data acquisition exist in al

5、l sorts of noise. Filter out the noise a variety of ways, both digital filters, also have simulation filter. Here we adopted based on SCM and C language to design and develop digital filtering system. We based on single-chip microcomputer data acquisition system often appears in the random disturban

6、ce, through the manual input to simulate data acquisition process, and verifies the several use common overcome random disturbance single-chip digital filtering algorithm, and presents the corresponding C program, especially for the median value filter and the median value average filtering algorith

7、m procedures were improved. Also on this compares several filtering algorithm, and points out the concrete each kind of algorithm is applicable range and precautions. In addition we use the simulation test this proteus several filtering method. In addition we still use the AD and DA to harvest and o

8、utput data. KEY WORDS microcontroller, proteus, digital filter 目 錄專心-專注-專業(yè)1 緒 論1.1 數字濾波器特點 現在工業(yè)控制系統中,電路系統變得越來越復雜,因而帶來的相互干擾也越來越強烈,模擬濾波電路已不能滿足要求,數字濾波應運而生。數字濾波器是數字信號處理器的一種,在進行數據采集和數據傳輸過程中,經常會受到各種外界干擾,當干擾嚴重時,可導致系統的測控精度降低甚至無法正常工作,數字濾波器則通過計算機執(zhí)行一段相應的程序來濾除夾雜在數字信號中的干擾信號。它所處理的對象是用序列表示的離散信號或是數字信號,因而可以實現一些高難度的復

9、雜處理,而且具有工作穩(wěn)定,受環(huán)境因素小,抗干擾性能強精度可控等優(yōu)點。因而現階段被廣泛應用,而用單片機實現數字濾波器與廣泛應用的DSP處理器相比,具有成本低,體積小,可靠性強等優(yōu)點,因而在一定場合也有一定的實用價值?!?】 從時間上看,數字信號是離散的,從幅度上看,它又是量化的。因此數字信號可用一個序列數來表示,而每個數又可表示成二進制碼的形式。數字濾波器的功能就是利用計算機軟件對一組輸入數字序列進行一定的運算,再變換成另一組輸出數字序列。對被測信號的處理,首先通過采樣/保持電路,送至模/數轉換器轉換成數字量,然后通過數字濾波器濾除其中的干擾信號,最后通過模/數轉換器獲得模擬量輸出。根據所用數學

10、模型的不同,數字濾波器可劃分為兩大類:一種是遞歸性濾波器,其特點是濾波器的輸出不僅與輸入信號有關,還與過去的輸出值有關;另一種是非遞歸性濾波器,其特征是濾波器的輸出僅與輸入信號有關,而與過去輸出值無關。設數字濾波器的輸入信號為,輸出信號為,則輸入序列與輸出序列之間的關系可用差分方程表示為公式一: (1.1)輸入信號可以是模擬信號經采樣和ADC變換后得到的數字序列,也可以是計算機的輸出信號, 均為系數,由上述差分方程組組成的數字濾波器,稱為遞歸性濾波器。若將上述差分方程中系數取做0,則得到公式二: (1.2)這種濾波器叫做非遞歸性濾波器。選擇不同的系數,則可以設計低通,高通或帶通,帶阻式數字濾波

11、器。【6】1.2 數字濾波器的設計1.設計數字濾波器時,一般按下面步驟進行:(1)根據干擾信號的特征來選擇合適的濾波器。(2)建立起典型的差分方程數學模型,并對差分方程進行Z變換,寫出其Z傳遞函數。(3)根據有用信號與干擾信號的頻率特征,來確定系統期望的通頻帶。(4)根據Z傳遞函數,確定其幅頻特性和相頻特性,再對Z進行反變換,求出濾波器的線性離散方程。(5)按照線性差分方程來編制相應的軟件,最終實現數字濾波的功能。2. 數字濾波器的軟件設計在測控系統中,由于各種參數的干擾成分不同,因而濾除這些干擾成分的方式也不同,本論文將用到中值濾波,算數平均濾波,加權平均濾波,中位值平均濾波,限幅濾波這五種

12、方法,可根據具體情況加以選用。2 數字濾波設計原理 這里有很多種熟悉濾波方法,我們見選用其中幾種來進行設計,如中值濾波,算數平均濾波,加權平均濾波等等。所以下面我將詳細介紹它們。2.1 中值位濾波是先對某中值濾波一參數連續(xù)采樣N次(一般N取奇數),然后把N次采樣值按從小到大排列,取中間值為本次采樣值。該濾波方法實際上是一種排序方法,我在此采用的是冒泡法排序。由于在冒泡法排序中,沒出現一次前者數據大于后者數據,就要進行兩者數據的交換。該算法樣例子程序如下:#define N 11  /N值可根據實際情況調整char filter()char value_buf;char count,i

13、,j,k,temp;for(count=0;count<N;count+) /獲取數據value_bufcount=get_data();delay();for(i=0;i<N-1;i+) /選擇排序 k=i;for(j=i+1;j<N;j+)      if(value_bufj<value_bufk) k=j;      temp=value_bufk;      value_bufk=value_bufi;

14、      value_bufi=temp;      return value_buf(N-1)/2; 中位值濾波能有效地克服偶然因素引起的波動或采樣器不穩(wěn)定引起的誤碼等脈沖干擾。對溫度、液位等緩慢變化的被測參數采用此算法能收到良好的濾波效果,但對于流量、壓力等快速變化的數據,不宜采用中位值濾波?!?】2.2 算數平均濾波 算術平均濾波法適用于對一般的具有隨機干擾的信號進行濾波。這種信號的特點是信號本身在某一數值范圍附近上下波動,如測量流量、液位時經常遇到這種情況。算術平均濾波法是要按輸入的N

15、 個采樣數據,尋找這樣一個Y,使得Y 與各個采樣值之間的偏差的平方和最小。具體實現此算法的子程序如下:#define N 12char filter()int count;int sum=0;for(count=0;count<N;count+)   sum+=get_ad();  delay();   return (char)(sum/N); 算術平均濾波適用于對一般具有隨機干擾的信號進行濾波。這種信號的特點是有一個平均值,信號在某一數值范圍附近做上下波動,在這種情況下僅取一個采樣值做依據顯然是不準確的。算術平均濾波對信號的平滑程序完

16、全取決于N,當N較大時,平滑度高,但靈敏度低;當N較小時,平滑度低,但靈敏度高,應視具體情況選取N,以便既少占用計算時間,又達到最好的效果。【7】2.3 加權平均濾波 在算術平均濾波和移動平均濾波中,N次采樣值在輸出結果中的權重是均等的,取1/N。用這樣的濾波算法,對于時變信號會引入滯后,N值越大,滯后越嚴重。為了增加新采樣數據在移動平均中的權重,以提高系統對當前采樣值中所受干擾的靈敏度,可采用加權平均濾波,它是移動平均濾波算法的改進。加權平均濾波是對連續(xù)N次采樣值分別乘上不同的加權系統之后再求累加和,加權系統一般先小后大,以突出后面若干采樣的效果,加強系統對參數變化趨勢的辨識。各個加權系統均

17、為小于1的小數,且滿足總和等于1的約束條件。這樣,加權運算之后的累加和即為有效采樣值。為方便計算,可取各加權系數均為整數,且總和為256,加權運算后的累加和除以256,即舍去低字節(jié)后便是有效采樣值?!?】具體的樣例子程序如下:/code數組為加權系統表,存在ROM區(qū)。#define N 12char code jqN=1,2,3,4,5,6,7,8,9,10,11,12;char code sum_jp=1+2+3+4+5+6+7+8+9+10+11+12;char filter_5()char count;char value_bufN;int sum=0;for(count=0;count

18、<N;count+)value_bufcount=get_data();delay();for(count=0;count<N;count+)sum+=value_bufcount*jqcount;return (char)(sum/sum_jq);2.4 中位值平均濾波 它相當于是“中位值濾波法”和“算術平均濾波法”的結合。它連續(xù)采樣N個數據,然后去掉一個最大值和一個最小值,最后計算N-2個數據的算術平均值。一般N值選?。?-14。具體算法程序如下:#define N 12  char filter()    char

19、count,i,j;  char value_bufN;  int sum=0;  for (count=0;count<N;count+)    value_bufcount = get_ad();  delay();    for (j=0;j<N-1;j+)    for (i=0;i<N-j;i+)    if ( value_bu

20、fi>value_bufi+1 )    temp = value_bufi;  value_bufi = value_bufi+1;  value_bufi+1 = temp;        for(count=1;count<N-1;count+)  sum += valuecount;  return (char)(sum/(N-2);   這種濾波方法兼容了

21、移動平均濾波算法和中位值濾波算法的優(yōu)點,所以無論對緩慢變化的信號,還是對快速變化的信號,都能取得較好的濾波效果?!?】2.5 限幅濾波 限幅濾波的基本原理是把兩次相鄰時刻(n和n-1)的采樣值Yn和Yn-1相減,求出其差值,以絕對值表示,然后將這個差值與兩次采樣允許的最大偏差值Y比較,如果兩次采樣值的差值超過了允許的最大偏差值Y,則認為發(fā)生了隨機干擾,并認為最后一次采樣值Yn非法,應予剔除。剔除Yn后,可用Yn-1代替Yn;若未超過允許的最大偏差值范圍,則認為本次采樣值有效??捎萌缦鹿奖硎荆簗Yn-Yn-1|Y;則Yn有效 (2.1)|Yn-Yn-1|Y;則Yn-1有效 (2.2)此算法的樣

22、例子程序如下:#define A 10   /A值可根據實際情況調整char data;    /上一次的數據char filter_1()char datanew;  /新數據變量datanew=get_data();   /獲得新數據/濾波算法if (datanew-data>A)|(data-datanew>A)return data;return datanew; 該算法主要用于處理變化比較緩慢的數據,如溫度、物體的位置等。使用時關鍵在于最大偏差值的y的選擇,通??筛鶕涷灚@得,也可按照輸出參數

23、可能的最大變化速度Vmax及采樣周期T來決定Y的值,即Y=VmaxT?!?】3 濾波器硬件設計通過對系統工作原理的了解,可以大致了解數字濾波器設計的整體框圖:圖31 總體設計框圖3.1 單片機AT89C51 這里我們使用了51系列單片機AT89C51,如下圖利用這個單片機進行編程,實現對輸入信號的濾波。我使用了P0口作為接受AD轉換的結果的端口,而P1口則輸出數據到DA轉換器。另外還利用了P2作為控制端口,P2.0-P2.2用來控制AD轉換器,而P2.3-P2.6外接四個開關,用來實現濾波方式的選擇。【3】圖3-2 AT89C51引腳圖3.2 數據采集 另外我還使用了ADC0808進行數據采集

24、。這里ADC0808是并聯AD轉換器,ADC0808的引腳圖如下圖:圖3-3 ADC0808的引腳圖 IN0-IN8是八個模擬量輸入端口,ADC0808可以一次對八個模擬量進行模數轉換,但是在這里我們只使用了其中的一個輸入端IN0,所以ADDDA、ADDB、ADDC都應為0,所以我讓它們都接地。它的八個輸出端接在單片機上,CLOCK接數據采樣時鐘,它可以接在單片機上由單片機控制,也可接在另外的數字時鐘上,這里我選用外接別的時鐘。START為轉換啟動信號,在其上跳變時,所有內部寄存器清零,在其下調變時,開始進行AD轉換。ALE是地址鎖存信號。這里我讓START和ALE均接在單片機的同一個端口上,

25、即P2.1,讓單片機實現程序控制AD的轉換。OE是輸出允許信號,OE=1時,才能允許輸出,這里我讓它也接在單片機的端口P2.1上,也是為了讓單片機實現程序控制ADC0808的輸出。EOC是轉換結束信號,EOC=1時,表示轉換結束。這個信號可以用來提醒單片機AD已經轉換完畢,程序中即可以用查詢方式,也可以用中斷方式,這里我使用查詢方式,所以把它接在P2.2上。VREF(+)和VREF(-)都是參考電壓信號端口,這里我讓VREF(-)的參考電壓為零,VREF(+)的參考電壓為+3V。3.3 數模轉換輸出 這里我用了DAC0832來進行數模轉換。DAC0832的引腳圖如下圖所示:圖3-4 DAC08

26、32的引腳圖DAC0832有三種數模轉換方法,直通方式、單緩沖方式、雙緩沖方式,因為單片機輸出后可以直接進行數模轉換,所以這里我采用了不需要單片機控制的最為簡單的直通方式,但是DAC0832若用于直通方式,則在接單片機的輸出端口之間還要接一個緩沖器件,如74LS373。若用于直通方式下,則 、和GND均接地,而VCC和ILE則接正電源。VREF是參考電源。IOUT1、IOUT2是兩個輸出端。DAC0832輸出的是電流,要利用運算放大器轉換成電壓。數模轉換輸出電路如下圖所示:圖3-5 數模轉換輸出電路3.4 總體電路圖總體電路圖見附錄A4 程序設計4.1 濾波算法設計 這個在前面介紹濾波原理時已

27、經說過了,在此就不再次重復了。因為設計時采集的時鐘頻率很大,所以在一定范圍內采集的數據都差不多,因此對一系列的數據進行濾波處理時就好像是在對同一個數據進行濾波處理。但是因為這些算法處理的數據時連續(xù)采集了N個的,所以要設立一個變量數組來存儲這些輸入的數據,而且要記得及時更新。我利用了隊列的思想,如果輸入一個新的數據,則丟棄最原始的一個數據,把新數據插入進來,就好像隊列一樣,對頭刪除數據,對位插入新的數據。這個程序如下:void change()int i;for(i=0;i<N-1;i+)bufi=bufi+1;bufN-1=a;而獲得這一系列中的某一個數據就用了一個函數就可以了,直接返回

28、隊列中的第n項的數據。這個程序如下:uchar get_data(n)change();return bufn;4.2 AD轉換器 因為START為轉換啟動信號,在其上跳變時,所有內部寄存器清零,在其下調變時,開始進行AD轉換。所以設計程序時,要先讓START為0,在讓START為1,最后讓START為0。開始采集數據后就要讓OE為1,進行數據輸入。同時數據采集結束時,利用查詢語句,查看EOC是否為1,如果是1,則處于等待狀態(tài),如果變成1,則可以進行數據輸入了。AD轉換的程序如下:START = 0;START = 1;START = 0;while(EOC=0);OE = 1;a = P0;

29、這里a是一個變量,用來存儲AD輸入的數據。4.3 濾波算法的選擇 我在電路上采用的是開關控制選擇,所以這里只需要一系列的if選擇語句就可以完成率把算法的選擇。程序如下:if(con=0)    if(con1=0)&&(con2=0)&&(con3=0)         res=filter1();      if(con1=0)&&(con2=0)&&(con3=1) &

30、#160;       res=filter2();      if(con1=1)&&(con2=0)&&(con3=0)         res=filter5();      if(con1=1)&&(con2=0)&&(con3=1)       

31、  res=filter6();      if(con1=1)&&(con2=1)&&(con3=1)         res=filter8();    else         res=a;con1、con2、con3三位用來控制濾波算法的選擇,而con用來控制是否要進行濾波。4.4 總體程序總體程序見附錄B。4.5 程序流程圖圖

32、4-1 程序流程圖5 仿真結果和分析輸入波形與未經濾波器濾波波形如下:圖5-1輸入波形與未經濾波器濾波波形以下幾幅圖是經濾波后的波形:圖5-2 經限幅后的波形圖5-3 經中值濾波后的波形圖5-4 經滑動平均濾波后的波形 圖5-5 經中位值平均濾波后的波形圖5-6 經加權遞推平均濾波后的波形 限幅濾波的效果是和A值有關的,一般情況下,A值越小,則代表允許的噪聲要越小,限幅濾波很適用于使幅值突變的噪聲。中值濾波由于要求中值,所用到的排序算法會大大消耗時間,因此延時比較嚴重,但是總的來說選擇排序比冒泡排序的延時情況要好。中位值平均濾波,由于濾波算法中會求平均值在,所以在原波是方波時會出現某一次求平均

33、后編程中間值,另外由于和中值濾波一樣要進行排序,因此也會產生很大的延時。加權遞推平均算法和上面一樣,因為會求平均值,因此也會有時候產生中間值,但是如果把當前值得權值設的很大,而越久遠之前的權值設的越小,則可明顯改善此問題,另外由于加權遞推平均濾波中用到的乘法,因此會有一定的延時。  6 數字濾波器新算法分析6.1 滑動平均濾波滑動平均濾波即把連續(xù)取N個采樣值看成一個隊列,隊列的長度固定為N,每次采樣到一個新數據放入隊尾,并扔掉原來隊首的一次數據(先進先出原則)。吧隊列中的N個數據進行算術平均運算,就可獲得新的濾波結果。N的取值:流量N=12;壓力:N=4,;液面:N=412;溫度:N

34、=14。具體算法程序如下:#define N 12 char value_bufN;char i=0;char filter()char count;int sum=0;value_bufi+ = get_ad();if ( i = N ) i = 0;for ( count=0;count<N,count+)sum = value_bufcount;return (char)(sum/N);滑動平均值法對周期性干擾有良好的抑制作用,平滑度高,靈敏度低;但對偶然出現的脈沖性干擾的抑制作用差,不易消除由于脈沖干擾引起的采樣值的偏差。因此他不適用于脈沖干擾比較嚴重的場合,而適用于高頻振蕩系統

35、。6.2 一階滯后濾波一階滯后濾波即取a=01,本次濾波結果=(1-a)*本次采樣值+a*上次濾波結果。具體算法程序如下:#define a 50char value;char filter()char new_value;new_value = get_ad();return (100-a)*value + a*new_value; 一階之后濾波對周期性干擾具有良好的抑制作用,適用于波動頻率較高的場合。同時它的相位滯后,靈敏度低,滯后程度取決于a值大小,不能消除濾波頻率高于采樣頻率的1/2的干擾信號。6.3 加權遞推平均濾波加權遞推平均濾波是對遞推平均濾波法的改進,即不同時刻的數據加以不同的

36、權,通常是,越接近現時刻的資料,權取得越大,給予新采樣值的權系數越大,則靈敏度越高,但信號平滑度越低。具體算法程序如下:#define N 12char code coeN = 1,2,3,4,5,6,7,8,9,10,11,12;char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;char filter()char count;char value_bufN;int sum=0;for (count=0,count<N;count+)value_bufcount = get_ad();delay();for (count=0,count<

37、N;count+)sum += value_bufcount*coecount;return (char)(sum/sum_coe);加權遞推平均濾波適用于有較大純滯后時間常數的對象和采樣周期較短的系統。而對于純滯后時間常數較小,采樣周期較長,變化緩慢的信號,不能迅速反應系統當前所受干擾的嚴重程度,濾波效果差。6.4 消抖濾波消抖濾波即設置一個濾波計數器,將每次采樣值與當前有效值比較: 如果采樣值當前有效值,則計數器清零。如果采樣值<>當前有效值,則計數器+1,并判斷計數器是否>=上限N(溢出),如果計數器溢出,則將本次值替換當前有效值,并清計數器。具體算法程序如下:#def

38、ine N 12char filter()char count=0;char new_value;new_value = get_ad();while (value !=new_value);count+;if (count>=N) return new_value;delay();new_value = get_ad();return value; 消抖濾波對于變化緩慢的被測參數有較好的濾波效果,可避免在臨界值附近控制器的反復開/關跳動或顯示器上數值抖動。對于快速變化的參數不宜,如果在計數器溢出的那一次采樣到的值恰好是干擾值,這種算法則會將干擾值當作有效值導入系統?!?】所以,每種濾波

39、算法都有其各自的特點,在實際應用中,究竟選取哪一種數字濾波算法,應根據具體的測量參數合理的選用。不適當地應用數字濾波,不僅達不到濾波效果,反而會降低控制品質,甚至失控,這點必須予以注意。7 總結在微機控制系統的模擬輸入信號中,一般均含有各種噪聲和干擾,他們來自被測信號源本身,傳感器,外界干擾等。為了進行準確測量和控制,必須消除被測信號中的噪聲和干擾。噪聲有2大類:一類為周期性的,其典型代表為50 Hz的工頻干擾,對于這類信號,采用積分時間等于20 ms整倍數的雙積分A/D轉換器,可有效地消除其影響;另一類為非周期的不規(guī)則隨機信號,對于隨機干擾,可以用數字濾波方法予以削弱或濾除。對于數字濾波系統

40、,其程序不是很難的,主要是解決程序設計中的問題,而程序設計是一個很靈活的東西,它反映了你解決問題的邏輯思維和創(chuàng)新能力,它才是一個設計的靈魂所在。因此在整個設計過程中大部分時間是用在程序上面的。很多子程序是可以借鑒書本上的,但怎樣銜接各個子程序才是關鍵的問題所在,這需要對系統的結構很熟悉。因此可以說系統的設計是軟件和硬件的結合,二者是密不可分的。所謂數字濾波,就是通過一定的計算或判斷程序減少干擾信號在有用信號中的比重,因此他實際上是一個程序濾波。 數字濾波器克服了模擬濾波器的許多不足,他與模擬濾波器相比有以下優(yōu)點:(1)數字濾波器是用軟件實現的,不需要增加硬設備,因而可靠性高、穩(wěn)定性好,不存在阻

41、抗匹配問題。(2)模擬濾波器通常是各通道專用,而數字濾波器則可多通道共享,從而降低了成本。(3)數字濾波器可以對頻率很低(如0.01 Hz)的信號進行濾波,而模擬濾波器由于受電容容量的限制,頻率不可能太低。數字濾波器具有高精度,高可靠性,可程控改變特性或復用、便于集成等優(yōu)點。數字濾波器在語言信號處理、圖像信號處理、醫(yī)學生物信號處理以及其他應用領域都得到了廣泛應用。致 謝本論文的工作是在我的導師XXX老師的悉心指導下完成的。在整個畢業(yè)設計過程中,X老師不斷引導我們,幫助我們梳理論文思路,耐心地給我解釋一些細節(jié)上的、我不理解的問題,并提出一些新的問題,使得我對畢業(yè)設計課題能夠有更深入的思考,幫助我

42、順利完成畢業(yè)設計和論文。在此謹向X老師致以誠摯的謝意和崇高的敬意。一開始我們從參考書上找來了課題,但是畢竟是參考書,做到后來發(fā)現很多程序都是不完整的,這讓我傷透了腦筋。程序接線什么的都弄好了,調試也沒有問題,可是就是無法達到預期想要的結果。參考書畢竟只是一個參考,設計這種東西最后還是要靠自己動腦筋。然后我從平時做的實驗老師上課的舉例書本上的知識以及老師的輔導和其他同學的幫助下終于完成了。雖然內容并不是很復雜,但是我們覺得設計的過程相當重要,學到了很多,收獲了很多。我覺得課程設計反映的是一個從理論到實際應用的過程。在此,我要感謝仲佳,范瑞娟,高東東等同學對我的幫助,這段時間我們之間的相互協作,不

43、僅促進了畢設的順利完成,同時也增進我們之間的友誼 。最后,感謝所有支持過我、幫助過我的老師、朋友和同學們,祝愿大家都會有一個美好而又光明的未來。參考文獻1 李群芳.單片微型計算機與接口技術.電子工業(yè)出版社.20072 彭冬明.單片機實驗教程.北京理工大學出版社.20073 何立民.單片機應用技術選編.北京航空航天大學出版社.20004 余發(fā)山.單片機原理及及應用技術.中國礦業(yè)大學出版社.20035 周航慈.單片機程序設計基礎.北京航空航天大學出版社.20016 劉松強 數字信號處理系統及其應用.清華大學出版社.19967 程佩青 數字信號處理教程. 清華大學出版社.19958 潘祖善,何紹雄,

44、賈學堂 微波技術.上海交通大學出版社.19979 R.E包格勒,A.G康斯坦丁尼斯基 數字濾波器導論.國防工業(yè)出版社.198210 ALAN V.OPPENHEIM.ALAN S.WILLSKY.SIGNALS&SYSTEM 清華大學出版社.1999附 錄A附 錄B總體程序如下:#include <reg51.h>#include <absacc.h>#define uchar unsigned char#define A 0.005#define N 11sbit con1 = P23;sbit con2 = P24;sbit con3 = P25;sbit

45、con = P26;sbit OE = P20;sbit START = P21;sbit EOC = P22;uchar a;uchar bufN =0; void change()int i;for(i=0;i<N-1;i+)bufi=bufi+1;bufN-1=a; uchar get_data(n)change();return bufn; /限幅濾波uchar filter1()  uchar new_value,value;value=get_data(N-2); new_value = get_data(N-1);

46、 if ( ( new_value - value > A ) | ( value - new_value > A ) )return value; return new_value;  /中值濾波uchar  filter2()uchar value_buffN,temp;            /定義存儲數據的數組int count,i,j,k;for(count=0;count<N;count+)  /

47、獲取數據 value_buffcount=get_data(count); for(j=0;j<N-1;j+)            /用冒泡法對數據進行排序,當然最好用其他排序方法  k=j;for(j=i+1;j<N;j+)if(value_buffj<value_buffk) k=j;      temp=value_buffk;    

48、60; value_buffk=value_buffi;      value_buffi=temp; return value_buff(N-1)/2; /滑動平均濾波uchar filter5()uchar value_buffN;int i=0;int count;int sum=0;value_buffi+=get_data(count);if(i=N)   i=0;for(count=0;count<N;count+)    sum+=value_buffco

49、unt;return (uchar)(sum/N); /中位值平均濾波uchar filter6()  uchar count,i,j,temp; uchar value_bufN; int sum=0; for (count=0;count<N;count+)  value_bufcount = get_data(count);  for (j=0;j<N-1;j+)  for (i=0;i<N-j;i+)  if ( value_bufi>value_bufi+1 )  temp = value_bufi; value_bufi = value_bufi+1; value_bufi+1 = temp;    for(count=1;count<N-1;count+) sum += value_bufcount; return (uchar)(sum/(N-2);  /加權遞推平均濾波uchar filter8() uc

溫馨提示

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

最新文檔

評論

0/150

提交評論