找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7415|回复: 17
收起左侧

关于单片机控制的无源蜂鸣器的延时问题?

  [复制链接]
回帖奖励 10 黑币 回复本帖可获得 2 黑币奖励! 每人限 2 次
ID:377872 发表于 2018-8-11 11:18 | 显示全部楼层 |阅读模式
     无源蜂鸣器这段是什么意思?
       void delay()
             {
                uchar m,n,s;
                 for(m=20;m>0;m--);
                 for(n=20;n>0;n--);
                 for(s=248;s>0;s--);
              }
回复

使用道具 举报

ID:155507 发表于 2018-8-11 12:51 | 显示全部楼层
阻塞性软件延时函数程序, 方法效率很低,让芯片在那儿空运行几百毫秒,什么也不做,真是莫大的浪费,

评分

参与人数 1黑币 +10 收起 理由
woshige + 10 大佬就是大佬 什么时候我也能说出这样的话.

查看全部评分

回复

使用道具 举报

ID:377872 发表于 2018-8-11 15:27 | 显示全部楼层
angmall 发表于 2018-8-11 12:51
阻塞性软件延时函数程序, 方法效率很低,让芯片在那儿空运行几百毫秒,什么也不做,真是莫大的浪费,

但是没有这段程序我的蜂鸣器就不响了。。。
回复

使用道具 举报

ID:298053 发表于 2018-8-11 19:07 | 显示全部楼层
延时函数,看让蜂鸣器怎么响了,如果只是控制蜂鸣器响或不响延时函数一般不起作用(具体看整体),如果还要控制蜂鸣器的音调,那可能会使用延时函数来输出pwm波(一般用定时器来做),无源蜂鸣器通电好像是不会响的(我也没用过,不敢肯定),要给一定频率信号(pwm)才会响。

评分

参与人数 1黑币 +5 收起 理由
hyg1997 + 5 赞一个!

查看全部评分

回复

使用道具 举报

ID:384109 发表于 2018-8-11 22:06 | 显示全部楼层
蜂鸣器分无源蜂鸣器和有源蜂鸣器两种,有源蜂鸣器只需要给供电就可以响,所以控制起来方便。无源蜂鸣器需要给与一定频率的信号使蜂鸣器振荡发声,所以要有一个产生一定频率方波信号的程序,否则无源蜂鸣器使不会响的。
在有源蜂鸣器里有一个振荡电路来产生使无源蜂鸣器发声的电路,所以有源蜂鸣器是无源蜂鸣器和振荡电路的组合

评分

参与人数 2黑币 +25 收起 理由
hyg1997 + 5 赞一个!
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:155507 发表于 2018-8-12 10:01 | 显示全部楼层
hyg1997 发表于 2018-8-11 15:27
但是没有这段程序我的蜂鸣器就不响了。。。

你要控制无源蜂鸣器, 可以通过定时器的定时中断,每一个时间到都完成不同的处理动作,如何去做呢。一般我们会想到在一个定时中断函数中再定义static 变量继续定时,到了所需时间,做不同的动作。

我们会发现,原来用定时中断来处理会更好。比如我们可以500ms中断一次,让灯亮或灭,其余的时间,系统还可以做非常之多的事情,效率一下提升了很多。

评分

参与人数 1黑币 +5 收起 理由
hyg1997 + 5 很给力!

查看全部评分

回复

使用道具 举报

ID:213173 发表于 2018-8-12 14:34 | 显示全部楼层
利用T1中断作无源蜂鸣器2KHz驱动信号发生器
void Timer1Init()        //250微秒@12.000MHz
{
        TMOD &= 0x0F;        //设置定时器模式
        TMOD |= 0x20;        //设置定时器模式
        TL1 = 0x06;                //设置定时初值
        TH1 = 0x06;                //设置定时重载值
        TR1 = 1;                //定时器1开始计时
    EA  = 1;                //开总中断
    ET1 = 1;                //开T1中断
}

void Timer1Interrupt() interrupt 3
{
        if(sign==1)                        //使能蜂鸣器
                Buzzer=~Buzzer;        //蜂鸣器端口取反
        else Buzzer=0;                //蜂鸣器复位
}

评分

参与人数 2黑币 +40 收起 理由
angmall + 35 赞一个!
hyg1997 + 5 赞一个!

查看全部评分

回复

使用道具 举报

ID:364278 发表于 2018-8-12 19:53 | 显示全部楼层
无源蜂鸣器用途不是很广,也可能是我孤陋寡闻,无源蜂鸣器我用32输出方波控制做过音乐盒,如果仅仅是
回复

使用道具 举报

ID:364278 发表于 2018-8-12 19:58 | 显示全部楼层
说实话如果你仅仅用他的报警功能做一个简单的三极管放大电路,管脚给个电平就能响
回复

使用道具 举报

ID:385372 发表于 2018-8-18 17:53 | 显示全部楼层
无源蜂鸣器需要给与一定频率的信号使蜂鸣器振荡发声,所以要有一个产生一定频率方波信号的程序,否则无源蜂鸣器使不会响
回复

使用道具 举报

ID:387065 发表于 2018-8-18 21:55 | 显示全部楼层
这个 是一段演示函数,可以固定间隔频率 就可以使蜂鸣器发声
回复

使用道具 举报

ID:387065 发表于 2018-8-18 21:56 | 显示全部楼层
主要看无源还是有源
回复

使用道具 举报

ID:386381 发表于 2018-8-19 19:14 来自手机 | 显示全部楼层
就是改变输出脉冲的宽度
回复

使用道具 举报

ID:431356 发表于 2018-12-1 18:54 | 显示全部楼层
通过循环来延时吧
回复

使用道具 举报

ID:437304 发表于 2018-12-1 19:17 | 显示全部楼层
让系统在那算术,延时
回复

使用道具 举报

ID:437304 发表于 2018-12-1 19:17 | 显示全部楼层
这样延时浪费系统的资源
回复

使用道具 举报

ID:357520 发表于 2018-12-1 20:22 | 显示全部楼层
人中狼 发表于 2018-8-11 22:06
蜂鸣器分无源蜂鸣器和有源蜂鸣器两种,有源蜂鸣器只需要给供电就可以响,所以控制起来方便。无源蜂鸣器需要 ...

涨知识了
回复

使用道具 举报

ID:249013 发表于 2018-12-1 21:08 | 显示全部楼层
这个可以自己调出来不同的声音的。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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