數(shù)字信號處理-2_第1頁
數(shù)字信號處理-2_第2頁
數(shù)字信號處理-2_第3頁
數(shù)字信號處理-2_第4頁
數(shù)字信號處理-2_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

PAGEPAGE1燕山大學(xué)課程設(shè)計(jì)說明書題目:音頻控制與分析學(xué)院(系):電氣工程學(xué)院年級專業(yè):10級儀表二班學(xué)號:學(xué)生姓名:指導(dǎo)教師:謝平杜義浩教師職稱:教授講師課程名稱:“單片機(jī)原理及應(yīng)用——數(shù)字信號處理”課程設(shè)計(jì)基層教學(xué)單位:指導(dǎo)教師:學(xué)號學(xué)生姓名(專業(yè))班級儀表二班設(shè)計(jì)題目音頻控制與分析設(shè)計(jì)技術(shù)參數(shù)1、獨(dú)立完成設(shè)計(jì)任務(wù)。2、編程,上機(jī)調(diào)試。3、連接硬件實(shí)驗(yàn)線路,實(shí)現(xiàn)所要求的功能。4、完成設(shè)計(jì),提交課程設(shè)計(jì)報(bào)告。設(shè)計(jì)要求1、采用模塊:pwm轉(zhuǎn)換電路、單片機(jī)串口通信、Matlab信號處理工具箱實(shí)現(xiàn)功能:2、用端口輸出不同頻率的脈沖,控制喇叭發(fā)出不同音調(diào),通過單片機(jī)串口發(fā)送給PC系統(tǒng)。3、對比不同信號的時(shí)域波形和頻譜特性,設(shè)計(jì)軟件分析界面。4、擴(kuò)展:基于信號分析結(jié)果,通過串口發(fā)送命令給單片機(jī)系統(tǒng),控制相應(yīng)的數(shù)碼管或LED發(fā)光顯示相應(yīng)信號參數(shù)。工作量軟件編程與硬件調(diào)試相結(jié)合,繪制設(shè)計(jì)流程圖,編制相應(yīng)軟件界面,實(shí)現(xiàn)單片機(jī)控制與信號處理任務(wù)的綜合應(yīng)用參考資料1)《微型計(jì)算機(jī)控制系統(tǒng)》賴壽宏,機(jī)械工業(yè)出版社(教材)2)《單片機(jī)及應(yīng)用》李大友,高等教育出版社(教材)3)《信號處理原理及應(yīng)用》謝平等機(jī)械工業(yè)出版社(教材)4)《Matlab程序設(shè)計(jì)及其在信號處理中的應(yīng)用》聶祥飛等西南交通大學(xué)出版社周次第一周第二周應(yīng)完成內(nèi)容熟悉偉福單片機(jī)編程環(huán)境,調(diào)試單片機(jī)各基本功能模塊;熟悉matlab信號處理工具箱,信號處理系統(tǒng)基本功能模塊學(xué)習(xí)和調(diào)試單片機(jī)系統(tǒng)與信號處理系統(tǒng)綜合進(jìn)行硬件調(diào)試,撰寫課程設(shè)計(jì)報(bào)告指導(dǎo)教師簽字基層教學(xué)單位主任簽字說明:1、此表一式四份,系、指導(dǎo)教師、學(xué)生各一份,報(bào)送院教務(wù)科一份。2、學(xué)生那份任務(wù)書要求裝訂到課程設(shè)計(jì)報(bào)告前面。目錄第1章摘要…………1第2章系統(tǒng)總體設(shè)計(jì)方案…………2第3章單片機(jī)與matlab的串口通信………………33.1單片機(jī)與matlab串口的硬件連接……33.2串口的讀寫……………3第4章MATLAB軟件實(shí)現(xiàn)……………74.1GUI界面設(shè)計(jì)……………74.2GUI程序介紹……………8第5章系統(tǒng)整體調(diào)試結(jié)果及說明…………………8第6章課設(shè)心得及總結(jié)…………9參考文獻(xiàn)……………10附錄摘要本系統(tǒng)是通過單片機(jī)的音頻采集功能采集音頻信號,通過單片機(jī)的串口發(fā)送到上位機(jī),然后由上位機(jī)用matlab軟件,通過它的串口,將發(fā)送來的信號采集,經(jīng)過matlab的處理,將數(shù)據(jù)顯示在GUI界面上,最后將計(jì)算出的數(shù)據(jù)發(fā)送回單片機(jī),控制單片機(jī)數(shù)碼管的顯示。本系統(tǒng)可應(yīng)用在通過識別一段歌曲,然后電腦自動畫出其歌譜。在控制工程中,使用大量的數(shù)據(jù)采集系統(tǒng),該類系統(tǒng)通常是微處理器(單片機(jī))系統(tǒng),其處理、分析數(shù)據(jù)的能力相對較低,一般是將這些數(shù)據(jù)傳送到PC機(jī),由相應(yīng)的應(yīng)用軟件系統(tǒng)進(jìn)行處理、分析和形成圖表、打印,因此,兩類系統(tǒng)必須要實(shí)現(xiàn)通信。MATLAB以其強(qiáng)大的科學(xué)計(jì)算與可視化功能、簡單易用、開放式可擴(kuò)展環(huán)境,特別是諸多的面向不同應(yīng)用領(lǐng)域的工具箱支持,使其在信號處理、自動控制等許多領(lǐng)域獲得廣泛的應(yīng)用,成為計(jì)算機(jī)輔助設(shè)計(jì)和分析、算法研究和應(yīng)用開發(fā)的基本工具和首選平臺。GUI為圖形化界面,應(yīng)用簡單,不需要對MATLAB理解就可以應(yīng)用。本次課設(shè)應(yīng)用MATLAB的GUI界面實(shí)現(xiàn)PC機(jī)與51單片機(jī)串行通信并實(shí)時(shí)繪制51單片機(jī)發(fā)送數(shù)據(jù)的圖形,對于實(shí)時(shí)觀察控制系統(tǒng)的運(yùn)行狀態(tài)和調(diào)節(jié)PID系數(shù)有著重要的應(yīng)用。系統(tǒng)總體設(shè)計(jì)方案本次課程設(shè)計(jì)是自主產(chǎn)生音頻信號來控制單片機(jī)上蜂鳴器發(fā)出聲音,然后將聲音采集到上位機(jī),顯示處理。擴(kuò)展是上位機(jī)將處理完的數(shù)據(jù)發(fā)送到單片機(jī)讓數(shù)碼管顯示。以下是流程圖:程序擴(kuò)展:任務(wù)結(jié)束用matlab進(jìn)行信號分析處理程序擴(kuò)展:任務(wù)結(jié)束用matlab進(jìn)行信號分析處理驅(qū)動蜂鳴器發(fā)聲串行口采集脈沖信號聲單片機(jī)機(jī)運(yùn)行程序產(chǎn)生脈沖信號GUI界面顯示數(shù)據(jù)經(jīng)串口發(fā)送單片機(jī)經(jīng)串口接受單片機(jī)控制數(shù)碼管顯示開始上位機(jī)上位機(jī)機(jī)發(fā)出接收信號程序,接收脈沖信號MMatlab處理數(shù)據(jù)GUI界面顯示GUI界面顯示第三章單片機(jī)與matlab的串口通信3.1單片機(jī)與matlab串口的硬件連接PC機(jī)配置的RS232標(biāo)準(zhǔn)串行接口COM和單片機(jī)的串口連接,使用三線制(收、發(fā)、地)實(shí)現(xiàn)數(shù)據(jù)傳遞,用MAX232作為單片機(jī)與PC機(jī)間的電平轉(zhuǎn)化芯片。串行通信總體設(shè)計(jì)原理圖如圖1所示。3.2串口的讀寫MATLAB對串口的控制操作過程如下①首先要創(chuàng)建串行口設(shè)備對象,這里用到的主要函數(shù)serial();g=serial(‘COM1’);%創(chuàng)建COM1為串口對象并用g標(biāo)識。②定義串口設(shè)備對象的通信屬性,主要有波特率、異步串行幀格式(包括起始位、數(shù)據(jù)位、校驗(yàn)位、停止位等)和輸出輸入緩沖的大小等;③用函數(shù)fopen()實(shí)現(xiàn)設(shè)備對象與硬件設(shè)備的軟連接(相對于硬件設(shè)備的連接),這樣就可以進(jìn)行數(shù)據(jù)的讀寫操作;fopen(g)%打開g標(biāo)識的串口;④進(jìn)行MATLAB串行讀寫操作,主要用到的函數(shù)有fwrite()、fread()等;⑤關(guān)閉和刪除設(shè)備對象,用到的是fclose()、delete()和clear()等函數(shù)。(1)Matlab查詢方式的串行通信編程比較簡單,clc;%初始化串口設(shè)備對象,設(shè)置串口屬性為:PC機(jī)com1口,輸入緩沖區(qū)為1024,讀寫最大完成時(shí)間為6s,波特率為115200b/s,1位停止位,遇到換行符中止,硬件流控制。以下為串口初始化:g=serial('com1');g.InputBufferSize=2400;g.timeout=6;g.BaudRate=115200;g.Parity='none';g.StopBits=1;g.Terminator='LF';g.FlowControl='hardware';fopen(g);%打開串口設(shè)備對象sout=fread(g,33,'uint8')%接收單片機(jī)發(fā)送的33個數(shù)據(jù)(8位),并存入out數(shù)組中fclose(g);%釋放串口設(shè)備對象delete(g);clearg;當(dāng)計(jì)算出數(shù)據(jù)A時(shí),需要經(jīng)過串口發(fā)送,串口初始化和上邊一樣,寫入的命令fwrite(g,A)。(2)基于Matlab中斷方式的實(shí)時(shí)串行通信編程在Matlab環(huán)境下以中斷的方式進(jìn)行串行通信,實(shí)際上是采用事件驅(qū)動的方法實(shí)現(xiàn)的。Matlab提供了instrcallback(obj,event)回調(diào)函數(shù),用戶根據(jù)需要可以自行設(shè)置具體的串行通信事件。Matlab常用的串行口通信中斷事件有:緩沖區(qū)有指定字節(jié)數(shù)目的數(shù)據(jù)可用事件(bytes-availableevent)、串口接收到的數(shù)據(jù)長時(shí)間處于非激活狀態(tài)事件(break-interruptevent)、串行口引腳狀態(tài)改變事件(pin-statusevent)、輸出緩沖區(qū)為空事件(outputemptyevent)等。當(dāng)串口上有監(jiān)視的事件發(fā)生時(shí),Matlab會自動調(diào)用回調(diào)函數(shù)進(jìn)行通信事件的處理。因此,事件驅(qū)動實(shí)質(zhì)上是一種中斷機(jī)制,而回調(diào)函數(shù)實(shí)質(zhì)上相當(dāng)于一個中斷服務(wù)子程序。Matlab端實(shí)時(shí)串行通信的程序流程如圖所示。以下是具體的編程步驟。①建立一個串行通信主程序:serial.m文件,在主程序中進(jìn)行串口設(shè)備初始化操作,并指定回調(diào)函數(shù)中串行通信的事件。程序主要源代碼如下(創(chuàng)建串口設(shè)備對象、設(shè)置串口設(shè)備屬性及打開串口等初始化操作的代碼與前述的查詢方式下的初始化代碼相同):%設(shè)置回調(diào)函數(shù)觸發(fā)事件——當(dāng)串口緩沖區(qū)中有33字節(jié)的數(shù)據(jù)時(shí),觸發(fā)中斷事件,此后主程序自動調(diào)用instrcallback(obj,event)回調(diào)函數(shù)g.BytesAvailableFcnMode='byte';%中斷觸發(fā)事件為’bytes-availableEvent’?g.BytesAvailableFcnCount=33;%接收緩沖區(qū)每收到33個字節(jié)時(shí),觸發(fā)回調(diào)函數(shù)g.BytesAvailableFcn=@instrcallback;%得到回調(diào)函數(shù)句柄fopen(g);%連接串口設(shè)備對象fwrite(g,255);%寫串口,發(fā)送握手信號0xFF(等價(jià)于十進(jìn)制下的數(shù)值255)②修改instrcallback(obj,event)回調(diào)函數(shù),對所發(fā)生的串口通信事件進(jìn)行處理。Matlab缺省的回調(diào)函數(shù)instrcallback(obj,event)存在于instrcallback.m文件中。該文件實(shí)際上是一個有待于用戶修改的程序模板。其中只有一些最基本的程序代碼,能夠顯示導(dǎo)致串口中斷發(fā)生的是哪一類事件,中斷事件所發(fā)生的時(shí)間以及導(dǎo)致事件發(fā)生的對象名等信息(修改回調(diào)函數(shù)文件時(shí),注意要取消文件中相應(yīng)信息后的分號,才能夠在Matlab的命令窗口(commandwindow)中將這些信息顯示出來)。中斷發(fā)生后的通信事件處理以及通信數(shù)據(jù)的分析處理任務(wù),需要用戶自行添加相應(yīng)的服務(wù)程序代碼。Matlab安裝目錄下有兩個instrcallback.m文件,我們只需要修改\MATLAB\toolbox\matlab\iofun\@instrument目錄下的instrcallback.m文件即可。當(dāng)然,在修改instrcallback.m文件之前,最好對其做一個備份。另外,需要注意的是:程序調(diào)試過程中如果再次修改了該回調(diào)函數(shù),要重新啟動Matlab配置該文件,才能使得新的回調(diào)函數(shù)文件生效。也可以調(diào)用回調(diào)函數(shù)g.BytesAvailableFcnMode='byte';g.BytesAvailableFcnCount=33;g.BytesAvailableFcn=@my_callback;回調(diào)函數(shù)my_callback的程序functionmy_callback(obj,event)out=fread(obj,33,'uint8');plot(out);end第四章MATLAB軟件實(shí)現(xiàn)4.1GUI界面設(shè)計(jì)GUIDE是一個專用于GUI程序設(shè)計(jì)的向?qū)гO(shè)計(jì)器。而GUI是由各種圖形對象,如圖形窗口、圖軸、菜單、按鈕、文本框等構(gòu)建的用戶界面,是人機(jī)交互的有效工具和方法,通過GUIDE可以很方便地設(shè)計(jì)出各種符合要求的圖形用戶界面。用戶可以根據(jù)界面提示完成整個工程,卻不必去了解工程內(nèi)部是如何工作的。GUI設(shè)計(jì)既可以基本的MATLAB程序設(shè)計(jì)為主,也可以鼠標(biāo)為主利用GUIDE工具進(jìn)行設(shè)計(jì),也可綜合以上兩種方法進(jìn)行設(shè)計(jì)。1.在MATLAB主窗口中,選擇File菜單中的New菜單項(xiàng),再選擇其中的GUI命令,就會顯示圖形用戶界面的設(shè)計(jì)模板。MATLAB為GUI設(shè)計(jì)一共準(zhǔn)備了四個模板,分別是BlankGUI、GUIwithUicontrols、GUIwithAxesandMenu、ModalQuestionDialog。當(dāng)用戶選擇不同的模板時(shí),在GUI設(shè)計(jì)模板界面的右邊就會現(xiàn)實(shí)出與該模板對應(yīng)的GUI圖形。2.在GUI設(shè)計(jì)模板中選中一個模板,然后單擊OK按鈕,就會現(xiàn)實(shí)GUI設(shè)計(jì)窗口,選擇不同的GUI設(shè)計(jì)模式時(shí),在GUI設(shè)計(jì)窗口中顯示的結(jié)果是不一樣的。GUI設(shè)計(jì)窗口由菜單欄、工具欄、控件工具欄以及圖形對象設(shè)計(jì)區(qū)等部分組成。GUI設(shè)計(jì)窗口的菜單欄有File、Edit、View、Layout、Tools和Help六個菜單項(xiàng),使用其中的命令可以完成圖形用戶界面的設(shè)計(jì)操作。4.2GUI程序介紹(1)以下程序是對串口的初始化,經(jīng)過串口讀取數(shù)據(jù)存儲在data中,它實(shí)現(xiàn)了語音信號的讀入與打開,并繪出了語音信號時(shí)域波形,并求出了其最大值和最小值,顯示在界面上。(2)在MATLAB的信號處理工具箱中函數(shù)FFT和IFFT用于快速傅立葉變換和逆變換。函數(shù)FFT用于序列快速傅立葉變換,其調(diào)用格式為y=fft(x),其中,x是序列,y是序列的FFT,x可以為一向量或矩陣,若x為一向量,y是x的FFT且和x相同長度;若x為一矩陣,則y是對矩陣的每一列向量進(jìn)行FFT。函數(shù)FFT的另一種調(diào)用格式為y=fft(x,N),式中,x,y意義同前,N為正整數(shù)。函數(shù)執(zhí)行N點(diǎn)的FFT,若x為向量且長度小于N,則函數(shù)將x補(bǔ)零至長度N;若向量x的長度大于N,則函數(shù)截短x使之長度為N;若x為矩陣,按相同方法對x進(jìn)行處理。第五章系統(tǒng)整體調(diào)試結(jié)果及說明第一次采樣第二次采樣每按一次采集按鈕,系統(tǒng)就會從單片機(jī)上采樣一次,然后對采樣的信號進(jìn)行時(shí)域和頻域的分析,把分析結(jié)果顯示在窗口上,有時(shí)域頻頻域波形圖以及在這個采樣段內(nèi)的最大值和最小值第6章課設(shè)心得及總結(jié)感謝老師能給我這個機(jī)會進(jìn)入實(shí)驗(yàn)室,讓自己能真正的做一些東西,同時(shí)也很感謝幾位學(xué)長盡心盡力的指點(diǎn),教會了我很多知識。通過這不同尋常的十天課設(shè),我學(xué)到了許多課堂上學(xué)不到的東西,也體味到了科研的艱辛。我充分的認(rèn)識到理論與實(shí)踐相差很多,就算掌握了知識也不一定能做出東西來。通過這次課設(shè),我學(xué)習(xí)了51單片機(jī)的編程,和它PWM模塊,蜂鳴器模塊,數(shù)碼管顯示模塊,串口傳輸,最重要的是學(xué)會了單片機(jī)與上位機(jī)的串口通信,在信號處理方面我也學(xué)到了很多東西,學(xué)會了matlab的數(shù)據(jù)接收讓我知道了我以后的學(xué)習(xí)中需要去學(xué)些什么,找到了以后學(xué)習(xí)的重點(diǎn)。如果要做些事情,必須有充足的知識儲備,資料的查詢更加的重要,最后再次感謝老師和學(xué)長。參考文獻(xiàn)[1]信號處理原理及應(yīng)用謝平林洪彬王娜編著機(jī)械工業(yè)出版社[2]Matlab通信仿真與應(yīng)用劉敏魏玲編著國防工業(yè)出版社[3]基于Matlab7.x的系統(tǒng)分析與設(shè)計(jì)樓順天等編著西安電子科技大學(xué)[4]基于聲卡和MATLAB的語音信號采集和處理陳宇鋒編著中國現(xiàn)代教育裝備[5]數(shù)字信號處理孫洪等譯電子工業(yè)出版社程序附錄functionpushbutton1_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globaldataglobalfs%while(1)ss=serial('com1');ss.BaudRate=2400;ss.DataBits=8;ss.Parity='none';ss.StopBits=1;ss.TimeOut=10;ss.DataTerminalReady='off';ss.RequestToSend='off';ss.FlowControl='none';ss.InputBufferSize=1000;fopen(ss);b=max(data);c=min(data);data=fread(ss,258,'uint8');set(

溫馨提示

  • 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

提交評論