复习单片机:蜂鸣器(内含:1 蜂鸣器介绍+2 硬件设计+3 软件设计+4.原始代码+5 实验现象)

简介: 复习单片机:蜂鸣器(内含:1 蜂鸣器介绍+2 硬件设计+3 软件设计+4.原始代码+5 实验现象)

1 蜂鸣器介绍


蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计


算机、 打印机、 复印机、 报警器、 电子玩具、 汽车电子设备、 电话机、 定


时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两


种类型。


一句话就可概括它们之间的区别,想要压电式蜂鸣器发声,需提供一定


频率的脉冲信号;想要电磁式蜂鸣器发声,只需提供电源即可。


我们板子上使用的蜂鸣器是无源蜂鸣器,属于压电式蜂鸣器类型。这里说


的有源和无源,并不是指电源的意思,而是指蜂鸣器内部是否含有振荡电路,有


源蜂鸣器内部自带振荡电路,只需提供电源即可发声,而无源蜂鸣器则需提供一


定频率的脉冲信号才能发声,频率大小通常在 1.5-5KHz 之间。蜂鸣器实物图如


下图所示:


17ecf928a5054dfdb09ab29fea190ce2.png


对于无源蜂鸣器,如果改变频率就可以调节蜂鸣器音调,产生各种不同音色、


音调的声音。如果改变输出电平的高低电平占空比,则可以改变蜂鸣器的声音大


小。


对于有源蜂鸣器,通常内部已经固定了频率,对于调节频率或占空比可能改


变不了蜂鸣器的音调和音量,当然也有的有源蜂鸣器可以实现和无源蜂鸣器一样的效果。


2 硬件设计


要实现蜂鸣器的控制,我们能否直接使用单片机的 IO 口驱动呢?答案是否定的,因为 51 单片机 IO 口的驱动能力较弱(即使外接上拉电阻),而蜂鸣器驱动需要约 30mA,所以非常困难,即使可以驱动,那对于整个芯片的其它 IO 剩下驱动能力就更加弱甚至无法工作。所以我们不会直接使用 IO 口驱动蜂鸣器,而是通过三极管把电流放大后再驱动蜂鸣器,这样 51 单片机的 IO 口只需要提供不到 1mA 的电流就可控制蜂鸣器。


所以我们也经常说到 51 单片机是用来做控制的,而不是驱动。(一句话,电流消耗大,不能用单片机驱动,需要三极管放大,单片机起驱动作用).


2ddca5a4ff20461fa1bf22dda0d04a57.png


从图中可以看出,蜂鸣器控制管脚直接连接到 51 单片机的 P2.5 管脚上。图


中并没有使用三极管进行电流放大,而是使用 ULN2003 芯片来驱动,道当 P25 输出高电


平,BEEP 则输出低电平;当 P25 输出低电平,BEEP 则输出高电平,类似一个非


门。


开发板上使用的是无源蜂鸣器,它需要一定频率的脉冲(高低电平)才会发


声,因此需要让 P25 脚以一定频率不断输出高低电平信号才能控制蜂鸣器发出声


音.


3 软件设计


要实现的功能是:让蜂鸣器发出声音,一段时间后再关闭,即让 P2.5管脚输出一定频率的脉冲信号(高低电平)控制无源蜂鸣器。


51f30e6de0af4df897df7653938b2797.png


4.原始代码如下:


#include"reg52.h"
sbit BEEF=P2^5;
typedef unsigned char u8;
typedef unsigned int u16;
void delay_time(u16 ten_us)
{
while(ten_us--);
}
void main()
{
u16 i=5000;//循环5000次
for(i=5000;i<=0;i--)
{
BEEF=!BEEF;
//一直转换蜂鸣器的值,使之发声
delay_time(100);//延时
}
BEEF=0;//关闭蜂鸣器
}

5 实验现象

使用 USB 线将开发板和电脑连接成功后(电脑能识别开发板上 CH340 串口),

把编译后产生的.hex 文件烧入到芯片内,可以听到开发板上蜂鸣器发出美妙的

声音,一段时间后关闭。

相关文章
|
4月前
|
C语言
【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
|
4月前
|
C语言
51单片机汇编语言流水灯代码
51单片机汇编语言流水灯代码
105 1
|
7月前
|
传感器
51单片机循迹小车原理介绍和代码示例
51单片机循迹小车原理介绍和代码示例
51单片机循迹小车原理介绍和代码示例
|
7月前
|
传感器
51单片机矩阵键盘超详解!(内含LCD1602代码)
51单片机矩阵键盘超详解!(内含LCD1602代码)
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
|
7月前
|
C++
【51单片机】添加模块代码的常见问题(图示&代码演示)
【51单片机】添加模块代码的常见问题(图示&代码演示)
|
7月前
|
编译器 C语言 开发者
单片机原理与应用:探索微型计算机世界
单片机原理与应用:探索微型计算机世界
59 1
|
7月前
|
数据采集 数据处理 C语言
单片机:探索其原理、应用与编程实践
单片机:探索其原理、应用与编程实践
112 1
|
7月前
|
物联网
STC51单片机-实验开发装置仿真-物联网应用系统设计
STC51单片机-实验开发装置仿真-物联网应用系统设计
152 0