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

下載本文檔

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

文檔簡介

1、HUBEI NORMAL UNIVERSITY綜合課程設(shè)計(jì)(一)Integrated Curriculum Design(1)所在院系教育信息與技術(shù)學(xué)院專業(yè)名稱信息工程班級1005題目 基于單片機(jī)的數(shù)字濾波器指導(dǎo)教師 黎明 成員 尤杉.陳小豪.錢德超.柯俊完成時(shí)間2013.1.5 摘要I1 緒論11.1仿真軟件介紹11.2數(shù)字濾波器介紹12 單片機(jī)和AD/DA相關(guān)知識32.1 51單片機(jī)相關(guān)知識32.2 AD轉(zhuǎn)換器相關(guān)知識42.3 DA轉(zhuǎn)換器相關(guān)知識53 數(shù)字濾波器設(shè)計(jì)63數(shù)字濾波器系統(tǒng)設(shè)計(jì)63.1 數(shù)字濾波器理論分析設(shè)計(jì)63.2 單片機(jī)電路73.3 數(shù)據(jù)采集電路83.4 數(shù)模轉(zhuǎn)換輸出電路93

2、.5 數(shù)字電壓表系統(tǒng)電路原理圖104 程序設(shè)計(jì)104.1程序流程圖114.2 AD轉(zhuǎn)換器程序124.3 程序代碼136 心得與體會20參考文獻(xiàn)211 緒論1.1仿真軟件介紹現(xiàn)代工業(yè)控制系統(tǒng)中,電路系統(tǒng)越來越復(fù)雜,因而帶來的相互干擾也越來越強(qiáng)烈,模擬濾波電路已經(jīng)不能滿足要求,數(shù)字濾波應(yīng)運(yùn)而生。數(shù)字濾波器的實(shí)現(xiàn)過程的實(shí)現(xiàn)過程是把輸入的模擬信號數(shù)字化,也就是由采樣器對輸入的模擬信號進(jìn)行周期性的采樣,并對每個(gè)樣本進(jìn)行量化和編碼,即模數(shù)轉(zhuǎn)換。從ADC輸出的數(shù)字信號送入到數(shù)字信號處理器進(jìn)行處理變化,處理器輸出的數(shù)字信號再通過數(shù)模轉(zhuǎn)換為模擬信號,這個(gè)過程要用到DAC來轉(zhuǎn)換實(shí)現(xiàn)模擬信號的輸出。1.2數(shù)字濾波器

3、介紹Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點(diǎn)是:(1)現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。(2)支持主流單片機(jī)系統(tǒng)的仿真。目前支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系

4、列以及各種外圍芯片。(3)提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時(shí)可以觀察各個(gè)變量、寄存器等的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時(shí)支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil C51 uVision2等軟件。(4)具有強(qiáng)大的原理圖繪制功能??梢苑抡?1系列、AVR、PIC、ARM、等常用主流單片機(jī)。還可以直接在基于原理圖的虛擬原型上編程,再配合顯示及輸出,能看到運(yùn)行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,Proteus建立了完備的電子設(shè)計(jì)開發(fā)環(huán)境。在PROTEUS繪制好原理圖后,調(diào)入已編譯好的目標(biāo)代碼文件:*.HEX,可以

5、在PROTEUS的原理圖中看到模擬的實(shí)物運(yùn)行狀態(tài)和過程。 PROTEUS 是單片機(jī)課堂教學(xué)的先進(jìn)助手。 PROTEUS不僅可將許多單片機(jī)實(shí)例功能形象化,也可將許多單片機(jī)實(shí)例運(yùn)行過程形象化。前者可在相當(dāng)程度上得到實(shí)物演示實(shí)驗(yàn)的效果,后者則是實(shí)物演示實(shí)驗(yàn)難以達(dá)到的效果。 它的元器件、連接線路等卻和傳統(tǒng)的單片機(jī)實(shí)驗(yàn)硬件高度對應(yīng)。這在相當(dāng)程度上替代了傳統(tǒng)的單片機(jī)實(shí)驗(yàn)教學(xué)的功能,例:元器件選擇、電路連接、電路檢測、電路修改、軟件調(diào)試、運(yùn)行結(jié)果等。 課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)是學(xué)生走向就業(yè)的重要實(shí)踐環(huán)節(jié)。由于PROTEUS提供了實(shí)驗(yàn)室無法相比的大量的元器件庫,提供了修改電路設(shè)計(jì)的靈活性、提供了實(shí)驗(yàn)室在數(shù)量、質(zhì)量上

