关于刚学习51单片机如何让蜂鸣器响

目录

蜂鸣器区域原理图

蜂鸣器种类

无源蜂鸣器的发生原理

产生波的方法

我们得定义IO口

编写延时函数

 产生高电平和低电平

完整代码

 改良


 

蜂鸣器区域原理图

 因为蜂鸣器的发声需要很大的驱动力。我们这里选择ULN2003D这个芯片的12脚来驱动蜂鸣器。通过给5脚输入信号就可以控制蜂鸣器了,也就是P2^5这个IO口

蜂鸣器种类

蜂鸣器分为:无源蜂鸣器和有源蜂鸣器,我们51单片机中的蜂鸣器就是无源蜂鸣器,其中无源蜂鸣器就需要提供震荡源才可以让蜂鸣器发出声音。

无源蜂鸣器的发生原理

无源蜂鸣器的发生原理为:用一个波来让蜂鸣器发声音,其中波的占空比越大,声音越大,占空比就是一个周期中高电平的时间与低电平的时间的比值,然后波的频率是通过周期来决定的。改变波的频率我们将会听到不一样音色的声音。

产生波的方法

通过设置一段时间高电平和一段时间为低电平,就可以很容易的产生一个矩形波,再通过循环这个矩形波就可以让蜂鸣器发出声音了

我们得定义IO口

sbit BEEP=P2^5;	 //定义IO口

编写延时函数

因为我们需要低电平和高电平都要持续一段时间,那么就需要一个函数用来延时。

void delay_10us(int ten_us)
{
	while(ten_us--);	
}

 产生高电平和低电平

while(1)
{
	delay_10us(100);	 //控制周期
	BEEP=!BEEP;
}

完整代码

#include "reg52.h"	   //调用相应的函数库

void delay_10us(int ten_us)	  //延时函数
{
	while(ten_us--);	
}
sbit BEEP=P2^5;	 //定义IO口

void main()
{	
	while(1)
	{
		 delay_10us(100);	 //通过延时,控制周期
		 BEEP=!BEEP;		//电平反转
	}
}

 改良

这个代码将会使得板子一上电就一直响,如果只想让蜂鸣器响一段时间,那么可以通过一个类似计时的方法。方法如下

#include "reg52.h"	   //调用相应的函数库

void delay_10us(int ten_us)	  //延时函数
{
	while(ten_us--);	
}
sbit BEEP=P2^5;	 //定义IO口

void main()
{	
	int i=900;
	while(1)
	{	 
		while(i--)
		{
		 	delay_10us(100);	 //通过延时,控制周期
		 	BEEP=!BEEP;		//电平反转 
		}
		i=0;
		BEEP=1;
	}
}

通过设置一个循环,这个循环里面蜂鸣器才会响,结束了循环蜂鸣器就不响了。

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值