中科因仑“3+1”工程特种兵精英论坛
标题:
转贴一些圈圈在AT91SAM7S64上玩的代码
[打印本页]
作者:
痛苦的滋味
时间:
2016-5-19 21:56
标题:
转贴一些圈圈在AT91SAM7S64上玩的代码
FFT显示频谱
本实验源代码包下载:
http://bbs.21ic.com/upfiles/img/20093/20093712445301.rar
频谱分析演示视频1:
http://bbs.21ic.com/upfiles/img/20093/20093712258851.rar
频谱分析演示视频1:
http://bbs.21ic.com/upfiles/img/20093/2009371240995.rar
这是一个简单的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
品谱示意图一
(原文件名:1.jpg)
品谱示意图二
(原文件名:2.jpg)
品谱示意图三
(原文件名:3.jpg)
FFT显示频谱
本实验源代码包下载:
http://bbs.21ic.com/upfiles/img/20093/20093712445301.rar
频谱分析演示视频1:
http://bbs.21ic.com/upfiles/img/20093/20093712258851.rar
频谱分析演示视频1:
http://bbs.21ic.com/upfiles/img/20093/2009371240995.rar
这是一个简单的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
品谱示意图一
(原文件名:1.jpg)
品谱示意图二
(原文件名:2.jpg)
品谱示意图三
(原文件名:3.jpg)
USB多媒体键盘移植了上去~~~
单击此处下载本实验程序包:
http://bbs.21ic.com/upfiles/img/20093/200939135910242.rar
USB多媒体键盘,按键分布如下:
K1:音量加 K2:静音 K3:一键上网
K6:音量减 K5:播放/停止 K4:待机
LED2为NUM LOCK灯,LED3为CAPS LOCK灯。
圈圈 2009-03-09 13:30
发现新硬件图:
图
(原文件名:发现新硬件图.gif)
USB鼠标程序
单击这里下载USB鼠标程序:
http://bbs.21ic.com/upfiles/img/20093/200939144829168.rar
USB鼠标,按键分布如下:
K1:鼠标上移 K2:鼠标下移 K3:鼠标左键
K6:鼠标左移 K5:鼠标右移 K4:鼠标右键
圈圈 2009-03-09 14:46
新硬件图:
图
(原文件名:发现新硬件图.gif)
[tr][/tr]
[tr][/tr]
欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/)
Powered by Discuz! X3.4