6、難以相比的虛擬儀器、儀表,因而也提供了培養(yǎng)學(xué)生實(shí)踐精神、創(chuàng)造精神的平臺。2 單片機(jī)和AD/DA相關(guān)知識2.1 51單片機(jī)相關(guān)知識51單片機(jī)是對目前所有兼容intel 8031指令系統(tǒng)的單片機(jī)的統(tǒng)稱。該系列單片機(jī)的始祖是intel的8031單片機(jī),后來隨著技術(shù)的發(fā)展,成為目前廣泛應(yīng)用的為單片機(jī)之一。單片機(jī)是在一塊芯片內(nèi)集成了CPU、RAM、ROM、定時(shí)器計(jì)數(shù)器和多功能I/O口等計(jì)算機(jī)所需要的基本功能部件的大規(guī)模集成電路,又稱為MCU。51系列單片機(jī)內(nèi)包含以下幾個(gè)部件:一個(gè)位CPU;一個(gè)片內(nèi)振蕩器及時(shí)鐘電路;4KB的ROM程序存儲器;一個(gè)128B的RAM數(shù)據(jù)存儲器;尋址64KB外部數(shù)據(jù)存儲器和64

7、KB外部程序存儲空間的控制電路;32條可編程的I/O口線;兩個(gè)16位定時(shí)計(jì)數(shù)器;一個(gè)可編程全雙工串行口;個(gè)中斷源、兩個(gè)優(yōu)先級嵌套中斷結(jié)構(gòu)。51系列單片機(jī)如下圖:圖1 51單片機(jī)引腳圖2.2 AD轉(zhuǎn)換器相關(guān)知識ADC0809是美國國家半導(dǎo)體公司生產(chǎn)的CMOS工藝8通道,8位逐次逼近式轉(zhuǎn)換器。其內(nèi)部有一個(gè)8通道多路開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號,只選通8路模擬輸入信號中的一個(gè)進(jìn)行A/D轉(zhuǎn)換。(1)主要特性: 1)8路輸入通道,8位A/D轉(zhuǎn)換器,即分辨率為8位。 2)具有轉(zhuǎn)換起??刂贫?。 3)轉(zhuǎn)換時(shí)間為100s(時(shí)鐘為640kHz時(shí)),130s(時(shí)鐘為500kHz時(shí)) 4)單個(gè)+5V電源供電

8、 5)模擬輸入電壓范圍0+5V,不需零點(diǎn)和滿刻度校準(zhǔn)。 6)工作溫度范圍為-40+85攝氏度 7)低功耗,約15mW。 (2)內(nèi)部結(jié)構(gòu)ADC0809是CMOS單片型逐次逼近式A/D轉(zhuǎn)換器,內(nèi)部結(jié)構(gòu)如圖1322所示,它由8路模擬開關(guān)、地址鎖存與譯碼器、比較器、8位開關(guān)樹型A/D轉(zhuǎn)換器、逐次逼近寄存器、邏輯控制和定時(shí)電路組成。 圖2 ADC0809引腳2.3 DA轉(zhuǎn)換器相關(guān)知識根據(jù)對DAC0832的數(shù)據(jù)鎖存器和DAC寄存器的不同的控制方式,DAC0832有三種工作方式:直通方式、單緩沖方式和雙緩沖方式。主要性能如下:(1)分辨率為8位; (2)電流穩(wěn)定時(shí)間1us; (3) 可單緩沖、雙緩沖或直接數(shù)

9、字輸入; (4) 只需在滿量程下調(diào)整其線性度; (5)單一電源供電(+5V+15V); (6) 低功耗,20mW。 DAC0832引腳功能電路應(yīng)用原理圖DAC0832是采樣頻率為八位的D/A轉(zhuǎn)換芯片,集成電路內(nèi)有兩級輸入寄存器,使DAC0832芯片具備雙緩沖、單緩沖和直通三種輸入方式,以便適于各種電路的需要(如要求多路D/A異步輸入、同步轉(zhuǎn)換等)。所以這個(gè)芯片的應(yīng)用很廣泛,關(guān)于DAC0832應(yīng)用的一些重要資料見下圖: D/A轉(zhuǎn)換結(jié)果采用電流形式輸出。若需要相應(yīng)的模擬電壓信號,可通過一個(gè)高輸入阻抗的線性運(yùn)算放大器實(shí)現(xiàn)。運(yùn)放的反饋電阻可通過RFB端引用片內(nèi)固有電阻,也可外接。DAC0832邏輯輸入

