打印

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

[复制链接]
22549|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 | 只看该作者
多参与技术讨论和多发技术贴

使用特权

评论回复
5
chenbb8| | 2012-8-15 12:08 | 只看该作者
使用单片机的的定时器输出方波会不会比较占用CPU的时间呢,特别是用蜂鸣片做一个音乐贺卡神马的

使用特权

评论回复
6
yewuyi| | 2012-8-15 12:25 | 只看该作者
使用单片机的的定时器输出方波会不会比较占用CPU的时间呢,特别是用蜂鸣片做一个音乐贺卡神马的
chenbb8 发表于 2012-8-15 12:08


1、不是方波,是一个频率和占空比都能调整的脉冲串。
2、想省代码,可以用MCU的PWM口输出,调节PWM的频率和占空比即可。

使用特权

评论回复
7
chenbb8| | 2012-8-15 16:30 | 只看该作者
6# yewuyi 我说的也是这个PWM,因为PWM需要占用定时器,一时间没想起来名字~
我是觉得和弦音有点复杂,不清楚是不是要高速的变化频率才可以发出的,比如每秒钟变化个几百次频率之类的,如果一些任务的实时性要求高,执行时间长因此不允许被中断的话,就跟和弦音的函数有点冲突了。

使用特权

评论回复
8
coody| | 2012-8-15 16:39 | 只看该作者
用喇叭吧!还有,和弦是某些音色音调的组合,一般用简单的方法比较完成

使用特权

评论回复
9
yewuyi| | 2012-8-15 17:31 | 只看该作者
6# yewuyi 我说的也是这个PWM,因为PWM需要占用定时器,一时间没想起来名字~
我是觉得和弦音有点复杂,不清楚是不是要高速的变化频率才可以发出的,比如每秒钟变化个几百次频率之类的,如果一些任务的实时性要求高 ...
chenbb8 发表于 2012-8-15 16:30


用PWM时,只需要在改变音调或者音强的时候修改PWM的参数值,这个修改PWM值的频率看你想要发音的乐谱了吧,估计一般10MS左右改变一下就差不多了吧,再快的话,可能也就没啥意义了,因为蜂鸣片也是需要响应时间的。

使用特权

评论回复
10
teddeng| | 2012-8-15 22:07 | 只看该作者
首先,蜂鸣器并不适合做和声的输出设备,你可以去看蜂鸣器的频率响应曲线,它基本上是单频点的,要体积小,可以考虑手机上的扬声器;
其次,既然是和弦音当然是几个特定频率正弦波的叠加,你需要有一点点乐理知识,即便是比较好处理的分解和弦,最少也要考虑同时2个频率的正弦波叠加。
最后,你可以搜索一下用PWM生成DTMF的**。PWM频率是固定的10KHZ左右,单片机实时算出乐谱每时刻两个或以上频率叠加的幅度值,然后改变PWM的占空比输出,简单的滤波后就可以有不错的效果。理解了并不难。

使用特权

评论回复
11
ddb_21ic| | 2012-8-16 08:55 | 只看该作者
为啥不考虑用DMA+DAC呢,任何音频都可以做成WAV,DAC输出加点功放就可以了

使用特权

评论回复
12
doudoubaba| | 2012-8-16 09:16 | 只看该作者
就靠IO能做出和铉音那就是神了。和铉音是调制出来的,简单的PWM只是单音,有专门调制IC的,很多手机上用的是中芯微的IC.具体型号我忘记了。你要写一个解码程序,把MIDI音符解码出来。做的像点样子的话这个代码还不少的。

使用特权

评论回复
13
cool_coder| | 2012-8-16 09:30 | 只看该作者
在很久很久以前,声卡还很稀罕的时候,有利用PC里的硬件定时器8254驱动PC喇叭播放音频文件的程序。其核心原理就是PWM。LZ不妨搜索一下,看看还能不能找到源码。

使用特权

评论回复
14
ty_fruit007| | 2012-8-16 09:31 | 只看该作者
用PWM方式来驱动蜂鸣器,在调节频率的同时,也需调节占空比;你可以网上收索一下,有相关的原理和源代码,以前我也不知如何搞,看看就明白了,不难的

使用特权

评论回复
15
mcuhome| | 2012-8-16 21:35 | 只看该作者
本帖最后由 mcuhome 于 2012-8-16 21:44 编辑

可以用PWM方式驱动来实现的,当改变PWM的输出频率时,实际上就是调整蜂鸣器的音调。这里有个程序例子可以参考一下:
http://www.dpjzj.com/view.asp?id=143

使用特权

评论回复
16
jhzh951753| | 2014-12-30 18:09 | 只看该作者
mcuhome 发表于 2012-8-16 21:35
可以用PWM方式驱动来实现的,当改变PWM的输出频率时,实际上就是调整蜂鸣器的音调。这里有个程序例子可以参 ...

这个网站现在打不开了。

使用特权

评论回复
17
lu50211| | 2015-1-2 14:12 | 只看该作者
蜂鸣器要使用4KHz无源压电式,想要声音大些的话,就要用尺寸大的蜂鸣器。

090226ewwk7wkzirerkn2n.rar

2.71 KB

程序

使用特权

评论回复
18
最后之舞| | 2015-1-2 15:08 | 只看该作者
lu50211 发表于 2015-1-2 14:12
蜂鸣器要使用4KHz无源压电式,想要声音大些的话,就要用尺寸大的蜂鸣器。
...

学习了。
楼主能否加QQ。看了你挺多例子,学习不少东西

使用特权

评论回复
19
cnb12345| | 2015-1-2 23:48 | 只看该作者
有点难

使用特权

评论回复
20
lu50211| | 2015-1-3 08:36 | 只看该作者
cnb12345 发表于 2015-1-2 23:48
有点难

也不是很难,只要是频率和时间上面的控制,只要控制好了就可以发声。硬件电路都比较简单。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

1

粉丝