S t e p 2 Step2 Step2 :【C51】蜂鸣器发声实验
蜂鸣器简介
①按驱动方式的不同。可分为有源蜂鸣器和无源蜂鸣器。
有源蜂鸣器内部有振荡电路,能将恒定的直流电转化成一定频率的脉冲信号,从而引起磁场交变,带动振动膜片振动发音。因此它工作的理想信号是直流电,一旦供电,蜂鸣器就会发出声音。
无源蜂鸣器内部不带震荡源,如果提供直流信号,因为磁路恒定,振动膜片不能振动发音,蜂鸣器不工作。因此,它工作的理想信号是方波,方波的频率不同,发出的声音也不同。
②按构造方式的不同。可分为电磁式蜂鸣器和压电式蜂鸣器。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V 直流工作电压),多谐振荡器起振,输出 1.5~5kHZ 的音频信号,阻抗匹配器推动压电蜂鸣片发声。
即想要电磁式蜂鸣器发声, 只需提供电源即可;想要压电式蜂鸣器发声, 需提供一定频率的脉冲信号;
硬件设计
因为 51 单片机 IO 口的驱动能力较弱,而蜂鸣器驱动需要约 30mA,所以非常困难。因此我们不会直接使用 IO 口驱动蜂鸣器,而是通过三极管把电流放大后再驱动蜂鸣器,这样51单片机的 IO 口只需要提供不到 1mA 的电流就可控制蜂鸣器。 所以我们也经常说到 51 单片机芯片是用来做控制的,而不是驱动。
蜂鸣器发声实验
在我所使用的开发板中,使用的是无源蜂鸣器,需要一定频率的脉冲才会发声。蜂鸣器控制管脚直接连接到 51 单片机的P1^5口上。并有一个PNP 三极管起到电流放大作用,从而可以驱动蜂鸣器。
#include<reg52.h>
void delay(int times);//延时函数
sbit beep=P1^5;//蜂鸣器控制管脚连接到 51 单片机的P1^5口上。
void main()
{
while(1)
{
beep=1;
delay(1000);//延时约为1s,
//蜂鸣器发出声音的时间间隔不同,频率就不同,所发出的声音也就不同。
//根据这一原理,可通过改变蜂鸣器发声和停止发声的时间间隔,发出不同频率的声音。
beep=0;
delay(1000);
}
}
void delay(int times)
{
times=times*10000;
while(times--);
}
扩展实验–灯光报警器(LED&蜂鸣器)
要求:在LED跑马灯的基础上附加要求:当LED3点亮时,蜂鸣器发出声音,报警;LED3熄灭时,蜂鸣器停止发声。
PS:LED跑马灯
#include<reg52.h>
#include<intrins.h>//进行移位操作的头文件
sbit beep=P1^5;//蜂鸣器控制管脚连接到 51 单片机的P1^5口上。
void delay(int times);
void main()
{
int i;
while(1)
{
P2=0xFE;//P2口的8个引脚被赋值成1111,1110,代表只有P2^0口是低电平,其余都是高电平。
//即只有LED0亮,其余LED灯处于熄灭状态。
//8个引脚与0xFE的2进制分别对应!
for(i=0;i<8;i++)
{
P2=_crol_(P2,1);//每次循环左移一位。
if(P2==0xF7)//P2=11110111,如果LED3亮(即第四个LED灯亮起时),蜂鸣器报警
{
beep=1;
delay(500);
beep=0;//蜂鸣器停止发声
}
delay(1000);
}
}
}
void delay(int times)
{
times=times*10000;
while(times--);
}
补充知识
①NPN型三极管、PNP 型三极管
C:集电极 c o l l e c t o r collector collector | B:基极 b a s e base base | E:发射极 e m i t t e r emitter emitter |
---|
开关特性:
对NPN型三极管,只要B极电压比E高0.7V以上,E、C之间就可以导通。所以NPN为高电平导通,低电平截止。
对PNP型三极管,只要E极电压比B高0.7V以上,E、C之间就可以导通。所以PNP为低电平导通,高电平截止。
三种工作状态:
(1)截止:
截止条件:对NPN,低电平为截止状态;对PNP,高电平为截止状态。
截止状态下,各电极的电流几乎为0,E极和C极互不相通,相当于一个断开的开关。E、C极电压近似于电源电压。
(2)放大:
放大条件:对NPN: U C > U B > U E U_C>U_B>U_E UC>UB>UE;对PNP: U E > U B > U C U_E>U_B>U_C UE>UB>UC。
I B I_B IB、 I C I_C IC近似于线性关系, I B I_B IB微小的变化就能引起 I C I_C IC较大的变化。
(3)饱和:
饱和条件:对NPN: U B > U E U_B>U_E UB>UE, U B > U C U_B>U_C UB>UC;对PNP: U B < U E U_B<U_E UB<UE, U B < U C U_B<U_C UB<UC。
当B、E极间的电流增大到某一值后,E、C极间电流将不再变化,就称三极管达到了饱和状态。此时 I B I_B IB的变化对 I C I_C IC的影响很小,两者不成比例。饱和状态下E极和C极间电压值很小,通常硅管约为0.3V,若忽略不计,则E极和C极之间相当于短路,即相当于一个闭合的开关。