闪光报警器编程
时间:10-02
整理:3721RD
点击:
我用单片机用C语言编程闪光报警器消音总是消音键松开声音又响起是咋回事程序如下:望高手指点
#include<reg52.h>
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit test=P2^0;
sbit rest=P2^1;
sbit s1=P3^4;
sbit s2=P3^5;
sbit s3=P3^6;
sbit s4=P3^7;
sbit beep=P2^3;
void delay(unsigned int i)
{
unsigned int j;
unsigned char k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void flash(void)
{
while(!test)
{
P1=0xff;
delay(200);
P1=0xf0;
delay(200);
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
}
}
void xiaoshan(void)
{
while(rest!=0xfe)
{
P1=0xff;
if(s1==0)
led1=0;
beep=1;
if(s2==0)
led2=0;
beep=1;
if(s3==0)
led3=0;
beep=1;
if(s4==0)
led4=0;
beep=1;
}
}
void baojing(void)
{
P1=0xff;
if(s1==0)
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
if(s2==0)
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
if(s3==0)
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
if(s4==0)
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
if(test==0)
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
}
void main()
{
if(!test) //实验按钮
flash();
if(~rest) //消音
xiaoshan();
if(s1==1)
led1=1;
if(s1==0)
led1=~led1; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔
if(s1==0)
baojing();
if(s2==1)
led2=1;
if(s2==0)
led2=~led2; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
if(s2==0)
baojing();
if(s3==1)
led3=1;
if(s3==0)
led3=~led3; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
if(s3==0)
baojing();
if(s4==1)
led4=1;
if(s4==0)
led4=~led4; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
if(s4==0)
baojing();
#include<reg52.h>
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit test=P2^0;
sbit rest=P2^1;
sbit s1=P3^4;
sbit s2=P3^5;
sbit s3=P3^6;
sbit s4=P3^7;
sbit beep=P2^3;
void delay(unsigned int i)
{
unsigned int j;
unsigned char k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void flash(void)
{
while(!test)
{
P1=0xff;
delay(200);
P1=0xf0;
delay(200);
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
}
}
void xiaoshan(void)
{
while(rest!=0xfe)
{
P1=0xff;
if(s1==0)
led1=0;
beep=1;
if(s2==0)
led2=0;
beep=1;
if(s3==0)
led3=0;
beep=1;
if(s4==0)
led4=0;
beep=1;
}
}
void baojing(void)
{
P1=0xff;
if(s1==0)
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
if(s2==0)
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
if(s3==0)
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
if(s4==0)
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
if(test==0)
beep=~beep; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
}
void main()
{
if(!test) //实验按钮
flash();
if(~rest) //消音
xiaoshan();
if(s1==1)
led1=1;
if(s1==0)
led1=~led1; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔
if(s1==0)
baojing();
if(s2==1)
led2=1;
if(s2==0)
led2=~led2; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
if(s2==0)
baojing();
if(s3==1)
led3=1;
if(s3==0)
led3=~led3; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
if(s3==0)
baojing();
if(s4==1)
led4=1;
if(s4==0)
led4=~led4; //没隔一段时间即对输出取反。
delay(200); //闪烁间隔。
if(s4==0)
baojing();
帮你顶上去