网站大量收购独家精品文档,联系QQ:2885784924

基于Arduino的音乐频谱显示器方案概述.pdf

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【方案概述】 在家庭影院、卡拉 OK 等音响系统中,实时显示音乐信号的频谱将为音乐 系统增添不少色彩。这里采用 Arduino 来实现这一效果,具体系统设计原理图如 图 1: 整个系统分前端放大、ADC 采集转换、FFT 频谱计算、LED 点阵驱动四部分组 成。下面分不分对各个不分进行说明: 1.前端放大电路 直接从电脑音频孔取出的音频信号是个交流信号,电压幅值约 100mv~500mv 左右,而 ADC 只能采样正电压,为了充分利用ADC 的采样 精度,需要将音频信号放大并叠加一个直流分量(有点类似数字示波器的前端电 路),在设计中我直接用了一个音频集成功放 LM386,原理图如下(参数以网 上实际参数为准): 测试从 386 的 5 脚取出信号,刚好有 2.5V 的直流电压,另外放大倍数约20 倍。 2.ADC 采样 直接接入 atmega8 的模拟输入端即可。这里要注意采样频率,按照采样 定理,采样频率要大于信号频率的两倍,这些上课时大家都学过,就不展开了。 而我们音频信号频率范围在 20Hz~20kHz 之间,按照最大的频率来算,要求 ADC 采样频率不得小于 40kHz 。 在 Arduino 的教程中介绍其ADC 完成一次采样转换的时间要 100 μ秒, 约 10K 的采样率,不符合上述对音频信号采样最低频率的要求,在网上找到解 决办法如下: 复制内容到剪贴板 代码 : #define FASTADC 1 // defines for setting and clearing register bits #ifndef cbi #define cbi(sfr, bit) (_SFR_BYTE(sfr) = ~_BV(bit)) #endif #ifndef sbi #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) #endif //。。。。。。。。 //在 setup()函数中添加 #if FASTADC //set prescale to 16 sbi(ADCSRA,ADPS2) ; cbi(ADCSRA,ADPS1) ; cbi(ADCSRA,ADPS0) ; #endif 如此转换频率理论达到 60K 左右,添加一些其他处理代码后测试得到的一 次采样率约为 48K ,符合要求。 3.LED 点阵屏驱动 为了美观,采用方形发光二极管(蓝色)来焊接的一个 8*13 的 LED 点 阵屏,原理图跟常见的 8*8 的一样。由于开发板 IO 口的限制,只有 14 个数字 IO 口,所以采用2 块 74HC595 串转并,用来扫描 13 个公共端,数据段直接由 数字 IO 驱动,这里要注意限流:一是 LED 的最大电流,二是 595 最大灌电流, 三是 atmega8 的最大输出电流。 【制作步骤】 以下是制作过程中的一些贴图: #define FASTADC 1 // defines for setting and clearing register bits #ifndef cbi #define cbi(sfr, bit) (_SFR_BYTE(sfr) = ~_BV(bit)) #endif #ifndef sbi #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) #endif //设置 595 的控制

文档评论(0)

汪汪队 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档