蜂鸣器_单片机_普中

1 蜂鸣器介绍

       蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于电子产品中作为发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

2 功能要求

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

3 硬件设计

4 软件设计

4.1 蜂鸣器发出声音

  原理分析:一定频率的脉冲信号(高低电平)控制无源蜂鸣器,频率控制音调;而无源蜂鸣器频率工作范围为1.5-2.5Khz。

 1 #include "reg52.h"
 2 
 3 typedef unsigned char u8;     //对系统默认数据类型重新定义
 4 typedef unsigned int  u16;
 5 
 6 sbit BEEP = P2^5;      //原理图可知,蜂鸣器管脚连接P2.5
 7 
 8 void delay_10us(u16 ten_us)     //当传入ten_us=1,大约延时10us
 9 {
10      while(ten_us--);
11 }
12 
13 void main()
14 {
15     u16 i = 2000;  //循环次数为2000
16     while(1)
17     {
18         while(i--)
19         {
20         BEEP = !BEEP;    //产生一定频率的脉冲
21         delay_10us(100);    //大约延迟100x10us=1ms
22         }
23         i = 0;           //清零
24         BEEP = 0;      //关闭蜂鸣器(无源)
25     }
26 }

现象:使用USB线将开发板和电脑连接成功后,把编译后产生的.hex文件烧入芯片内,可以听到蜂鸣器发出声音,一段时间后关闭。

 4.2 调整蜂鸣器的响度

  原理分析:通过修改输出高低电平的时间,即脉冲的占空比,可改变音量。

 1 #include "reg52.h"
 2 
 3 typedef unsigned char u8;     //对系统默认数据类型重新定义
 4 typedef unsigned int  u16;
 5 
 6 sbit BEEP = P2^5;      //原理图可知,蜂鸣器管脚连接P2.5
 7 
 8 void delay_10us(u16 ten_us)     //当传入ten_us=1,大约延时10us
 9 {
10      while(ten_us--);
11 }
12 
13 void main()
14 {
15     u16 i = 2000;  //循环次数为2000
16     while(1)
17     {
18         while(i--)
19         {
20         BEEP = 1;    
21         delay_10us(190);    //高电平持续时间    
22         BEEP = 0;    
23         delay_10us(10);        //低电平持续时间,通过改变占空比,可调节蜂鸣器的响度
24         }
25         i = 0;           //清零
26         BEEP = 0;      //关闭蜂鸣器(无源)
27     }
28 }

参考资料:
(1)普中51单片机课程(A2-A7全系列视频教程)_哔哩哔哩_bilibili

posted @ 2022-01-18 17:02  豌豆茶  阅读(737)  评论(0编辑  收藏  举报