基于STC8A4K60S2A12单片机的音乐频谱仪的设计

2019-11-11 13:14王启明郭宁峰周艳艳
电脑知识与技术 2019年27期
关键词:傅里叶变换单片机

王启明 郭宁峰 周艳艳

摘要:通过对音乐频谱仪原理的研究,利用STC8A4K60S2A12单片机控制技术、离散傅里叶变换快速算法,通过单片机内置的ADC采集音频信号,并将采集到的音频信号转换成数字信号。设计并实现一个音乐频谱仪,通过LED点阵将音乐频谱显示出来。

关键词:单片机;傅里叶变换;LED点阵

中图分类号:TP393        文献标识码:A

文章编号:1009-3044(2019)27-0211-02

时代在不断发展,生活水平在不断提高,人们在解决基本生活所需的同时,也更加注重对生活品质的追求,音乐频谱仪就是在这种追求之下的产物。它促进了音乐的可视化,把原本只能“听”的音乐,变得能够“看”到,使音乐在给人听觉享受的同时,也带来视觉上的享受;帮助录音师对录制的音频进行加工处理,使音频变得更加丰富,有层次感。更广泛的,是它在家庭影院、卡拉OK等音响系统中,实时显示音乐信号的频谱将为音响系统增添不少色彩。本文设计并实现一个基于STC8A4K60S2A12单片机的音乐频谱系统,具有电路结构简单、易开发、生产成本低等特点。能够较好地满足人们在生活中的需求。

1 系统的基本结构

本系统以STC8A4K60S2A12单片机为控制核心,利用其内部集成的一个12位15通道的高速ADC转换器收集来自外界的音频信号,并将音频信号(电信号)转化为数字信号。通过快速傅里叶变换(FFT)对离散后的数字信号进行处理和运算。FFT计算出频谱值以后,由LED频谱显示电路负责在单片机的控制下把频谱直观地显示出来。此外,本系统还包括按键控制的开关和开始动画等其他功能。

2 硬件设计

2.1复位电路

复位电路用来将中央处理器及其他功能模块同时恢复到一个确切的初始状态,以备下次运行时从该初始状态重新开始。复位方式有手动按钮复位、上电复位、积分型上电复位、看门狗型复位电路等。本系统采用的是手动按钮的复位方式,并通过六引脚自锁开关来作为系统的开关按钮,以实现手动复位的功能。六引脚自锁开关是一种双刀双掷开关,引脚有2排,每排3个引脚,中间一根是公共端,对应它左右两个引脚一个常开一个常闭,另一排与此一样,而且常开对常开,常闭对常闭。值得注意的是如果不把它们连接起来,它们就是完全独立的两组。

六引脚自锁开关引脚图如下:

2.2 STC8A4K60S2A12控制芯片

STC8A4K60S2A12单片机是一款宏晶科技公司生产的STC8系列单片机,这种系列的单片机具有不需要外部晶振和外部复位的特点,是以超强抗干扰、超低价、高速、低功耗为目标的8051单片机,在相同的工作频率下,STC8系列单片机比传统的8051约快12倍(速度快11.2~13.2倍),依次按顺序执行全部的111条指令,STC8系列单片机仅需147个时钟,而传统的8051则需要1944个时钟。STC8系列单片机是STC8生产的单时钟/机械周期(1T)的单片机,是宽电压、高速、高可靠、低功耗、强抗静电、较强抗干扰的新一代8051单片机。它的指令代码完全兼容传统8051。因为STC8系列单片机的众多优点,它常被用于学习和开发。

2.3模数转换电路

STC8A4K60S2A12单片机内置的ADC通过对模拟信号的量化和编码来实现模数转换。量化是将模拟信号(音频信号)量程分成许多离散量级,并确定输入信号所处的量级。编码则是对每一個量级分配一个唯一数字码,并确定与输入信号所对应的代码。ADC转换口位于单片机P1口,有12位15通道的高速ADC。其输入电压量程为0~Vcc,如果被测电压大于ADC的输入电压,则需要在输入ADC引脚之前加入电阻分压和放大器电路。ADC的时钟频率范围为SYSclk/2/1~SYSclk/2/16,每固定16个ADC时钟可完成一次模数转换。当模数转换完成后,12位的转换结果会自动保存到寄存器ADC_RES和ADC_RESL中,以备后续使用。

2.4 LED显示驱动

