完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
#include ***it SPK=P1^0; //蜂鸣器引脚 /*********************************************************/ void delayus() //延时函数, { unsigned char i; { for(i=0; i<7; i++) {;} } } /*********************************************************/ void main( void ) { unsigned int j; SPK=0; j = 60; while(j>0) { SPK = 1; delayus(); //高电平 delayus(); SPK = 0; delayus(); //低电平 delayus(); j--; } } |
|
相关推荐
17个回答
|
|
|
while(j>0)这个是一直满足条件的 所以一直在while中循环
最佳答案
|
|
|
|
|
|
无源蜂鸣器是给它一个脉冲就会响相对应脉冲的那个音,而你程序while里面就是产生了一个脉冲。如果想要它响一下停一下,可以试着把延时延长点(可能要到毫秒)。我也是新手,不对的话请原谅。
|
|
|
|
|
|
这段程序本来是我调用蜂鸣器响的函数,但是一旦调用,进入蜂鸣器的函数,就进入死循环再也出不来。已经检查过无源蜂鸣器可以发出不同频率的声音
|
|
|
|
|
|
看你这程序,不知道是让它响一声就停了,还是连续响60下,就停。。还是让它一直响下去。。。。延时长一点,声音就是一声一声的。。。
|
|
|
|
|
djotm 发表于 2016-5-22 16:11 延时函数是用来控制蜂鸣器频率的。因为j=60.所以相当于产生60个脉冲啊,就是响60个脉冲的时间。而实际是蜂鸣器响个不停 |
|
|
|
|
|
是想让他j=60循环完了就不再想。现在就是程序烧上,就一直响个不停。是不是单片机把这个主函数运行完会重新运行啊。所以就一直响 |
|
|
|
|
|
你改成for循环试试 |
|
|
|
|
|
你的延时比较短 且在死循环中出不来 在一直循环 所以一直再响
|
|
|
|
|
|
能不能解释一下怎么就死循环了。j不断减减,满足条件不就跳出来了吗 |
|
|
|
|
|
|
|
|
|
|
|
延时时间不够,delayus?微妙?辨别得出来吗?main里面在while(J<0)前面加多个while(1)就可以响60次了
|
|
|
|
|
|
每次执行完j有被赋值了,程序死了
|
|
|
|
|
|
好强啊!!!菜鸟的我只能望望,默默学习!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
嗯嗯,太谢谢你了。昨天晚上我总算明白为什么死循环了,但是蜂鸣器频率听起来声音很小,就是有一点点滴滴的声音,不知道是因为电压,还是延时程序导致的频率问题。我去试试您的程序哈。 |
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【瑞萨RA6E2】瑞萨E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ
140 浏览 0 评论
483 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
815 浏览 0 评论
1346 浏览 2 评论
804 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16904 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 19:36 , Processed in 1.139381 second(s), Total 108, Slave 88 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2663