10、滿足TTL電平,可直接與TTL電路或微機(jī)電路連接。圖2 ADC0809引腳圖2 ADC0809引腳圖3 DAC0832引腳3 數(shù)字濾波器設(shè)計(jì)3數(shù)字濾波器系統(tǒng)設(shè)計(jì)3.1 數(shù)字濾波器理論分析設(shè)計(jì)數(shù)字濾波方法有很多種,如中值濾波、算術(shù)平均濾波、加權(quán)平均濾波,限幅濾波等等。本次課程設(shè)計(jì)我選用的是限幅濾波方法和中位值濾波法限幅濾波的基本原理是把兩次相鄰時(shí)刻(n和n-1)的采樣值Yn和Yn-1相減,求出其差值,以絕對值表示,然后將這個(gè)差值與兩次采樣允許的最大偏差值Y比較,如果兩次采樣值的差值超過了允許的最大偏差值Y,則認(rèn)為發(fā)生了隨機(jī)干擾,并認(rèn)為最后一次采樣值Yn非法,應(yīng)予剔除。剔除Yn后,可用Yn-1代替

11、Yn;若未超過允許的最大偏差值范圍,則認(rèn)為本次采樣值有效??捎萌缦鹿奖硎荆簗Yn-Yn-1|Y;則Yn有效|Yn-Yn-1|Y;則Yn-1有效此算法的樣例子程序如下:#define A 10   /A值可根據(jù)實(shí)際情況調(diào)整char data;    /上一次的數(shù)據(jù)char filter_1()char datanew;  /新數(shù)據(jù)變量datanew=get_data();   /獲得新數(shù)據(jù)/濾波算法uchar filter1() uchar new_value,value;value=get_data(N-2);

12、/把第十個(gè)值給valuenew_value = get_data(N-1); / 第十一個(gè)值給new_valueif ( ( new_value - value > A ) | ( value - new_value > A ) ) /如果差值大于0.002 return value; return new_value;/中位值濾波算法void filter2() int count,i,j; /定義存儲數(shù)據(jù)的數(shù)組 uchar temp; /定義存儲數(shù)據(jù)的數(shù)組for(count=0;count<N;count+) /獲取數(shù)據(jù) bufcount=get_data(count);

13、 for(j=0;j<N-1;j+) /用冒泡法對數(shù)據(jù)進(jìn)行排序,當(dāng)然最好用其他排序方法 for(i=0;i<N-j;i+)if(bufi>bufi+1) temp=bufi; bufi=bufi+1; bufi+1=temp; res=buf(N-1)/2; /11個(gè)數(shù)排序后取中間的數(shù)值該算法主要用于處理變化比較緩慢的數(shù)據(jù),如溫度、物體的位置等。使用時(shí)關(guān)鍵在于最大偏差值的y的選擇,通??筛鶕?jù)經(jīng)驗(yàn)獲得,也可按照輸出參數(shù)可能的最大變化速度Vmax及采樣周期T來決定Y的值,即Y=VmaxT。3.2 單片機(jī)電路單片機(jī)最小系統(tǒng)如下圖所示,各個(gè)引腳都已經(jīng)標(biāo)出。圖4 單片機(jī)最小系統(tǒng)使用51

