原创 圈圈的第三个AT91SAM7S64测试程序横空出世~~~FFT显示频谱~~~

2009-6-15 18:41 5017 14 16 分类: MCU/ 嵌入式

本实验源代码包下载:


下载地址1:rar


 


下载地址2:http://bbs.21ic.com/upfiles/img/20093/20093712445301.rar

频谱分析演示视频1:rar

频谱分析演示视频2:rar
频谱分析演示视频3:rar

    经过中午和整晚的忙活,圈圈的第三个AT91SAM7S64程序终于跑起来拉。
这是一个简单的FFT测试程序,LCD为NOKIA5110 84*48点的单色LCD屏。
使用AD6对音频信号进行采样,然后经过FFT后,将其频谱显示在LCD上。

    程序首先初始化系统时钟,将主时钟设置为48.05MHz。然后将对应
的LCD的IO口设置为输出状态并使能。然后对LCD进行初始化。

    本程序所用的实验平台是21IC的古道热肠设计的“DIY优盘开发板”,
详细的原理图可以去古道热肠的blog下载。

    由于音频信号是交流信号,先要对其进行平移到1/2Vcc才能采样。
从板上的J6引出GND、VCC、AD6这3根线。然后分别在GND和AD6、VCC和
AD6上连接一个10K欧姆的电阻,将AD6偏置到1/2Vcc处。然后再用一个
1K欧姆的电阻和一个10uF的电容串联后连接到AD6上。电阻的作用是保护
芯片,电容的作用是隔直。

    将程序下载到学习板中,然后将音频信号(例如电脑音频输出或者
接到音箱的喇叭线上)接到上面的电路中,播放一段音乐,就可以看到
信号的频谱拉。
   
    这个例子比较简单,使用的是128点的FFT,显示频谱只用前面64点,
因为后面64点是跟前面64点对称的。程序设置的采样频率为44.1KHz,
所以第64点(最右边)的频率就是22.05KHz。最左边那条(无信号输入
时约1.6V高度)为直流成分。你可以将直接将一个直流电压加在AD6上
看它显示的电压值。由于交流成分分散,所以对交流成分显示时是做
了适当的比例放大的,否则交流值显示很小。

    实际上,对音频频谱的显示,通常纵坐标是取对数,横坐标是按照
倍频关系来的,这里为了程序简单,都是用的线性关系。

    另外,为了显示效果美观,增加了峰值保持并下坠的效果(类似
千千静听或者windows多媒体播放器中频谱显示的效果)。

    不再废话了,感兴趣的就赶紧下载代码去玩玩吧~~~欢迎大家多多
交流~~~

                                     圈圈   2009-03-07 01:18



改进版程序(改成了512点FFT,并对频率轴和幅度都进行了压缩)


单击次处下载更新版程序:http://bbs.21ic.com/upfiles/img/20093/200937111126472.rar

    又对程序进行了一些修改,将128点FFT改成了512点,更能反映
实际信号的情况。在频率轴上不再是线性显示,第0点为直流信号,
1~13点每两点间频率间隔为86Hz,第14~23点每两点间频率间隔为2*86Hz,
第24~33点每两点间频率间隔为3*86Hz,第34~43点每两点间频率间隔
为4*86Hz,第44~53点每两点间频率间隔为6*86Hz,第54~63点每两点
间频率间隔为9*86Hz。

    在幅度轴上,使用了开根号进行压缩。试用了对数压缩,发现
压缩得太厉害,最后决定使用开根号压缩。

    由于采样和计算时间增加,原来的延迟50ms被去掉。

                                    圈圈  2009-03-07  11:06

较清晰视频下载:http://bbs.21ic.com/upfiles/img/20093/20093711391189.rar

图片:
200937113656662.jpg

200937113733829.jpg

200937113746856.jpg
PARTNER CONTENT

文章评论5条评论)

登录后参与讨论

用户75230 2011-10-19 10:22

请问你输入音频信号是直接电脑输出,到MCU的ADC吗?

computer00 2009-4-7 18:21

看效果可以直接看我的视频。 移植的话,你把代码看懂了,就知道了怎么移植了。

用户194673 2009-4-7 13:12

还有啊,目前我想先看下你这个效果的话应该采用什么软件平台?

用户194673 2009-4-7 13:09

圈圈你好 我做毕业设计很想参考一下这个程序 但我用的是万利的STM32的板子 能简单说下怎么移植过去么~~ 谢谢

用户137602 2009-3-14 10:49

不错的哈
相关推荐阅读
computer00 2013-06-05 16:27
[招聘]Android系统开发工程师
任职要求: 1. 扎实的C/C++基础,熟悉嵌入式Linux和Android操作系统的软件开发; 2. 良好的沟通能力和逻辑思维能力; 3. 良好的英文文献阅读能力; 4. 具备...
computer00 2013-06-04 09:26
[招聘]Android应用开发工程师
任职要求: 1. 具备扎实的面向对象编程思想和JAVA编程基础; 2. 熟悉Eclipse+ADT开发环境,熟练掌握Android基本类库; 3. 熟悉网络应用和多媒体应用开发; ...
computer00 2012-09-26 13:15
圈圈的新浪官方围脖
http://weibo.com/computer00  ...
computer00 2012-09-26 13:12
欢迎大家去收听圈圈弹的曲子
http://www.tudou.com/home/_105209016  ...
computer00 2009-06-29 15:07
《圈圈教你玩USB》勘误(更新日期2009 年06月29日)
《圈圈教你玩USB》勘误(更新日期2009 年06月29日)下载地址1:下载地址2: 勘误.pdf...
computer00 2009-06-25 11:23
一块磐正845GE主板PS2接口的修复
圈圈有一部台式机,某天开机时,发现键盘用不了了,停留在输入BIOS密码那里。主机自检通过,但是蜂鸣器却发出很微弱的、连续的声音,同时键盘的三个LED也没有出现象往常一样的闪烁一下。圈圈以为多日未用,积...
EE直播间
更多
我要评论
5
14
关闭 站长推荐上一条 /3 下一条