本设计采用74HC595芯片作为LED的显示驱动。74HC595内含8位串入,串/并出位移寄存器和8位三态输出锁存器(即具有高电平、低电平和高阻抗三种输出状态)。寄存器和锁存器分别有各自的时钟输入(SCLK和SLCK),都是上升沿有效。当SCLK从低到高电平跳变时,串行输入数据(SER)移入寄存器;反之,当SLCK从低到高电平跳变时,寄存器的数据信息传入锁存器。清除端(CLR)的低电平只对寄存器复位(QS为低电平),而对锁存器没有影响。当输出允许控制(OE)为高电平时,并行的输出(Q0~Q7)为高阻态,而串行的输出(QS)不受影响。数据信息从SER口送入74HC595,在每个SCLK的上升沿,SER口上的数据信息移入寄存器,在SCLK的第9个上升沿,数据信息开始从QS移出。如果把第1个74HC595的QH和第2个74HC595的SDA相接,数据信息就可以移入第2个74HC595中,按照上面的接法一个一个接下去,就可接任意多个(本设计接了3个)。数据信息全部送完后,会给SLCK一个上升沿,寄存器中的数据信息就会置入锁存器,此时如果OE为低电平,数据信息就会从芯片的并口Q0~Q7输出,把Q0~Q7与LED的8段相连,LED就可以实现显示了。

3 软件设计

3.1 开机动画

很多电脑和手机的系统有含有开机动画的模块,它的作用是丰富系统功能、增加系统的娱乐性。拥有一个华丽漂亮的开机动画,可以消除用户在等待系统启动时产生的焦虑,从而使用户变得心情舒畅。本系统虽然启动时间很短,但仍然添加了开机动画模块,以呈现更加炫酷的视觉效果。动画实现的原理非常简单,即利用人眼的余晖效应,快速显示动作连续的“图片”,就可以达到动画的视觉效果。本系统中,利用取模软件对画好的图形进行取模,并将结果传入代码定义好的数组中存储。通过每组数据的显示和适当的延时,实现开机动画的功能。

3.2 ACD程序

系统运行时,首先是对ADC各寄存器的设置,对于ADC控制寄存器(符号为ADC_CONTR),它的主要功能是启动AD转换,迁择通道,设置转换频率 ,查询是否完成转换等。本系统代码进行对ADC_CONTR中的ADC_START位和ADC_FLAG位的宏定义,以实现其自动清零和软件清零的操作。具体代码为:#define ADC_START (1<<6) //自动清零 #define ADC_FLAG   (1<<5) //软件清零。通过ADC配置寄存器(符号为ADCCFG)中的SPEED位来控制ADC的转换时间,SPEED[3:0]共有16种不同的模式,分别是0000至1111,不同的模式代表着不同的CUP时钟数。本系统采用0010即CUP时钟数为96就能满足系统的要求。ADCCFG中的RESFMT位是用来控制ADC转换结果格式的,本系统中通过将其置0来实现把转换结果左对齐的设置,并由ADC_RES保存结果的高8位,ADC_RESL保存结果的低4位(结果的保存是自动的)。ADC转换结束后,结果通过return语句返回给复数的实部,以用于FFT程序的操作。

3.3 FFT算法

FFT算法是离散傅里叶变换(DFT)的快速算法。于1965年由J.W.库利和T.W.图基提出。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少。特别的,被变换的抽样点数N越多,FFT算法計算量的节省就越显著。

该算法的核心部分是关于蝶形算法的运算。对于点数为N = 2^L的FFT运算,可以分解为L阶蝶形图级联,每一阶蝶形图内又分为M个蝶形组,每个蝶形组内包含K个蝶形。根据这一点我们就可以构造三层循环来实现蝶形运算。另外,蝶形算法还涉及了复数的乘法和加法等运算,在编写程序过程中,需要把复数的运算转化为实数运算。

3.4 LED显示程序

因为无法同时控制所有LED灯的亮灭,所以我们退而求其次,先对第一行的LED灯输入亮灭数据。当处于亮状态的LED灯保持一定时间后,再对第二行的LED灯传入控制亮灭的数据,以此类推,直至对每一行LED灯都传入了数据。当最后一行结束后,就重新回到第一行,重复循环上面的操作。根据人眼的余晖效应,当循环速度达到每秒24次及以上时,人们就可以看到连续的动态效果。

4 结束语

本文提出了一种设计简单、应用场景广泛的音乐频谱仪系统,该系统以STC8A4K60S2A12单片机为控制核心,将原本只能听的音乐通过生动的影像展现出来,丰富了人们的视听体验。该设为物联网基础应用实训项目,通过该项目的设计,增加了学生对物联网的理解,为进进入物联网领域打开了大门。

参考文献:

[1] 郭天祥51单片机C语言教程[M].北京:电子工业出版社,2009.

[2] 李逸家.基于51单片机的LED点阵音乐频谱显示器[J].工业控制计算机,2015,28(04):137-138,140.

[3] 陈兰,江朋友,闪静洁.基于单片机的多功能音乐频谱仪的设计与实现[J].科技视界,2018(7):45-46.

[4] FFT在单片机上的实现毕业设计[D].洛阳:河南科技大学,2013.

[5] 陈特放,吴继发.单片机实现音频频谱显示的快速算法研究[J].电子工程设计,2009,17(11).

【通联编辑:唐一东】

猜你喜欢
傅里叶变换单片机
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的便捷式LCF测量仪
小议PLC与单片机之间的串行通信及应用
基于单片机的平衡控制系统设计
Microchip推出两个全新PIC单片机系列
转动光谱学与微波光谱技术研究进展