让蜂鸣器报警并退出
蜂鸣器介绍
图一为无源蜂鸣器,图二是有源蜂鸣器,
无源蜂鸣器需要提供一定的脉冲信号(通常1.5~5KHz之间)才能发出声音,有缘蜂鸣器只需要提供电源就能发出声音。
对无源蜂鸣器来说可以通过改变提供的频率(或周期)来调节蜂鸣器发出的音色;声音的大小可以通过调节占空比(高电平占一个周期的比例)。
有源蜂鸣器上电之后,音色和声音大小就是固定了,当然也有特定的,取决于厂家。
单片机不能通过引脚直接驱动蜂鸣器(大约30mA才能驱动),需要通过一个ULN2003来间接控制,由图可知BEEP与ULN2003中的12管脚相连,其作用可以类似于一个非门,当输入P2.5低电平,OUT5输出高电平,当输入P2.5高电平,OUT5输出低电平。
任务:让蜂鸣器发出一段声音后停止,即让P2.5管脚输出一段脉冲信号。
软件实现逻辑
#include <REGX52.H>
sbit BEEP=P2^5;//定义P2^5管脚
typedef unsigned int u16;
void delay_10us(u16 ten_us)//定义延时函数,ten_us为1 表示延时10us
{while(ten_us--);
}
void main()
{ int i=2000;//可以改变该值来改变声音持续时间while(1){while(i--){BEEP=!BEEP;delay_10us(100);// 低/高电平持续1ms,占空比50%,周期为2ms,频率为0.5KHz}i=0;BEEP=0;}}/* BEEP=0;delay_10us(10);BEEP=1;delay_10us(40);//高电平0.4ms,低电平0.1ms,周期为0.5ms,f为2KHz*/
也可将while(i--)里的循环变成 下面注释掉的代码,声音更好听