基于单片机的音频频谱显示器设计.docx

上传人:b****5 文档编号:5367986 上传时间:2022-12-15 格式:DOCX 页数:32 大小:779.18KB
下载 相关 举报
基于单片机的音频频谱显示器设计.docx_第1页
第1页 / 共32页
基于单片机的音频频谱显示器设计.docx_第2页
第2页 / 共32页
基于单片机的音频频谱显示器设计.docx_第3页
第3页 / 共32页
基于单片机的音频频谱显示器设计.docx_第4页
第4页 / 共32页
基于单片机的音频频谱显示器设计.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

基于单片机的音频频谱显示器设计.docx

《基于单片机的音频频谱显示器设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的音频频谱显示器设计.docx(32页珍藏版)》请在冰豆网上搜索。

基于单片机的音频频谱显示器设计.docx

基于单片机的音频频谱显示器设计

 

目次

1绪论-----------------------------------------------------------1

2系统功能-------------------------------------------------------1

3系统设计-------------------------------------------------------2

3.1主控单元----------------------------------------------------2

3.2STC12C5A60S2系列单片机单片机的A/D转换器-------------------10

3.3STC12C5A60S2系列单片机单片机的I/O口结构-------------------11

3.4频谱显示单元-----------------------------------------------14

4音频频谱显示相关问题-------------------------------------------16

4.1频谱及频谱显示---------------------------------------------16

4.2FFT运算规则及编程思想--------------------------------------17

5总结-----------------------------------------------------------22

参考文献-------------------------------------------------------24

致谢-----------------------------------------------------------23

附录A源程序-------------------------------------------------25

附录B系统电路图---------------------------------------------32

 

1绪论

随着电子技术的进步发展在功率放大器的设计上功能也不断更新。

电子信息技术几乎主宰了整个电器行业的发展。

我们知道,一切声音都是由振动产生的。

声音之所以千变万化各不相同,是因为它们的振动各不相同。

产生音调高低的不同,是由于振动的频率不同。

频率越高,音高也就越高。

根据傅立叶分析,任何声音可以分解为数个甚至无限个正弦波,而它们往往又包含有无数多的谐波分量。

而它们又往往是时刻在变化着。

所以一个声音的构成其实是很复杂的。

将声音的频率分量绘制成曲线,就形成了频谱。

本设计通过STC12C5A60S2单片机及外围器件组成的系统实现音频信号的频谱显示,将音频信号送入STC12C5A60S2单片机的A/D转换接口进行数据的采集和预处理,然后送入单片机中通过编程实现频谱计算,在LCD1604上实时显示音频信号的频谱。

2系统功能

图2.1为系统整体设计原理图

图2.1系统整体设计原理图

本设计以STC12C5A60S2单片机作为主控单元,进行数据采集,A/D转换,频谱计算(FFT),再由LCD1604显示频谱。

且在完成系统其他控制任务的前提下,充分利用单片机剩余计算资源,采用优化FFT算法计算音频信号频谱。

音频数据通过STC12C5A60S2的A/D接口实现模拟音频信号的采样保持和量化处理,包括音频采集和转换(该单片机内置A/D转换);频谱显示电路实现模拟音频信号频谱的分段显示,它将音频信号频谱划分成14段,每段按照14级量化,由LCD1604显示器件显示。

3系统设计

3.1主控单元

本设计以STC12C5A60S2单片机作为主控单元,进行频谱计算和数据采集,A/D转换,频谱计算(FFT)。

3.1STC12C5A60S2系列单片机简介

3.1.1.1简介

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的功能均可由用户进行设置使能/禁止。

3.1.1.2STC12C5A60S2主要性能:

▲高速:

1个时钟/机器周期,速度比普通MCS一51单片机快8~l2倍;

▲宽电压:

5.5~3.3V,2.2~3.6V;

▲低功耗设计:

掉电模式(可由外部中断唤醒)。

