如何向扬声器发送声音

pal*_*ako 6 c microcontroller electronics atmega arduino

如果我要编程一个微控制器(ATMega128)与扬声器播放一个真实的话,我该怎么做?

我是否需要使用数字/模拟转换器发送不同的幅度值,或者频率变化是否足够?在任何情况下,我如何编码扬声器需要接收的频率和幅度值?我需要某种频率复用吗?我不是说用扬声器制作简单的声音,就像一个音符然后另一个音符.我想播放一首真正的歌曲,包括所有乐器,人声等.

aib*_*aib 7

假设您有一个未压缩的8位22.1 kHz单声道文件:

1)
去掉标题2)每1/22,100秒:
2.1)读取8位
2.2)使用DAC将其转换为扬声器的电压范围
2.3)将其发送到扬声器

这将为您提供[22.1 kHz/8位/单声道]质量的声音,是一种播放逼真样本的简单方法.

所有频率都是不同合成器所必需的.例如,PC扬声器实际上只有一点.为了获得不同的振幅(比"无"和"最大"),可能需要一些技巧,例如脉冲宽度调制(如你所说,移动频率,因此扬声器的振膜有效地具有比两个更多的位置).

但你不需要为此烦恼.您需要做的就是在扬声器中每秒喷出大约22,100或4400个声音样本,每个样本使用8或16位来表示振幅.

  • DAC部分可以用(相对)简单的R-2R梯来完成.http://en.wikipedia.org/wiki/Resistor_Ladder. (2认同)