51单片机驱动无源蜂鸣器_测控-阿壮的空间_百度空间

在学习过程中遇到如下例题:8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。

流水灯的程序相对我个人来说比较简单,但是蜂鸣器有些难度,正常给I/0口一个信号,蜂鸣器既然不响,后经查证是无源蜂鸣器;

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

本系统硬件采用的是伟纳ME300B开发板,驱动部分电路图如下:


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

本程序只是通过简单延时达到驱动蜂鸣器的效果。

#include <reg52.h>

sbit buzzer = P3^7;

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的时候效果{zh0}
{
        buzzer = 0; //给P3.7口送低电平
        delayms(1);   //延时1ms
        buzzer = 1;   //给P3.7口送高电平
        delayms(1);   //延时1ms
}

void main()
{
       while(1)
      {
            fengming();
       }
}

-----------------------------------------------------------------------------------------------------------------------------------

文中例题如下:

    8个发光管由上至下(ME300B实验板是从左到右)间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。

#include <reg52.h>
#include <intrins.h>

sbit buzzer = P3^7;   //定义蜂鸣器

void delayms(unsigned int xms)   //延时函数
{
     unsigned int i , j;
        for(i = 0; i < xms; i++)
          for(j = 0; j < 110; j++);
}

void fengming(unsigned int n)    //蜂鸣函数,脉宽t = 1ms 周期T = 2ms 频率f = 0.5khz 实际运行发现延时1ms的时候效果会更好;
{
    unsigned int i;
    for(i = 0; i < n; i++)         //为了配合流水灯同时闪动,所以限定蜂鸣器的循环次数
    {
         buzzer = 0; //给P3.7口送低电平
         delayms(1);   //延时1ms
         buzzer = 1;   //给P3.7口送高电平
         delayms(1);   //延时1ms
    }
}

void main()
{
   unsigned char temp;
   temp = 0xfe;
   while(1)         //如果蜂鸣延时时间大于500毫秒,会察觉出蜂鸣器与LED的异步,所以延时不能太大了。
   {
      P0 = temp;
      fengming(500);
      delayms(500);
      temp = _crol_(temp , 1);
   }
}



郑重声明:资讯 【51单片机驱动无源蜂鸣器_测控-阿壮的空间_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——