可支持下降沿/上升沿和远程唤醒;

▲增加外部掉电检测电路,可在掉电时及时将数据保存EPROM;

▲工作频率:

0~35MHz,相当于普通MCS一51单片机的0~420MHz;

▲8通道,10位高速ADC,速度可达25万次/秒,2路PWM还可当2路D/A使用;

▲每个I/OEl驱动能力均可达到2OmA。

但整个芯片最大不得超过100mA。

图3.1为STC12C5A60S2单片机实物图

图3.1STC12C5A60S2单片机实物图

3.1.2STC12C5A60S2系列单片机内部结构

STC12C5A60S2系列单片机的内部结构框图如下图所示。

STC12C5A60S2单片机中包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时/计数器、UART串口、串口2、I/O接口、高速A/D转换、SPI接口、PCA、看门狗及片内R/C振荡器和外部晶体振荡电路等模块。

STC12C5A60S2系列单片机几乎包含了数据采集和控制中所需的所有单元模块,可称得上一个片上系统。

图3.2为STC12C5A60S2系列内部结构框图

图3.2STC12C5A60S2系列内部结构框图

3.1.3STC12C5A60S2系列单片机管脚及管脚说明

图3.3为STC12C5A60S2系列单片机管图

图3.3STC12C5A60S2系列单片机管图

管脚说明:

▲P0.0-P0.7:

P0口既可作为输入/输出口,也可作为地址/数据复用总线使用。

当P0口作为输入/输出口时,P0是一个8位准双向口,内部有弱上拉电阻,无需外接上拉电阻。

当P0作为地址/数据复用总线使用时,是低8位地址线[A0-A7],数据线[D0-D7]。

▲CLKOUT2/ADC0/P1.0:

p1.0标准I/O口PORT1[0]

ADC0ADC输入通道-0

CLKOUT2独立波特率发生器的时钟输出,可通过设置WAKE-CLKO[2]位/BRT-CLKO将该管脚配置为CLKOUT2。

▲ADC1/P1.0:

p1.1标准I/O口PORT1[1]

ADC1ADC输入通道-1

▲RxD2/ECI/ADC2/P1.2:

p1.2标准I/O口PORT1[2]

ADC2ADC输入通道-2

ECIPCA计数器的外部脉冲输入脚

RxD2第二串口数据接收端

▲TxD2/CCP0/ADC3/P1.3:

P1.3标准I/O口PORT1[3]

ADC3ADC输入通道-3

CCP0外部信号捕获(频率测量或当外部中断使用)、高速脉冲输出及脉宽调制输出。

TxD2第二串口数据发送端

▲SS/CCP1/ADC4/P1.4:

P1.4标准I/O口PORT1[4]

ADC4ADC输入通道-4

CCP1外部信号捕获(频率测量或当外部中断使用)、高速脉冲输出及脉宽调制输出。

SSSPI同步串行接口的从机选择信号

▲MOSI/ADC5/P1.5:

P1.5标准I/O口PORT1[5]

ADC5ADC输入通道-5

MOSISPI同步串行接口的主出从入(主器件的输出和从器件的输入)

▲MISO/ADC6/P1.6:

P1.6标准I/O口PORT1[6]

ADC6ADC输入通道-6

MISOSPI同步串行接口的主入从出(主器件的输入和从器件的输出)

▲SCLK/ADC7/P1.7:

P1.7标准I/O口PORT1[7]

ADC7ADC输入通道-7

SCLKSPI同步串行接口的时钟信号

▲P2.0-P2.7:

P2口内部有上拉电阻,即可以作为输入/输出,也可以作为高8位地址总线使用[A8-A15],当P2口作为输入/输出口时,P2是一个8位准双向口。

▲RxD/P3.0:

P3.0标准I/O口PORT3[0]

RxD串口1数据接收端

▲TxD/P3.1:

P3.1标准I/O口PORT3[1]

