基于GSM的远程遥控开关插座一种短信控制远程遥控开关插座终稿 - 图文 联系客服

发布时间 : 星期三 文章基于GSM的远程遥控开关插座一种短信控制远程遥控开关插座终稿 - 图文更新完毕开始阅读78b1a504de80d4d8d15a4fe2

陕西理工学院课程设计

附录2 样机程序

GSM_TC35i.c程序如下: #include #include #include sbit P2_0=P2^0; sbit P2_3=P2^3; sbit P2_4=P2^4; sbit P2_7=P2^7; #define uint unsigned int #define uchar unsigned char #define RST 0X01 #define CMGF 0X02 #define CMGD 0X03 #define CREG 0X04 #define CMGR 0X05 #define CMGS 0X06 #define CSCA 0X07 #define ATDAT 0X08 #define TC35RET 0X00 #include\void ATE0(void); void delay_GSM(uint); void init_serialcom( void ); void send_uart( unsigned char); void ATNAME(void); void AT_CMGS(void); void AT_CSCA(void); void AT_RST(void); void AT_CREG(void); void AT_CMGF(void); void AT_CMGR(void); void AT_CMGD(void); main() {

//--------初始化------------------- P2=0xff; init_serialcom(); delay_GSM(100); ATE0();

//Displaybyte(0X01); delay_GSM(100); TC35_MAX=0; ATE0();

//Displaybyte(0X02); delay_GSM(100);

第12页 共20页

陕西理工学院课程设计

ATE0();

delay_GSM(100);

for(i_TC35=0;i_TC35<=69;i_TC35++) {TC35_RE[i_TC35]=0;} i_TC35_RECE=0; TC35_MAX=0; ATE0(); while(1) {

RECEIVE_MESSAGE(); } }

GSM.h程序如下:

//---------------------------------------------- //本文件为存放子函数区域

//子函数功能为标准发送AT指令函数 //------------------------------------------------ #include #define uint unsigned int #define uchar unsigned char #define RST 0X01 #define CMGF 0X02 #define CMGD 0X03 #define CREG 0X04 #define CMGR 0X05 #define CMGS 0X06 #define CSCA 0X07 #define ATDAT 0X08 #define SMST 0X09 #define TC35RET 0X00

uchar TC35_CON,SMS_NUM,SMS_RECEIVE; uchar read_flag; uchar i_TC35_RECE; uchar i_receive, TC35_RE[80],

TC35_MAX, i_TC35;

///////需要改动的地方//////其他省份请自己百度下///////////////////////////////////////////// uchar code TC_MDSJ2[]={\ //目的手机地址, uchar code TC_ZXH2[]={\ //汉中移动本地中心号。 ////////其他地方不要乱动////////////////////////////////////////////////////////

uchar code TC_MDSJ1[]={\T+CMGS=\ //目的手机地址, uchar code TC_ZXH1[]={\T+CSCA=\ //本地中心号。 uchar code TC_FSNR[]={\ //发送短信内容。 uchar code TC_FSNR2[]={\ //发送短信内容。 uchar code TC_FSNR3[]={\ //发送短信内容。

第13页 共20页

陕西理工学院课程设计

uchar code TC_FSNR4[]={\ //发送短信内容。 uchar code TC_WLZT[]={\T+CREG?\

//网络状态查询

uchar code TC_MSXZ[]={\T+CMGF=1\ //发送模式选择。 uchar code TC_DQML[]={\T+CMGR=1\ //短信读取命令。 uchar code TC_SCML[]={\T+CMGD=1\ //短信删除命令。 uchar code TC_ATF[]={\T&F\ //格式化命令。 uchar code TC_ATE0[]={\void delay_GSM(uint i) {unsigned int i_delay,j_delay; for(i_delay=0;i_delay

void init_serialcom( void ) {

SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr //UART为模式1,8位数据,允许接收

TMOD |= 0x21 ; //TMOD: timer 1, mode 2, 8-bit reload //定时器1为模式2,8位自动重装 PCON |= 0x00 ; //SMOD=1;

TH1 = 0xFD ; //Baud:9600 fosc=\ IE |= 0x90 ; //Enable Serial Interrupt TR1 = 1 ; // timer 1 run TI=1; } //向串口发送一个字符 void send_uart( char a_s) { // TI= 0 ;

while (TI!=1){;} SBUF=a_s; TI= 0 ;

} //串口接收中断函数

void serial () interrupt 4 using 3 {

if (RI) { RI = 0 ; i_receive=SBUF;

TC35_RE[i_TC35_RECE++]=i_receive; // i_TC35_RECE++;

if(i_TC35_RECE>TC35_MAX)

{TC35_MAX=i_TC35_RECE;}

}

第14页 共20页

//清除回显命令

uchar code TC_SMS_1[]={\ //短信通知命令

陕西理工学院课程设计

}

void SMS_CONFIG() { uchar i;

for(i=0;i

void ATE0() { uchar i;

for(i=0;i

void ATNAME() {//I AM OK uchar i;

if(SMS_RECEIVE=='1')

{for(i=0;i

{for(i=0;i

{for(i=0;i

{for(i=0;i

//写目的手机的 void AT_CMGS()

{//AT+CMGS=13132061066 uchar i;

for(i=0;i

第15页 共20页