完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 人生沙畫 于 2016-5-5 15:16 编辑
/* //本代码使用STC89C52单片机 //晶振11.0592MHz下测试 //测试使用的板子 */ #include "main.h" #include "uart.h" #include "string.h" //**************************************************** //主函数 //**************************************************** void main() { LED1= 0 ; ATSTAT(); Delay_ms(2000); //ATSMSFA(); //Delay_ms(2000); ATSMSDEL(); Delay_ms(2000); while(1) { ATSMSJIE(); Delay_ms(2000); ATSMSDEL(); } } void ATSTAT() //初始化串口并与GSM握手 { Uart_Init();//初始化串口是9600 Uart2_Init();//初始化串口是9600 Delay_ms(2000); UartPrintf("ATrn");//先发AT,让GSM模块自动获取波特率为9600 Uart2Printf("ATrn");//先发AT,让GSM模块自动获取波特率为9600 Delay_ms(2000); UartPrintf("AT&Frn"); Uart2Printf("AT&Frn"); //先发AT,让GSM模块出厂默认设置 Delay_ms(2000); UartPrintf("AT+CMGF=1rn"); Uart2Printf("AT+CMGF=1rn"); //GSM模块方以本模式 Delay_ms(2000); UartPrintf("AT+CSCS="GSM"rn"); Uart2Printf("AT+CSCS="GSM"rn"); //GSM模块以GSM字符集发送 Delay_ms(2000); UartPrintf("AT+CNMI=2,1rn"); Uart2Printf("AT+CNMI=2,1rn"); //开启新短信提示 } void ATSMSFA(sjhm,dxnr) { UartPrintf("AT+CMGF=1rn"); Uart2Printf("AT+CMGF=1rn"); //GSM模块方以本模式 Delay_ms(2000); UartPrintf("AT+CSMP=17,167,0,8rn"); //发送中英文文本模式短信 Uart2Printf("AT+CSMP=17,167,0,8rn"); Delay_ms(2000); UartPrintf("AT+CSCS="UCS2"rn"); //以GSM字符集发送 Uart2Printf("AT+CSCS="UCS2"rn"); Delay_ms(2000); UartPrintf("AT+CMGS="00310033003700360036003600340032003700320031"rn"); //电话号码 此处修改参考 GSM使用手册 Uart2Printf("AT+CMGS="00310033003700360036003600340032003700320031"rn"); //电话号码 此处修改参考 GSM使用手册 Delay_ms(2000); UartPrintf("5F53524D6E295EA6003200355EA65F53524D6E7F5EA6003700300025"); //短信内容 此处修改参考 GSM使用手册 Uart2Printf("5F53524D6E295EA6003200355EA65F53524D6E7F5EA6003700300025"); //短信内容 此处修改参考 GSM使用手册 Delay_ms(2000); UartPrintASCII(0x1a); //发送A字节 Uart2PrintASCII(0x1a); } void ATSMSJIE() { if(strstr(RX_Buffer,"+CMti")!=NULL) //缓存中有+CMTI字符 { UartPrintf("youduanxinxilern"); Delay_ms(2000); Uart2Printf("AT+CMGR=1rn"); //读取1号位置的短信 Delay_ms(2000); UartPrintf("duquduanxinxirn"); //isReceiveOKOrTimeout(); Delay_ms(2000); if(strstr(RX_Buffer,"k1")!=NULL) { LED1=1; UartPrintf("dakairn"); }else{ UartPrintf("dusibai1rn"); } } } void ATSMSDEL() { Uart2Printf("AT+CMGD=1,4rn"); Delay_ms(2000); //isReceiveOKOrTimeout(); Delay_ms(2000); //UartPrintf("delete SMS OKrn"); } void isReceiveOKOrTimeout() { unsigned int count = 0; int i = 0; while(count < 60000) //要接收到0K或者超时跳出 { i++; if( i == 10) { i = 0;count++; } if(flagReceive){ flagReceive = 0; if( RX_Buffer[0] == 'O' && RX_Buffer[1] == 'K' && RX_Buffer[2] == 'r' && RX_Buffer[3] == 'n' ) UartPrintf("duquOK-----------------rn"); break; } } } //**************************************************** //MS延时函数(11.0592M晶振下测试) //**************************************************** void Delay_ms(unsigned int n) { unsigned int i,j; for(i=0;i } |
|
相关推荐
3个回答
|
|
高手们,在线等回复
|
|
|
|
本帖最后由 人生沙畫 于 2016-5-5 15:17 编辑
就是这段代码读取不了短信内容 void ATSMSJIE() { if(strstr(RX_Buffer,"+CMTI")!=NULL) //缓存中有+CMTI字符 { UartPrintf("youduanxinxilern"); Delay_ms(2000); Uart2Printf("AT+CMGR=1rn"); //读取1号位置的短信 Delay_ms(2000); UartPrintf("duquduanxinxirn"); //isReceiveOKOrTimeout(); Delay_ms(2000); if(strstr(RX_Buffer,"k1")!=NULL) { LED1=1; UartPrintf("dakairn"); }else{ UartPrintf("dusibai1rn"); } } } |
|
|
|
回帖奖励 +1 分积分
读取不了是读取不出来,还是读取的是错的。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11779 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 01:43 , Processed in 0.528419 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号