设计一个蜂鸣器报警电路,按下K1,蜂鸣器响一声,按下K2,蜂鸣器响三声,按下K3,蜂鸣器长鸣。长鸣不限时,但是此时应设置一个按键能够使长鸣结束。
题目比较简单,但我还是第一次在CSDN上写文章。
下列就是单片机的蜂鸣器和模块
我的思路也比较简单就是分别定义了延时函数和蜂鸣器函数
void delay(int x) //延时子函数
{
int i,j;
for(i=0;i<x;i++);
for(j=1;j<=600;j++);
}
void pulse_BZ(int count,int TH,int TL) //蜂鸣器发声函数
{
int i;
for(i=0;i<count;i++)
{
buzzer=1; //输出高电平
delay(TH); //延时TH时间
buzzer=0; //输出低电平
delay(TL); //延时TL时间
}
整段代码如下
#include <reg51.h> //此文件中定义了单片机的一些特殊功能寄存器
sbit buzzer =P1^5; //声明蜂鸣器接到P1.5引脚
sbit k1=P3^1; //声明四个独立按键
sbit k2=P3^0;
sbit k3=P3^2;
sbit k4=P3^3;
void delay(int); //声明延时函数
void pulse_BZ(int,int,int); //声明蜂鸣器函数
main()
{
while(1)
{
if (k1==0)
{
delay(20000); //
pulse_BZ(100,100,100);
delay(20000);
}
if (k2==0)
{
delay(20000);
pulse_BZ(100,100,100);
delay(20000);
pulse_BZ(100,100,100);
delay(20000);
pulse_BZ(100,100,100);
delay(20000);
}
if (k3==0)
{
while(1)
{
buzzer=~buzzer;
delay(100);
if (k4==0)
{
break;
}
}
}
}
}
void delay(int x) //延时子函数
{
int i,j;
for(i=0;i<x;i++);
for(j=1;j<=60;j++);
}
void pulse_BZ(int count,int TH,int TL) //蜂鸣器发声函数
{
int i;
for(i=0;i<count;i++)
{
buzzer=1; //输出高电平
delay(TH); //延时TH时间
buzzer=0; //输出低电平
delay(TL); //延时TL时间
}
}
时间间隔的话需要自己在delay函数中写需要的值,最后感谢各位的观看。