经过最近艰难的调试 解决了各种各样的困难 我们组已经成功完成了GSM模块呼叫报警和发送短信提醒的程序 迈出了我们作品的最关键的一部 只差把烟雾传感器,热释红外传感器加进去
以下是我们程序的部分代码
//以下是板子上LED的配置, sbit P10=P1^0; sbit P11=P1^1; sbit P12=P1^2; sbit P13=P1^3; sbit P14=P1^4; sbit P15=P1^5; //以下是51单片机的晶振大小 #define FOSC_110592M //#define FOSC_12M //以下是开机后拨打的手机号 uchar num[] = "ATD15671225575;\r\n"; //这里我特地翻了很久的AT指令集 找到拨打电话的AT指令
void SerialInti()//初始化程序 { TMOD=0x20;//定时器1操作模式2:8位自动重载定时器 #ifdef FOSC_12M TH1=0xf3;//装入初值,波特率2400 TL1=0xf3; #else TH1=0xfd;//装入初值,波特率9600 TL1=0xfd; #endif //end of SOC_12M TR1=1;//打开定时器 SM0=0;//设置串行通讯工作模式 SM1=1;//(同上)在此模式下,定时器溢出一次就发送一个位的数据 REN=1;//串行接收允许位(要先设置sm0sm1再开串行允许) EA=1;//开总中断 ES=1;//开串行口中断 }
为了同步模块与单片机的波特率,在单片机控制GSM模块前,要加上两条 AT 指令
Uart1Sends("ATI\r\n"); //握手,检测此条指令GSM模块是否执行OK
while(!hand("OK"))
AT+CSQ 检测信号质量