#include <pic.h>
#include <string.h>
#include "text.h"
#include "LCD12864.h"
#include "keyscan.h"
#include "Initial.h"
#include "GSM.h"
#include "interrupt_pic.h"
#include "DS18B20.h"
void Data_Init();
void work0();
void work1();
void work2();
void work3();
void work4();
void buffer();
void mimainit();
void nminit();
void check();
void do_check();
void wendu_reg();
void wendu_init();
void WriteEE(unsigned char addr,unsigned char data);
unsigned char ReadEE(unsigned char addr);
void check() /////////////////////检测状态/////////////////////
{
if(open1==1)
{
if(RC3==1)
{
sw_op=0;
LCDClean();
LCDPrints(2,0," 室内有人进入 ");
buffer();
TRISC3=0;
RC3=0;
LCDClean();
LCDPrints(2,0,"警示短信已发送 ");
tishi1();
Data_Init();
n = 0;
timecf=1;
guanbi1=1;
}
}
if(open2==1)
{
if(temperature>=temperaturebuf&wendubiaozhi==1)
{
sw_op=0;
wendubiaozhi=0;
LCDClean();
LCDPrints(2,0," 室内温度异常 ");
buffer();
LCDClean();
LCDPrints(2,0,"警示短信已发送 ");
wendu_reg();
tishi2();
Data_Init();
n = 0;
timecf=1;
guanbi2=1;
}
}
if(open3==1)
{
if(RC5==0)
{
sw_op=0;
LCDClean();
LCDPrints(2,0,"室内空气状态异常");
buffer();
TRISC5=0;
RC5=1;
LCDClean();
LCDPrints(2,0,"警示短信已发送 ");
tishi3();
Data_Init();
n = 0;
timecf=1;
guanbi3=1;
}
}
}
void do_check() /////////////////////开关传感器/////////////////////
{
if(((re[50]=='C')&&(re[51]=='1'))||(k7==1)||((re[0]=='C')&&(re[1]=='1')))
{sw_op=1;
send("AT+CMGD=1\rg");
LCDClean();
LCDPrints(1,0," 关闭红外警报 ");
__delay_ms(1000);
da_ying=0;
Data_Init();
n=0;
timecf=0;
open1=0;
}
if(((re[50]=='O')&&(re[51]=='1'))||(k11==1)||((re[0]=='O')&&(re[1]=='1')))
{sw_op=1;
send("AT+CMGD=1\rh");
LCDClean();
LCDPrints(1,0," 开启红外警报 ");
__delay_ms(1000);
da_ying=0;
TRISC3=1;
trytime=0;
time30s=0;
Data_Init();
n=0;
open1=1;
guanbi1=0;
}
if(((re[50]=='C')&&(re[51]=='2'))||(k6==1)||((re[0]=='C')&&(re[1]=='2')))
{sw_op=1;
send("AT+CMGD=1\ri");
LCDClean();
LCDPrints(1,0,"关闭温度异常警报");
__delay_ms(1000);
da_ying=0;
Data_Init();
n=0;
timecf=0;
open2=0;
}
if(((re[50]=='O')&&(re[51]=='2'))||(k10==1)||((re[0]=='O')&&(re[1]=='2')))
{sw_op=1;
send("AT+CMGD=1\rj");
LCDClean();
LCDPrints(1,0,"开启温度异常警报");
__delay_ms(1000);
da_ying=0;
trytime=0;
time30s=0;
Data_Init();
n=0;
open2=1;
wendubiaozhi=1;
guanbi2=0;
}
if(((re[50]=='C')&&(re[51]=='3'))||(k5==1)||((re[0]=='C')&&(re[1]=='3')))
{sw_op=1;
send("AT+CMGD=1\rk");
LCDClean();
LCDPrints(1,0," 关闭煤气警报 ");
__delay_ms(1000);
da_ying=0;
Data_Init();
n=0;
timecf=0;
open3=0;
}
if(((re[50]=='O')&&(re[51]=='3'))||(k9==1)||((re[0]=='O')&&(re[1]=='3')))
{sw_op=1;
send("AT+CMGD=1\rl");
LCDClean();
LCDPrints(1,0," 开启煤气警报 ");
__delay_ms(1000);
da_ying=0;
TRISC5=1;
trytime=0;
time30s=0;
Data_Init();
n=0;
open3=1;
guanbi3=0;
}
if(re[0]=='T')
{
if(re[1]=='0')
{WriteEE(32,0);__delay_us(300);}
if(re[1]=='1')
{WriteEE(32,1);__delay_us(300);}
if(re[1]=='2')
{WriteEE(32,2);__delay_us(300);}
if(re[1]=='3')
{WriteEE(32,3);__delay_us(300);}
if(re[1]=='4')
{WriteEE(32,4);__delay_us(300);}
if(re[1]=='5')
{WriteEE(32,5);__delay_us(300);}
if(re[1]=='6')
{WriteEE(32,6);__delay_us(300);}
if(re[1]=='7')
{WriteEE(32,7);__delay_us(300);}
if(re[1]=='8')
{WriteEE(32,8);__delay_us(300);}
if(re[1]=='9')
{WriteEE(32,3);__delay_us(300);}
if(re[2]=='0')
{WriteEE(33,0);__delay_us(300);}
if(re[2]=='1')
{WriteEE(33,1);__delay_us(300);}
if(re[2]=='2')
{WriteEE(33,2);__delay_us(300);}
if(re[2]=='3')
{WriteEE(33,3);__delay_us(300);}
if(re[2]=='4')
{WriteEE(33,4);__delay_us(300);}
if(re[2]=='5')
{WriteEE(33,5);__delay_us(300);}
if(re[2]=='6')
{WriteEE(33,6);__delay_us(300);}
if(re[2]=='7')
{WriteEE(33,7);__delay_us(300);}
if(re[2]=='8')
{WriteEE(33,8);__delay_us(300);}
if(re[2]=='9')
{WriteEE(33,9);__delay_us(300);}
if(re[3]=='T')
{
wendu_init();
Data_Init();
n = 0;}
}
if((re[0]=='K')&&(re[1]=='K'))
{i=0;Data_Init();n = 0;}
if((re[0]=='K')&&(re[1]=='0'))
{WriteEE(i,0);i++;Data_Init();n = 0;}
if((re[0]=='K')&&(re[1]=='1'))
{WriteEE(i,1);i++;Data_Init();n = 0;}
if((re[0]=='K')&&(re[1]=='2'))
{WriteEE(i,2);i++;Data_Init();n = 0;}
if((re[0]=='K')&&(re[1]=='3'))
{WriteEE(i,3);i++;Data_Init();n = 0;}
if((re[0]=='K')&&(re[1]=='4'))
{WriteEE(i,4);i++;Data_Init();n = 0;}
if((re[0]=='K')&&(re[1]=='5'))
{WriteEE(i,5);i++;Data_Init();n = 0;}
if((re[0]=='K')&&(re[1]=='6'))
{WriteEE(i,6);i++;Data_Init();n = 0;}
if((re[0]=='K')&&(re[1]=='7'))
{WriteEE(i,7);i++;Data_Init();n = 0;}
if((re[0]=='K')&&(re[1]=='8'))
{WriteEE(i,8);i++;Data_Init();n = 0;}
if((re[0]=='K')&&(re[1]=='9'))
{WriteEE(i,9);i++;Data_Init();n = 0;}
}
void main() /////////////////////主函数/////////////////////
{ Data_Init();
n=0;
Initial();
mimainit();
wendu_init();
LCDInitial();
while(1)
{
asm("clrwdt");
keyscan();
receive();
switch(msta)
{
case 0:work0();break;
case 1:work1();break;
case 2:work2();break;
case 3:work3();break;
case 4:work4();break;
default:break;
}
}
}
void work1() /////////////////////监测状态/////////////////////
{
if(da_ying==0&&OP_LCD==1)
{
OP_LCD=0;
if(sw_op==1)
{
wendu_reg();
send(tp_buffer);
}
//Data_Init();
// n = 0;
LCDPrints(0,0," 监测状态 ");
LCDPrints(1,0," 室温:");
LCDWrite(1,a1+0x30);
LCDWrite(1,a2+0x30);
LCDWrite(1, 0x2e); //小数点
LCDWrite(1,a3+0x30);
LCDWrite(1,a4+0x30);
LCDPrints(1,6,"℃");
if(guanbi3==0)
LCDPrints(2,0,"空气状态:正常 ");
else
LCDPrints(2,0,"空气状态:异常 ");
if(open1==1)
LCDPrints(3,0," 1开");
else
LCDPrints(3,0," 1关");
if(open2==1)
LCDPrints(3,2," 2开");
else
LCDPrints(3,2," 2关");
if(open3==1)
LCDPrints(3,4," 3开");
else
LCDPrints(3,4," 3关");
}
check();
if(goon==1)
{
goon=0;
__delay_ms(700);
send(cnmi);
__delay_ms(700);
send(mstxt);
__delay_ms(700);
Data_Init();
n = 0;
}
do_check();
if(timecf==1)
{
if(time30s==350)
{
if(da_ying==0)
{
LCDClean();
da_ying=1;
LCDPrints(1,0,"正在进行拨号警告");
nminit();
send(at);
__delay_ms(200);
call[0]='A';call[1]='T';
call[2]='D';call[k]=';';
k++;
call[k]='\r';
send(call);
Data_Init();
n = 0;
}
}
if(time30s==600)
{
send(ath);
time30s=0;
da_ying=0;
trytime++;
Data_Init();
n=0;
}
if(trytime==2&guanbi1==1)
{sw_op=1;
trytime=0;
timecf=0;
send("AT+CMGD=1\rg");
__delay_ms(500);
Data_Init();
n = 0;
open1=0;
guanbi1=0;
}
if(trytime==2&guanbi2==1)
{sw_op=1;
trytime=0;
timecf=0;
send("AT+CMGD=1\ri");
__delay_ms(500);
Data_Init();
n = 0;
open2=0;
guanbi2=0;
}
if(trytime==2&guanbi3==1)
{sw_op=1;
trytime=0;
timecf=0;
send("AT+CMGD=1\rk");
__delay_ms(500);
Data_Init();
n = 0;
open3=0;
guanbi3=0;
}
}
if(k0)
{
timecf=0;
m=3;
da_ying=0;
TRISC3=1;
TRISC5=1;
trytime=0;
time30s=0;
wendubiaozhi=1;
msta=2;
send(ath);
Data_Init();
n = 0;
LCDClean();
T0IE=0;
__delay_ms(500);
}
}
void work4()
{
if(da_ying==0)
{
da_ying=1;
LCDPrints(0,0," 温度上限设定 ");
LCDPrints(1,0,"当前设定:");
LCDWrite(1,temp[0]+0x30);
L