一、项目简介
信号频谱分析是信号与系统和数字信号处理里面的重要内容。它在医学、通
信、语音、图像等众多领域上有着重大作用和意义。音频信号是我们日常生活接
触最多的信号之一,许多的音频处理都需要建立在音频频谱分析的基础上。该项
目由增强型 STC12LE5A60S2 单片机为主控制器,通过单片机内部 AD 转换,对
音频信号进行采样,把连续信号离散化,然后通过 FFT 快速傅里叶变换运算,
在时域和频域对音频信号各个频率分量以及功率等指标进行分析和处理,最后通
过 12864 液晶对信号的频谱进行显示。
二、项目要求
1、输入信号频率范围 20Hz-10KHz。
2、FFT 的分辨能力尽量高(即 FFT 点数尽量大)。
3、能得出信号最大频率分量的频率。
4、用单片机产生多个自测信号供测试用。
5、扩展要求 1:用 Rife 算法进行频率校正。
6、扩展要求 2:在液晶上显示信号的动态频谱图。
7、扩展要求 3:输入信号频率范围 20Hz-20KHz。
三、项目方案
AD 转换:开发板选用的处理器是 STC12LE5A60S2,其内部自带 10 位 8 通
道 AD 转换器,因此不需要自行设计 AD 转换电路,直接使用内部 AD 对输入信
号采样即可。
FFT 点数:单片机内部程序存储空间(flash)为 60K 字节,而数据存储空间
(SRAM)仅有 1280 字节。由于 FFT 浮点运算对单片机的 RAM 和速度的要求都比
较高,而且按 FFT 运算的特点,FFT 点数越大,分辨率越高,消耗的 RAM 空间
也越大。假设 FFT 点数为 N,那么可以计算出 FFT 运算实部 XR[N]和虚部 XR[N]
所消耗的空间为 2*4*N 字节,即 8N。而基 2FFT 蝶形运算时 N 必须是 2 的指数
次。由此可知,N 最大只能取 128。这时实部和虚部共占用 1024 字节。但是,
整个程序除了 FFT 运算,还有很多地方要消耗不少的 RAM 空间,比如液晶显示
部分,各种函数或变量等等。因此如果取 N=128 的话,单片机的 RAM 空间就会
变得很紧张,这对项目开发非常不利。为了保险起见,先取 FFT 的点数 N=64。