标题: 关于单片机控制的无源蜂鸣器的延时问题? [打印本页]

作者: hyg1997    时间: 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--);
              }

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

但是没有这段程序我的蜂鸣器就不响了。。。
作者: 1330012643    时间: 2018-8-11 19:07
延时函数,看让蜂鸣器怎么响了,如果只是控制蜂鸣器响或不响延时函数一般不起作用(具体看整体),如果还要控制蜂鸣器的音调,那可能会使用延时函数来输出pwm波(一般用定时器来做),无源蜂鸣器通电好像是不会响的(我也没用过,不敢肯定),要给一定频率信号(pwm)才会响。
作者: 人中狼    时间: 2018-8-11 22:06
蜂鸣器分无源蜂鸣器和有源蜂鸣器两种,有源蜂鸣器只需要给供电就可以响,所以控制起来方便。无源蜂鸣器需要给与一定频率的信号使蜂鸣器振荡发声,所以要有一个产生一定频率方波信号的程序,否则无源蜂鸣器使不会响的。
在有源蜂鸣器里有一个振荡电路来产生使无源蜂鸣器发声的电路,所以有源蜂鸣器是无源蜂鸣器和振荡电路的组合
作者: angmall    时间: 2018-8-12 10:01
hyg1997 发表于 2018-8-11 15:27
但是没有这段程序我的蜂鸣器就不响了。。。

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

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

作者: wulin    时间: 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;                //蜂鸣器复位
}
作者: ch12063119    时间: 2018-8-12 19:53
无源蜂鸣器用途不是很广,也可能是我孤陋寡闻,无源蜂鸣器我用32输出方波控制做过音乐盒,如果仅仅是
作者: ch12063119    时间: 2018-8-12 19:58
说实话如果你仅仅用他的报警功能做一个简单的三极管放大电路,管脚给个电平就能响
作者: jsq347    时间: 2018-8-18 17:53
无源蜂鸣器需要给与一定频率的信号使蜂鸣器振荡发声,所以要有一个产生一定频率方波信号的程序,否则无源蜂鸣器使不会响
作者: xunyongjun    时间: 2018-8-18 21:55
这个 是一段演示函数,可以固定间隔频率 就可以使蜂鸣器发声
作者: xunyongjun    时间: 2018-8-18 21:56
主要看无源还是有源
作者: 文凤轩    时间: 2018-8-19 19:14
就是改变输出脉冲的宽度
作者: 连衡_    时间: 2018-12-1 18:54
通过循环来延时吧
作者: 代码本色    时间: 2018-12-1 19:17
让系统在那算术,延时
作者: 代码本色    时间: 2018-12-1 19:17
这样延时浪费系统的资源
作者: jll586    时间: 2018-12-1 20:22
人中狼 发表于 2018-8-11 22:06
蜂鸣器分无源蜂鸣器和有源蜂鸣器两种,有源蜂鸣器只需要给供电就可以响,所以控制起来方便。无源蜂鸣器需要 ...

涨知识了
作者: aoa3000599    时间: 2018-12-1 21:08
这个可以自己调出来不同的声音的。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1