TxD串口1数据发送端

/P3.2:

P3.2标准I/O口PORT3[2]

外部中断0,下降沿中断或低电平中断

/P3.3:

P3.3标准I/O口PORT3[3]

外部中断1,下降沿中断或低电平中断

▲CLKOUT0/

/T0/P3.4:

P3.4标准I/O口PORT3[4]

T0定时器/计数器0的外部输入

定时器0下降沿中断

CLKOUT0定时器/计数器0的时钟输出,可通过设置WAKE-CLKO[0]位/TOCLKO将该管脚设置为CLKOUT0

▲CLKOUT1/

/T1/P3.5:

P3.5标准I/O口PORT3[5]

T1定时器/计数器1的外部输入

定时器1下降沿中断

CLKOUT1定时器/计数器1的时钟输出,课通过设置WAKE-CLKO[1]位/TOCLKO将该管脚设置为CLKOUT1

/P3.6:

P3.6标准I/O口PORT3[6]

外部数据存储器写脉冲

/P3.7:

P3.7标准I/O口PORT3[7]

外部数据存储器读脉冲

/P4.0:

P4.0标准I/O口PORT4[0]

SPI同步串行接口的从机选择信号

▲MOSI/ECI/P4.1:

P4.1标准I/O口PORT4[1]

ECIPCA计数器的外部脉冲输入脚

MOSISPI同步串行接口的主出从入(主器件的输出和从器件的输入)

▲MISO/CCP0/P4.2:

P4.2标准I/O口PORT4[2]

CCP0外部信号捕获(频率测量或是当外部中断使用),告诉脉冲输出或脉宽调制输出。

MISOSPI同步串行接口的主入从出(主器件的输入和从器件的输出)

▲SCLK/CCP1/P4.3:

P4.3标准I/O口PORT4[3]

CCP1外部信号捕获(频率测量或是当外部中断使用),告诉脉冲输出或脉宽调制输出。

SCLKSPI同步串行接口的时钟信号

▲NA/P4.4:

P4.4标准I/O口PORT4[4]

设置为1P4.4/NA脚为I/O口(P4.4)

设置为0P4.4/NA脚是弱上拉,无任何功能。

▲ALE/P4.5:

P4.5标准I/O口PORT4[5]

ALE地址锁存允许

▲EX-LVD/P4.6/RST2:

P4.6标准I/O口PORT4[6]

EX-LVD外部低压式中断/比较器

RST2第二复位功能脚

▲P4.7/RST:

P4.7标准I/O口PORT4[7]

RST复位脚

▲P5.0:

标准I/O口PORT5[0]

▲P5.1:

标准I/O口PORT5[1]

▲P5.2:

标准I/O口PORT5[2]

▲P5.3:

标准I/O口PORT5[3]

▲XTAL1:

内部时钟电路反相放大器输入端,接外部晶振的一个引脚,当直接使用外部时钟源时,此引脚是外部时钟的输入端。

▲XTAL2:

内部时钟电路反相放大器输出端,接外部晶振的另一端,当直接使用外部时钟源时,此引脚可悬空。

此时XTAL2实际将XTAL1输入的时钟进行输出。

▲VCC:

电源

▲GND:

接地

3.1.4STC12C5A60S2单片机最小应用系统

图3.4为STC12C5A60S2单片机最小系统构成的电路图

图3.4STC12C5A60S2单片机最小系统构成的电路

3.1.4.1系统组成

▲复位电路:

时钟频率低于12MHz时,可以不用C1,R1接1K电阻到地。

时钟频率高于12MHz时,建议使用第二复位功能脚。

(STC12C5A60S2系列在RST2/EX_LVD/P4.6口STC12C5201AD系列RST2/EX_LVD/P1.2口)

▲晶振电路:

如果外部时钟频率在33MHz以上时,建议直接使用外部有源晶振。

