智能家居中的安全防范系统设计毕业论文 下载本文

附录Ⅰ

主要程序代码

1、MAIN.C 主程序代码如下: #include #include #include\#include\#include\#include\void main(void) {

LED1=0; //注册指示灯 开 Start_GSM(); //开启TC35 Delay_ms(46000); //延时大约20秒 ,等待模块联网/ UART_init(); //串口初始化/ GSM_INIT(); //对tc35模块进行初始化 //Write_Password(); Read_Password();

LED1=1; //注册指示灯 开 while(1) { receive_ready(); //此函数的功能是判断是否有新短信来,如果来的话就置位 receiveready 为1 if(receiveready==1) { LED2=0; read_message(); //发送读取短信指令 receiveready=0; sendready=1; // LED2=1; } Delay_ms(300); message_read(); //判断短信,准备是否回复短信给目标号码 if(send==1) { Delay_ms(2000); readcommend(); //读取短信内容,做出相应操作:开关继电器等 sendmessage(); //发送回复短信指令 其中 包含提取对方手机号操作 Delay_ms(1000); delete_message(); //删除读短信指令

39

flag=0; for(Rx=0;Rx

if(BaoJing==1) {

sendBaoJing(); BaoJing=0; Delay_ms(6000); LED4=1; } } }

/******************************************************************************************************************/

////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////函数void receive(void) interrupt 4 using 1;实现功能:通过串口接收数据///////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/******************************************************************************************************************/ void receive(void) interrupt 4 { if(RI) {

if(Rx

SystemBuf[Rx]=SBUF; Rx++; }

RI=0; } }

/******************************************************************************************************

40

////////////////////////////////////void int0(void) interrupt 0 :实现功能: 实现紧急短信报警

********************************************************************************************************/ void int0(void) interrupt 0 {

BaoJing=1; LED4=0; }

/************************************************************************************** ////////////////////////////

***************************************************************************************/

2、TC35.C

#include #include #include\#include\#include\#include\

uchar code AT[]=\ //握手信号 uchar code ATE[]=\ //关回显 uchar code AT_CNMI[]=\ //设置这组参数来了新信息直接显示到串口,不作存储

uchar code AT_CSCA[]=\//设置服务中心号码 徐州移动 +8613800516500 徐州联通 +8613010350500 uchar code AT_CMGF[]=\ //设置短信的格式为text格式

uchar code AT_CMGR[]=\ //读取短信指令 uchar code AT_CMGS[]=\ //发送短信指令 uchar code AT_CMGD[]=\ //删除短信指令

uchar code successfully[]=\//发送操作成功信息到目标号码

uchar code fail[]=\ //发送操作失败信息到目标号码 uchar code danger[]=\ //发送警报信息 提示有人闯入、煤气泄漏、失火的信息

uchar code MyTel[]=\ //我的手机号码

41

uchar AT_delete[12]; uchar AT_Read[12]; //用来存储发送读取短信指令

uchar AT_SendNumber[25]; //用来存储发送短信号码指令

uchar numberbuf[3]; //用来保存短信条数 uchar idata SystemBuf[RxIn]; //储存出口接收数据 uchar CommandBuf[8]; //用来储存指令 uchar Rx=0;

// uchar idata state[17]; //用来存储IO口状态 //uint temp; //记录状态 //uchar temp1; //用于记录P0口状态 //uchar temp2; //用于记录P2口状态 //bit check=0; //查询标志位 bit receiveready=0; //接收短信标志位 bit sendready=0; //发送短信准备标志位 bit send=0; //发送短信标志位 bit flag=0; //指令标志位 bit BaoJing=0; //报警标志位!

/******************************************************************************************************************/

////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////函数void UART_init;实现功能:对串口进行初始化////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/******************************************************************************************************************/ void UART_init (void) {

TMOD=0x20; //选择定时器1 PCON=0x00; ///波特率不加倍

SCON=0x50; //串行工作方式1允许串行接收

TH1=0xFD; //实验板上晶振位11.0592MHZ,选择波特率为9600 TL1=0xFD; //在相应计数器上赋值 EA=1; //总中断开启

EX0=1; //外部中断0允许位

IT0=0; //跳变沿触发方式,从高-->低的负跳变有效 ES=1; //串行中断开启 TR1=1; //开启定时器1 }

/******************************************************************************************************************/

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

42

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////函数void sendchar(uchar ch);实现功能:发送一字节数据////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/******************************************************************************************************************/ void sendchar(uchar ch) {

SBUF=ch; while(TI==0); TI=0; }

/******************************************************************************************************************/

////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////函数void sendstring(uchar *p);实现功能:通过串口发送字符串/////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/******************************************************************************************************************/ void sendstring(uchar *p) {

while(*p) {

sendchar(*p); p++; }

sendchar(0x0D);//? 回车 sendchar(0x0A);//? 换行 }

/******************************************************************************************************************/

////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////函数void Start_GSM(void);实现功能:对TC35进行启动,开启TC35///////////////////////////////////

//功能详述:单片机上的IGT管脚是跟TC35的IGT管脚相连;需要启动TC35,必须在 15脚(/IGT)加时长至少为100ms的低电平信号,

///且该信号下降沿时间小于1ms。启动后,15 脚的信号应保持高电平. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/********************************************************************

43