跳转到主要内容
--## 电子创新网图库均出自电子创新网,版权归属电子创新网,欢迎其他网站、自媒体使用,使用时请注明“图片来自电子创新网图库”,不过本图库图片仅限于网络文章使用,不得用于其他用途,否则我们保留追诉侵权的权利。 ##--

本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
cathy 提交于

1、蜂鸣器种类

蜂鸣器分为有源蜂鸣器和无源蜂鸣器: 判断有源蜂鸣器和无源蜂鸣器可用万用表电阻档Rxl档测试:用黑表笔接蜂鸣器“+”引脚,红表笔在另一引脚上来回触碰,如果触发出咔咔声且电阻只有8Ω(或16Ω)的是无源蜂鸣器,如果能发出持续声音的,且电阻在几百Ω以上的,是有源蜂鸣器。

这里的源不是指电源,而是指震荡源。也就是说有源蜂鸣器内部带震荡源。所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫,必须用2K~5K的方波去驱动。

2、单片机与蜂鸣器连接

原理图:

由于单片机的电流驱动不了蜂鸣器,因此需要增加一个三极管进行电流放大,原理图如下图所示:

“51单片机——蜂鸣器的使用"

代码:

 //蜂鸣器
#include<reg51.h>
#include"delay.h"

#define on 0  //宏定义,低电平0为开蜂鸣器
#define off 1
sbit speak=P2^3;
void main()
{
   speak=on;
   delay(500);
   speak=off;
   delay(500); 
}

3、蜂鸣器与流水灯

在流水灯亮的同时,蜂鸣器响,即两者同步,原理图如下图所示:

“51单片机——蜂鸣器的使用"

代码

//流水灯报警
#include<reg51.h>
#include<intrins.h>
#include"delay.h"

sbit speak=P2^3;

#define on 0
#define off 1

void main()
{
 P1 = 0xfe;   //1111 1110
  while(1)
  {
   delay(500);
    P1 = _crol_(P1,1);   //将P1循环左移一位
       speak=on;
   delay(500);
   speak=off;
  }
}

4、扩展 蜂鸣器演奏音乐

#include<reg51.h>
#include"delay.h"
#define uchar unsigned char
sbit  speak =P2^3;
bit flag;  //标志音乐输出脚电平的高低
uchar ptr=0x00;
uchar high;
uchar low;
uchar code music[]={
0xfc,0x44,0x7f, 0xfc,0x44,0x7f, 0xfc,0x44,0xff, 0xfa,0x68,0xff,
0xfd,0x23,0x7f, 0xfd,0x23,0x7f, 0xfd,0x23,0xff, 0xfc,0x44,0xff,
0xfc,0x44,0x7f, 0xfd,0x23,0x7f, 0xfd,0x82,0xff, 0xfd,0x82,0xff,
0xfd,0x23,0x7f, 0xfd,0x23,0x7f, 0xfc,0xac,0xff, 0xff,0xff,0xff,
0xfc,0xac,0x7f, 0xfd,0x23,0x7f, 0xfd,0x34,0xff, 0xfd,0x34,0xff,
0xfd,0x23,0x7f, 0xfc,0xac,0x7f, 0xfd,0x23,0xff, 0xfd,0x44,0xff,
0xfc,0x44,0x7f, 0xfd,0x23,0x7f, 0xfc,0xac,0xff, 0xfa,0x68,0xff,
0xfc,0x0c,0x7f, 0xfc,0xac,0x7f, 0xfc,0x44,0xff, 0xff,0xff,0xff,
0x00
};    //happy new year 歌曲
void Init(void);  //函数声明
void main()
{
   uchar time;
   Init();
   TH0=high;
   TL0=low;
   while(1)
   {
  if(music[ptr]!=0xff&&music[ptr]!=0x00)
  {
      TR0=0;
   speak=1;
   delay(10);
   high=music[ptr];
   low= music[ptr+1];
   time=music[ptr+2];
   delay(time);
   ptr+=3;
     }
  else if(music[ptr]==0xff)
  {
     time=music[ptr+2];
      delay(time);
   ptr+=3;
  }
  else
  {
    TR0=0;
    speak=1;
    delay(2000);
    ptr=0;
  }
   }
}
void Count1(void) interrupt 1
{
  TH0=high;
     TL0=low;
  if(flag==0)
  {
     speak=0;
     flag=1;
  }
  else
  {
     speak=1;
     flag=0;
  }
}
void Init()
{
   TMOD=0x01;
   EA=1;
   ET0=1;
}

版权声明:本文为CSDN博主「啦啦赛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44981039/article/details/103924194

精彩推荐

2026英伟达GTC大会专题

CES 2026(国际消费类电子产品展览会)专题

第四届南渡江智慧医疗与康复产业高峰论坛

第十五届松山湖中国IC创新高峰论坛

第四届滴水湖中国RISC-V产业论坛

Recent comments

  • 1873774516_516738
  • 2460440665_516737
  • 1457585548_516736
  • 780289498_516735
  • 2283262460_516734