标题: 蓝牙控LED+烟雾报警(含排气系统)+红外报警 [打印本页]
作者: 北极星18 时间: 2015-4-25 15:39
标题: 蓝牙控LED+烟雾报警(含排气系统)+红外报警
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define key_io P1
uchar key_can;
unsigned char tmp;
unsigned int k;
void delay(unsigned int x)
{ unsigned int i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
sbit LED1=P0^0;//指示灯0
sbit LED2=P0^1;//指示灯1
sbit LED3=P0^2; //指示灯2
sbit LED4=P0^3;
sbit LED5=P0^4;
sbit LED6=P0^5;
sbit LED7=P0^6;
sbit hw=P2^4;
sbit beep=P2^3;
sbit red=P2^2;
sbit green=P2^1;
sbit yellow=P2^0;
bit flag_300ms=0;
sbit fm=P2^5; //定义单片机P1口的第1位 (即P1.0)为蜂鸣器
sbit qd=P2^6;// 定义单片机P1口的第2位 驱动风扇
sbit DOUT=P2^7; //定义单片机P2口的第1位 (即P2.0)为传感器的输入端
void delay1()//延时程序
{
uchar m,n;
for(n=20;n>0;n--)
for(m=125;m>0;m--);
}
void key()
{
static uchar key_new=0,key_old=0,key_value=0;
if(key_new==0)
{
if((key_io&0x07)==0x07)
key_value++;
else
key_value=0;
if(key_value>=5)
{
key_value=0;
key_new=1;
}
}
else
{
if((key_io&0x07)!=0x07)
key_value++;
else
key_value=0;
if(key_value>=5)
{
key_value=0;
key_new=0;
}
}
key_can=20;
if((key_new==0)&&key_old==1)
{
switch(key_io&0x07)
{
case 0x06:key_can=1;break;
case 0x05:key_can=2;break;
case 0x03:key_can=3;break;
}
}
key_old=key_new;
}
void time_init()
{
EA=1;
TMOD=0X01;
ET0=1;
TR0=1;
}
uchar flag_alarm;
uchar flag_bufang;
uchar flag_bufang_en;
uchar flag_value;
void hongwai_dis()
{ uint k;
if(flag_alarm==1)
{
red=0;
beep=1;
}
if(flag_bufang_en==1) //准备开始防御
{
green=0;
red=1;
yellow=1;
k=1;
}
if((k==1)&&(hw==1))
{ k=2 ;
red=~red;
beep=1;
}
if((k==1)&&(hw==0))
{ k=2 ;
beep=0;
}
if((k==2)&&(flag_alarm==1))
{
red=~red;
beep=~beep;
}
}
void key_with()
{
if(key_can==1)
{
flag_alarm=1;
}
if(key_can==2)
{
flag_bufang_en=1;
}
if(key_can==3)
{
flag_alarm=0;
flag_bufang=0;
flag_bufang_en=0;
flag_value=0;
P2=0xf7;
}
}
void time0_int() interrupt 1
{
static uint value;
TH0=0x3c;
TL0=0xb0; //50ms
value++;
if(value%6==0)
{
flag_300ms=1;
}
if(flag_bufang_en==1)
{
flag_value++;
if(flag_value>=600)
{
flag_bufang=1;
flag_bufang_en=0;
flag_value=0;
}
}
}
void main()
{
beep=0;
time_init();
TMOD=0x20;//定时器1工作于方式2,8位自动重载模式,用于产生波特率
TH1=0xfd;
TL1=0xfd;
SCON=0X50;
PCON=0X00;
TR1=1;
while(1)
{
if(RI==1)
{
RI=0;
tmp=SBUF;
switch(tmp)
{
case 1: LED1=0;break;
case 2: LED2=0;break;
case 3: LED3=0;break;
case 4: LED4=0;break;
case 5: LED5=0;break;
case 6: LED6=0;break;
case 7: LED7=0;break;
case 8: P0=0x00;break;
default : P0=0xff;break;
}
}
if(DOUT==1)
{ fm=0;
qd=0; }
else if(DOUT==0)
{ delay(); //防止误判
if(DOUT==0)
{
qd=1;
fm=1;
delay1();}
else
{ fm=0;
qd=0;}
}
key();
yellow=hw;//红外热释电指示灯,有输出亮黄灯
if(key_can<10)
{
key_with();
}
if(flag_300ms==1)
{
flag_300ms=0;
hongwai_dis(); //红外报警函数
}
}
}
作者: 玲珑ABC 时间: 2016-1-11 21:36
要是附图就好咯
作者: lyseg01 时间: 2016-3-18 20:31
谢谢分享!!!!!!!
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |