找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2440|回复: 8
打印 上一主题 下一主题
收起左侧

单片机程序怎么实现按键按下,蜂鸣器连响三下?用50ms定时器

[复制链接]
跳转到指定楼层
楼主
ID:912068 发表于 2022-4-1 16:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题 求指导
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:121859 发表于 2022-4-1 17:47 | 只看该作者
检测到按键后,调用三次蜂鸣器发声程序,相互间加点延时就可以了。
回复

使用道具 举报

板凳
ID:161164 发表于 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
回复

使用道具 举报

地板
ID:319585 发表于 2022-4-1 20:01 来自手机 | 只看该作者
响一下,三下,一百有区别吗?使用一个变量,奇数响偶数不响。定时器溢出变量减1
回复

使用道具 举报

5#
ID:292427 发表于 2022-4-1 22:09 | 只看该作者
蜂鸣器响一下然后关蜂鸣器,加个延时然后再打开蜂鸣器响一下关蜂鸣器,加个延时再打开蜂鸣器
回复

使用道具 举报

6#
ID:123289 发表于 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。退出
回复

使用道具 举报

7#
ID:123289 发表于 2022-4-2 09:21 | 只看该作者
以上逻辑不够精练,让楼主去精练,但够用了。
这种写法有以下特点:
1、可以随时叫停过鸣叫过程,方法是:蜂鸣器=不叫,B_KEY=0。
2、按键后可以任意让它叫N声,方法是:B_KEY=1,R_TIMES=N,R_BELLTIMES=8,R_STOPTIMES=6。
回复

使用道具 举报

8#
ID:912068 发表于 2022-4-2 13:40 | 只看该作者
yzwzfyz 发表于 2022-4-2 09:12
教你发生N次!
初始化建立四个东东:
1、按键标记:B_KEY,含义=0/1=未按/已按。

谢谢
回复

使用道具 举报

9#
ID:1015060 发表于 2022-4-2 16:11 | 只看该作者
调用一个响三下的函数应该可以吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表