IO口发声问题

lan120576664 2015-02-06 04:14:13
大家都知道,用1个IO口可以模拟出PWM的信号.然后PWM可以用来驱动铜片发出一定频率的声音。如,4k的BEEP声.
如果在IO口与铜片间串入一个可调电阻,通过调节电阻的阻值,可以控制4k BEEP的声音大小。

现在有个问题想请教一下大家。
能否在不接可调电阻的情况下,用产生PWM的IO口,产生4k的BEEP声的同时,控制这个BEEP声 声音的大小。
...全文
372 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_25989219 2015-02-12
  • 打赏
  • 举报
回复
占空比改变,就可以了。
fly 100% 2015-02-09
  • 打赏
  • 举报
回复
占空比就可以了
woshi_ziyu 2015-02-09
  • 打赏
  • 举报
回复
用PWM信号改变占空比就可以达到控制声音大小
worldy 2015-02-07
  • 打赏
  • 举报
回复
引用 7 楼 lan120576664 的回复:
[quote=引用 5 楼 worldy 的回复:] PWM频率是不变的,但是其占空比是可变的,_|--|___ _|---|__ 假设高电平时间为T 让T=AASin(bt+c)
非常谢谢,太用心了。 我试试, 不过在单片机中使用Sin函数不是太好吧. 能否推荐一下代替sin函数的方式呢?[/quote] 查表
lan120576664 2015-02-06
  • 打赏
  • 举报
回复
引用 5 楼 worldy 的回复:
PWM频率是不变的,但是其占空比是可变的,_|--|___ _|---|__ 假设高电平时间为T 让T=AASin(bt+c)
非常谢谢,太用心了。 我试试, 不过在单片机中使用Sin函数不是太好吧. 能否推荐一下代替sin函数的方式呢?
worldy 2015-02-06
  • 打赏
  • 举报
回复
让T=A Sin(bt+c)
worldy 2015-02-06
  • 打赏
  • 举报
回复
PWM频率是不变的,但是其占空比是可变的,_|--|___ _|---|__ 假设高电平时间为T 让T=AASin(bt+c)
lan120576664 2015-02-06
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
[quote=引用 楼主 lan120576664 的回复:] 大家都知道,用1个IO口可以模拟出PWM的信号.然后PWM可以用来驱动铜片发出一定频率的声音。如,4k的BEEP声. 如果在IO口与铜片间串入一个可调电阻,通过调节电阻的阻值,可以控制4k BEEP的声音大小。 现在有个问题想请教一下大家。 能否在不接可调电阻的情况下,用产生PWM的IO口,产生4k的BEEP声的同时,控制这个BEEP声 声音的大小。
让占空比按正弦规律变化,变化的频率为4Khz,可能只能在4K附件吧,不会那么恰好是4khz,这和主频有关[/quote] 你的意思是,IO口的电平按照正弦规律变化吗,有点不理解你说的"占空比按正弦规律变化“。 Y=ASin(bt+c)
worldy 2015-02-06
  • 打赏
  • 举报
回复
引用 楼主 lan120576664 的回复:
大家都知道,用1个IO口可以模拟出PWM的信号.然后PWM可以用来驱动铜片发出一定频率的声音。如,4k的BEEP声. 如果在IO口与铜片间串入一个可调电阻,通过调节电阻的阻值,可以控制4k BEEP的声音大小。 现在有个问题想请教一下大家。 能否在不接可调电阻的情况下,用产生PWM的IO口,产生4k的BEEP声的同时,控制这个BEEP声 声音的大小。
让占空比按正弦规律变化,变化的频率为4Khz,可能只能在4K附件吧,不会那么恰好是4khz,这和主频有关
lan120576664 2015-02-06
  • 打赏
  • 举报
回复
引用 1 楼 w22net 的回复:
你改变io的不同频率,和占空比也可改变声音大小
如果修改了频率的话,那就不是4k频率的声音了 修改占空比,会影响声音的。是不是要控制占空比到某个值?
w22net 2015-02-06
  • 打赏
  • 举报
回复
你改变io的不同频率,和占空比也可改变声音大小

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