导航:首页 > 操作系统 > 单片机读gsm内容

单片机读gsm内容

发布时间:2023-03-19 08:08:48

1. 我在做单片机写指令到GSM让GSM发短信到指定手机号,求资料或QQ帮助

我以前编写的51单片机通过SIM300模块用GPRS把采集到的温度发送到设定的TCP服务器,你可以看看,发短信很简单,根据AT指令修改一下前面的代码即可。

/*8位共阳数码管,18b20接P3^3,11.0592晶振*/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar th,tl;//存放采集温度高8位,低8位
uchar temp_int,temp_dot;//存放转换后的温度整数部分和小数部分
sbit dq=P3^3; //18b20数据接口
bit stat_18b20; //18b20初始化返回状态
uchar ctrl_z=0x1a;//GPRS数据发送结束标识ctrl+z键16进制码
uchar ATCLPORT[]="AT+CLPORT=\"TCP\",\"5256\"\r"; //设置本地GPRS通信协议以及端口号
uchar ATCIPSTART[]="AT+CIPSTART=\"TCP\",\"121.233.142.158\",\"6000\"\r"; //连接TCP服务器
uchar ATCIPSEND[]="AT+CIPSEND\r"; //启动数据发送命令
void uart_init(); //串口初始化
void delayus(uint xus); //延时微秒
void delayms(uint xms); //延时毫秒
init_18b20(); //18b20初始化
readchar(); //读一个字节
void writechar(uchar dat); //写一个字节
void get_temp(); //取温度
void temp_convert(); //转换温度
void send_string(uchar *gprs_string); //给GPRS模块发送字符串
void send_char(uchar);
void gprs_init(); //GPRS模块初始化
void send_temp(); //通过GPRS模块发送温度
//--------------下面为主函数----------------
void main(void)
{
uart_init();
gprs_init();
while(1)
{
get_temp();
temp_convert();
send_temp();
}
}
void uart_init()
{
TMOD=0X20;
SCON=0X50;
TH1=0XFD;
TL1=0XFD;
TR1=1;
}
//--------------下面为延时操作函数----------------
void delayus(uint xus)
{
for(;xus>0;xus--);
}
void delayms(uint xms)
{
uint i;
uchar j;
for(i=0;i<xms;i++)
for(j=0;j<112;j++);
}
//--------------下面为DS18B20操作函数----------------
init_18b20()
{
stat_18b20=1;
dq=1;
delayus(5);
dq=0;
delayus(50);
dq=1;
delayus(5);
stat_18b20=dq;
delayus(60);
dq=1;
return(stat_18b20);
writechar(0x4e);
writechar(0x02);
writechar(0x01);
writechar(0x7f);
}
readchar()
{
uchar i,dat;
for(i=8;i>0;i--)
{
dq=0;
dat=dat>>1;
dq=1;
if(dq)
dat=dat|0x80;
delayus(4);
}
return(dat);
}
void writechar(uchar dat)
{
uchar i;
for(i=8;i>0;i--)
{
dq=0;
dq=dat&0x01;
delayus(5);
dq=1;
dat=dat>>1;
}
}
void get_temp()
{

init_18b20();
if(stat_18b20==0)
{
writechar(0xcc);
writechar(0x44);
delayms(50);
init_18b20();
writechar(0xcc);
writechar(0xbe);
tl=readchar();
th=readchar();

}
else
{
; //错误处理模块
}
}
void temp_convert()
{
temp_int=((th&0x07)<<4)|((tl&0xf0)>>4);
temp_dot=tl&0x0f;
}
//--------------下面为SIM300操作函数----------------
void send_string(uchar *gprs_string)//指令字符串发送指令
{
while(*gprs_string)
{
SBUF = *gprs_string;
while(TI==0);
TI=0;
gprs_string++;
}
}
void send_char(uchar x)
{
SBUF=x;
while(TI==0);
TI=0;
}
void gprs_init()
{
send_string(ATCLPORT);
delayms(1000);
send_string(ATCIPSTART);
delayms(1000);
}
void send_temp()
{
send_string(ATCIPSEND);
send_char(temp_int);
send_char(temp_dot);
send_char(ctrl_z);
delayms(1000);
}

2. 单片机与GSM之间信息是怎么传递啊

是通过串行口传递的,你先用电脑串口助手调试单片机的串口,单片机与电脑之间通过串口调试助手通信成功了,再电脑和模块用串口助手调通了,最后将单片机与模块通过串口连接,一般用RS232或者TTL电平通信,两者的连接方式是不一样的,一般GSM的使用说明里面都说的很清楚

单片机将AT指令通过串行口发送给GSM来控制GSM发送短信拨打电话或执行其他的操作

如果没有GSM或AT指令的资料可留下邮箱我给你发一份

3. 单片机控制GSM模块发短信,程序

void send(uint sdata)--这是发送一个字节的函数
{
SBUF=sdata;
while(TI==0);
TI=0;
}

send ("AT+CMGF=0\r\n");
send ("AT+CMGS=25\r\n");

发送一个字节的函数,在这里,你却用它发送字符串?

----
单片机发出的东西,你先不要急着送到手机模块。
先送到 PC 的串口助手,看看,你都发出了什么。

4. 单片机与GSM模块通信

先解决好单片机与GSM模块的线路连接问题,然后,单片机可通过GSM模块给你手机发信息
也能收到手机向GSM模块发送的信息;
那么手机向单片机发指令的方式,比如采用短信方式,那么单片机就可从收到的短信上提取你定义的指令了

阅读全文

与单片机读gsm内容相关的资料

热点内容
安卓怎么关权限保护隐私 浏览:390
海牛微视app怎么用 浏览:70
单片机怎样选变压器 浏览:829
癌症pdf 浏览:725
云服务器镜像批量部署环境 浏览:683
安卓手机浏览器能访问什么网站 浏览:254
找不到网站的服务器ip地址该如何解决 浏览:743
算法十个数降序排列 浏览:95
基于单片机的老年人健康监测系统 浏览:706
python入门经典pdf下载 浏览:17
东芝变频2p空调压缩机 浏览:227
自家wifi怎么能加密 浏览:644
红米k40加密门禁卡 浏览:847
什么样的源码好看 浏览:156
手机主服务器有什么用 浏览:612
程序编写命令 浏览:597
android发送心跳包 浏览:385
指标源码和原理 浏览:700
汽车空调压缩吸盘 浏览:208
崽崽因app版本不同不能邀请怎么办 浏览:686