如果使用内部R/C振荡器时钟(室温情况下5V单片机为:

11MHz~17MHz,3V单片机为8MHz~12MHz),XTAL1和XTAL2脚浮空。

如果外部时钟频率在27MHz以上时,使用标称频率就是基本频率的晶体,不要使用三泛音的晶体,否则如参数搭配不当,就有可能振在基频,此时实际频率就只有标称频率的1/3了,或直接使用外部有源晶振,时钟从XTAL1脚输入,XTAL2脚必须浮空。

3.1.4.2结构特点

▲复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用10~30uF,51单片机最小系统容值越大需要的复位时间越短。

▲晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。

▲起振电容C2、C3一般采用15~33pF,并且电容离晶振越近越好,晶振离单片机越近越好4.P0口为开漏输出,作为输出口时需加上拉电阻,阻值一般为10k。

▲设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。

计数值N乘以机器周期Tcy就是定时时间t。

▲设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。

在每个机器周期的S5P2期间采样T0、T1引脚电平。

当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。

由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。

当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2ms。

3.2STC12C5A60S2系列单片机单片机的A/D转换器

3.2.1STCl2C5A60S2高速A/D转换

本设计无需外加A/D转换,使用的单片机内置A/D接口,音频信号可直接送入单片机进行数据采集和预处理。

STC12C5A60S2单片机的A/D转换口在Pl口(P1.0~P1.7)有10位8路高速A/D转换器,A/D是电压输入型转换速度25万次/s(250KHz)。

复位后P1口为弱上拉型I/O口。

通过软件可设置将P1(P1.0~P1.7)El中的任何一位为A/D转换位,不用作A/D转换的位可继续用作普通YO口使用。

3.2.2与A/D转换有关控制位的设置

▲对P1ASF寄存器的设置:

当P1口中的相应位作为A/D使用时,需先将P1ASF中的相应位置“1”相应的口设置为模拟功能。

如:

P1ASF.0~P1ASF.7中哪一位为“1”,则P1口中对应的位作为模拟功能D使用。

▲对ADC_CONTR特殊功能寄存器设置:

建议直接用MOV赋值语句。

选择模拟输入通道CHS2/CHSl/CHS0:

如CHS2/CHS1/CHSO=l11~000可分别选择P1.7~P1.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_POWER=1,打开A/D转换器电源。

建议进人空闲模式前,将ADC电源关闭,启动A/D转换前一定要确认A/D电源已打开,A/D转换完成后关闭AD电源可降低功耗。

在A/D转换结束之前,不改变任何I/O口的状态,有利于高精度A/D转换。

▲对IE的设置:

如果允许A/D转换中断,将EA=1打开单片机中断允许总控制位;将EADC=1,这时ADC中断的允许中断控制位。

STC12C5A60S2系列单片机的A/D转换模块使用的时钟是外部晶体时钟或内部R/C振荡器所产生的时钟。

不使用时钟分频寄存器CLK_DIV。

这样可以让ADC用较高的频率工作,提高A/D的转换速度;还可以让CPU用较低的频率工作,降低系统的功耗。

▲程序中需要注意的问题:

由于是2套时钟,所以,设置ADC_CONTR控制寄存器后,加4个空操作延时才可以正确读到ADC_CONTR寄存器的值。

原因是设置ADC_CONTR控制寄存器的语句执行后,要经过4个CPU时钟的延时,其值才能够保证被设置进ADC_CONTR控制寄存器。

▲对AUXR1寄存器设置:

AUXR1寄存器中的ADRJ位是A/D转换结果寄存器(ADC_RES,ADC_RESL)的数据格式调整控制位。

ADRJ=0,10位A/D转换结果的高八位存放在ADC_RES中,低2位存放在ADC_RESL的低2位中。

ADI~I=1,10位A/D转换结果的高2位存放在ADC_RES中低2位中,低8位存放在ADC_RESL中。