14、系列單片機(jī)AT89C51,利用這個(gè)單片機(jī)進(jìn)行編程,實(shí)現(xiàn)對輸入信號的濾波。我使用了P0口作為接受AD轉(zhuǎn)換的結(jié)果的端口,而P1口則輸出數(shù)據(jù)到DA轉(zhuǎn)換器。另外還利用了P2作為控制端口,P2.0-P2.2用來控制AD轉(zhuǎn)換器,而P2.3-P2.6外接四個(gè)開關(guān),用來實(shí)現(xiàn)濾波方式的選擇。3.3 數(shù)據(jù)采集電路由于ADC0809是帶地址鎖存的模數(shù)轉(zhuǎn)換器件,ADDA、ADDB、ADDC為模擬通道選擇,編碼為000111分別選中IN0IN7。ALE為地址鎖存信號,其上升沿鎖存ADDA、ADDB、ADDC的信號,譯碼后控制模擬開關(guān),接通八路模擬輸入中相應(yīng)的一路。CLK為輸入時(shí)鐘,為AD轉(zhuǎn)換器提供轉(zhuǎn)換的時(shí)鐘信號,典型工

15、作頻率為640KHz。START為AD轉(zhuǎn)換啟動信號,正脈沖啟動ADDAADDC選中的一路模擬信號開始轉(zhuǎn)換。OE為輸出允許信號,高電平時(shí)候打開三態(tài)輸出緩存器,是轉(zhuǎn)換后的數(shù)字量從D0D7輸出。EOC為轉(zhuǎn)換結(jié)束信號,啟動轉(zhuǎn)換后EOC變?yōu)榈碗娖?,轉(zhuǎn)換完成后EOC編程高電平。圖5 ADC模數(shù)轉(zhuǎn)換3.4 數(shù)模轉(zhuǎn)換輸出電路這里我用了DA0832來進(jìn)行數(shù)模轉(zhuǎn)換。DA0832的引腳圖如下圖所示:圖6 DAC數(shù)模轉(zhuǎn)換DA0832有三種數(shù)模轉(zhuǎn)換方法,直通方式、單緩沖方式、雙緩沖方式,因?yàn)閱纹瑱C(jī)輸出后可以直接進(jìn)行數(shù)模轉(zhuǎn)換,所以這里我采用了不需要單片機(jī)控制的最為簡單的直通方式,但是DA0832若用于直通方式。若用于直通

16、方式下,則GND均接地,而VCC和ILE則接正電源。VREF是參考電源。IOUT1、IOUT2是兩個(gè)輸出端。DA0832輸出的是電流,要利用運(yùn)算放大器轉(zhuǎn)換成電壓信號。3.5 數(shù)字電壓表系統(tǒng)電路原理圖 如下是此次設(shè)計(jì)仿真的數(shù)字濾波器電路總原理圖。此圖總共分為三個(gè)部分,分別是采用電路ADC,處理分析部分單片機(jī),調(diào)理信號輸出部分DAC。圖8 數(shù)字濾波器設(shè)計(jì)總原理圖4 程序設(shè)計(jì)4.1程序流程圖開始結(jié)束初始化AD采樣量化單片機(jī)處理DA轉(zhuǎn)換輸出圖9 程序流程圖4.2 AD轉(zhuǎn)換器程序因?yàn)镾TART為轉(zhuǎn)換啟動信號,在其上跳變時(shí),所有內(nèi)部寄存器清零,在其下跳變時(shí),開始進(jìn)行AD轉(zhuǎn)換。所以設(shè)計(jì)程序時(shí),要先讓STAR

17、T為0,在讓START為1,最后讓START為0。開始采集數(shù)據(jù)后就要讓OE為1,進(jìn)行數(shù)據(jù)輸入。同時(shí)數(shù)據(jù)采集結(jié)束時(shí),利用查詢語句,查看EOC是否為1,如果是1,則處于等待狀態(tài),如果變成1,則可以進(jìn)行數(shù)據(jù)輸入了。AD轉(zhuǎn)換的程序如下:START = 0;START = 1;START = 0;while(EOC=0);OE = 1;a = P0;這里a是一個(gè)變量,用來存儲AD輸入的數(shù)據(jù)4.3 程序代碼#include <reg51.h>#define uchar unsigned char#define A 0.002#define N 11sbit con1=P10; /濾波方法選擇s

18、bit con2=P11;sbit key=P14; /控制是否濾波sbit led=P15;sbit OE=P30;sbit START=P31;sbit EOC= P32;sbit CLOCK=P34;uchar a;uchar res;uchar bufN =0;void ADC0808();/模數(shù)轉(zhuǎn)換函數(shù)聲明void change(); /數(shù)值更新函數(shù)聲明uchar get_data(n);uchar filter1(); / 限幅濾波函數(shù)聲明void filter2(); /中值濾波函數(shù)聲明void delay(uchar z);void inint();void main() /主

