蜂鸣器(Buzzer)

蜂鸣器分为两种,有源蜂鸣器与无源蜂鸣器,“源”特指震荡源,CT107D上使用的为有源蜂鸣器。

  • 有源蜂鸣器内部封装的有振荡结构,外接电源即可发出声音,外围电路设计简单但是声音不可改变。
  • 无源蜂鸣器,内部无振荡电路,需要在引脚间加上一定频率的信号才能发出声音,声音可变价格便宜。
    电路图中的蜂鸣器部分

    相关驱动电路

    驱动信号经过138译码器(见前文)选择到Y5,激活对应的HC573锁存器,P0端口的信号经过HC573锁存器后使用ULN2003进行信号放大,从而驱动继电器与蜂鸣器。ULN2003的作用的是放大电流,将单片机端口的几十毫安电流转换为最大500ma,从而达到驱动大电流设备的目的。
    相关驱动电路

    驱动程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include<reg51.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit HC138_A=P2^5;
sbit HC138_B=P2^6;
sbit HC138_C=P2^7;
//该延迟程序可以通过STC-ISP的软件延迟计算器生成
void Delay1000ms() //延迟1秒@11.0592MHz
{
unsigned char i, j, k;

i = 43;
j = 6;
k = 203;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}

void Initsys()
{
HC138_C=1;
HC138_B=0;
HC138_A=1;//Y5输出低电平,选择到Y5C
P0=0X00;//拉低所有P0端口电平初始化
}

void beep()
{
HC138_C=1;
HC138_B=0;
HC138_A=1;//Y5输出低电平,选择到Y5C
P0=0x40;//对应对应0100 0000,引脚P06-D7-Q7-IN7-OUT7-N BUZZ
Delay1000ms();
P0=0X00;
}

void relay()
{
HC138_C=1;
HC138_B=0;
HC138_A=1;//Y5输出低电平
P0=0x10;//对应0001 0000,引脚P04-D5-Q5-IN5-OUT5-N RELAY
Delay1000ms();
P0=0X00;
}

void main()
{
Initsys();
while(1)
{
beep();
relay();
}
}