文档介绍:附录1 系统程序
#include<> //包含的头文件
typedef unsigned char INT8U; //无符号8位数
/********************************/ //工作指示灯****************
sbit led1=P1^1; // MCU与GSM模块握手成功及GSM网络注册完毕
sbit led2=P1^2; // 报警信号输入指示及报警短信群发成功指示
sbit led3=P1^3; // 有电话呼入信号检测指示
sbit led4=P1^4; // 电话呼入信号检测认证成功
sbit fmq=P2^1; // 报警蜂鸣器
sbit jdq2=P2^2; // 电话呼入信号检测认证成功及开门信号指示
sbit door=P2^3; // 报警信号输出指示
sbit Test=P1^0; // 报警信号检测及传感器信号输入端
/*****************************GSM指令定义***************/
INT8U mand_AtE[4] = "ATE\r"; //Send AT
INT8U mand_Cmgs[12]= "AT+CMGS=069\r"; //是指去掉短信中心号码,和紧接其后的00后,发送的短信字节数
mand_Cpbr[10] = "AT+CPBR=1\r"; //读电话薄号码
INT8U code GSMhead[24] = "0891683108301705F011000D"; //使用+86**********短信中心号码
INT8U code GSM_set[6] = "000801"; //固定头文件
INT8U code GSM_sms[110] = "3667098B
6660C5FF0C8BF78FC5901F59047406300257305740FF1A6CB3535779D162805B669662673A7535697C5BA40033003000313002"; //报警短信内容为:有警情,请迅速处理。地址:河南科技学院机电楼301室。
INT8U ATD_number[7] = "ATD>1;\r"; //打电话
INT8U code ATH[4] = "ATH\r"; //挂断电话
INT8U code [8] = "AT+\r"; //来电号码显示
//****************系统调用的函数声明****************
void ATE_Send(void);
void Baudrate_Init();
void Uart_send(INT8U data_buffer[], INT8U data_len);
void AT_CPBR(mand_CPBR[],INT8U Cpbr_len);
void Number_change();
void AT_cmgs(INT8U Cmgs_sbuffer[],INT8U Cmgs_len);
void Send_sms(INT8U GSM_sms_buffer[],INT8U Send_sms_len);
void AT_sms_test(void);
void ATD();
void ATD_test(void);
void (void);
void Delay1ms(INT8U t);
//****************变量声明*****************************
INT8U rec[45];
INT8U User_number1[11]; //电话号码存储单元
INT8U User_number[16]; //编辑过的电话号码存储单元
bit yh1;
//****************主函数*****************************
void main(void)
{
INT8U i,t;
bit f1= 0,f2 = 0,f3=0;
Baudrate_Init(); //串口初始化
for(t = 0;t < 4;t++) //延时一段时间等待GSM模块启动完毕
{
Delay1ms(800);
led1=0;
Delay1ms(800);
led1=1;
}
while(1)
{
if(f1==0)
{
f1=1;
ATE_Send();
led1=0;
}
if(Test==0)
{
f2=1;
fmq=0;
jdq2=0;
led2=0;
for(i=1;i<3;i++