




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 次1 绪论-12 系统功能-13 系统设计-2 3.1 主控单元-2 3.2 STC12C5A60S2 系列单片机单片机的A/D转换器-103.3 STC12C5A60S2 系列单片机单片机的I/O口结构-11 3.4 频谱显示单元-144 音频频谱显示相关问题-16 4.1 频谱及频谱显示-16 4.2 FFT运算规则及编程思想-175 总结-22参考文献-24致谢-23 附录A 源程序-25 附录B 系统电路图-32 1 绪论随着电子技术的进步发展在功率放大器的设计上功能也不断更新。电子信息技术几乎主宰了整个电器行业的发展。我们知道,一切声音都是由振动产生的。声音之所以千变万化各不相同,是因为它们的振动各不相同。产生音调高低的不同,是由于振动的频率不同。频率越高,音高也就越高。根据傅立叶分析,任何声音可以分解为数个甚至无限个正弦波,而它们往往又包含有无数多的谐波分量。而它们又往往是时刻在变化着。所以一个声音的构成其实是很复杂的。将声音的频率分量绘制成曲线,就形成了频谱。本设计通过STC12C5A60S2单片机及外围器件组成的系统实现音频信号的频谱显示,将音频信号送入STC12C5A60S2单片机的A/D转换接口进行数据的采集和预处理, 然后送入单片机中通过编程实现频谱计算,在LCD1604上实时显示音频信号的频谱。2 系统功能 图2.1为系统整体设计原理图 音频信号数据采集,A/D转换FFT算法计算频谱值频谱显示电路图2.1 系统整体设计原理图本设计以STC12C5A60S2单片机作为主控单元,进行数据采集,A/D转换,频谱计算(FFT),再由LCD1604显示频谱。且在完成系统其他控制任务的前提下,充分利用单片机剩余计算资源,采用优化FFT算法计算音频信号频谱。音频数据通过STC12C5A60S2的A/D接口实现模拟音频信号的采样保持和量化处理,包括音频采集和转换(该单片机内置A/D转换);频谱显示电路实现模拟音频信号频谱的分段显示,它将音频信号频谱划分成14段,每段按照14级量化,由LCD1604显示器件显示。3 系统设计 3.1 主控单元 本设计以STC12C5A60S2单片机作为主控单元,进行频谱计算和数据采集,A/D转换,频谱计算(FFT)。3.1 STC12C5A60S2 系列单片机简介 简介STC12C5A6OS2是宏晶公司推出的完全集成的混合信号片上系统MCU。1个时钟/机器周期,低成本、高可靠性、高速A/D转换。带8通道模拟多路开关, 转换速度250K/S(25万次/秒);具有可编程数据更新方式;60KB系统编程的Flash内存。1280字节的片内RAM, 可寻址64KB地址空间的外部数据存储器接口。硬件实现的ISP/IPA在线系统可编程/在线应用可编程。可通过串口(P3.0/P3.1)直接下载用户程序:6个通用 的16位定时器。兼容普通8051的定时器T0/T1 , 4路PCA也是4个定时器:2通道捕获/比较单元(PWM2路/PCA可编程计数器阵列4路/CCU)一可用来当2路D/A使用、用来再实现2个定时器或2个外部中断STC12C5A60S2是真正能独立工作的片上系统STC12C5A60S2的功能 均可由用户进行设置使能/禁止。 STC12C5A60S2主要性能: 高速:1个时钟机器周期,速度比普通MCS一51单片机快8l2倍; 宽电压:5.53 .3 V,2 .23 .6 V; 低功耗设计:掉电模式(可由外部中断唤醒)。可支持下降沿上升沿和远程唤醒; 增加外部掉电检测电路,可在掉电时及时将数据保存EPROM; 工作频率:035 MHz,相当于普通MCS一51单片机的0420 MHz ; 8通道,10位高速ADC,速度可达25万次/秒,2路PWM还可当2路D/A使用; 每个IOEl驱动能力均可达到2OmA。但整个芯片最大不得超过100mA。 图3.1为STC12C5A60S2 单片机实物图 图3.1 STC12C5A60S2 单片机实物图 3.1.2 STC12C5A60S2 系列单片机内部结构STC12C5A60S2系列单片机的内部结构框图如下图所示。STC12C5A60S2单片机中包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时/计数器、UART串口、串口2、I/O接口、高速A/D转换、SPI接口、PCA、看门狗及片内R/C振荡器和外部晶体振荡电路等模块。STC12C5A60S2系列单片机几乎包含了数据采集和控制中所需的所有单元模块,可称得上一个片上系统。 图3.2为STC12C5A60S2系列内部结构框图图3.2 STC12C5A60S2系列内部结构框图3.1.3 STC12C5A60S2 系列单片机管脚及管脚说明 图3.3为STC12C5A60S2系列单片机管图 图3.3 STC12C5A60S2系列单片机管图 管脚说明:P0.0-P0.7:P0口既可作为输入/输出口,也可作为地址/数据复用总线使用。当P0口作为输入/输出口时,P0是一个8位准双向口,内部有弱上拉电阻,无需外接上拉电阻。当P0作为地址/数据复用总线使用时,是低8位地址线 A0-A7,数据线 D0-D7。CLKOUT2/ADC0/ P1.0:p1.0 标准I/O口 PORT10 ADC0 ADC 输入通道-0 CLKOUT2 独立波特率发生器的时钟输出,可通过设置WAKE-CLKO2位/BRT-CLKO将该管脚配置为CLKOUT2。ADC1/P1.0:p1.1 标准I/O口 PORT11 ADC1 ADC 输入通道-1 RxD2 /ECI / ADC2/P1.2:p1.2 标准I/O口 PORT12 ADC2 ADC 输入通道-2 ECI PCA计数器的外部脉冲输入脚 RxD2 第二串口数据接收端TxD2 /CCP0/ADC3/P1.3:P1.3 标准I/O口 PORT13 ADC3 ADC 输入通道-3 CCP0 外部信号捕获(频率测量或当外部中断使用)、高速脉冲输出及脉宽调制输出。 TxD2 第二串口数据发送端SS/CCP1/ADC4/ P1.4:P1.4 标准I/O口 PORT14 ADC4 ADC 输入通道-4 CCP1 外部信号捕获(频率测量或当外部中断使用)、高速脉冲输出及脉宽调制输出。 SS SPI同步串行接口的从机选择信号MOSI/ADC5 /P1.5:P1.5 标准I/O口 PORT15 ADC5 ADC 输入通道-5 MOSI SPI同步串行接口的主出从入(主器件的输出和从器件的输入)MISO/ADC6/P1.6:P1.6 标准I/O口 PORT16 ADC6 ADC 输入通道-6 MISO SPI同步串行接口的主入从出(主器件的输入和从器件的输出)SCLK/ADC7/P1.7:P1.7 标准I/O口 PORT17 ADC7 ADC 输入通道-7 SCLK SPI同步串行接口的时钟信号P2.0-P2.7:P2口内部有上拉电阻,即可以作为输入/输出,也可以作为高8位地址总线使用A8-A15,当P2口作为输入/输出口时,P2是一个8位准双向口。 RxD/ P3.0:P3.0 标准I/O口 PORT30 RxD 串口1数据接收端TxD/P3.1:P3.1 标准I/O口 PORT31 TxD 串口1数据发送端 /P3.2:P3.2 标准I/O口 PORT32 外部中断0,下降沿中断或低电平中断/ P3.3:P3.3 标准I/O口 PORT33 外部中断1,下降沿中断或低电平中断CLKOUT0/T0/P3.4:P3.4 标准I/O口 PORT34 T0 定时器/计数器0的外部输入 定时器0下降沿中断 CLKOUT0 定时器/计数器0的时钟输出,可通过设置WAKE-CLKO0位/TOCLKO将该管脚设置为CLKOUT0CLKOUT1/T1/P3.5:P3.5 标准I/O口 PORT35 T1 定时器/计数器1的外部输入 定时器1下降沿中断 CLKOUT1 定时器/计数器1的时钟输出,课通过设置WAKE-CLKO1位/TOCLKO将该管脚设置为CLKOUT1 /P3.6:P3.6 标准I/O口 PORT36 外部数据存储器写脉冲/ P3.7:P3.7 标准I/O口 PORT37 外部数据存储器读脉冲/P4.0:P4.0 标准I/O口 PORT40 SPI同步串行接口的从机选择信号MOSI/ECI/P4.1:P4.1 标准I/O口 PORT41 ECI PCA计数器的外部脉冲输入脚 MOSI SPI同步串行接口的主出从入(主器件的输出和从器件的输入) MISO/CCP0/P4.2:P4.2 标准I/O口 PORT42 CCP0 外部信号捕获(频率测量或是当外部中断使用),告诉脉冲输出或脉宽调制输出。MISO SPI同步串行接口的主入从出(主器件的输入和从器件的输出)SCLK/CCP1/P4.3:P4.3 标准I/O口 PORT43 CCP1 外部信号捕获(频率测量或是当外部中断使用),告诉脉冲输出或脉宽调制输出。SCLK SPI同步串行接口的时钟信号 NA/P4.4:P4.4 标准I/O口 PORT44 设置为1 P4.4/NA脚为I/O口(P4.4) 设置为0 P4.4/NA脚是弱上拉,无任何功能。ALE/P4.5:P4.5 标准I/O口 PORT45 ALE 地址锁存允许EX-LVD/P4.6/RST2:P4.6 标准I/O口 PORT46 EX-LVD 外部低压式中断/比较器 RST2 第二复位功能脚P4.7/RST:P4.7 标准I/O口 PORT47 RST 复位脚P5.0:标准I/O口 PORT50P5.1:标准I/O口 PORT51P5.2:标准I/O口 PORT52P5.3:标准I/O口 PORT53XTAL1:内部时钟电路反相放大器输入端,接外部晶振的一个引脚,当直接使用外部时钟源时,此引脚是外部时钟的输入端。XTAL2:内部时钟电路反相放大器输出端,接外部晶振的另一端,当直接使用外部时钟源时,此引脚可悬空。此时XTAL2实际将XTAL1输入的时钟进行输出。VCC:电源GND:接地3.1.4 STC12C5A60S2 单片机最小应用系统图3.4为STC12C5A60S2单片机最小系统构成的电路图图3.4 STC12C5A60S2单片机最小系统构成的电路 系统组成 l复位电路:时钟频率低于12MHz时,可以不用C1,R1接1K电阻到地。时钟频率高于12MHz时,建议使用第二复位功能脚。(STC12C5A60S2系列在RST2/EX_LVD/P4.6口STC12C5201AD系列RST2/EX_LVD/P1.2口) l晶振电路:如果外部时钟频率在33MHz以上时,建议直接使用外部有源晶振。如果使用内部R/C振荡器时钟(室温情况下5V单片机为:11MHz17MHz,3V单片机为8MHz12MHz),XTAL1和XTAL2脚浮空。如果外部时钟频率在27MHz以上时,使用标称频率就是基本频率的晶体,不要使用三泛音的晶体,否则如参数搭配不当,就有可能振在基频,此时实际频率就只有标称频率的1/3了,或直接使用外部有源晶振,时钟从XTAL1脚输入,XTAL2脚必须浮空。 结构特点 l复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用1030uF,51单片机最小系统容值越大需要的复位时间越短。 l 晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。 l 起振电容C2、C3一般采用1533pF,并且电容离晶振越近越好,晶振离单片机越近越好4.P0口为开漏输出,作为输出口时需加上拉电阻,阻值一般为10k。 设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t。 l 设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2 ms。3.2 STC12C5A60S2 系列单片机单片机的A/D转换器 3.2.1 STCl2C5A60S2高速A/D转换本设计无需外加A/D转换,使用的单片机内置A/D接口,音频信号可直接送入单片机进行数据采集和预处理。STC12C5A60S2单片机的A/D转换口在P l口(P1.0P 1.7)有10位8路高速A/D转换器,A/D是电压输入型转换速度25万次/s(250KHz)。复位后P1口为弱上拉型I/O口。通过软件可设置将P1(P1.0P 1.7)El中的任何一位为A/D转换位,不用作A/D转换的位可继续用作普通YO口使用。 3.2.2 与A /D转换有关控制位的设置对P1ASF寄存器的设置:当P1口中的相应位作为A /D使用时,需先将P1ASF中的相应位置“1”相应的口设置为模拟功能。如:P1ASF.0P1ASF.7中哪一位为“1”,则P1口中对应的位作为模拟功能D使用。对ADC_CONTR特殊功能寄存器设置:建议直接用MOV赋值语句。选择模拟输入通道CHS2/CHSl/CHS0:如CHS2/CHS1/CHSO=l11000可分别选择P1.7P1.0作为ADC的A/D转换输入位。ADC_START位:ADC模数转换器转换启动控制位,ADC_START=1时,开始转换。转换结束后为ADC_START=0。中断请求标志位ADC_FLAG:ADC模数转换器转换结束标志位。当AID转换完成后,ADC_FLAG=1,一定要由软件清零,A/D转换完成后由该位申请中断。ADC电源控制位ADC_POWER:ADC_POWER=O,关闭ADC电源,ADC_PO WER=1,打开A/D转换器电源。建议进人空闲模式前,将ADC电源关闭,启动A/D转换前一 定要确认A/D电源已打开,A /D转换完成后关闭AD电源可降低功耗。在A/D转换结束之前, 不改变任何I/ O口的状态,有利于高精度A/D转换。 对IE的设置:如果允许A /D转换中断,将EA=1打开单片机中断允许总控制位;将EAD C =1,这时ADC中断的允许中断控制位。STC12C5A60S2系列单片机的A /D转换模块使用的时钟是外部晶体时钟或内部R/C振 荡器所产生的时钟。不使用时钟分频寄存器CLK_DIV。这样可以让ADC用较高的频率工作,提高A/D的转换速度;还可以让CPU用较低的频率工作,降低系统的功耗。程序中需要注意的问题:由于是2套时钟,所以,设置ADC_CONTR控制寄存器后, 加4个空操作延时才可以正确读到ADC_CONTR寄存器的值。原因是设置ADC _CO N T R控制 寄存器的语句执行后,要经过4个CPU时钟的延时,其值才能够保证被设置进ADC_CONTR控制寄存器。对AUXR1寄存器设置:AUXR1寄存器中的ADRJ位是A/D转换结果寄存器(ADC_RES,ADC_RESL)的数据格式调整控制位。ADRJ=0,10位A/D转换结果的高八位存放在ADC_RES中,低2位存放在ADC_RESL的低2位中。ADII=1,10位A/D转换结果的高2位存放在ADC_RES中低2位中,低8位存放在ADC_RESL中。图3.5为STC12C5A60S2系列单片机ADC(A/D转换器)的结构图图3.5 STC12C5A60S2系列单片机ADC(A/D转换器)的结构图3.3 STC12C5A60S2 系列单片机单片机的I/O口结构 STC12C5A60S2系列单片机所有I/O口均(新增P4口和P5口)可由软件配置成4种工作类型之一,如表1-6所示。4种类型分别为:准双向口/弱上拉(标准8051输出模式)、强推挽输出/强上拉、仅为输入(高阻)或开漏输出功能。每个口由2个控制寄存器中的相应位控制每个引脚工作类型。STC12C5A60S2系列单片机上电复位后为准双向口/弱上拉(传统8051的I/O口)模式。2V以上时为高电平,0.8V以下时为低电平。每个I/O口驱动能力均可达到20mA,但整个芯片最大不得超过120mA。 I/O口工作类型设定表1 P5口设定 (P5口地址:C8H)P5M1 3:0P5M0 3:0I/O口模式0 0准双向口(传统8051 I/O口模式)灌电流可达20mA,拉电流为230uA由于制造误差,实际为250uA150uA01强推挽输出(强上拉输出,可达20mA,要加限流电阻)10仅为输入(高阻)11开漏(open drainl),内部上拉电阻断开,要外加表2 P4口设定 (P4口地址:C0H)P4M1 7:0P4M0 7:0I/O口模式0 0准双向口(传统8051 I/O口模式)灌电流可达20mA,拉电流为230uA由于制造误差,实际为250uA150uA01强推挽输出(强上拉输出,可达20mA,要加限流电阻)10仅为输入(高阻)11开漏(open drainl),内部上拉电阻断开,要外加表3 P3口设定 (P3口地址:B0H)P3M1 7:0P3M07:0I/O口模式0 0准双向口(传统8051 I/O口模式)灌电流可达20mA,拉电流为230uA由于制造误差,实际为250uA150uA01强推挽输出(强上拉输出,可达20mA,要加限流电阻)10仅为输入(高阻)11开漏(open drainl),内部上拉电阻断开,要外加表4 P2口设定 (P2口地址:A0H)P2M1 7:0P2M07:0I/O口模式0 0准双向口(传统8051 I/O口模式)灌电流可达20mA,拉电流为230uA由于制造误差,实际为250uA150uA01强推挽输出(强上拉输出,可达20mA,要加限流电阻)10仅为输入(高阻)11开漏(open drainl),内部上拉电阻断开,要外加表5 P1口设定 (P1口地址:9 0H)P1M1 7:0P1M07:0I/O口模式(P1.x如果做A/D使用,需先将其设置成开漏或高阻输入)0 0准双向口(传统8051 I/O口模式)灌电流可达20mA,拉电流为230uA由于制造误差,实际为250uA150uA01强推挽输出(强上拉输出,可达20mA,要加限流电阻)10仅为输入(高阻),如果该I/O口需作A/D使用,可以选此模式11开漏(open drainl),如果该I/O口需作A/D使用,可以选此模式表6 P0口设定 (P0口地址:80H)P0M1 7:0P0M07:0I/O口模式0 0准双向口(传统8051 I/O口模式)灌电流可达20mA,拉电流为230uA由于制造误差,实际为250uA150uA01强推挽输出(强上拉输出,可达20mA,要加限流电阻)10仅为输入(高阻)11开漏(open drainl),内部上拉电阻断开,要外加 值得注意的是::虽然每个I/O口在弱上拉时都能承受20mA的灌电流(还是要加限流电阻,如1K,560等),在强推挽输出时都能输出20m A的拉电流(也要加限流电阻),但整个芯片的工作电流推荐不要超过120mA。即从MCU-VCC流入的电流不超过120mA,从MCU-Gnd流出电流不超过120mA,整体流入/流出电流都不能超过120mA.。3.4 频谱显示单元 由STC12C5A60S2单片机计算得到的频谱值将显示于LCD1604 3.4.1 LCD简介液晶显示器(Liquid Crystal Display,简称LCD)已被视为下一代显示器的主要产品。 在单片机系统中应用晶液显示器作为输出器件的优点显示质量高:由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。 数字式接口:液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。 体积小、重量轻:液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。 功耗低:相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。液晶显示器的分类 液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。 3.4.2 LCD1604简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,16*4,20*2和40*2行等的模块。图3.6为一般1604字符型液晶显示器实物, 图3.6 一般1604字符型液晶显示器实物图3.4.3 LCD1604 显示原理线段的显示:点阵图形式液晶由MN个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共168=128个点组成,屏上6416个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。字符的显示:用LCD显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。 汉字的显示:汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5右边为2、4、6根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节直到32B显示完就可以LCD上得到一个完整汉字。3.4.4 LCD1604 接口定义及参数说明 LCD1604接口定义LCD1604采用标准的14脚(无背光)或16脚(带背光)接口,带背光的比不带背光的厚,是否带背光在应用中并无差别.各引脚接口说明如表2所示。表2 LCD1604引脚接口说明表 引脚号标识说明1GND接0V2VCC接4.8V5V3V0对地接电阻4702K 4RSRS=0,指令寄存器;RS=1,数据寄存器5R/WR/W=0,写;R/W=1,读6EN允许信号7D0数据08D1数据19D2数据210D3数据311D4数据412D5数据513D6数据614D7数据715LED+背光正极,接4.8V5V16LED-背光负极,接0V 3.4.4.l LCD重要技术参数显示容量:164个字符 芯片工作电压:4.55.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.954.35(WH)mm4 音频频谱显示相关问题 4.1 频谱及频谱显示我们知道,一切声音都是由振动产生的。声音之所以千变万化各不相同,是因为它们的振动各不相同。看看琵琶,吉他或者其他的弦类乐器,可以发现它的每一根琴弦的直径都是不一样的。琴弦越细,音调也就越高。反之则越低。显然粗的弦就不如细的弦振动得快或者说是振动的频率高。产生音调高低的不同,就是由于振动的频率不同。很显然频率越高,音高也就越高。频率的单位是赫兹(简写为 Hz),赫兹 (1857-1894),是德国物理学家,他发现了电磁波,为了纪念他,人们用它的名字来做为频率的单位。所谓的一赫兹,就是一秒钟振动一次。那么440Hz呢,当然就是每秒振动440次,这个声音就是音乐中的标准A音,是乐器定音的标准。而钢琴中央C的频率则是261.63Hz。我们人的耳朵能够听到的频率范围,是20Hz到20000Hz。低于这个频率范围的声音叫次声波,而高于这个频率范围的声音叫做超声波。所以我们能听到的音乐的频率,即都在人耳可听到的这个范围之内,约从20Hz到20KHz。根据傅立叶分析,任何声音可以分解为数个甚至无限个正弦波,而它们往往又包含有无数多的谐波分量。而它们又往往是时刻在变化着。所以一个声音的构成其实是很复杂的。将声音的频率分量绘制成曲线,就形成了频谱。对频谱进行分析的仪器就是频谱分析仪,早期频谱仪都是模拟分析的。频谱仪的原理就是将声音以信号通过一系列不同中心频率的模拟带通滤波器。每个带通滤波器相当于一个共振电路,其特性由中心频率(步进的)、频带宽度及响应时间表示。在声音信号通过滤波器后,经过平方检波器,并进行平均之后,在每个频率上测定所传输的功率,从而得到信号的频谱。然而,传统的频谱仪受到滤波器性能的制约,因为模拟电路本身的特性所局限,滤波器的带宽和响应时间成反比,也就是说模拟滤波器的频率分辨力与时间分解能力之间存在矛盾。因为频谱仪所测量的往往都是非稳态声,一般来说,都是使用若干个滤波器来覆盖整个频率范围,并将信号同时并联地输入到这些滤波器上去。或者使用中心频率能够从低到高连续变化的滤波器。4.2 FFT运算规则集编程思想 音频频谱值的计算采用快速傅里叶算法FFT(Fast Fourier Transform),为了提高显示器的刷新频率,系统每隔10ms读取16次A/D转换值,得到16点实数序列,紧接着完成16点FFT运算得到16点复数序列。4.2.1蝶形运算及其优化算法 基2-FFT算法分为两类:时域抽取法FFT,简称DIT-FFT;频域抽取法FFT,简称DIF-FFT。根据基2-FFT算法,N点FFT运算可以分成log2N级,每一级都有N/2个蝶形运算。图4.1 蝶形运算 蝶形运算公式的推导过程如下: X(k)=X(k)+X(k+b)W X(k+b)=X(k)X(k+b)W 式中,W=cos(2P/N)jsin(2P/N)将式(1)化简成实部和虚部的形式,得到: XR(k)=XR(k)+XR(k+b)cos(2P/N)+X1(k+b)sin(2P/N) X1(k)=XR(k+b)sin(2P/N)+X1(k+b)cos(2P/N) 同理,式(2)化简得到: XR(k+b)=XR(k)+XR(k+b)cos(2P/N)-X1(k+b)sin(2P/N) X1(k+b)=X1(k)+XR(k+b)sin(2P/N)-X1(k+b)cos(2P/N) 可见每个蝶形运算的输出都是由其输入值与某一正弦函数和余弦函数的乘积累加得到的。由式(3)(6)编制正弦和余弦表,每次做蝶形运算时刻查表加快运算速度。 基2-FFT算法的基本思想 基2-FFT算法的基本思想是用3层循环完成全部N点FFT运算:最里层循环处理单独的一个蝶形运算,采用查表方法实现乘法运算;中间层循环完成每一级的N/2个蝶形运算最外层循环完成log2N级蝶形运算由此可看出:在每一级中,最里层循环完成N/2L个蝶形运算;中间层循环控制最里层循环进行2L-1次运算。因此,中间层循环完成时,共进行(2L-1)N/2L=N/2个蝶形运算。实际上最里层和中间层循环完成了第L级计算,最外层则最终完成log2级蝶形运算。 需要加以说明的数据是:在第L级中,每个蝶形的两个输入端相距b=2L-1个点同一乘数对应这相邻间隔为2L个点的N/2L个蝶形 第L级的2L-1个蝶形因子中的P,可表示为P=jx25-L,其中 j=0,1,2,(2L-1-1)4.2.2 编程思想及程序图由图4.2可以归纳出一些对编程有用的运算规律:第L级中,每个蝶形的两个输入数据相距B=2个点;每级有B个不同的旋转因子;同一旋转因子对应着间隔为2点的2个蝶形。 总结上述运算规律,便可采用下述运算方法。先从输入端(第一级)开始,逐级进行,共进行M级运算。在进行L级运算时,依次求出B个不同的旋转因子,每求出一个旋转因子,就计算完它对应的所有2个蝶形。这样,我们可用三重循环程序实现DIF-FFT运算。另外,DIF-FFT算法运算流图的输出X(k)为自然顺序,但为了适应原位计算,其输入序列不是按x(n)的自然顺序排列,这种经过M次偶奇抽选后的排列成为序列x(n)的倒序(倒位)。因此,在运算M级蝶形之前应先对序列x(n)进行倒序。 开始N=2读入x(n),M T A(k)+A(k+B)WA(k+B) A(k)+A(k+B)W A(k) T 输出 倒序L=1,M LL=J=0,B-1B=2P=2JK=J,N-1,2结束 图4.2 DIF-FFT运算程序框图 4.2.3 序列的倒序DIT-FFT算法的输入序列的排序看起来似乎很乱,但仔细分析就会发现这种倒序是很有规律的。由于N=2,因此序列数可用M位二进制数(n,n,nn,n)表示。第一次按最低位n的0和1将x(n)分解为偶奇两组,第二次又按次低位n的0和1值分别对偶奇组分组;以此类推,第M次按n为分解,。表4.1列出了N=8时的二进制数表示的序列数和倒序数,由表可知,只要将顺序数(nnn)的二进制位倒置,则得到对应的二进制倒置(nnn)。自然序列数I增加1,是在序列数的二进制数最低位加1 ,逢2向高位进位。而倒序数则是在M位二进制数最高位加1,逢2向低位进位。表4.1 顺序和倒序二进制数对照表 顺 序倒 序十进制数I二进制数二进制数十进制数J 0 1 2 3 4 5 6 7 000 001 010 011 100 101 110 111 000 100 010 110 001 101 011 111 0 4 2 6 1 5 3 7 总 结在做毕业设计的前期,我选用了AT89C51单片机。AT89C51单片机内部无A/D转换,片上集成128字节RAM,用户应用程序空间8K字节。在设计电路中需加一个A/D转换电路。在中期报告中,我把AT89C51单片机换成了STC12C5A60S2单片机。STC12C5A60S2单片机内部设有8路高速10位A/D转换(250K/s,即25万次/每秒),片上集成1280字节RAM,用户应用程序空间用户应用程序空间8K/16K/20K/32K/40K/48K/52K/60K/62K字节。外部电路不用再设A/D转换电路,使用的单片机内置A/D接口,音频信号可直接送入单片机进行数据采集和预处理。在整体电路设计中使用STC12C5A60S2单片机比使用AT89C51单片机电路要简单,运行速度要快8-12倍。 在设计功能实现的同时,充分考虑了整个系统的成本控制,以及最重要的系统稳定性。在系统涉及的各个领域,我还需要更进一步进行学习和探索,以使在以后的设计中能将自己的新鲜思维应用至实际操作中。本设计频谱显示系统的应用面广,结构较为简单,系统易集成。无论是哪种音频信号,多数情况下能保证频谱显示的精度与速度。当音频信号频率较高是,普通的单片机运算速度相对较慢,延时比较厉害,需要使用增强型的单片机才能实时显示频谱。 参 考 文 献1 谭浩强.C程序设计.北京:清华大学出版社,1999,12 2 江志红.51单片机技术与应用系统开发案例精选.北京:清华大学出版社,2008,12 3 蔡美琴,张为民.MCS-51系列单片机系统及其应用.北京:高等教育出版社,1992 4 郭天祥.新概念51单片机C语言教程 入门、提高、开发、拓展全攻略.北京: 电子工业出版社,2009,1 5 高西全,丁玉美.数字信号处理.西安:西安电子科技大学出版社,2008,8 6 刘娟.单片机C语PROTUES仿真技能实训.北京:中国电力出版社,2010 7 唐志德.数字电子技术.北京:科学出版社,2010,68 丁向荣.STC系列单片机原理与应用.北京:电子工业出版社,2011,19 杜洋.爱上单片机.北京:人人民邮电出版社,2011,1010 温子琪,刘志峰.51单片机c语言创新教程.北京:北京航空航天大学出版社,2011,411严天峰,王耀奇.电子设计工程师实践教程.北京:北京航空航天大学出版社,2011,112赵会成.51单片机c程序应用实例详解.北京:北京航空航天大学出版社,2011,313 Baldenlus T.The 8051 Microcontroller.Joumal of Business,1999,414 Reichelstein S.Advanced Topics In Dsp.Review of Accounting Studies,1998,515 Hirshieifer J.Project Report .Joumal of Bu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业创业基金贷款合同6篇
- 2025年土方运输合同3篇
- 简单石材购货合同范本5篇
- 泥塑彩绘合同范本
- 仓库转租租赁合同范本
- 砂石料款合同范本
- 协议分红股权合同范本
- 新艺人签约合同范本
- 南京特种气体销售合同3篇
- 秋季学期工作计划表怎么写(5篇)
- (完整版)采购评审专家考试试题库(附完整答案)
- 河北广电频道管理办法
- 2025年中式烹调师(技师)考试题库附答案
- 陕西省农村宅基地管理办法
- 门诊手术分级管理办法
- 中国武术课件
- 2025-2030中国便携式篮球架行业市场发展趋势与前景展望战略研究报告
- 核心素养背景下项目式学习在初中美术教学中的设计与应用
- 北京版英语1-6年级单词表
- 中国美容仪器市场调研及发展策略研究报告2025-2028版
- 海洋工程装备概述
评论
0/150
提交评论