蜂鸣器_单片机_普中
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 }