51单片机无源蜂鸣器

W虫虫 2019-12-18 11:18:14
让51无源蜂鸣器响0.5s,不响0.5s。交替响三次后关闭LED灯(普中开发板)     求大神解答,蜂鸣器响的时间怎么控制的呀,我弄不清蜂鸣器响的时间控制与音量大小怎样结合。 我敲的代码可以实现响与不响交替三次关闭LED灯,不过声音好小,怎么调大声音呀 #include"reg51.h" sbit beep=P0^0; void delay(unsigned int i) { unsigned char k; while(i--) for(k=0;k<120;k++); } void main() { unsigned char j,g=0; beep=0; while(1) { if(g<3) { g++; for(j=0;j<10;j++) { beep=~beep ; delay(50); } for(j=0;j<10;j++) { beep=0; delay(500); } } P1=0x00; } }
...全文
454 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39570191 2019-12-27
  • 打赏
  • 举报
回复
理论上讲蜂鸣器直接通过开关量控制的,不能够调节音量,只能调节频率,你所说的“音量”只是频率太高或者太低,人耳听不见了而已,所以只需要修改延时函数,改频率就可以实现
weixin_46098474 2019-12-26
  • 打赏
  • 举报
回复
delay函数时间得调整
ipman 2019-12-20
  • 打赏
  • 举报
回复 1
没有PWM,代码延迟控制前提是不要有频繁中断,否则声音不甜美的
  • 打赏
  • 举报
回复
到我的博客上去找都有例子
  • 打赏
  • 举报
回复
试着调整蜂鸣器的频率for(j=0;j<10;j++) { beep=~beep ; delay(50);调整延时大小改变频率 }
W虫虫 2019-12-18
  • 打赏
  • 举报
回复
引用 9 楼 智者知已应修善业的回复:
当然有,使用定时器,可同时设定频率和时间。
求详细代码,我不是很懂
W虫虫 2019-12-18
  • 打赏
  • 举报
回复
引用 9 楼 智者知已应修善业的回复:
当然有,使用定时器,可同时设定频率和时间。
怎么设计呀,求大神救救孩子吧
  • 打赏
  • 举报
回复
当然有,使用定时器,可同时设定频率和时间。
W虫虫 2019-12-18
  • 打赏
  • 举报
回复
引用 6 楼 智者知已应修善业的回复:
彼消此长,此长彼消的道理,内循环减小则外循环增加,总量保持不变就是,这是很简单的算术道理而已。10*50=500,5*100=500,与你下一个停止的500对应,不是?按你的代码计算。
大神还有其他方法可以实现让51无源蜂鸣器响0.5s,不响0.5s。交替响三次后关闭LED灯
W虫虫 2019-12-18
  • 打赏
  • 举报
回复
引用 6 楼 智者知已应修善业的回复:
彼消此长,此长彼消的道理,内循环减小则外循环增加,总量保持不变就是,这是很简单的算术道理而已。10*50=500,5*100=500,与你下一个停止的500对应,不是?按你的代码计算。
好的,等一下试试看,谢谢
  • 打赏
  • 举报
回复
彼消此长,此长彼消的道理,内循环减小则外循环增加,总量保持不变就是,这是很简单的算术道理而已。10*50=500,5*100=500,与你下一个停止的500对应,不是?按你的代码计算。
W虫虫 2019-12-18
  • 打赏
  • 举报
回复
引用 4 楼 智者知已应修善业的回复:
你写的语句本身就是个嵌套循环,调整一个循环外,再调整另一个循环试看,
0.5S会被改变的这样
  • 打赏
  • 举报
回复
你写的语句本身就是个嵌套循环,调整一个循环外,再调整另一个循环试看,
W虫虫 2019-12-18
  • 打赏
  • 举报
回复
有什么方法可以控制无缘蜂鸣器的发声时间的呀
W虫虫 2019-12-18
  • 打赏
  • 举报
回复
引用 1 楼 智者知已应修善业的回复:
试着调整蜂鸣器的频率for(j=0;j<10;j++) { beep=~beep ; delay(50);调整延时大小改变频率 }
delay(50)改成delay(5),响0.5s的时间就该变了呀

27,373

社区成员

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

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