标题:
单片机程序怎么实现按键按下,蜂鸣器连响三下?用50ms定时器
[打印本页]
作者:
zgr301027
时间:
2022-4-1 16:58
标题:
单片机程序怎么实现按键按下,蜂鸣器连响三下?用50ms定时器
如题 求指导
作者:
zhxiufan
时间:
2022-4-1 17:47
检测到按键后,调用三次蜂鸣器发声程序,相互间加点延时就可以了。
作者:
lkc8210
时间:
2022-4-1 18:16
1. 选择有源蜂鸣器并建立电路,低电平发声
2. 用50ms中断产生500ms心跳Flag_500ms
3. 在main中扫描按键,有键按下,Beep_3_time=3
4. 在main中判断心跳,如有心跳,清零心跳并判断Beep_3_time是否零,如Beep_3_time非零蜂鸣器输出脚取反并判断输出脚是否高电平,如是高电平,Beep_3_time减1
作者:
liesnake
时间:
2022-4-1 20:01
响一下,三下,一百有区别吗?使用一个变量,奇数响偶数不响。定时器溢出变量减1
作者:
wliuxiaoxiaow
时间:
2022-4-1 22:09
蜂鸣器响一下然后关蜂鸣器,加个延时然后再打开蜂鸣器响一下关蜂鸣器,加个延时再打开蜂鸣器
作者:
yzwzfyz
时间:
2022-4-2 09:12
教你发生N次!
初始化建立四个东东:
1、按键标记:B_KEY,含义=0/1=未按/已按。
2、蜂鸣次数计数器:R_TIMES,你想让蜂鸣器叫N次,在按键后就置数N。
3、蜂鸣器一次鸣叫时间计时器:R_BELLTIMES,时间以50ms为单位,例:一次叫0.4秒,就置数400/50=8。
4、蜂鸣器一次鸣叫间隔时间(停叫时间):R_STOPTIMES,时间以50ms为单位,例:间隔0.3秒,就置数300/50=6。
编程操作开始了!在50ms中断服务程序中,以序做以下事件:
1、判断是否需要启动鸣叫程序:B_KEY=0/1? =0什么也不做退出;=1做以下事情:
2、判断是否鸣叫结束:R_TIMES=0? 为0,结束鸣叫(复位:蜂鸣器=不叫,B_KEY=0,R_BELLTIMES=8,R_STOPTIMES=6,准备下次),退出;非0,则做以下事情:
3、判断是否在叫之中:R_BELLTIMES=0? 非0,蜂鸣器=鸣叫,并计时一次:R_BELLTIMES-1,退出;=0,则做以下事情:
4、判断是否在停叫中:R_STOPTIMES=0? 非0,蜂鸣器=不叫,并计时一次:R_STOPTIMES-1,退出;=0,则做以下事情:
5、计下叫了一次:R_TIMES-1;准备下次的鸣叫:R_BELLTIMES=8,R_STOPTIMES=6。退出
作者:
yzwzfyz
时间:
2022-4-2 09:21
以上逻辑不够精练,让楼主去精练,但够用了。
这种写法有以下特点:
1、可以随时叫停过鸣叫过程,方法是:蜂鸣器=不叫,B_KEY=0。
2、按键后可以任意让它叫N声,方法是:B_KEY=1,R_TIMES=N,R_BELLTIMES=8,R_STOPTIMES=6。
作者:
zgr301027
时间:
2022-4-2 13:40
yzwzfyz 发表于 2022-4-2 09:12
教你发生N次!
初始化建立四个东东:
1、按键标记:B_KEY,含义=0/1=未按/已按。
谢谢
作者:
hoolinoo
时间:
2022-4-2 16:11
调用一个响三下的函数应该可以吧
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1