一、蜂鸣器硬件设计
1、
2、上面两张图,是针对不同产品的电路图。像左边这一块,是我们的A2,A3,A4的一个产品对应的一个封闭器的硬件电路。而右边的这一块是对应的A5到A7的一个硬件电路。因为A5到A7的一个产品,它的各个模块都是完全独立的,所以它的控制管脚都是通过这种排针的方式引出来。你要使用那个管脚控制都可以自由搭配。
3、我们先来看一下我们的这种集成的,所谓的集成就是说我们的板载的这个硬件资源,通通都绑定到了单片机的IO口,而我们人为是无法改变的,因为我们预先已经把它控制管脚连到了单片机的管脚上面,所以必须要在编程的时候,你要指定使用我们的这个电路的一个管脚。
4、那我们来看一下这个电路,前面我们已经对这个51单片机的IO口做了简单的介绍,并且还使用这个IO口来直接控制开发板上的一个LED,那对于本章的这个蜂鸣器实验控制,我们是不是还可以使用这个单片机的IO口,来驱动这个蜂鸣器直接发出声音,当然是不可以,因为我们的51单片机的IO口,它的驱动能力比较弱,前面我们在介绍这个P0,P1,P2,P3它的内部结构的时候,我们知道,它的内部虽然有一些上拉电阻,但是驱动能力比较弱即使你外部增加了这个IO,增加了上拉,它的驱动能力也不会提高很多,而且蜂鸣器呢,它的驱动通常是需要30个毫安。而我们单片机的IO口,它的驱动能力是不足这个的,所以非常困难,即使可以勉强驱动,对于整个芯片的其他IO,剩下的那个驱动能力那就更弱了。所以说,我们不会直接使用这种IO口来驱动蜂鸣器,也就是不会直接使用这种,比如说我们现在的单片机的P25管脚,我不会直接使用P25管脚来连到这个蜂鸣器管脚上面来控制它。这样是不可以的。我们会通过一些放大电路,比如说我们会使用三极管,把电流放大,然后再驱动这个蜂鸣器来发出声音,这样呢,我们的51单片机IO口,只需要很小的电流,比如说还不到1毫安的电流就可以的驱动我们的蜂鸣器来发出声音。所以这也是我们前面常说到的单片机,通常是用来做控制。记住我们的单片机通常是用来做控制的,而不是说做驱动的。驱动自然是有一些相应的驱动电路,我们的单片机只是用来做控制一些外部的驱动电路来实现我们的一些设备的一个运行。
5、那我们来看一下我们的集成板,像我们的A2到A4,它所使用的这个驱动电路是ULN2013这个芯片,这个芯片,我们后续会介绍一下这个芯片在我们学习电机的时候,我们会介绍这里,大家只要了解,通过这个芯片,可以驱动我们的蜂鸣器发出声音,此处,先不要了解,可以不了解这个ULN2013的一个使用,只知道这个P25管脚的输出高,那么对应的蜂鸣器输出管脚是对应的是低,也就是相当于一个非门一样的一个电路。那从这个图中,我们也可以知道,像蜂鸣器我们使用的是网络标号,是BEEP,然后对应到我们的原理图里面,这里也有个BEEP,说明它们之间是连接着的。而这个OUT 5管脚那对应着的输入也是IN5,所以是P25管脚来控制我们的蜂鸣器,这里看原理图也是这样去看。然后呢,我们对这个P25管脚,所以我们只可以使用P25管脚来输出一定频率的脉冲信号来控制我们蜂鸣器发出声音,当我们P25管脚输出高,这里就输出低,它这里就有电流,电压。低的话,那么这里就是高,这里就是截止,所以通过这么一个脉冲信号,可以使我们的蜂鸣器发出声音,这是我们的这个A2到A4的这一块的一个电路的一个介绍。
6、那我们对于A5到A7的产品,它是模块独立的引出来的控制拐角,是通过这个端子,也就是这个排针,那我们可以使用一条导线,将我们的这个P25管脚进行一个连接,这样就可以实现我们的软件通用。那么我们来分析一下这个硬件的一个电路,这里使用的是一个三极管PNP的一个三极管来进行一个电流的一个放大,那么当我们这个管脚输出一个低电平的时候,那么在这个PNP 3极管这里是它的一个设计。
7、此处我们使用的是无源蜂鸣器,所以它是需要一定频率的脉冲信号才能控制它发生,也就是你说的这个P25管脚,它要连续的输入这种波形的一个信号才可以,不仅仅是输一个高或者低就能让它发生,除非你这个蜂鸣器使用的是有源蜂鸣器。假设这个BZI是一个有源蜂鸣器,那当我们的这个管脚P25输出一个低电平的时候,那这里就有电源进来,根据我们的有源蜂鸣器的导通特性,它的一个特点,它只要有电源,它就会发出声音,所以这里直接就会响,那我输出高电平的时候,这里呢截止,它就没有电源,它就会停止发声,所以有源封闭性控制相对无缘封闭性来说更简单。它就相当于我们前面操作LED一样,只需要对它一个高低电平的一个输出。而无源供电器,它是需要一定频率脉冲信号,这一定频率脉冲信号是指P25,它需要连续输出,而不是说只输一下高或者低就行了。
二、蜂鸣器软件设计
1、本章所要实现的功能是:让蜂鸣器发出声音,一段时间后再关闭,即让管脚输出一定频率的脉冲信号(高低电平)控制无源蜂鸣器。
2、要编写这个封闭器的一个控制程序,首先我们要了解一下所要实现的功能,这个蜂鸣器也就是相当于让我们的这个管脚对应的原理图里面的P25管脚,产生一定频率的脉冲信号出来,然后控制这个蜂鸣器就可以发声了,然后一段时间之后我们再将P25管脚让它输出低或者是输出高都可以,因为它没有连续的信号。即使你低或者高,它都不会发出声音。这是我们的这个软件设计的一个功能需求,知道了这个功能需求了之后,那我们接下来就可以编写我们的一个蜂鸣器的一个代码。那我们怎么来编写呢。
3、首先,要让这个无源蜂鸣器进行发声,首先要让我们的管教输出一定频率的脉冲信号,才可以进行发声,那要产生一定频率的脉冲信号,顾名思义,就是要让这个P2.5管脚不断地输出高低这么一个波,那其实对应到我们前面的LED闪烁是不是一样的,我们LED闪烁,大家应该都记得,我们的是低电平点亮,高电平熄灭,相当于就是LED闪烁,只不过这个闪烁的时候,我们把这个时间缩短了,我们肉眼看到这个时间可能是很长,我们是450个毫秒,但是在这个蜂鸣器这里450个毫秒,它是不会发出声音的,他要求的是1.5到5k赫兹,当然误差一点也是可以的。那假设的我这1k赫兹的这个频率下面,让这个蜂鸣器发出声音。1k赫兹它这是频率周期,是频率的导数,所以相当于1毫秒,因此我们周期是1毫秒。那你低电平假设我的占功比是50%,占功比前面讲述了就是高电平所占据整个周期的一个时间,这就相当于多少0.5个毫秒对不对,这里也是0.5个毫秒,所以高电平让它输出0.5个毫秒,低电平让它输出0.5个毫秒,这样不断的输出,我们的蜂鸣器就能发声了。
4、下面我们就可以编写代码了