導航:首頁 > 操作系統 > 單片機讀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內容相關的資料

熱點內容
華為方舟編譯器和miui 瀏覽:475
matlab與python介面 瀏覽:836
怎麼看加密市場 瀏覽:225
linux進程間通信管道 瀏覽:551
外圓圓弧槽左右切削怎麼編程 瀏覽:380
做解壓的實驗 瀏覽:687
多人偽伺服器怎麼開荒 瀏覽:604
中興交換機埠打開命令 瀏覽:970
編譯原理vn集合 瀏覽:6
用暴風雨射擊解壓 瀏覽:784
linux上傳git 瀏覽:728
查看主機路由器的兩條命令 瀏覽:737
安卓怎麼查看抖音號注冊了多久 瀏覽:64
php循環優化 瀏覽:628
解壓音樂俱樂部 瀏覽:112
微信公眾號如何綁伺服器 瀏覽:615
怎麼下載兩個拼多多app 瀏覽:314
su插件壓縮包怎麼安裝 瀏覽:547
我的世界神奇寶貝伺服器如何快速發育 瀏覽:668
信源編解碼作用 瀏覽:742