请教单片机如何驱动蜂鸣器发出和弦音?

[复制链接]
24216|21
 楼主| zxx3869 发表于 2012-8-15 11:17 | 显示全部楼层 |阅读模式
本人最近做一个项目,其中要求让单片机驱动蜂鸣器发出和弦音,本人之前没有做过,想请教高手帮忙说说如何实现?
yewuyi 发表于 2012-8-15 11:20 | 显示全部楼层
应该是蜂鸣片,不是蜂鸣器。

调节PWM频率和占空比
caoyang8369 发表于 2012-8-15 11:22 | 显示全部楼层
如何可以得到积分?
yewuyi 发表于 2012-8-15 11:52 | 显示全部楼层
多参与技术讨论和多发技术贴
chenbb8 发表于 2012-8-15 12:08 | 显示全部楼层
使用单片机的的定时器输出方波会不会比较占用CPU的时间呢,特别是用蜂鸣片做一个音乐贺卡神马的
yewuyi 发表于 2012-8-15 12:25 | 显示全部楼层
使用单片机的的定时器输出方波会不会比较占用CPU的时间呢,特别是用蜂鸣片做一个音乐贺卡神马的
chenbb8 发表于 2012-8-15 12:08


1、不是方波,是一个频率和占空比都能调整的脉冲串。
2、想省代码,可以用MCU的PWM口输出,调节PWM的频率和占空比即可。
chenbb8 发表于 2012-8-15 16:30 | 显示全部楼层
6# yewuyi 我说的也是这个PWM,因为PWM需要占用定时器,一时间没想起来名字~
我是觉得和弦音有点复杂,不清楚是不是要高速的变化频率才可以发出的,比如每秒钟变化个几百次频率之类的,如果一些任务的实时性要求高,执行时间长因此不允许被中断的话,就跟和弦音的函数有点冲突了。
coody 发表于 2012-8-15 16:39 | 显示全部楼层
用喇叭吧!还有,和弦是某些音色音调的组合,一般用简单的方法比较完成
yewuyi 发表于 2012-8-15 17:31 | 显示全部楼层
6# yewuyi 我说的也是这个PWM,因为PWM需要占用定时器,一时间没想起来名字~
我是觉得和弦音有点复杂,不清楚是不是要高速的变化频率才可以发出的,比如每秒钟变化个几百次频率之类的,如果一些任务的实时性要求高 ...
chenbb8 发表于 2012-8-15 16:30


用PWM时,只需要在改变音调或者音强的时候修改PWM的参数值,这个修改PWM值的频率看你想要发音的乐谱了吧,估计一般10MS左右改变一下就差不多了吧,再快的话,可能也就没啥意义了,因为蜂鸣片也是需要响应时间的。
teddeng 发表于 2012-8-15 22:07 | 显示全部楼层
首先,蜂鸣器并不适合做和声的输出设备,你可以去看蜂鸣器的频率响应曲线,它基本上是单频点的,要体积小,可以考虑手机上的扬声器;
其次,既然是和弦音当然是几个特定频率正弦波的叠加,你需要有一点点乐理知识,即便是比较好处理的分解和弦,最少也要考虑同时2个频率的正弦波叠加。
最后,你可以搜索一下用PWM生成DTMF的**。PWM频率是固定的10KHZ左右,单片机实时算出乐谱每时刻两个或以上频率叠加的幅度值,然后改变PWM的占空比输出,简单的滤波后就可以有不错的效果。理解了并不难。
ddb_21ic 发表于 2012-8-16 08:55 | 显示全部楼层
为啥不考虑用DMA+DAC呢,任何音频都可以做成WAV,DAC输出加点功放就可以了
doudoubaba 发表于 2012-8-16 09:16 | 显示全部楼层
就靠IO能做出和铉音那就是神了。和铉音是调制出来的,简单的PWM只是单音,有专门调制IC的,很多手机上用的是中芯微的IC.具体型号我忘记了。你要写一个解码程序,把MIDI音符解码出来。做的像点样子的话这个代码还不少的。
cool_coder 发表于 2012-8-16 09:30 | 显示全部楼层
在很久很久以前,声卡还很稀罕的时候,有利用PC里的硬件定时器8254驱动PC喇叭播放音频文件的程序。其核心原理就是PWM。LZ不妨搜索一下,看看还能不能找到源码。
ty_fruit007 发表于 2012-8-16 09:31 | 显示全部楼层
用PWM方式来驱动蜂鸣器,在调节频率的同时,也需调节占空比;你可以网上收索一下,有相关的原理和源代码,以前我也不知如何搞,看看就明白了,不难的
mcuhome 发表于 2012-8-16 21:35 | 显示全部楼层
本帖最后由 mcuhome 于 2012-8-16 21:44 编辑

可以用PWM方式驱动来实现的,当改变PWM的输出频率时,实际上就是调整蜂鸣器的音调。这里有个程序例子可以参考一下:
http://www.dpjzj.com/view.asp?id=143
jhzh951753 发表于 2014-12-30 18:09 | 显示全部楼层
mcuhome 发表于 2012-8-16 21:35
可以用PWM方式驱动来实现的,当改变PWM的输出频率时,实际上就是调整蜂鸣器的音调。这里有个程序例子可以参 ...

这个网站现在打不开了。
lu50211 发表于 2015-1-2 14:12 | 显示全部楼层
蜂鸣器要使用4KHz无源压电式,想要声音大些的话,就要用尺寸大的蜂鸣器。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
最后之舞 发表于 2015-1-2 15:08 | 显示全部楼层
lu50211 发表于 2015-1-2 14:12
蜂鸣器要使用4KHz无源压电式,想要声音大些的话,就要用尺寸大的蜂鸣器。
...

学习了。
楼主能否加QQ。看了你挺多例子,学习不少东西
cnb12345 发表于 2015-1-2 23:48 来自手机 | 显示全部楼层
有点难
lu50211 发表于 2015-1-3 08:36 | 显示全部楼层
cnb12345 发表于 2015-1-2 23:48
有点难

也不是很难,只要是频率和时间上面的控制,只要控制好了就可以发声。硬件电路都比较简单。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部