基于单片机的音频频谱显示器设计Word格式.docx
- 文档编号:18349828
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:32
- 大小:779.18KB
基于单片机的音频频谱显示器设计Word格式.docx
《基于单片机的音频频谱显示器设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的音频频谱显示器设计Word格式.docx(32页珍藏版)》请在冰豆网上搜索。
本设计以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.3,P5.2,P5.1,P5.0口>
(P5口地址:
C8H)
P5M1[3:
0]
P5M0[3:
I/O口模式
准双向口(传统8051I/O口模式)
灌电流可达20mA,拉电流为230uA
由于制造误差,实际为250uA~150uA
1
强推挽输出(强上拉输出,可达20mA,要加限流电阻)
仅为输入(高阻)
开漏(opendrainl),内部上拉电阻断开,要外加
表2P4口设定<
P4.7,P4.6,P4.5,P4.4,P4.3,P4.2,P4.1,P4.0口>
(P4口地址:
C0H)
P4M1[7:
P4M0[7:
表3P3口设定<
P3.7,P3.6,P3.5,P3.4,P3.3,P3.2,P3.1,P3.0口>
(P3口地址:
B0H)
P3M1[7:
P3M0[7:
表4P2口设定<
P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,P2.1,P2.0>
(P2口地址:
A0H)
P2M1[7:
P2M0[7:
表5P1口设定<
P1.7,P1.6,P1.5,P1.4,P1.3,P1.2,P1.1,P1.0口>
(P1口地址:
90H)
P1M1[7:
P1M0[7:
I/O口模式(P1.x如果做A/D使用,需先将其设置成开漏或高阻输入)
仅为输入(高阻),如果该I/O口需作A/D使用,可以选此模式
开漏(opendrainl),如果该I/O口需作A/D使用,可以选此模式
表6P0口设定<
P0.7,P0.6,P0.5,P0.4,P0.3,P0.2,P0.1,P0.0口>
(P0口地址:
80H)
P0M1[7:
P0M0[7:
★值得注意的是:
:
虽然每个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在单片机系统中应用晶液显
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 音频 频谱 显示器 设计