




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
音頻信號頻譜分析摘要在當今的數字化時代背景下,DSP已成為通信、計算機、消費類電子產品等領域的基礎器件,是集成電路中發展最快的電子產品,并成為電子產品更新換代的決定因素。DSP芯片已經被廣泛地應用于當今技術革命的各個領域,而且DSP技術也正以極快的速度被應用在通信、電子系統、信號處理系統等許多領域中。本次課程設計介紹了音頻信號頻譜分析的原理以及其所涉及的硬件結構和軟件設計,該設計是基于TMS320C5416DSP芯片的音頻信號頻譜分析的設計系統的主要功能對語音信號進行采樣濾波后FFT變換,并用采集的音頻信號進行頻譜分析,FFT算法采用TLC320AIC23編寫DSP程序實現。然后通過LCD觀察其頻譜分布。關鍵詞:DSP;音頻信號;頻譜分析;FFT;LCD目錄TOC\o"1-2"\h\u100431緒論 頁共29頁1緒論1.1選題背景目前,在微電子技術發展的帶動下,DSP芯片的發展日新月異,DSP的功能日益強大,性能價格比不斷上升,開發手段不斷改進。DSP芯片已經完全走下了“貴族”的圣壇。DSP芯片已經在通信與電子系統、信號處理系統、自動控制、雷達、軍事、航空航天、醫療、家用電器、電力系統等許多領域中得到了廣泛的應用,而且新的應用領域在不斷地被發掘。DSP處理速度快,功耗低,性能好,基于TMS320C5416DSP芯片的語音存儲容量大,具有很好的通信音質等特點,因此被廣泛應用于很多領域中。本設計實現的語音分析系統具有如下優點:1.音頻數據占用資源少2.音質通信級3.開發難度低4.語音芯片與DSP接口電路簡單5.體積小該語音分析系統的設計能夠完成語音采集,播放,存儲,頻譜分析,基本實現了語音分析功能。隨著技術的進步,TMS320C5416DSP與TLV320AIC23的結合的語音編碼方案將會有更好的應用前景。1.2設計要求DSP課程設計是對《數字信號處理》、《DSP原理及應用》等課程的較全面練習和訓練,是實踐教學中的一個重要環節。通過本次課程設計,綜合運用數字信號處理、DSP技術課程以及其他有關先修課程的理論和生產實際知識去分析和解決具體問題,并使所學知識得到進一步鞏固、深化和發展。初步培養學生對工程設計的獨立工作能力,掌握電子系統設計的一般方法。通過課程設計完成基本技能的訓練,如查閱設計資料和手冊、程序的設計、調試等,提高學生分析問題、解決問題的能力。本題目通過TLC320AIC23采集音頻信號(f.max<10kHz),編寫DSP的FFT處理程序(自定頻譜分辨力),獲得幅頻特性之后,在點陣液晶中大致顯示出幅頻圖。并在液晶中用文字顯示頻率幅值前三的頻率值。DSP與TLC320AIC23接口電路的原理圖繪制;DSP控制TLC320AIC23的程序編寫與調試;TLC320AIC23進行語音模擬量到數字信號的轉換,實現聲音的采集,在CCS軟件中分析信號的幅頻特性;編寫DSP的FFT處理程序;控制點陣液晶,實現繪圖功能,將幅頻圖顯示出來;按要求編寫課程設計報告書,正確、完整的闡述設計和實驗結果;在報告中繪制程序的流程圖,并文字說明。2系統總硬件設計方案2.1硬件系統框圖本系統用DSP芯片TMS320C5416與音頻編解碼芯片TLV320AIC23實現硬件接口和軟件設計,并在此硬件基礎上實現語音信號的采集、頻譜分析并用LCD顯示語音信號的幅頻特性曲線。本系統包括音頻采集、DSP對語音信號的處理、LCD顯示三部分。系統結構如圖2-1所示:TLV320AIC23TLV320AIC23TMS320C5416DSP12864LCD音頻信號輸入數據接口控制接口圖2-12.2TLV320AIC23芯片簡介TLV320AIC23(以下簡稱AIC23)是TI推出的一款高性能的立體聲音頻Codec芯片,內置耳機輸出放大器,支持MIC和LINEIN兩種輸入方式(二選一),且對輸入和輸出都具有可編程增益調節。AIC23的模數轉換(ADCs)和數模轉換(DACs)部件高度集成在芯片內部,采用了先進的Sigma-delta過采樣技術,可以在8K到96K的頻率范圍內提供16bit、20bit、24bit和32bit的采樣,ADC和DAC的輸出信噪比分別可以達到90dB和100dB。與此同時,AIC23還具有很低的能耗,回放模式下功率僅為23mW,省電模式下更是小于15uW。由于具有上述優點,使得AIC23是一款非常理想的音頻模擬I/O器件,可以很好的應用在隨聲聽(如CD,MP3……)、錄音機等數字音頻領域。2.3TMS320C5416DSP芯片系統采用的主芯片是TI公司的一款16位定點DSP:TMS320C5416(以下簡稱C5416),主要是考慮到C5416片內具有128K*16位的內部RAM,這對提高系統總體性能和集成度有很大的幫助。另外C5416還具有3個MCBSP多通道緩沖串口,該串口與SPI器件兼容,提供多達128個發送和接收通道。與其他C54xDSP芯片一樣C5416具有功耗低、運算速率高、性價比高的優點。另外C5416具有如下特點:當核電壓為1.6伏特時的工作頻率可達到160MIPS;能訪問64K數據存儲空間、64KI/O空間、以及192K程序存儲空間。TMS320C5416作為主芯片實現語音信號采集、存儲和各模塊之間的通信等控制,其主要功能有:上電自舉,讀取鍵盤值并初始化音頻編碼芯片和液晶屏,控制TLV320AIC23并通過液晶屏顯示TLV320AIC23的工作狀態,TMS320C5416通過以下引腳與TLV320AIC23連接。BCLKX0/BCLKX1:緩沖串口0和1的發送時鐘,用于對來自緩沖串行口發送移位寄存器和傳送至數據發送引腳的數據進行定時;BDX0/BDX1:緩沖串行口數據發送端,來自緩沖串行口發送移位寄存器中的數據經該引腳串行發送;BFSX0/BFSX1:用于發送輸出的幀同步脈沖;BDR0:緩沖串行口數據接收端;BFSR0:用于接收輸入的幀同步脈沖;X2/CLKIN:由晶振接到內部振蕩器的輸入引腳。2.412864LCD帶中文字庫的128X64是一種具有4位/8位并行、2線或3線串行多種接口方式,內部含有國標一級、二級簡體中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為128×64,內置8192個16*16點漢字,和128個16*8點ASCII字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構成全中文人機交互圖形界面。可以顯示8×4行16×16點陣的漢字.也可完成圖形顯示.低電壓低功耗是其又一顯著特點。由該模塊構成的液晶顯示方案與同類型的圖形點陣液晶顯示模塊相比,不論硬件電路結構或顯示程序都要簡潔得多,且該模塊的價格也略低于相同點陣的圖形液晶模塊。3系統模塊設計3.1語音信號采集模塊從適應語音信號頻率、滿足實時性、降低成本、簡化設計的要求出發,本系統選擇TLV320AIC23。TLV320AIC23是一種高性能的立體聲音頻Codec芯片作為從設備,主要完成輸入語音信號的A/D轉換,語音采樣編解碼及濾波處理,該芯片構成簡單,功能強大。AIC23的管腳和內部結構框圖如下:
從上圖可以看出,AIC23主要的外圍接口分為以下幾個部分:一.數字音頻接口:主要管腳為
BCLK-數字音頻接口時鐘信號(bit時鐘),當AIC23為從模式時(通常情況),該時鐘由DSP產生;AIC23為主模式時,該時鐘由AIC23產生;
LRCIN-數字音頻接口DAC方向的幀信號(I2S模式下word時鐘)
LRCOUT-數字音頻接口ADC方向的幀信號
DIN-數字音頻接口DAC方向的數據輸入
DOUT-數字音頻接口ADC方向的數據輸出
這部分可以和DSP的McBSP(Multi-channelbufferedserialport,多通道緩存串口)無縫連接,唯一要注意的地方是McBSP的接收時鐘和AIC23的BCLK都由McBSP的發送時鐘提供。二.麥克風輸入接口:主要管腳為
MICBIAS-提供麥克風偏壓,通常是3/4AVDD
MICIN-麥克風輸入,由AIC結構框圖可以看出放大器默認是5倍增益
連接示意圖如下:
三.LINEIN輸入接口:主要管腳為
LLINEIN-左聲道LINEIN輸入
RLINEIN-右聲道LINEIN輸入
連接示意圖如下:
四.耳機輸出接口:主要管腳為
LHPOUT-左聲道耳機放大輸出
RHPOUT-右聲道耳機放大輸出
LOUT-左聲道輸出
ROUT-右聲道輸出
從框圖可以看出,LOUT和ROUT沒有經過內部放大器,所以設計中常用LHPOUT和RHPOUT,連接示意圖如下:
五.配置接口:主要管腳為
SDIN-配置數據輸入
SCLK-配置時鐘
DSP通過該部分配置AIC23的內部寄存器,每個word的前7bit為寄存器地址,后9bit為寄存器內容。六.其他:主要管腳為
MCLK-芯片時鐘輸入(12.288M、11.2896M、18.432M、16.9344M)
VMID-半壓輸入,通常由一個10U和一個0.1U電容并聯接地
MODE-芯片工作模式選擇,Master或者Slave
CS-片選信號(配置時有效)
CLKOUT-時鐘輸出,可以為MCLK或者MCLK/2(詳見寄存器配置)TLV320AIC23通過以下引腳與TMS320C5416連接。BCLK:I2S(一種TLV320AIC23的數字音頻接口支持的通用的音頻格式)串行數據傳輸時鐘,當TLV320AIC23為主模式時BCLK由TLV320AIC23產生并提供給DSP,頻率為主時鐘的1/4,當從模式時由DSP產生;DIN:I2S格式串行數據輸入端,送入立體聲DAC;DOUT:I2S格式串行數據輸出端,由立體聲ADC產生;LRCIN/LRCOUT:I2S格式數據輸入/出幀同步信號;SCLK:控制端口移位時鐘;SDIN:控制端口串行數據輸入,用來傳輸配置TLV320AIC23內部寄存器數據;/CS:控制端口輸入和地址鎖存選擇端,在SPI控制模式下,作為數據鎖存控制端,在I2C模式下,定義外設的7位地址;XTI/MCLK:晶體或外部時鐘輸入端,TLV320AIC23內部時鐘由它產生。TLV320AIC23的工作時鐘由外接的一個11.2896M的晶振提供,TLV320AIC23從電路模塊電路如圖3-1所示。圖3-1TLV320AIC23從電路模塊電路3.2語音信號處理模塊有語音信號采集模塊所采集的模塊經過A/D轉換輸入TMS320C5416DSP芯片對其進行FFT運算,得其幅頻特性曲線。FFT算法的實現主要分為三個步驟:1.實現輸入數據的比特反轉,輸入數據的比特翻轉實際上就是將輸入數據進行位碼倒置,以便在整個運算后的輸出序列是一個自然序列。2.實現N點復數FFT,這一過程的實現分為三個功能塊,即第一級蝶形運算、第二級蝶形運算、第三級蝶形運算乃至log2N級蝶形運算。對于任何一個2的整數冪N=2m,總可以通過M次分解到2點的DFT計算。通過這樣的M次分解,可構成M(log2N)級迭代計算,每級由N/2個蝶形運算組成。3.功率譜計算,即計算X(k)=X(n)WNnk,X(k)一般是由實部和虛部組成。?因此計算功率普時,只需將FFT變換好的數據,按照實部和虛部求它們的平方和即可。設計的子程序流圖如圖3-2所示;初始化初始化輸入數組排序計算第一層中間值計算層數計算對應層步長計算計算各層中間結果計算結果輸出計算層數=0?YN圖3-2FFT運算子程序流圖3.3LCD顯示模塊本設計中,采用并行8位數據接口輸入方式,把LCD映射到DSP芯片的I/O空間,通過讀寫I/O地址來控制液晶,TMS320C5416DSP芯片對該地址輸出數據,實現LCD的顯示控制。LCD顯示子程序流程圖如圖3-3所示。圖3-3LCD顯示子程序流圖4設計結果顯示運用C語言編寫設計所需要的程序(見附錄),把程序下載到的實驗箱中,觀察LCD上所顯示的幅頻特性曲線如圖4-1,圖4-2所示。圖4-1基波幅頻特性曲線圖4-2混頻信號幅頻特性曲線上圖中所顯示的分別是基波和基波三次諧波以及五次諧波所疊加而得信號的幅頻特性曲線,并且所給信號是一定的,LCD的只進行一次掃描,并且是點狀圖。對程序稍作修改可以實現動態顯示,也可以實現用柱形圖來表示頻譜,如圖4-3所示。圖4-3幅頻特性柱狀圖5設計心得這兩周的課程設計實習周終于結束了,通過兩周以來同學和老師的共同努力,我們終于完成了設計要求。但大家臉上的表情都是欣慰和歡喜的,到底工夫不負有心人。回想過去兩周,這里面的辛苦只有做是課程設計的人才明白,才能體會。通過這種綜合性訓練,要學生達到以下的目的和要求:1.結合課程中所學的理論知識,獨立設計方案。達到學有所用的目的。2.學會查閱相關手冊與資料,通過查閱手冊和文獻資料,并掌握合理選用的原則,培養獨立分析與解決問題的能力。這次設計我們學到了很多東西,雖然作出來的東西很基礎,但是我們加深了對知識的理解和掌握。作為一名大四的學生,我覺得能做類似的課程設計是十分有意義的。同時這是一次團隊合作開發過程,一次難得的經歷。通過此次設計試驗也著重能夠學到許多東西。如果說任何機會都是需要去創造出來的話,那么那個創造者,其實就是你自己。時間過得真快,轉眼間已經有兩個星期了,現在回想起來,往事還歷歷在目。但是不可否認的卻是這些經歷將會是我人生當中不可多得的財富和經驗的累積。參考文獻[1]鄒彥.DSP原理及應用[M].北京:電子工業出版社,2014,1.[2]戴明楨.TMS320C54xDSP結構、原理及應用[M].北京航空航天大學出版社,2001,8.[3]胡圣堯.DSP原理及應用[M].東南大學出版社,2017.7.[4]清源科技.TMS320C54xDSP應用程序設計教程[M].機械工業出版社,2022,1.[5]清源科技.TMS320C54x硬件開發教程[M].機械工業出版社,2021,1.附錄設計程序//頭文件//#include"MMRegs.h"#include"DspRegDefine.h"http://VC5402寄存器定義#include<math.h>#include<stdio.h>///*******************宏定義****************************************************************************/#defineUCHAR unsignedchar#defineUINT16 unsignedint#defineUINT32 unsignedlong#defineTRUE 1#defineFALSE 0#defineLEN128////LCD指令//基本指令集RE=0#defineCLEAR0x0001//清除顯示#defineRESAC0x0002//位址歸位#defineSETPOINT0x0006//進入點設定,游標右移,DDRAM位址計數器(AC)加1#defineCURSOR0x000F//整體顯示,游標顯示,游標位置反白#defineMCURSOR0x0014//游標向右移動,AC=AC+1#defineFUCSET0x0030//功能設定,BITMPU控制界面,基本指令集,默認設置#defineCGRAMAC0x0040//設定CGRAM位址#defineDDRAMAC0x0080//設定DDRAM位址//第一行AC範圍為80H..8FH//第二行AC範圍為90H..9FH//第三行AC範圍為A0H..AFH//第四行AC範圍為B0H..BFH//#defineREADBFRS=0,RW=1,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0//BFAC6AC5AC4AC3AC2AC1AC0//讀取忙碌旗標(BF)和位址//就是讀取指令寄存器,PORT8006,BF=1,表示LCD忙碌//#defineWRITERAMRS=1,RW=0,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0//D7D6D5D4D3D2D1D0//寫入資料到RAM//就是寫數據寄存器:PORT8005//#defineREADRAMRS=1,RW=1,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0//D7D6D5D4D3D2D1D0//讀取RAM的值//就是從數據寄存器讀取資料,PORT8007//擴充指令集RE=1#defineIDLE0x01//待命模式#defineCGRAMSET0x02//捲動位址或RAM位址選擇#defineREVERSE0x04//反白選擇#defineSLEEP0x0c//脫離睡眠模式#defineEFUCSET0x66//擴充功能設定,8BITMPU控制界面,為擴充指令集動作,繪圖顯示ON#defineSISA0x40//設定IRAM位址或捲動位址#defineSETGDRAM0x80//設定繪圖RAM位址#defineLength128//FFT的點數/////*端口定義*///ioportUINT16port8002;ioportUINT16port8006;//串行時鐘地址ioportUINT16port8007;//串行數據地址///*全局變量定義*///UINT16data_buff[LEN];UCHARdata_buffer[128];UCHARdata_picture[16*64];doublepr[128],pi[128],fr[128],fi[128],result[128];constdoublepp=3.1415926;UINT16iii=0;/**************************************************************************************所使用的函數原型****************************************************************************************/voidcpu_init(void);//初始化CPUvoidDelay(UINT16numbers);//延遲externvoiddelay_100us(void);//100us延遲--指令之間的延遲externvoiddelay_1us(void);//1us延遲--時鐘之間的延遲voiddelay_50ms(void);//50ms延遲--復位延遲voiddelay_20ms(void);//20ms延遲--清屏延遲voidSendByte(UCHARdat);//串行發送一字節數據voidSendCMD(UCHARdat);//寫指令寄存器voidSendDat(UCHARdat);//寫顯示數據或單字節字符voidDisplay(UCHARx_add,UCHARdat1,UCHARdat2);//寫漢字到LCD指定的位置voidxint2_init(void);//外部中斷2初始化子程序interruptvoidExtInt2();//中斷2中斷子程序voidInitlcd(void);//初始化LCdvoiddisplay_lcd();voidbuffer();voiddata_switch(unsignedchar*ptr);voidkfft(doublepr[128],doublepi[128],intn,intk,doublefr[128],doublefi[128],intl,intil);///************************************************************************* ***********************函數定義*******************************************************************************************/////函數名稱:voidcpu_init(void)//函數說明:初始化CPU//輸入參數:無//輸出參數:無//voidxint2_init()//外部中斷2初始化子程序{*(unsignedint*)IMR=0x0004;//使能int2中斷/*bit151:XINT2flag--write"1"toclearbit14-30:reservedbit21:XINT2Polarity--"1"risingeagebit10:XINT2Priority--"0"Highprioritybit01:XINT2Enable--"1"Enableinterrupt*/asm("rsbxINTM");//開總中斷}interruptvoidExtInt2()//中斷2中斷子程序{*(unsignedint*)IFR=0xFFFF;//清除所有中斷標志,"寫1清0",這個語句可以省略,響應中斷自動清除中斷標志//讀AD7822的轉換結果data_buff[iii]=port8002&0x00ff;iii++;if(iii==256)iii=0;//在此設斷點return;}voidcpu_init(void){ asm("nop"); asm("nop"); asm("nop");// //CLKMDDEFINITIONS: //PLLMUL(bit15-12)-0000PLLmultiplier=0(multby1)//PLLDIV(bit11)-0PLLdivider=0(divby1)//PLLCOUNT(bit10-3)-11111111PLLcountersettomax//PLLONOFF(bit2)-1PLLon//PLLNDIV(bit1)-1SelectPLLmode//PLLSTATUS(bit1)-xPLLStatus(readonly)////0000011111111111=0x07ffCLKMD=1XCLKIN// *(unsignedint*)CLKMD=0x0;//switchtoDIVmodeclkout=1/2clkinwhile(((*(unsignedint*)CLKMD)&01)!=0);*(unsignedint*)CLKMD=0x07ff;//switchtoPLLX1mode////ST0DEFINITIONS://ARP(bit15-13)-000Auxiliaryregisterpointer//TC(bit12)-1Test/controlflag//C(bit11)-1Carryissetto1iftheresultofanadditiongeneratesacarry;itisclearedto0ifthe//resultofasubtractiongeneratesaborrow.//OVA(bit10)-0OverflowflagforaccumulatorA//OVB(bit9)-0OverflowflagforaccumulatorB//DP(bit8-0)-00000000Data-memorypagepointer////0001100000000000=0x1800Resetvalue////*(unsignedint*)ST0=0x1800;////ST1DEFINITIONS://BRAF(bit15)-0Block-repeatactiveflag//CPL(bit14)-1CompilermodeCPL=0DP;CPL=1SP//XF(bit13)-1XFstatus//HM(bit12)-0Holdmode//INTM(bit11)-1InterruptmodeINTM=0,Allunmaskedinterruptsareenabled//Reser(bit10)-0Alwaysreadas0//OVM(bit9)-0Overflowmode//SXM(bit8)-1Sign-extensionmode//C16(bit7)-0Dual16-Bit/double-precisionarithmeticmode//FRCT(bit6)-0Fractionalmode//CMPT(bit5)-0Compatibilitymode//ASM(bit4-0)-00000Accumulatorshiftmode////0110100100000000=0x2900Resetvalue////*(unsignedint*)ST1=0x6900;////IPTRDEFINITIONS?//IPTR(bit15-7)-001111111Run-timeInterruptvectorlocation=0x3f80(fornow)//MP/~MC(bit6)-1TurnoffinternalInstructionROM(useRAM)//OVLY(bit5)-1TurnoninternalRAM//AVIS(bit4)-1Addressvisibilityon//DROM(bit3)-0DataROMofFF00~FFFFisexternal//CLKOFF(bit2)-0Clockoutenabled,onlyforuseclkout=cpuclock//SMUL(bit1)-1SaturatebeforemultiplyonMAC//SST(bit0)-0Donotsaturatebeforestore////0011111111110010=0x3ff2/**/ *(unsignedint*)PMST=0x3FF2;// //SWWSRDEFINITIONS?//XPA(bit15)-0Extendedprogramaddresscontrolbit.XPAisusedinconjunctionwiththeprogramspacefields//(bits0through5)toselecttheaddressrangeforprogramspacewaitstates//I/O(bits14-12)-111settomaxwaitstatesforseven//Data1(bits11-9)-111SevenWaitstateforUpperdataspace(0x8000-0xFFFF)//Data2(bits8-6)-111SevenWaitstatesforLowerdataspace(0x0000-0x7FFF)//Prog1(bits5-3)-111SevenWaitstateforUpperprogramspace.(xx8000-xxFFFF)//Prog2(bits2-0)-111SevenWaitstatesforProgramspace.(xx0000-xx7FFF)////1111111111111111-0x7fff/**/ *(unsignedint*)SWWSR=0x7fff;////SWCRDEFINITIONS?//Reserved(bits15-1)//SWSM(bit0)-1wait-statebasevaluesaremulitpliedby2//foramaximumof14waitstates.////0000000000000001// *(unsignedint*)SWCR=0x0001;////BSCRDEFINITIONS?//BNKCMP(bit15-12)-1111Bankcompare.Determinestheexternalmemory-banksize.BNKCMPisusedtomaskthefourMSBsof//anaddress.//11114k//11108k//110016k//100032k//000064k//PS-DS(bit11)-1Oneextracycleisinsertedbetweenconsecutivedataandprogramreads.//Reserved(bits10-3)-00000000//HBH (bit2)-0Thehpibusholderisdisabled//BH(bit1)-0Thedatabusholderisdisabled//EXIO(bit0)-0Theexternalbusinterfacefunctionsasusual////1111100000000000//*(unsignedint*)BSCR=0xf800;// asm("ssbxintm");//Disableallmaskinterrupts////IMRDEFINITIONS //Writinga1toanyIMRbitpositionenablesthecorrespondinginterrupt(whenINTM=0)//Reserved(bits15-14)-xx//DMAC5(bit13)-0DMAchannel5interruptmaskbit//DMAC4(bit12)-0DMAchannel4interruptmaskbit//BXINT1/DMAC3(bit11)-0McBSP1transmitinterruptmaskbit,ortheDMAchannel3//BRINT1/DMAC2(bit10)-0McBSP1receiveinterruptmaskbit,ortheDMAchannel2//HPINT(bit9)-0Hostto’54xinterrup/mask//INT3(bit8)-0Externalinterrupt3mask//TINT1/DMAC1(bit7)-0timer1interruptmaskbit,ortheDMAchannel1interruptmaskbit//DMAC0(bit6)-0reserved,ortheDMAchannel0interruptmaskbit//BXINT0(bit5)-0McBSP0transmitinterruptmaskbit//BRINT0(bit4)-0McBSP0receiveinterruptmaskbit//TINT0(bit3)-0Timer0interruptmaskbit//INT2(bit2)-0Externalinterrupt2maskbit//INT1(bit1)-0Externalinterrupt1maskbit//INT0(bit0)-0Externalinterrupt0maskbit////0000000000000000// *(unsignedint*)IMR=0x0;////IFRDEFINITIONS //Writinga1toanyIFRbitpositionclearthecorrespondinginterruptmask,whencorrespondinginterruptoccurIFRcorrespondingbit=1//Reserved(bits15-14)-xx//DMAC5(bit13)-1DMAchannel5interruptflagbit//DMAC4(bit12)-1DMAchannel4interruptflagbit//BXINT1/DMAC3(bit11)-1McBSP1transmitinterruptflagbit,ortheDMAchannel3//BRINT1/DMAC2(bit10)-1McBSP1receiveinterruptflagbit,ortheDMAchannel2//HPINT(bit9)-1Hostto’54xinterrutpflak//INT3(bit8)-1Externalinterrupt3flag//TINT1/DMAC1(bit7)-1timer1interruptflagbit,ortheDMAchannel1interruptmaskbit//DMAC0(bit6)-1reserved,ortheDMAchannel0interruptflagbit//BXINT0(bit5)-1McBSP0transmitinterruptflagbit//BRINT0(bit4)-1McBSP0receiveinterruptflagbit//TINT0(bit3)-1Timer0interruptflagbit//INT2(bit2)-1Externalinterrupt2flagbit//INT1(bit1)-1Externalinterrupt1flagbit//INT0(bit0)-1Externalinterrupt0flagbit////1111111111111111/**/ *(unsignedint*)IFR=0xffff;//asm("nop"); asm("nop"); asm("nop"); }/************************************************************-函數名稱:voidDelay(intnumbers)-函數說明:延時-輸入參數:numbers-輸出參數:無************************************************************/voidDelay(UINT16numbers){ UINT16i,j; for(i=0;i<4000;i++) for(j=0;j<numbers;j++); }////函數名稱:voiddelay_50ms(void)//函數說明:50ms延遲//輸入參數:無//輸出參數:無//voiddelay_50ms(){UINT16i,j;for(i=0;i<=1000;i++);for(j=0;j<=2000;j++);//延遲250*1000*CLKOUT=500000*CLKOUT//1/CLKOUT=0.2us}////函數名稱:voiddelay_20ms(void)//函數說明:20ms延遲//輸入參數:無//輸出參數:無//voiddelay_20ms(){UINT16i,j;for(i=0;i<=1000;i++);for(j=0;j<=400;j++);//延遲10*1000*CLKOUT=100000*CLKOUT//1/CLKOUT=0.2us}////函數名稱:voidSendByte(UCHARdat)串行發送一字節數據//函數說明:串行發送一字節數據,在時鐘的上升沿發送數據,在時鐘為低電平時,數據變化//輸入參數:發送的數據//輸出參數:無//voidSendByte(UCHARdat){UCHARi;UINT16temp;for(i=0;i<8;i++){temp=port8007;//讀IO8007SCLK="0";if(dat&0x0080)port8006=0;//寫IO8006SID="1",發送數據"1"MSB先發送elsetemp=port8006;//讀IO8006SID="0",發送數據"0"MSB先發送port8007=0;//寫IO8007SCLK="1";dat=dat<<1;//數據左移,移位到dat.7}temp=port8007;//讀IO8007SCLK="0";}////函數名稱:voidSendCMD(UCHARdat)寫指令寄存器//函數說明:寫指令寄存器//輸入參數:輸入的命令字//輸出參數:無//voidSendCMD(UCHARdat){SendByte(0x00F8);//11111,00,0RW=0,RS=0同步標志SendByte(dat&0x00F0);//高四位SendByte((dat&0x000F)<<4);//低四位}////函數名稱:voidSendDat(UCHARdat)寫顯示數據或單字節字符//函數說明:寫數據寄存器//輸入參數:輸入的數據//輸出參數:無//voidSendDat(UCHARdat){SendByte(0x00FA);//11111,01,0RW=0,RS=1SendByte(dat&0x00F0);//高四位SendByte((dat&0x000F)<<4);//低四位}////函數名稱:voiddisplay(UCHARx_add,UCHARdat1,UCHARdat2)寫漢字到LCD指定的位置//函數說明:x_add顯示RAM的地址,dat1/dat2顯示漢字編碼//輸入參數:x_add,dat1/dat2//輸出參數:無//voidDisplay(UCHARx_add,UCHARdat1,UCHARdat2){SendCMD(x_add);//1xxx,xxxx設定DDRAM7位地址xxx,xxxx到地址計數器ACSendDat(dat1);SendDat(dat2);}////函數名稱:voidInitlcm(void)//函數說明:初始化LCM//輸入參數:無//輸出參數:無//voidInitlcd(){asm("nop");delay_50ms();SendCMD(0x30);//功能設定,8BIT并口,基本指令集delay_100us();SendCMD(0x02);//功能設定,8BIT并口,基本指令集delay_100us();SendCMD(0x0c);//整體顯示,游標顯示,游標位置反白delay_100us();SendCMD(0x06);//清除顯示delay_20ms();SendCMD(0x80);//進入點設定,游標右移,DDRAM位址計數器(AC)加1delay_100us();}voiddisplay_lcd(unsignedchar*ptr){unsignedchari,j,k; SendCMD(0x34);//打開擴展指令集 i=0x80; for(j=0;j<32;j++) {SendCMD(i++);SendCMD(0x80); for(k=0;k<16;k++) { SendDat(*ptr++); } } i=0x80; for(j=0;j<32;j++) { SendCMD(i++);SendCMD(0x88); for(k=0;k<16;k++) { SendDat(*ptr++); } }SendCMD(0x36);//打開繪圖顯示 SendCMD(0x30);//回到基本指令集}/************************************************************* ******************主函數********************************************************************************/voidbuffer(){ inti;/* for(i=0;i<128;i++) { data_buffer[i]=32.0*(1-sin(pp*i/64));; }*/ for(i=0;i<16*64;i++) { data_picture[i]=0x00; }}voiddata_switch(unsignedchar*ptr){ inti,k; for(i=0;i<128;i++) { k=i%8; switch(k) { case0:data_picture[data_buffer[i]*16+i/8]=0x80|data_picture[data_buffer[i]*16+i/8];break; case1:data_picture[data_buffer[i]*16+i/8]=0x40|data_picture[data_buffer[i]*16+i/8];break; case2:data_picture[data_buffer[i]*16+i/8]=0x20|data_picture[data_buffer[i]*16+i/8];break; case3:data_picture[data_buffer[i]*16+i/8]=0x10|data_picture[data_buffer[i]*16+i/8];break; case4:data_picture[data_buffer[i]*16+i/8]=0x08|data_picture[data_buffer[i]*16+i/8];break; case5:data_picture[data_buffer[i]*16+i/8]=0x04|data_picture[data_buffer[i]*16+i/8];break; case6:data_picture[data_buffer[i]*16+i/8]=0x02|data_picture[data_buffer[i]*16+i/8];break; case7:data_picture[data_buffer[i]*16+i/8]=0x01|data_picture[data_buffer[i]*16+i/8];break; } }}voidkfft(doublepr[128],doublepi[128],intn,intk,doublefr[128],doublefi[128],intl,intil){ intit,m,is,i,j,nv,l0;doublep,q,s,vr,vi,poddr,poddi;for(it=0;it<=n-1;it++){m=it;is=0;for(i=0;i<=k-1;i++){j=m/2;is=2*is+(m-2*j);m=j;}fr[it]=pr[is];fi[it]=pi[is];}pr[0]=1.0;pi[0]=0.0;p=6.283185306/(1.0*n);pr[1]=cos(p);pi[1]=-sin(p);if(l!=0)pi[1]=-pi[1];for(i=2;i<=n-1;i++){p=pr[i-1]*pr[1];q=pi[i-1]*pi[1];s=(pr[i-1]+pi[i-1])*(pr[1]+pi[1]);pr[i]=p-q;pi[i]=s-p-q;}for(it=0;it<=n-2;it=it+2){vr=fr[it];vi=fi[it];fr[it]=vr+fr[it+1];fi[it]=vi+fi[it+1];fr[it+1]=vr-fr[it+1];fi[it+1]=vi-fi[it+1];}m=n/2;nv=2;for(l0=k-2;l0>=0;l0--){m=m/2;nv=2*nv;for(it=0;it<=(m-1)*nv;it=it+nv)for(j=0;j<=(nv/2)-1;j++){p=pr[m*j]*fr[it+j+nv/2];q=pi[m*j]*fi[it+j+nv/2];s=pr[m*j]+pi[m*j];s=s*(fr[it+j+nv/2]+fi[it+j+nv/2]);poddr=p-q;poddi=s-p-q;fr[it+j+nv/2]=fr[it+j]-poddr;fi[it+j+nv/2]=fi[it+j]-poddi;fr[it+j]=fr[it+j]+poddr;fi[it+j]=fi[it+j]+poddi;}}if(l!=0)for(i=0;i<=n-1;i++){fr[i]=fr[i]/(1.0*n);fi[i]=fi[i]/(1.0*n);}if(il!=0)for(i=0;i<=n-1;i++){pr[i]=sqrt(fr[i]*fr[i]+fi[i]*fi[i]);if(fabs(fr[i])<0.000001*fabs(fi[i])){if((fi[i]*fr[i])>0)pi[i]=90.0;elsepi[i]=-90.0;}elsepi[i]=atan(fi[i]/fr[i])*360.0/6.283185306;}}voidmain(){ inti=0;doublemax=0; //系統初始化asm("nop");cpu_init();//初始化CPUasm("nop"); xint2_init();//外部中斷2初始化asm("nop");//LCD初始化asm("nop");Initlcd();for(i=0;i<256;i++)//初始化數組data_buff[i]=0data_buff[i]=0;Delay(2);//while(1){for(i=0;i<128;i++)//待處理的數據{pr[i]=sin(2*pp*i)+2*sin(5*pp*i)+sin(7*pp*i);//pr[i]=data_buff[i];pi[i]=0;fr[i]=0;fi[i]=0;}kfft(pr,pi,128,7,fr,fi,0,1);for(i=0;i<128;i++){result[i]=sqrt(fr[i]*fr[i]+fi[i]*fi[i]); if(result[i]>max) max=result[i];}for(i=0;i<128;i++){ result[i]=result[i]*64/max; } for(i=0;i<128;i++){ data_buffer[i]=result[i]; }buffer();data_switch(data_buffer);//LCD顯示display_lcd(data_picture);}}
高考語文試卷一、語言文字運用(15分)1.在下面一段話的空缺處依次填入詞語,最恰當的一組是(3分)提到桃花源,許多人會聯想到瓦爾登湖。真實的瓦爾登湖,早已成為▲的觀光勝地,梭羅的小木屋前也經常聚集著▲的游客,不復有隱居之地的氣息。然而虛構的桃花源一直就在我們的心中,哪怕▲在人潮洶涌的現代城市,也可以獲得心靈的寧靜。A.名聞遐邇聞風而至雜居 B.名噪一時聞風而至棲居C.名噪一時紛至沓來雜居 D.名聞遐邇紛至沓來棲居2.在下面一段文字橫線處填入語句,銜接最恰當的一項是(3分)在南方,芭蕉栽植容易,幾乎四季常青。▲至于月映蕉影、雪壓殘葉,那更是詩人畫家所向往的了。①它覆蓋面積大,吸收熱量大,葉子濕度大。②古人在走廊或書房邊種上芭蕉,稱為蕉廊、蕉房,饒有詩意。③因此蕉陰之下,是最舒適的小坐閑談之處。④在旁邊配上幾竿竹,點上一塊石,真像一幅元人的小景。⑤在夏日是清涼世界,在秋天是分綠上窗。⑥小雨乍到,點滴醒人;斜陽初過,青翠照眼。A.①③②④⑥⑤ B.①④②③⑥⑤C.②①④③⑤⑥ D.②③④①⑤⑥3.下列詩句與“憫農館”里展示的勞動場景,對應全部正確的一項是(3分)①笑歌聲里輕雷動,一夜連枷響到明②種密移疏綠毯平,行間清淺縠紋生③分疇翠浪走云陣,刺水綠針抽稻芽④陰陰阡陌桑麻暗,軋軋房櫳機杼鳴A.①織布②插秧③車水④打稻 B.①織布②車水③插秧④打稻C.①打稻②插秧③車水④織布D.①打稻②車水③插秧④織布4.閱讀下圖,對VR(即“虛擬現實”)技術的解說不正確的是一項是(3分)A.VR技術能提供三個維度的體驗:知覺體驗、行為體驗和精神體驗。 B.現有的VR技術在精神體驗上發展較快,而在知覺體驗上發展較慢。C.VR技術的未來方向是知覺體驗、行為體驗和精神體驗的均衡發展。D.期許的VR體驗將極大提高行為體驗的自由度和精神體驗的滿意度。二、文言文閱讀(20分)閱讀下面的文言文,完成5—8題。臨川湯先生傳鄒迪光先生名顯祖,字義仍,別號若士。豫章之臨川人。生而穎異不群。體玉立,眉目朗秀。見者嘖嘖曰:“湯氏寧馨兒。”五歲能屬對。試之即應,又試之又應,立課數對無難色。十三歲,就督學公試,補邑弟子員。每試必雄其曹偶。庚午舉于鄉,年猶弱冠耳。見者益復嘖嘖曰:“此兒汗血,可致千里,非僅僅蹀躞康莊也者。”丁丑會試,江陵公①屬其私人啖以巍甲而不應。曰:“吾不敢從處女子失身也。”公雖一老孝廉乎,而名益鵲起,海內之人益以得望見湯先生為幸。至癸未舉進士,而江陵物故矣。諸所為附薰炙者,骎且澌沒矣。公乃自嘆曰:“假令予以依附起,不以依附敗乎?”而時相蒲州、蘇州兩公,其子皆中進士,皆公同門友也。意欲要之入幕,酬以館選,而公率不應,亦如其所以拒江陵時者。以樂留都山川,乞得南太常博士。至則閉門距躍,絕不懷半刺津上。擲書萬卷,作蠹魚其中。每至丙夜,聲瑯瑯不輟。家人笑之:“老博士何以書為?”曰:“吾讀吾書,不問博士與不博士也。”尋以博士轉南祠部郎。部雖無所事事,而公奉職毖慎,謂兩政府進私人而塞言者路,抗疏論之,謫粵之徐聞尉。居久之,轉遂昌令。又以礦稅事多所蹠戾②,計偕之日,便向吏部堂告歸。雖主爵留之,典選留之,御史大夫留之,而公浩然長往,神武之冠竟不可挽矣。居家,中丞惠文,郡國守令以下,干旄往往充斥巷左,而多不延接。即有時事,非公憤不及齒頰。人勸之請托,曰:“吾不能以面皮口舌博錢刀,為所不知后人計。”指床上書示之:“有此不貧矣。”公于書無所不讀,而尤攻《文選》一書,到掩卷而誦,不訛只字。于詩若文無所不比擬,而尤精西京六朝青蓮少陵氏。公又以其緒余為傳奇,若《紫簫》、《還魂》諸劇,實駕元人而上。每譜一曲,令小史當歌,而自為之和,聲振寥廓。識者謂神仙中人云。公與予約游具區靈巖虎丘諸山川,而不能辦三月糧,逡巡中輟。然不自言貧,人亦不盡知公貧。公非自信其心者耶?予雖為之執鞭,所忻慕焉。(選自《湯顯祖詩文集》附錄,有刪節)[注]①江陵公:指時相張居正,其為江陵人。②蹠戾:乖舛,謬誤。5.對下列加點詞的解釋,不正確的一項是(3分)A.每試必雄其曹偶 雄:稱雄B.酬以館選 酬:應酬C.以樂留都山川 樂:喜愛D.為所不知后人計 計:考慮6.下列對原文有關內容的概括和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南電子科技職業學院《現代日語語法》2023-2024學年第二學期期末試卷
- 西昌學院《甲骨文專題》2023-2024學年第二學期期末試卷
- 天津美術學院《母嬰中醫護理學》2023-2024學年第一學期期末試卷
- 河北化工醫藥職業技術學院《貨幣與金融統計學》2023-2024學年第一學期期末試卷
- 南陽師范學院《鑄牢中華民族共同體意識》2023-2024學年第一學期期末試卷
- 天府新區航空旅游職業學院《數字調色與達芬奇操作基礎》2023-2024學年第二學期期末試卷
- 合肥師范學院《環境學基礎》2023-2024學年第二學期期末試卷
- 養殖場家禽合作合同書
- 委托代理記賬服務合同
- 裝修工程增減項補充合同協議書
- LS 8010-2014植物油庫設計規范
- GB/T 33342-2016戶用分布式光伏發電并網接口技術規范
- GB/T 22427.7-2008淀粉粘度測定
- GB/T 20041.21-2017電纜管理用導管系統第21部分:剛性導管系統的特殊要求
- GA/T 1147-2014車輛駕駛人員血液酒精含量檢驗實驗室規范
- 第八章工程倫理的應用 工程倫理學課件
- BIS--腦電雙頻譜指數監護儀課件
- 《真善美的小世界》-課件
- 國際膿毒癥與膿毒癥休克指南
- 認識電燈泡課件
- 安全評價收費標準重慶市
評論
0/150
提交評論