19、函數(shù)while(1) inint(); ADC0808(); P2=res; void ADC0808() START = 0; START = 1; START = 0; led=0; EOC=EOC;/取反負(fù)跳變進(jìn)入外部中斷 delay(1);if(key=0) if(con1=0) /選擇限幅濾波 res=filter1(); if(con2=0) /選擇中值濾波 filter2(); else res=a; void change()uchar i;for(i=0;i<N-1;i+)bufi=bufi+1; bufN-1=a;uchar get_data(n) /數(shù)據(jù)更新chan

20、ge();return bufn; /限幅濾波uchar filter1() uchar new_value,value;value=get_data(N-2); /把第十個(gè)值給valuenew_value = get_data(N-1); / 第十一個(gè)值給new_valueif ( ( new_value - value > A ) | ( value - new_value > A ) ) return value; return new_value; /中值濾波法void filter2() int count,i,j; /定義存儲數(shù)據(jù)的數(shù)組 uchar temp; /定義存

21、儲數(shù)據(jù)的數(shù)組for(count=0;count<N;count+) /獲取數(shù)據(jù) bufcount=get_data(count); for(j=0;j<N-1;j+) /用冒泡法對數(shù)據(jù)進(jìn)行排序,當(dāng)然最好用其他排序方法 for(i=0;i<N-j;i+)if(bufi>bufi+1) temp=bufi; bufi=bufi+1; bufi+1=temp; res=buf(N-1)/2; /11個(gè)數(shù)排序后取中間的數(shù)值 void exter0() interrupt 0 led=1; P0=0xff; /P0端口作為輸入預(yù)先置1 OE = 1; /使能輸出置1 a = P0

22、; OE=0; /使能輸出關(guān)閉 void timer0() interrupt 1 /產(chǎn)生500KhZ 提供給ADC0808TH0=(65536-2)/256;TL0=(65536-2)%256;CLOCK=CLOCK;void timer1() interrupt 3 / 采樣頻率20HZTH1=(65536-50000)/256;TL1=(65536-50000)%256; a = P0;void inint() TMOD=0x11; /設(shè)置定時(shí)器工作方式 TH0=(65536-2)/256;/裝初值 TL0=(65536-2)%256; TH1=(65536-50000)/256; TL

23、1=(65536-50000)%256; EA=1; / 開總中斷 ET0=1; /開定時(shí)器0中斷 TR0=1; /啟動定時(shí)器0中斷 ET1=1; /開定時(shí)器1,啟動定時(shí)器1 TR1=1;EX0=1; /開外部中斷 IT0=1; /外部中斷觸發(fā)方式 void delay(uchar z)/延時(shí)函數(shù)uchar x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);5 仿真及結(jié)果分析通過正確的編寫程序和不斷調(diào)試發(fā)現(xiàn),比較理想的濾波效果的仿真結(jié)果如下圖所示限幅濾波的效果:圖10 仿真結(jié)果限幅濾波的效果是和A值有關(guān)的,一般情況下,A值越小,則代表允許的噪聲要越小,限幅濾波很適用于使幅值突變的噪聲。限幅濾波適用于變化緩慢的場合,比如主要用于處理變化比較緩慢的數(shù)據(jù),如溫度、物體的位置等。使用時(shí)關(guān)鍵在于最大偏差值的y的選擇,通??筛鶕?jù)經(jīng)驗(yàn)獲得。而且通過仿真過程中不斷修改A的值,濾波效果會明顯發(fā)生變化,通過改變信號的頻率,濾波的結(jié)果也會發(fā)生明顯變化,當(dāng)信號的頻率過高時(shí),濾波效果會使最終的波形發(fā)生明顯的失真現(xiàn)象。6 心得與體會通過與同學(xué)的討論與認(rèn)真計(jì)算設(shè)計(jì)分析所完成的,課程設(shè)計(jì)的任務(wù)是設(shè)計(jì)、組裝并調(diào)試一個(gè)數(shù)字電壓表測量系統(tǒng)。需要我們綜合運(yùn)用單片機(jī)等課程的知識,通過查閱資料、方案論證與選定;設(shè)計(jì)和選取電路和元器件;分析

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論