![基于MSP430F6638的信號(hào)采集與分析系統(tǒng)實(shí)驗(yàn).doc_第1頁](http://file.renrendoc.com/FileRoot1/2020-1/20/a92d699a-6332-4030-9de0-0652094c0966/a92d699a-6332-4030-9de0-0652094c09661.gif)
![基于MSP430F6638的信號(hào)采集與分析系統(tǒng)實(shí)驗(yàn).doc_第2頁](http://file.renrendoc.com/FileRoot1/2020-1/20/a92d699a-6332-4030-9de0-0652094c0966/a92d699a-6332-4030-9de0-0652094c09662.gif)
![基于MSP430F6638的信號(hào)采集與分析系統(tǒng)實(shí)驗(yàn).doc_第3頁](http://file.renrendoc.com/FileRoot1/2020-1/20/a92d699a-6332-4030-9de0-0652094c0966/a92d699a-6332-4030-9de0-0652094c09663.gif)
![基于MSP430F6638的信號(hào)采集與分析系統(tǒng)實(shí)驗(yàn).doc_第4頁](http://file.renrendoc.com/FileRoot1/2020-1/20/a92d699a-6332-4030-9de0-0652094c0966/a92d699a-6332-4030-9de0-0652094c09664.gif)
![基于MSP430F6638的信號(hào)采集與分析系統(tǒng)實(shí)驗(yàn).doc_第5頁](http://file.renrendoc.com/FileRoot1/2020-1/20/a92d699a-6332-4030-9de0-0652094c0966/a92d699a-6332-4030-9de0-0652094c09665.gif)
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
信號(hào)采集與分析系統(tǒng)實(shí)驗(yàn)一、 實(shí)驗(yàn)?zāi)康谋緦?shí)驗(yàn)?zāi)康氖抢脤?shí)驗(yàn)箱構(gòu)建一個(gè)信號(hào)采集和分析系統(tǒng)。二、 實(shí)驗(yàn)內(nèi)容三、 實(shí)驗(yàn)步驟1、鍵盤及LED的設(shè)計(jì)與制作 編寫單片機(jī)程序,控制按鍵,控制燈的亮滅, 測試所有能控制的按鍵和LED 2、液晶屏顯示的設(shè)計(jì)與制作 測試在液晶屏上顯示波形和數(shù)據(jù) 3、以信號(hào)發(fā)生器輸入單頻正弦波,以16個(gè) 指示燈代表16個(gè)單頻點(diǎn),頻點(diǎn)在200Hz 10kHz任選,信號(hào)發(fā)生器每次產(chǎn)生一種頻點(diǎn) 正弦波,AD采集,對應(yīng)頻點(diǎn)的指示燈會(huì)亮;4、把指示燈顯示頻點(diǎn)改成用液晶顯示 5、液晶屏同時(shí)顯示頻譜和時(shí)域波形四、實(shí)驗(yàn)原理1、AD采樣模塊在這個(gè)模塊中,每過一段時(shí)間,AD采樣器采集一個(gè)數(shù)據(jù)存入數(shù)組中,并將存儲(chǔ)的二進(jìn)制數(shù)轉(zhuǎn)換成對應(yīng)的電壓值,通過代碼:collect0t.real = ADC12MEM0*3.0 / 0x03ff;實(shí)現(xiàn)。采集滿N個(gè)值之后,令標(biāo)志變量flag=1,表示一組數(shù)據(jù)采集完畢,進(jìn)入下一模塊,即FFT變換。我們將信號(hào)發(fā)生器輸出的模擬電壓范圍設(shè)定為0V2V ,這是因?yàn)椋喝綦妷褐堤?,?huì)導(dǎo)致結(jié)果波形失真;若出現(xiàn)負(fù)電壓,則因?yàn)锳D模塊不支持負(fù)電壓的采集,結(jié)果可能會(huì)出現(xiàn)錯(cuò)誤。2、FFT處理模塊該模塊將采集進(jìn)來的數(shù)據(jù)進(jìn)行FFT變換,變換后的實(shí)部即為頻譜,用于LCD的頻譜繪制。繪制時(shí),以各頻點(diǎn)的幅頻值與最大幅頻值的相對大小進(jìn)行繪制;變換后模值最大的頻點(diǎn)對應(yīng)的頻率即為待測頻率,用fre表示,便于屏幕及LED頻率顯示;根據(jù)求得的fre,可求得若干函數(shù)值,用于LCD的時(shí)域波形繪制。3、 LCD液晶屏顯示模塊該模塊用于顯示時(shí)域波形、頻譜、學(xué)號(hào)、所測頻率等內(nèi)容。關(guān)鍵語句:清屏:etft_AreaSet(0,0,239,319,0);/清屏顯示:sprintf(buffer, Frequency: %5d Hz,fre);etft_DisplayString(buffer, 0, 32, 0xFFFF, 0x0000);/顯示頻率同時(shí),在模塊中加入了延時(shí)語句,使得波形可以保持一定的時(shí)間。時(shí)間到后,LCD會(huì)進(jìn)行刷新,重新顯示波形和數(shù)據(jù)。4、LED燈顯示模塊LED1作為采樣指示燈,ADC模塊每采一次樣閃爍一次,由于采樣頻率極高,但中斷調(diào)用間隔較長,實(shí)際顯示為每次進(jìn)入ADC采樣中斷LED1閃爍一下。使用LED2、LED3、LED4、LED5顯示頻率,標(biāo)號(hào)分別為5.7、4.7、4.6、4.5。受LED燈數(shù)目的限制,當(dāng)用LED顯示頻率時(shí)(二進(jìn)制表示),只能精確到1kHz。如當(dāng)1500=fre2500時(shí),用2kHz表示,燈顯示為0010;當(dāng)5500=fre6500時(shí),用6kHz表示,燈顯示為0110,其余類似。通過以上模塊,可以實(shí)現(xiàn)以下功能:AD模塊采集N個(gè)數(shù)據(jù)后,F(xiàn)FT模塊對數(shù)據(jù)進(jìn)行處理,F(xiàn)FT變換后,實(shí)部為頻譜,用于LCD的頻譜繪制;模值最大的頻點(diǎn)為所求頻率,在LED和LCD上顯示;再求得一些采樣點(diǎn)的函數(shù)值,在LCD上繪制時(shí)域波形。最終,頻率顯示在LED燈和LCD上,波形和頻譜顯示在LCD上。圖像保持一段時(shí)間后,LCD會(huì)進(jìn)行刷新,重新顯示波形和數(shù)據(jù)。附錄:1、 鍵盤及LED的設(shè)計(jì)與制作#include #include #include #include dr_i2c.h#include dr_tft.h#define TEMP_ADDR 0x2A#define TEMP_LOCAL 0x00#define TEMP_REMOTE 0x01#define TEMP_CONFIG1 0x09#define TEMP_CONFIG2 0x0A#define TEMP_NCORR 0x21#define BATT_ADDR 0x55#define BATT_VOLTAGE 0x04#define BATT_CURRENT 0x10#define BATT_SOC 0x1C#define BATT_CAPA 0x0C#define BATT_FLAG 0x06int TEMP_LOCAL_INDEX;int TEMP_REMOTE_INDEX;int BATT_VOLTAGE_INDEX;int BATT_CURRENT_INDEX;int BATT_SOC_INDEX;int BATT_CAPA_INDEX;int BATT_FLAG_INDEX;typedef struct const volatile uint8_t* PxIN; volatile uint8_t* PxOUT; volatile uint8_t* PxDIR; volatile uint8_t* PxREN; volatile uint8_t* PxSEL; GPIO_TypeDef;const GPIO_TypeDef GPIO4 = &P4IN, &P4OUT, &P4DIR, &P4REN, &P4SEL;const GPIO_TypeDef GPIO5 = &P5IN, &P5OUT, &P5DIR, &P5REN, &P5SEL;const GPIO_TypeDef GPIO8 = &P8IN, &P8OUT, &P8DIR, &P8REN, &P8SEL;const GPIO_TypeDef* LED_GPIO5 = &GPIO4, &GPIO4, &GPIO4, &GPIO5, &GPIO8;const uint8_t LED_PORT5 = BIT5, BIT6, BIT7, BIT7, BIT0;void initClock() while(BAKCTL & LOCKIO) / Unlock XT1 pins for operation BAKCTL &= (LOCKIO); UCSCTL6 &= XT1OFF; /啟動(dòng)XT1 P7SEL |= BIT2 + BIT3; /XT2引腳功能選擇 UCSCTL6 &= XT2OFF; /啟動(dòng)XT2 while (SFRIFG1 & OFIFG) /等待XT1、XT2與DCO穩(wěn)定 UCSCTL7 &= (DCOFFG+XT1LFOFFG+XT2OFFG); SFRIFG1 &= OFIFG; UCSCTL4 = SELA_XT1CLK + SELS_XT2CLK + SELM_XT2CLK; /避免DCO調(diào)整中跑飛 UCSCTL1 = DCORSEL_5; /6000kHz23.7MHz UCSCTL2 = 20000000 / (4000000 / 16); /XT2頻率較高,分頻后作為基準(zhǔn)可獲得更高的精度 UCSCTL3 = SELREF_XT2CLK + FLLREFDIV_16; /XT2進(jìn)行16分頻后作為基準(zhǔn) while (SFRIFG1 & OFIFG) /等待XT1、XT2與DCO穩(wěn)定 UCSCTL7 &= (DCOFFG+XT1LFOFFG+XT2OFFG); SFRIFG1 &= OFIFG; UCSCTL5 = DIVA_1 + DIVS_1 + DIVM_1; /設(shè)定幾個(gè)CLK的分頻 UCSCTL4 = SELA_XT1CLK + SELS_DCOCLK + SELM_DCOCLK; /設(shè)定幾個(gè)CLK的時(shí)鐘源int main( void ) / Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; initClock(); initI2C(); initTFT(); etft_AreaSet(0,0,319,239,0); int i; for(i=0;iPxDIR |= LED_PORTi; /設(shè)置各LED燈所在端口為輸出方向 P4REN |= 0x1F; /使能按鍵端口上的上下拉電阻 P4OUT |= 0x1F; /上拉狀態(tài) uint8_t last_btn = 0x1F, cur_btn, temp; while(1) int temp1, temp2; char buffer41; cur_btn = P4IN & 0x1F; temp = (cur_btn last_btn) & last_btn; /找出剛向下跳變的按鍵 last_btn = cur_btn; int i; for(i=0;i5;+i) if(temp & (1 PxOUT = LED_PORTi; /翻轉(zhuǎn)對應(yīng)的LED _delay_cycles(3276); /延時(shí)大約100ms temp1=7-i; temp2=5-i; sprintf(buffer, Switch %d LED %d, temp1, temp2); etft_DisplayString(buffer, 0, 0, 0xFFFF, 0x0000); sprintf(buffer, temp %d, temp); etft_DisplayString(buffer, 0, 16, 0xFFFF, 0x0000); _delay_cycles(2000000); 2、信號(hào)采集與顯示#include #include #include #include math.h#include dr_tft.h#define N 256 /FFT點(diǎn)數(shù)#define PI 3olatile long IntDegF;volatile long IntDegC;void initClock() while(BAKCTL & LOCKIO) / Unlock XT1 pins for operation BAKCTL &= (LOCKIO); UCSCTL6 &= XT1OFF; /啟動(dòng)XT1 P7SEL |= BIT2 + BIT3; /XT2引腳功能選擇 UCSCTL6 &= XT2OFF; /啟動(dòng)XT2 while (SFRIFG1 & OFIFG) /等待XT1、XT2與DCO穩(wěn)定 UCSCTL7 &= (DCOFFG+XT1LFOFFG+XT2OFFG); SFRIFG1 &= OFIFG; UCSCTL4 = SELA_XT1CLK + SELS_XT2CLK + SELM_XT2CLK; /避免DCO調(diào)整中跑飛 UCSCTL1 = DCORSEL_5; /6000kHz23.7MHz UCSCTL2 = 20000000 / (4000000 / 16); /XT2頻率較高,分頻后作為基準(zhǔn)可獲得更高的精度 UCSCTL3 = SELREF_XT2CLK + FLLREFDIV_16; /XT2進(jìn)行16分頻后作為基準(zhǔn) while (SFRIFG1 & OFIFG) /等待XT1、XT2與DCO穩(wěn)定 UCSCTL7 &= (DCOFFG+XT1LFOFFG+XT2OFFG); SFRIFG1 &= OFIFG; UCSCTL5 = DIVA_1 + DIVS_1 + DIVM_1; /設(shè)定幾個(gè)CLK的分頻 UCSCTL4 = SELA_XT1CLK + SELS_DCOCLK + SELM_DCOCLK; /設(shè)定幾個(gè)CLK的時(shí)鐘源struct compxfloat real,imag;struct compx collectN,collect0N; /AD采集到的值unsigned long fs = 28500; /采樣頻率int i,j,fre;float temp_frc,z;unsigned int t=0,k=0,flag=0,n=0,c=0;/*函數(shù)原型:struct compx EE(struct compx b1,struct compx b2)函數(shù)功能:對兩個(gè)復(fù)數(shù)進(jìn)行乘法運(yùn)算輸入?yún)?shù):兩個(gè)以聯(lián)合體定義的復(fù)數(shù)a,b輸出參數(shù):a和b的乘積,以聯(lián)合體的形式輸出*/struct compx EE(struct compx a,struct compx b)struct compx c;c.real=a.real*b.real-a.imag*b.imag;c.imag=a.real*b.imag+a.imag*b.real;return(c);/*函數(shù)原型:void FFT(struct compx *xin)函數(shù)功能:對輸入的復(fù)數(shù)組進(jìn)行快速傅里葉變換(FFT)輸入?yún)?shù):*xin復(fù)數(shù)結(jié)構(gòu)體組的首地址指針,struct型*/void FFT(struct compx *xin) int f,m,nv2,nm1,i,k,l,j=0; struct compx u,w,t;int le,lei,ip; /FFT運(yùn)算核,使用蝶形運(yùn)算完成FFT運(yùn)算nv2=N/2; /變址運(yùn)算,即把自然順序變成倒位序,采用雷德算法 nm1=N-1; for(i=0;inm1;i+) if(ij) /如果ij,即進(jìn)行變址 t=xinj; xinj=xini; xini=t; k=nv2; /求j的下一個(gè)倒位序 while(k=j) /如果k=j,表示j的最高位為1 j=j-k; /把最高位變成0 k=k/2; /k/2,比較次高位,依次類推,逐個(gè)比較,直到某個(gè)位為0 j=j+k; /把0改為1f=N; for(l=1;(f=f/2)!=1;l+) /計(jì)算l的值,即計(jì)算蝶形級(jí)數(shù) ; for(m=1;m=l;m+) / 控制蝶形結(jié)級(jí)數(shù) /m表示第m級(jí)蝶形,l為蝶形級(jí)總數(shù)l=log(2)N le=2(m-1); /le蝶形結(jié)距離,即第m級(jí)蝶形的蝶形結(jié)相距l(xiāng)e點(diǎn) lei=le/2; /同一蝶形結(jié)中參加運(yùn)算的兩點(diǎn)的距離 u.real=1.0; /u為蝶形結(jié)運(yùn)算系數(shù),初始值為1 u.imag=0.0; w.real=cos(PI/lei); /w為系數(shù)商,即當(dāng)前系數(shù)與前一個(gè)系數(shù)的商 w.imag=-sin(PI/lei); for(j=0;j=lei-1;j+) /控制計(jì)算不同種蝶形結(jié),即計(jì)算系數(shù)不同的蝶形結(jié) for(i=j;i=N-1;i=i+le) /控制同一蝶形結(jié)運(yùn)算,即計(jì)算系數(shù)相同蝶形結(jié) ip=i+lei; /i,ip分別表示參加蝶形運(yùn)算的兩個(gè)節(jié)點(diǎn) t=EE(xinip,u); /蝶形運(yùn)算,詳見公式 xinip.real=xini.real-t.real; xinip.imag=xini.imag-t.imag; xini.real=xini.real+t.real; xini.imag=xini.imag+t.imag; u=EE(u,w); /改變系數(shù),進(jìn)行下一個(gè)蝶形運(yùn)算 void main( void )float yN;/ Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; initClock(); initTFT(); REFCTL0 &= REFMSTR; / Reset REFMSTR to hand over control to / ADC12_A ref control registers ADC12CTL0 = 0x0050 ; / Internal ref = 1.5V ADC12CTL1 = ADC12SHP; / enable sample timer ADC12MCTL0 = ADC12INCH_13; / ADC i/p ch A10 = temp sense i/p ADC12IE = 0x001; / ADC_IFG upon conv result-ADCMEMO _delay_cycles(75); / 75us delay to allow Ref to settle ADC12CTL0 |= ADC12ENC; P8DIR |= BIT0; P5DIR |= BIT7; P4DIR |= BIT5+BIT6+BIT7; char buffer81; etft_AreaSet(0,0,239,319,0);/清屏 sprintf(buffer, Name:Zhao Zhenqi); etft_DisplayString(buffer, 0, 0, 0xFFFF, 0x0000); sprintf(buffer, Student Number:22920132203719); etft_DisplayString(buffer, 0, 16, 0xFFFF, 0x0000); while(1) ADC12CTL0 |= ADC12SC; / Sampling and conversion start _bis_SR_register(LPM4_bits + GIE); / LPM0 with interrupts enabled _no_operation(); if(flag=1) /FFT處理模塊 FFT(collect); for(i=0;iN;i+) /求變換后結(jié)果的模值,存入復(fù)數(shù)的實(shí)部部分 collecti.real=sqrt(collecti.real*collecti.real+collecti.imag*collecti.imag); temp_frc=collect1.real; fre=1; for(i=2;itemp_frc)/求出最大幅值對應(yīng)的頻點(diǎn) temp_frc=collecti.real; fre=i; fre=fre*fs/N;/所測頻率 for(i=0;i80;i+) yi=sin(float)i*PI*fre/2/fs); /LCD液晶屏顯示模塊etft_AreaSet(32,0,239,319,0);/清屏 sprintf(buffer, Frequency: %5d Hz,fre); etft_DisplayString(buffer, 0, 32, 0xFFFF, 0x0000); sprintf(buffer,.); for(i=0;i80;i+) etft_DisplayString(buffer,(i)*4,(int)(yi+1)*10+90),0xFFFF,0x0000);/繪制波形 sprintf(buffer,*); for(j=1;j=500&fre=1500&fre=2500&fre=3500&fre=4500&fre=5500&fre=6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度建筑施工安全文明施工責(zé)任書3篇
- 二零二五年度建筑材料銷售聘用合同范本3篇
- 二零二五年度民間借貸債務(wù)催收代理合同3篇
- 多水下機(jī)器人編隊(duì)自適應(yīng)行為控制方法研究
- 雙十一吃龍蝦活動(dòng)策劃案
- 二零二五年度個(gè)人藝術(shù)品委托拍賣協(xié)議書3篇
- 酒店管理工作實(shí)操指南
- 2025版航空航天產(chǎn)業(yè)投資轉(zhuǎn)借款合同范本3篇
- 二零二五年度散伙協(xié)議書規(guī)范企業(yè)散伙流程3篇
- 機(jī)械行業(yè)采購工作總結(jié)
- 人教版高一數(shù)學(xué)上冊期末考試試卷及答案
- 圍術(shù)期下肢深靜脈血栓預(yù)防的術(shù)中護(hù)理
- GB/T 12996-2012電動(dòng)輪椅車
- 小象學(xué)院深度學(xué)習(xí)-第7講遞歸神經(jīng)網(wǎng)絡(luò)
- 三方采購協(xié)議范本
- 《材料分析測試技術(shù)》全套教學(xué)課件
- 安全學(xué)原理第2版-ppt課件(完整版)
- 傾聽是一種美德
- 武漢東湖賓館建設(shè)項(xiàng)目委托代建合同
- 巴布亞新幾內(nèi)亞離網(wǎng)光儲(chǔ)微網(wǎng)供電方案
- Flexsim物流系統(tǒng)建模與仿真ppt課件(完整版)
評論
0/150
提交評論