365文库
登录
注册
2

单片机控制sim900a收发短信

263阅读 | 9收藏 | 19页 | 打印 | 举报 | 认领 | 下载提示 | 分享:
2
单片机控制sim900a收发短信第1页
单片机控制sim900a收发短信第2页
单片机控制sim900a收发短信第3页
单片机控制sim900a收发短信第4页
单片机控制sim900a收发短信第5页
单片机控制sim900a收发短信第6页
单片机控制sim900a收发短信第7页
单片机控制sim900a收发短信第8页
单片机控制sim900a收发短信第9页
单片机控制sim900a收发短信第10页
单片机控制sim900a收发短信第11页
单片机控制sim900a收发短信第12页
单片机控制sim900a收发短信第13页
单片机控制sim900a收发短信第14页
单片机控制sim900a收发短信第15页
单片机控制sim900a收发短信第16页
单片机控制sim900a收发短信第17页
单片机控制sim900a收发短信第18页
单片机控制sim900a收发短信第19页
福利来袭,限时免费在线编辑
转Pdf
right
1/19
right
下载我编辑的
下载原始文档
收藏 收藏
搜索
下载二维码
App功能展示
海量免费资源 海量免费资源
文档在线修改 文档在线修改
图片转文字 图片转文字
限时免广告 限时免广告
多端同步存储 多端同步存储
格式轻松转换 格式轻松转换
用户头像
青袅 上传于:2024-03-29
单片机接受指定短信内容,1602显示短信内容,单片机对短信内容作判断,若为所要求的内容,则返回一条短信 #include //单片机头文件 #include #include "lcd1602_drv.h" #define uchar unsigned char #define uint unsigned int #define Rx_data_length 110 uchar Admin_num[11]="xxxxxxxxxxx"; //手机号码 uchar i,j; bit Response_receive_SMS_flag=0; sbit RS_1602=P2^6; //1602数据/命令选择引脚 sbit LCD_RW=P2^5; //1602读写引脚 sbit E_1602=P2^7; //1602使能引脚 uchar Rx_bit,i; uchar xdata Rx_data[Rx_data_length]; uchar w[]="Waiting ...... "; void Response_receive_SMS(void); void Uart_SendChar(uchar ch); void Uart_SendString(uchar *String); void uart_init(void); void Clear_Rxdata(uchar length); void delay(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=100;j>0;j--); } void main(void) { uint aa=0; EA=1; //开总中断 LCD_RW=0; //LCD RW 主程序接地一直等于0 uart_init(); //串口初始化 lcd_init(); //液晶屏显示初始化 Rx_bit=0; Uart_SendString("AT+CLIP=1
"); delay(500); Uart_SendString("AT+CMGF=1
"); //设置sim900模块为英文方式发送短信 delay(500); Uart_SendString("AT+CMGD=1
"); //清除所有短信 delay(500); Uart_SendString("AT+CSCS=\"GSM\"\r"); //设置sim900模块GSM字符集 delay(500); Uart_SendString("AT+CMGF=1\r"); //设置sim900模块为英文方式发送短信 delay(500); Clear_Rxdata(Rx_data_length); delay(500); memset(Rx_data,' ',sizeof(Rx_data)); //Rx_data数组中元素都为空格 write_1602com(one); for(i=0;i<16;i++) { write_1602dat(w[i]); } while(1) { EA=1; EX0=1; //开外部中断0 IT0=0; //脉冲触发方式 Response_receive_SMS(); //循环检测是否收到短信,若收到短信则 Response_receive_SMS_flag==1 delay(100); Rx_bit=0; if(Response_receive_SMS_flag==1) { Uart_SendString("AT+CMGR=1
"); //短信读取 delay(2000); write_1602com(one); for(i=0;i<16;i++) { write_1602dat(Rx_data[69+i]); } if(Rx_data[69]=='x'&&Rx_data[70]=='x'&&Rx_data[71]=='ax'&&Rx_data[72]=='x'&&Rx_data[73]=='x') //判断的短信内容,可以不止5位 { aa=1; } Response_receive_SMS_flag=0; Clear_Rxdata(Rx_data_length); delay(100); Uart_SendString("AT+CMGD=1
"); //清除所有短信 delay(100); } delay(1000); if(aa==1) { delay(1000); Uart_SendString("AT+CMGS=\""); for(j=0;j<11;j++) { SBUF=Admin_num[j]; while(TI==0); TI=0; } Uart_SendString("\"\r"); delay(200); Uart_SendString("xxx"); //返回的短信内容 delay(300); Uart_SendChar(0x1a); delay(1000); aa=0; } } } void uart() interrupt 4 { ES=0; if(RI==1) //当硬件接 收到一个数据时,RI会置位 { if(SBUF!=0x0d&&SBUF!=0x0a&&SBUF!=' ') //去除所有的空格 { Rx_data[Rx_bit]=SBUF; Rx_bit++; } if(Rx_bit==Rx_data_length) { Rx_bit=0; } RI=0; } ES=1; } void Response_receive_SMS(void) { uchar i=0; for(i=0;i<=Rx_data_length;i++) { if(Rx_data[i] =='+' &&Rx_data[i+1]=='C' &&Rx_data[i+2]=='M' &&Rx_data[i+3]=='T' &&Rx_data[i+4]=='I' &&Rx_data[i+5]==':') { Response_receive_SMS_flag=1; return; } } Response_receive_SMS_flag=0; } /******************************************************************** * 名称 : Uart_SendChar(uchar ch) * 功能 : 向串口发送一个字符 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Uart_SendChar(uchar ch) { SBUF=ch; while(TI==0); TI=0; } /******************************************************************** * 名称 : Uart_SendChar(uchar ch) * 功能 : 向串口发送一个字符串 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Uart_SendString(uchar *String) { while (*String !='\0') //字符串结束标志 \0 { Uart_SendChar(*String); String++; } } /**************************************
tj