GSM远程通信控制模块\STC12C5A60S2单片机开发板 file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg 简要说明: 一、 尺寸:长152.6mmX宽93mmX高25mm 二、 主要芯片:STC12C5A60S2单片机(支持AT89S52) GTM900-B GSM远程控制\通讯模块 三、 工作电压:直流9伏1A(或9V~40V) 四、 通过串口COM1下载程序 五、 特点: 1、具有电源指示。 2、STC12C5A60S2单片机所有I/O口引出,便于二次开发 3、可以双串口通讯 4、GTM900-B GSM模块接口40P管脚(除11、12和电源接口未引出),其余全部引出,便于二次开发 5、采用LM2576-5稳压器使输入工作电压范围9~40V可以正常工作。 6、为了保证模块稳定和模块供电要求采用LM2576-5 ADJ 可调稳压转为GTM900-B GSM模块供电 7、两路带输出光电隔离控制5V继电器(可控制两路交流220/10A以下设备) 8、标准的11.0592M晶振。(便于设置串口波特率) 9、具有上电复位和按键复位 10、具有GSM启动按键 11、支持STC89C5X系列单片机以及AT89S5X单片机 12、具有串口通信功能(可以通过上位机控制)带上位机软件
13、具有电脑和单片机通讯、电脑和GSM通讯选择控制 14、附带丰富例程和资料(包括郭天祥GSM视频教程和课件) GTM900-B简要说明: file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg 跳冒说明: 在未连接跳冒时,单片机P3.0、P3.1分别和GSM模块的18、19管脚是直接连接好的,单片机可以和模块直接通讯 1. 单片机下载程序时跳冒为RXD1与RXD0短接,TXD1与TXD0短接(即单片机与电脑的通讯) 2. 电脑通过串口与GSM模块通讯时RXD0与TXD1短接, RXD1与TXD0短接(通过这种方式可以监视GSM模块与单片机的通讯) 使用环境:工业应用场合、初学GSM通讯模块学习、毕业设计等等 【标注说明】 file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg 【视频教程包括课件和资料】 file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg 【上位机界面】 file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image018.jpg 【PCB展示】 file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image020.jpg 【程序代码】 实现功能: /********************************************************** GTM900-B工业模块模块测试程序1 程序功能:远程控制两路继电器的吸合与断开\远程控制两路开关 短信控制 单片机型号:STC12C5A60S2 支持双串口 晶振:11.0592M 波特率:9600bps 应用软件:Keil2或Keil3 发布时间:2011-12—10 公司:汇诚科技 **********************************************************/ #include<reg52.h> #include<string.h> #define Buf_Max 200 //缓存长度200 #define Delay_Time 3000 //延时长度 sbit jdq1 = P0^0; //继电器1 sbit jdq2 = P0^1; //继电器2 //sbit LED3 = P0^2; //状态指示灯3 //sbit LED4 = P0^3; //状态指示灯4 unsigned char i = 0; //定义缓存指针 unsigned charRec_Buf[Buf_Max]; //定义缓存数组 void Serial_Init(void); //声明串口初始化函数 void Send_ASCII(unsigned char *b);//声明发送字符(ASCII码)函数 void Delay_ms(unsigned inttime); //声明延时函数 void CLR_Buf(void); //声明清除缓存内容 void Send_Hex(unsigned charb); //声明发送字符(十六进制)函数 bit Hand(unsigned char *a); //声明判断缓存中是否含有指定的字符串函数 /**********************************主函数******************************/ void main(void) { Serial_Init(); //初始化串口 CLR_Buf(); //清除缓存内容 Delay_ms(60000); //延时 Send_ASCII("AT"); //发送联机指令 while(!Hand("OK")) //判断是否握手成功,如果不成功延时一会,再发送AT握手指令 { Send_ASCII("AT");//发送联机指令 Delay_ms(60000); //延时 } CLR_Buf(); //清除缓存内容 Delay_ms(Delay_Time); //延时 Send_ASCII("AT+CPMS=\"SM\",\"SM\",\"SM\"");//所有操作都在MT(模块终端)中进行 Delay_ms(Delay_Time); //延时 while(!Hand("OK")); //等待设置成功 CLR_Buf(); //清除缓存内容 Delay_ms(Delay_Time); //延时 Send_ASCII("AT+CNMI=2,1");//设置当有新短信到来时提示 Delay_ms(Delay_Time); //延时 while(!Hand("OK")); //等待设置成功 CLR_Buf(); //清除缓存内容 Delay_ms(Delay_Time); //延时 Send_ASCII("AT+CMGF=1"); //文本(TEXT)模式 Delay_ms(Delay_Time); //延时 while(!Hand("OK")); //等待设置成功 CLR_Buf(); //清除缓存内容 /* Delay_ms(Delay_Time); //延时 Send_ASCII("AT+CMGD=1"); //删除第一条信息 Delay_ms(Delay_Time); //延时 while(!Hand("OK")); //等待设置成功 CLR_Buf(); //清除缓存内容 */ /* Delay_ms(Delay_Time); //延时 Send_ASCII("AT+CSCA="shoujihao""); //文本(TEXT)模式 Delay_ms(Delay_Time); //延时 while(!Hand("OK")); //等待设置成功 CLR_Buf(); //清除缓存内容 */ while(1) { if(strstr(Rec_Buf,"+CMTI")!=NULL) //若缓存字符串中含有"+CMTI"就表示有新的短信 { CLR_Buf(); //清除缓存内容 Delay_ms(Delay_Time); //延时 Send_ASCII("AT+CMGR=1"); //发送读取信息指令 Delay_ms(Delay_Time); //延时 while(!Hand("OK")); //等待设置成功 if(strstr(Rec_Buf,"openjdq1")!=NULL) //如果信息内容是"open1" jdq1= 0; //点亮LED7指示灯 elseif(strstr(Rec_Buf,"closeljdq1")!=NULL) //如果信息内容是"close1" jdq1= 1; //熄灭LED7指示灯 elseif(strstr(Rec_Buf,"openjdq2")!=NULL) //如果信息内容是"open2" jdq2= 0; //点亮LED8指示灯 elseif(strstr(Rec_Buf,"closejdq2")!=NULL) //如果信息内容是"close2" jdq2= 1; //熄灭LED8指示灯 CLR_Buf(); //清除缓存内容 Delay_ms(Delay_Time); //延时 Send_ASCII("AT+CMGD=1"); //删除读取后的信息 Delay_ms(Delay_Time); //延时 while(!Hand("OK")); //等待设置成功 CLR_Buf(); //清除缓存内容 } if(strstr(Rec_Buf,"RING")!=NULL) //有电话时两路继电器吸合 { jdq1=0; jdq2=0; } } } /***************************串口初始化函数*****************************/ /*函数原型:void Serial_Init(void) /*函数功能:串口初始化 /*输入参数:无 /*输出参数:无 /**********************************************************************/ void Serial_Init(void)//串口初始化函数 { SCON = 0x50;//串口:方式1,允许发送和接收 TMOD = 0x20;//定时器1:模式2,8位自动重装模式,用于产生波特率 TH1 = 0xFD; //11.0592MHZ晶振,波特率为9600 TL1 = 0xFD; TR1 = 1; //开启定时器1 ES = 1; //开启串口中断 EA = 1; //开启全局中断 } /****************************串口中断处理函数**************************/ /*函数原型:void Serial_Int(void) /*函数功能:串口中断处理 /*输入参数:无 /*输出参数:无 /**********************************************************************/ void Serial_Int() interrupt 4 { ES= 0; //关串口中断,防止中断嵌套 if(TI) //如果是发送中断,则不做任何处理 { TI= 0; //清除发送中断标志位 } if(RI) //如果是接送中断,则进行处理 { RI= 0; //清除接收中断标志位 Rec_Buf = SBUF; //将接收到的字符串存到缓存中 i++; //缓存指针向后移动 if(i>200) //如果缓存满,将缓存指针指向缓存的首地址 { i= 0; } } ES= 1; //开启串口中断 } /****************************发送字符(ASCII)函数***********************/ /*函数原型:void Send_ASCII(unsigned char *b) /*函数功能:发送字符(ASCII码) /*输入参数:unsigned char *b /*输出参数:无 /**********************************************************************/ void Send_ASCII(unsigned char*b) { ES = 0; //关串口中断 for (b; *b!='\0';b++) { SBUF= *b; while(TI!=1); //等待发送完成 TI= 0; //清除发送中断标志位 } ES= 1; //开串口中断 Send_Hex(0x0d); //发送回车符 Send_Hex(0x0a); //发送换行符 } /****************************timems延时函数***************************/ /*函数原型elay_ms(unsigned int time) /*函数功能:延时Timems /*输入参数:time /*输出参数:无 /**********************************************************************/ void Delay_ms(unsigned int time) { unsigned char j; for(;time>0;time--) { j = 1500; while(j--); } } /**************************清除缓存数据函数****************************/ /*函数原型:void CLR_Buf(void) /*函数功能:清除缓存数据 /*输入参数:无 /*输出参数:无 /*调用模块:无 /**********************************************************************/ void CLR_Buf(void) { unsignedchar k; for(k=0;k<Buf_Max;k++) //将缓存内容清零 { Rec_Buf[k]= 0; } i = 0; //接收字符串的起始存储位置 } /*************************发送字符(十六进制)函数********************/ /*函数原型:void Send_Hex(unsigned char c) /*函数功能:发送字符(十六进制) /*输入参数:unsigned char c /*输出参数:无 /*调用模块:无 /******************************************************************/ void Send_Hex(unsigned charc) { ES = 0; //关串口中断 SBUF = c; while(TI!=1); //等待发送完成 TI = 0; //清除发送中断标志位 ES= 1; //开串口中断 } /*****************判断缓存中是否含有指定的字符串函数******************/ /*函数原型:bit Hand(unsigned char *a) /*函数功能:判断缓存中是否含有指定的字符串 /*输入参数:unsigned char *a 指定的字符串 /*输出参数:bit 1---含有 0---不含有 /*调用模块:无 /*******************************************************************/ bit Hand(unsigned char *a) { if(strstr(Rec_Buf,a)!=NULL) return 1; else return0; } /******************************************************************** 结束 *********************************************************************/ 【图片展示】
file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image022.jpg file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image024.jpg file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image026.jpg file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image028.jpg /*************************************/ 发货清单 1、图片所示开发板一块(带单片机和GTM900-B模块) 1块
2、(郭天祥GSM视频和资料)产品相关原理图及例程购买后刻录光盘,赠送顾客! 3.此价格不带天线和转接线(需另卖天线15转接线8) /****************************************/
|