
当然可以了
GPRS模块通过串口将数据交给单片机,数据格式视不同的厂家的GPRS模块而定,
那么单片机如何读取GPRS模块的短信呢?
1可以通过AT指令设置GPRS模块,让GPRS模块收到短信后立即将短信内容交给单片机,也可以通过AT指令设置GPRS模块,收到短信后先存到SIM(SM)卡或模块(ME),然后单片机发AT指令向GPRS模块读取短信内容
2如何解析短信?
先把模块接到PC,用串口软件看下短信内容格式,然后编程去进行AT *** 作,短信字符集可选择UCS2或GSM,国内部分老旧手机不支持GSM字符集,建议解析UCS2字符集!
你串口怎么接的? 如果是并在单片机与GPRS模块直接的话,电脑的串口应该只能手动模块回传的信息,收不到单片机的。因为RX TX 反接要!乱码可能是波特率问题!你先用电脑去收你单片机发过来的数据,看看AT指令对不对。 给你我的程序参考下,调试通过的额
/
/
//#include "stc15h" //包含STC15单片机寄存器定义文件
#include "STC15F2Kh"
//#include "LCD12864H"
#include <intrinsH>
typedef unsigned char unint8;
typedef unsigned char unint16;
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
#define SEND "AT+CMGS=\"电话号码\"\r\n"
unsigned char qwh;
sbit buzzer = P0^6;
sbit relay = P0^4;
sbit key=P3^2;
void delay(uchar t,uchar y)
{
uint i,j;
for(i=0;i<y;i++)
for(j=0;j<t;j++);
}
void InitUART(void)
{ //9600bps@110592MHz
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xDC; //设定定时初值
TH1 = 0xDC; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1;
ES = 1; //使能串口中断
EA = 1;
}
void SendData(uchar dat)
{
//while (busy_ck); //等待前面的数据发送完成
//busy_ck = 1;
SBUF = dat; //写数据到UART数据寄存器
while(TI==0);
TI=0;
}
/----------------------------
发送字符串
----------------------------/
void SendString(uchar s)
{
while (s) //检测字符串结束标志
{
SendData(s++); //发送当前字符
}
}
//
void fs(void)
{
int i;
SendString("AT+CMGF=1\r\n"); //m模式设置
for(i=0;i<50;i++)
delay(8888,8888);
SendString(SEND); //电话号码 在顶部定义的
for(i=0;i<50;i++)
delay(8888,88888);
SendString("Warning! Someone broke into the house!\r\n"); //短信内容
for(i=0;i<50;i++)
delay(8888,8888);
SendData(0x1a); //结束符
}
void main(void)
{
int flage=0,i=0,j=0;
InitUART();
while(1)
{
relay = 0;
P2 = 0xA0;
P2 = 0x00;
if(key==1&&flage==0)
{
//P1=0XFF;
relay = 1;
P2 = 0xA0;
P2 = 0x00;
fs();
flage=1;
}
if(flage==1)
{
P1=0XFF;
}
delay(8888,8888);
i++;
if(i>=500)
{
flage=0;
i=0;
}
}
}
void Uart_Isr() interrupt 4 using 1
{
if (RI)
{
RI = 0; //Clear receive interrupt flag
//a[pi]= SBUF; //P0 show UART data
}
if (TI)
{
TI = 0; //Clear transmit interrupt flag
}
// pi++;
}
你要使用
AT+CMGS
Send SMS message(发送短消息)
这条发短消息命令即可,
接口使用232;
具体的要看你选的GPRS DTU模块通信协议,建议买个封装好,
你好,GPRS模块通常是用AT命令控制的,可以用单片机的串口(USART)向GPRS模块发送相应的命令,实现与手机的通信。比如说向GPRS模块发送拨打电话的AT命令,即可实现电话预警,类似的还有短信控制,蓝牙通信,这些都可以实现模块与手机通信。
我现在也在做GPRS模块通信,使用的是飞思创电子的SIM800C评估板,实现与服务器的TCP通信,已经调通了。有兴趣的话,欢迎一起学习交流
以上就是关于MSP430单片机可以控制GPRS模块给手机发短信,那么具有GPRS功能的手机能发短信给与单片机相连的GPRS模块吗全部的内容,包括:MSP430单片机可以控制GPRS模块给手机发短信,那么具有GPRS功能的手机能发短信给与单片机相连的GPRS模块吗、用GPRS模块和51单片机进行通信时的问题、我要做基于GPRS的远程温度检测系统,现在已经测出了温度,求单片机控制GPRS模块的方法,我知道用AT指令等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)