|
程序
#include<reg51.h> //加載頭文件
#define uchar unsigned char //宏定義
#define uint unsigned int
#define ulong unsigned long
sbit LED_BJ=P2^0; //報警指示燈
sbit LED_PIR=P2^1; //紅外人體檢測燈
sbit LED_BF=P2^2; //布防指示燈
sbit PIR_IN=P2^7; //熱釋電紅外人體感應(yīng)接口
sbit SPK=P1^7; //蜂鳴器報警
sbit KEY_ALARM=P1^0; //緊急報警按鍵
sbit KEY_BF=P1^1; //布防按鍵
sbit KEY_QX=P1^2; //取消報警/取消布防
bit alarm=1,kai=0; //變量聲明
uchar Mode=1,Mode1=0;
uchar code number[]="0123456789_";
uchar zh[]={1,3,4,1,1,1,1,1,1,1,1}; //設(shè)置緩沖
//uchar code at[]="AT\r";
uchar code TC_MSXZ[]={"AT+CMGF=1\r"};// 發(fā)送模式選擇
uchar code TC_ZXH[]={"AT+CSCA=+8613801573500\r"};// 本地移動中心號
uchar code TC_FSNR[]={"danger\r"};
uchar code ath[]="ATH\r";//掛斷電話
uchar code ata[]="ATA\r";//接聽電話
uchar fa_flag=0;
void main() //主函數(shù)
{
P2=0xff; //斷開初始化
Uart_Init(); //串口初始化
while(1) //大循環(huán)
{
if(KEY_ALARM==0) //緊急報警鍵
{
Delay_MS(10); //延時消抖
if(KEY_ALARM==0)
{
while(!KEY_ALARM); //等待按鍵松開
kai=0;
LED_BF=1; //布防燈滅
alarm=0; //進入報警狀態(tài)
Mode1=1; //Mode1置1:緊急報警過程中以防按了布防鍵取消緊急報警
}
}
if(Mode1==0) //未在緊急報警狀態(tài)
{
if(KEY_BF==0) //布防鍵
{
Delay_MS(10); //延時消抖
if(KEY_BF==0) //布防鍵
{
while(!KEY_BF); //等待按鍵松開
LED_BJ=1;
LED_BF=0; //布防燈亮
Mode=0; //布防狀態(tài)標識
kai=1;
}
}
if(PIR_IN==0) //檢測紅外模塊有信號,綠燈亮,否則滅
LED_PIR=0;
else //紅外檢測無人
{
LED_PIR=1;
fa_flag=0;
}
}
if(KEY_QX==0) //取消報警
{
Delay_MS(10); //延時去抖動
if(KEY_QX==0)
{
while(!KEY_QX); //等待按鍵松開
LED_BJ=1;
LED_BF=1;
Mode=1;
Mode1=0;
fa_flag=0;
alarm=1;
SPK=1;
}
}
if((PIR_IN==0)&&(Mode==0)) //打開布防,且熱釋電人體感應(yīng)到人
alarm=0; //開始進入報警
else if(kai==1) //布防狀態(tài) 未檢測到人
{
alarm=1; //非報警狀態(tài)
LED_BJ=1; //報警燈不亮
}
if(alarm==0) //報警
{
if(fa_flag==0) //未發(fā)送,變量為0
{
Send_Dat_Duoo(); //發(fā)送多數(shù)據(jù)
Call_Phone(); //打電話
fa_flag=1; //已發(fā)送,變量置1
}
Alarm_Spk_Led(50); //蜂鳴器響
Delay_MS(100); //延時函數(shù)
}
}
}
|
評分
-
查看全部評分
|