图3.5为STC12C5A60S2系列单片机ADC(A/D转换器)的结构图

图3.5STC12C5A60S2系列单片机ADC(A/D转换器)的结构图

3.3STC12C5A60S2系列单片机单片机的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口工作类型设定

表1P5口设定(P5口地址:

C8H)

P5M1[3:

0]

P5M0[3:

0]

I/O口模式

0

0

准双向口(传统8051I/O口模式)

灌电流可达20mA,拉电流为230uA

由于制造误差,实际为250uA~150uA

0

1

强推挽输出(强上拉输出,可达20mA,要加限流电阻)

1

0

仅为输入(高阻)

1

1

开漏(opendrainl),内部上拉电阻断开,要外加

表2P4口设定(P4口地址:

C0H)

P4M1[7:

0]

P4M0[7:

0]

I/O口模式

0

0

准双向口(传统8051I/O口模式)

灌电流可达20mA,拉电流为230uA

由于制造误差,实际为250uA~150uA

0

1

强推挽输出(强上拉输出,可达20mA,要加限流电阻)

1

0

仅为输入(高阻)

1

1

开漏(opendrainl),内部上拉电阻断开,要外加

表3P3口设定(P3口地址:

B0H)

P3M1[7:

0]

P3M0[7:

0]

I/O口模式

0

0

准双向口(传统8051I/O口模式)

灌电流可达20mA,拉电流为230uA

由于制造误差,实际为250uA~150uA

0

1

强推挽输出(强上拉输出,可达20mA,要加限流电阻)

1

0

仅为输入(高阻)

1

1

开漏(opendrainl),内部上拉电阻断开,要外加

表4P2口设定(P2口地址:

A0H)

P2M1[7:

0]

P2M0[7:

0]

I/O口模式

0

0

准双向口(传统8051I/O口模式)

灌电流可达20mA,拉电流为230uA

由于制造误差,实际为250uA~150uA

0

1

强推挽输出(强上拉输出,可达20mA,要加限流电阻)

1

0

仅为输入(高阻)

1

1

开漏(opendrainl),内部上拉电阻断开,要外加

表5P1口设定(P1口地址:

90H)

P1M1[7:

0]

P1M0[7:

0]

I/O口模式(P1.x如果做A/D使用,需先将其设置成开漏或高阻输入)

0

0

准双向口(传统8051I/O口模式)

灌电流可达20mA,拉电流为230uA

由于制造误差,实际为250uA~150uA

0

1

强推挽输出(强上拉输出,可达20mA,要加限流电阻)

1

0

仅为输入(高阻),如果该I/O口需作A/D使用,可以选此模式

1

1

开漏(opendrainl),如果该I/O口需作A/D使用,可以选此模式

表6P0口设定(P0口地址:

80H)

P0M1[7:

0]

P0M0[7:

0]

I/O口模式

0

0

准双向口(传统8051I/O口模式)

灌电流可达20mA,拉电流为230uA

由于制造误差,实际为250uA~150uA

0

1

强推挽输出(强上拉输出,可达20mA,要加限流电阻)

1

0

仅为输入(高阻)

1

1

开漏(opendrainl),内部上拉电阻断开,要外加

★值得注意的是:

:

虽然每个I/O口在弱上拉时都能承受20mA的灌电流(还是要加限流电阻,如1K,560Ω等),在强推挽输出时都能输出20mA的拉电流(也要加限流电阻),但整个芯片的工作电流推荐不要超过120mA。

即从MCU-VCC流入的电流不超过120mA,从MCU-Gnd流出电流不超过120mA,整体流入/流出电流都不能超过120mA.。

3.4频谱显示单元

由STC12C5A60S2单片机计算得到的频谱值将显示于LCD1604

3.4.1LCD简介

液晶显示器(LiquidCrystalDisplay,简称LCD)已被视为下一代显示器的主要产品。

3.4.1.1在单片机系统中应用晶液显

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1