蜂鸣器介绍

蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号

蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器

有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定

无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音

蜂鸣器有正负极,顶部印有+号的为正极,若蜂鸣器引脚没剪,则长的为正极

驱动电路

三极管驱动

单片机引脚不能直接蜂鸣器

加NPN型三极管进行驱动,因为单片机的引脚驱动能力有限,蜂鸣器的功率比较大,所以需要通过三极管来驱动,R1为限流电阻,单片机引脚如果给高电平,则三极管导通,VCC便给蜂鸣器供电,如果给低电平,则三极管断开

PNP型三极管同理,只不过是单片机引脚输出低电平导通,输出高电平断开

集成电路驱动

ULN2003D芯片本是用来作步进电机驱动的,只不过引脚太多没用完,就把蜂鸣器用这个芯片驱动,如果单独用这个芯片驱动蜂鸣器就比较浪费,因为蜂鸣器可以只用一个三极管驱动,如蜂鸣器模块

该芯片由7对达令顿管组成,每一对其实就是两个三极管,如图中的是一对,其内部有两个三极管组成,当1B输入1,取反后右边输出0,输入0取反后输出1

无源蜂鸣器不能长期通电,但开发板上设计得不合理,P15上电就为1,经过ULN2003D芯片后输出0到蜂鸣器,因为都是给0驱动给1不驱动的,而蜂鸣器另一端接VCC,相当于一上电就直接驱动了,处于工作状态,只不过没给频率没有响

按键提示音项目

在该项目中,如果使用之前的按键检测方法,则一按下按键蜂鸣器就一直响,不会停下,达不到想要的效果,要对按键检测方法进行修改

//之前的检测方法,在想要按一下按键蜂鸣器就响一下时达不到效果if(P3_1 == 0){Delay1ms(30);if(P3_1 == 0){keynum = 1;}while(!P3_1);}//修改之后的检测方法,可以达到预期效果if(P3_1 == 0){Delay1ms(30);while(P3_1 == 0);Delay1ms(30);keynum = 1;}