freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于單片機數(shù)字濾波器設計(編輯修改稿)

2025-07-24 19:09 本頁面
 

【文章內容簡介】 )此算法的樣例子程序如下:define A 10 //A值可根據(jù)實際情況調整char data。 //上一次的數(shù)據(jù)char filter_1(){char datanew。 //新數(shù)據(jù)變量datanew=get_data()。 //獲得新數(shù)據(jù)//濾波算法if ((datanewdataA)||(datadatanewA)return data。return datanew。} 該算法主要用于處理變化比較緩慢的數(shù)據(jù),如溫度、物體的位置等。使用時關鍵在于最大偏差值的Δy的選擇,通??筛鶕?jù)經(jīng)驗獲得,也可按照輸出參數(shù)可能的最大變化速度Vmax及采樣周期T來決定ΔY的值,即ΔY=VmaxT?!?】3 濾波器硬件設計通過對系統(tǒng)工作原理的了解,可以大致了解數(shù)字濾波器設計的整體框圖:圖3—1 總體設計框圖 單片機AT89C51 這里我們使用了51系列單片機——AT89C51,如下圖利用這個單片機進行編程,實現(xiàn)對輸入信號的濾波。我使用了P0口作為接受AD轉換的結果的端口,而P1口則輸出數(shù)據(jù)到DA轉換器。另外還利用了P2作為控制端口,,用來實現(xiàn)濾波方式的選擇?!?】圖32 AT89C51引腳圖 數(shù)據(jù)采集 另外我還使用了ADC0808進行數(shù)據(jù)采集。這里ADC0808是并聯(lián)AD轉換器,ADC0808的引腳圖如下圖:圖33 ADC0808的引腳圖 IN0IN8是八個模擬量輸入端口,ADC0808可以一次對八個模擬量進行模數(shù)轉換,但是在這里我們只使用了其中的一個輸入端IN0,所以ADDDA、ADDB、ADDC都應為0,所以我讓它們都接地。它的八個輸出端接在單片機上,CLOCK接數(shù)據(jù)采樣時鐘,它可以接在單片機上由單片機控制,也可接在另外的數(shù)字時鐘上,這里我選用外接別的時鐘。START為轉換啟動信號,在其上跳變時,所有內部寄存器清零,在其下調變時,開始進行AD轉換。ALE是地址鎖存信號。這里我讓START和ALE均接在單片機的同一個端口上,讓單片機實現(xiàn)程序控制AD的轉換。OE是輸出允許信號,OE=1時,才能允許輸出,也是為了讓單片機實現(xiàn)程序控制ADC0808的輸出。EOC是轉換結束信號,EOC=1時,表示轉換結束。這個信號可以用來提醒單片機AD已經(jīng)轉換完畢,程序中即可以用查詢方式,也可以用中斷方式,這里我使用查詢方式。VREF(+)和VREF()都是參考電壓信號端口,這里我讓VREF()的參考電壓為零,VREF(+)的參考電壓為+3V。 數(shù)模轉換輸出 這里我用了DAC0832來進行數(shù)模轉換。DAC0832的引腳圖如下圖所示:圖34 DAC0832的引腳圖DAC0832有三種數(shù)模轉換方法,直通方式、單緩沖方式、雙緩沖方式,因為單片機輸出后可以直接進行數(shù)模轉換,所以這里我采用了不需要單片機控制的最為簡單的直通方式,但是DAC0832若用于直通方式,則在接單片機的輸出端口之間還要接一個緩沖器件,如74LS373。若用于直通方式下,則 、和GND均接地,而VCC和ILE則接正電源。VREF是參考電源。IOUTIOUT2是兩個輸出端。DAC0832輸出的是電流,要利用運算放大器轉換成電壓。數(shù)模轉換輸出電路如下圖所示:圖35 數(shù)模轉換輸出電路 總體電路圖總體電路圖見附錄A4 程序設計 濾波算法設計 這個在前面介紹濾波原理時已經(jīng)說過了,在此就不再次重復了。因為設計時采集的時鐘頻率很大,所以在一定范圍內采集的數(shù)據(jù)都差不多,因此對一系列的數(shù)據(jù)進行濾波處理時就好像是在對同一個數(shù)據(jù)進行濾波處理。但是因為這些算法處理的數(shù)據(jù)時連續(xù)采集了N個的,所以要設立一個變量數(shù)組來存儲這些輸入的數(shù)據(jù),而且要記得及時更新。我利用了隊列的思想,如果輸入一個新的數(shù)據(jù),則丟棄最原始的一個數(shù)據(jù),把新數(shù)據(jù)插入進來,就好像隊列一樣,對頭刪除數(shù)據(jù),對位插入新的數(shù)據(jù)。這個程序如下:void change(){int i。for(i=0。iN1。i++)buf[i]=buf[i+1]。buf[N1]=a。}而獲得這一系列中的某一個數(shù)據(jù)就用了一個函數(shù)就可以了,直接返回隊列中的第n項的數(shù)據(jù)。這個程序如下:uchar get_data(n){change()。return buf[n]。} AD轉換器 因為START為轉換啟動信號,在其上跳變時,所有內部寄存器清零,在其下調變時,開始進行AD轉換。所以設計程序時,要先讓START為0,在讓START為1,最后讓START為0。開始采集數(shù)據(jù)后就要讓OE為1,進行數(shù)據(jù)輸入。同時數(shù)據(jù)采集結束時,利用查詢語句,查看EOC是否為1,如果是1,則處于等待狀態(tài),如果變成1,則可以進行數(shù)據(jù)輸入了。AD轉換的程序如下:START = 0。START = 1。START = 0。while(EOC==0)。OE = 1。a = P0。這里a是一個變量,用來存儲AD輸入的數(shù)據(jù)。 濾波算法的選擇 我在電路上采用的是開關控制選擇,所以這里只需要一系列的if選擇語句就可以完成率把算法的選擇。程序如下:if(con==0){ if((con1==0)amp。amp。(con2==0)amp。amp。(con3==0)) res=filter1()。 if((con1==0)amp。amp。(con2==0)amp。amp。(con3==1)) res=filter2()。 if((con1==1)amp。amp。(con2==0)amp。amp。(con3==0)) res=filter5()。 if((con1==1)amp。amp。(con2==0)amp。amp。(con3==1)) res=filter6()。 if((con1==1)amp。amp。(con2==1)amp。amp。(con3==1)) res=filter8()。} else res=a。conconcon3三位用來控制濾波算法的選擇,而con用來控制是否要進行濾波。 總體程序總體程序見附錄B。 程序流程圖圖41 程序流程圖5 仿真結果和分析輸入波形與未經(jīng)濾波器濾波波形如下:圖51輸入波形與未經(jīng)濾波器濾波波形以下幾幅圖是經(jīng)濾波后的波形:圖52 經(jīng)限幅后的波形圖53 經(jīng)中值濾波后的波形圖54 經(jīng)滑動平均濾波后的波形 圖55 經(jīng)中位值平均濾波后的波形圖56 經(jīng)加權遞推平均濾波后的波形 限幅濾波的效果是和A值有關的,一般情況下,A值越小,則代表允許的噪聲要越小,限幅濾波很適用于使幅值突變的噪聲。中值濾波由于要求中值,所用到的排序算法會大大消耗時間,因此延時比較嚴重,但是總的來說選擇排序比冒泡排序的延時情況要好。中位值平均濾波,由于濾波算法中會求平均值在,所以在原波是方波時會出現(xiàn)某一次求平均后編程中間值,另外由于和中值濾波一樣要進行排序,因此也會產生很大的延時。加權遞推平均算法和上面一樣,因為會求平均值,因此也會有時候產生中間值,但是如果把當前值得權值設的很大,而越久遠之前的權值設的越
點擊復制文檔內容
規(guī)章制度相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1