本实验源代码包下载:<a href="https://bbs.21ic.com/upfiles/img/20093/20093712445301.rar" target=_blank>https://bbs.21ic.com/upfiles/img/20093/20093712445301.rar</a><br /><br />频谱分析演示视频1:<a href="https://bbs.21ic.com/upfiles/img/20093/20093712258851.rar" target=_blank>https://bbs.21ic.com/upfiles/img/20093/20093712258851.rar</a><br /><br />频谱分析演示视频1:<a href="https://bbs.21ic.com/upfiles/img/20093/2009371240995.rar" target=_blank>https://bbs.21ic.com/upfiles/img/20093/2009371240995.rar</a><br /><br /> 经过中午和整晚的忙活,圈圈的第三个AT91SAM7S64程序终于跑起来拉。<br />这是一个简单的FFT测试程序,LCD为NOKIA5110 84*48点的单色LCD屏。<br />使用AD6对音频信号进行采样,然后经过FFT后,将其频谱显示在LCD上。<br /><br /> 程序首先初始化系统时钟,将主时钟设置为48.05MHz。然后将对应<br />的LCD的IO口设置为输出状态并使能。然后对LCD进行初始化。<br /><br /> 本程序所用的实验平台是21IC的古道热肠设计的“DIY优盘开发板”,<br />详细的原理图可以去古道热肠的blog下载。<br /><br /> 由于音频信号是交流信号,先要对其进行平移到1/2Vcc才能采样。<br />从板上的J6引出GND、VCC、AD6这3根线。然后分别在GND和AD6、VCC和<br />AD6上连接一个10K欧姆的电阻,将AD6偏置到1/2Vcc处。然后再用一个<br />1K欧姆的电阻和一个10uF的电容串联后连接到AD6上。电阻的作用是保护<br />芯片,电容的作用是隔直。<br /><br /> 将程序下载到学习板中,然后将音频信号(例如电脑音频输出或者<br />接到音箱的喇叭线上)接到上面的电路中,播放一段音乐,就可以看到<br />信号的频谱拉。<br /> <br /> 这个例子比较简单,使用的是128点的FFT,显示频谱只用前面64点,<br />因为后面64点是跟前面64点对称的。程序设置的采样频率为44.1KHz,<br />所以第64点(最右边)的频率就是22.05KHz。最左边那条(无信号输入<br />时约1.6V高度)为直流成分。你可以将直接将一个直流电压加在AD6上<br />看它显示的电压值。由于交流成分分散,所以对交流成分显示时是做<br />了适当的比例放大的,否则交流值显示很小。<br /><br /> 实际上,对音频频谱的显示,通常纵坐标是取对数,横坐标是按照<br />倍频关系来的,这里为了程序简单,都是用的线性关系。<br /><br /> 另外,为了显示效果美观,增加了峰值保持并下坠的效果(类似<br />千千静听或者windows多媒体播放器中频谱显示的效果)。<br /><br /> 不再废话了,感兴趣的就赶紧下载代码去玩玩吧~~~欢迎大家多多<br />交流~~~<br /><br /> 圈圈 2009-03-07 01:18 |
|