一、蜂鸣器介绍
蜂鸣器时一种将电信号转化成声音信号的器件,常用来产生设备的按键音,报警音等提示信号。
蜂鸣器分为有源蜂鸣器,无源蜂鸣器 。
有源蜂鸣器:内部自带震荡源,将正负极街上直流电压即可持续发声,频率固定
无源蜂鸣器:内部不带震荡源,需要控制器提供震荡脉冲才可以发声,调整提供震荡脉冲的频率,可发出不同频率的声音。
c51中的蜂鸣器是无源蜂鸣器
二、蜂鸣器原理图
如图所示的三极管是NPN三极管,当p11是1时,三极管导通,蜂鸣器会响 ,在我们的开发板上,就是把那个帽子戴上。使其有电原通过。
三、蜂鸣器实现
(1)用延时函数表示频率的变化。
cs
#include"reg51.h"
void delay(unsigned int n)
{
while(n)
--n;
}
viod main(void)
{
while(1)
{
P2=~P2;
delay(3000);//控制频率改变蜂鸣器声音的尖锐
}
}
单位时间内周期变化的越小,频率越大,声音越尖锐。
(2)利用定时器的计数功能,改变中断时间,来改变频率变化,使蜂鸣器声音变化。
cs
#include "reg51.h"
void timer0Init(void)
{
//TMOD |= (0x01<<0); //默认状态 TMOD 就是13位模式
TH0 = 7192>>5;
TL0 = 7192&0x1F;
IE |= 0x01<<7 | 0x01<<1;
TCON |= 0x01<<4; //开启定时器
}
void timer0Handler(void) interrupt 1
{
static int n = 0;
static int m=0; //控制占空比
static unsigned int k=0 //控制频率进阶变化
if (k == 1000)//让声音持续一小段时间
{
++m; //从1ms开始增加
k= 0;
}
k++;
n++;
if (n == (m+1))//n也在加,相当于p2 1ms翻转一次
{
P2 = ~P2;
n = 0;
}
TH0 = 7192>>5;
TL0 = 7192&0x1F;
}
void main(void)
{
timer0Init();
while(1)
{
}
}