2015年10月25日星期日

蜂鸣器

无源的蜂鸣器,就要通过IO口输出振荡信号来驱动蜂鸣器
蜂鸣器简介:蜂鸣器根据结构不同分为压电式蜂鸣器和电磁式蜂鸣器;而两种蜂鸣器又分为有源蜂鸣器和无源蜂鸣器,这里的源特指振荡源;有源蜂鸣器直接加电就可以响起,无源蜂鸣器需要我们给提供振荡源。理想的振荡源为一定频率的方波。

只有当有一定频率的电流从正极流向负极,蜂鸣器才会叫。
三极管在这些方波的控制下导通,截止(图,可以看单片机教程上的),就会有和方波频率相同的电流流过蜂鸣器。

改变控制方波的频率就可以控制蜂鸣器音调,产生各种不同的音色,音调的声音。控制方波的频率越高,蜂鸣器的声音越尖。反之,越低沉。改变控制方波的的高低电平占空比,则可以控制蜂鸣器的声音大小.


图中(a)(b)改变了频率。图(c)(d)改变了占空比,频率一样。

如果系统采用了无源蜂鸣器,所以需要我们通过编程来控制I/0口的翻转来产生一定频率的方波信号。如果采用默认频率0.5KHZ的标准方波。可以算出周期T = 2ms 脉宽t = 1ms,因此我们可以通过简单的延时函数延时1ms。然后控制P口的电平高低产生0.5KHZ的方波信号;

本程序只是通过简单延时达到驱动蜂鸣器的效果。
#include <reg52.h>
sbit buzzer = P1^5;
void delayms(unsigned int xms)   //延时函数 ,延时xms
{
      unsigned int i , j;
          for(i = 0; i < xms; i++)
              for(j = 0; j < 110; j++);
}

void fengming()    //蜂鸣函数,脉宽t = 1ms 周期T = 2ms 频率f = 0.5khz 实际发现延时1ms的时候效果最好
{
        buzzer = 0; //
P1.5口送低电平
        delayms(1);   //
延时1ms
        buzzer = 1;   //
P1.5口送高电平
        delayms(1);   //
延时1ms
}





没有评论:

发表评论