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

熱點內容
抖音直播雲伺服器 瀏覽:624
一加7pro文件夾data 瀏覽:424
程序員淋雨 瀏覽:947
python輸出數字序列中的空格 瀏覽:78
怎麼將pdf文件大小 瀏覽:734
氧原子相對分子量演算法 瀏覽:988
加密機為什麼是安全的 瀏覽:451
單片機拼音輸入法 瀏覽:789
蘋果筆記本t2加密晶元怎麼打開 瀏覽:796
安卓如何把手機投屏至電視 瀏覽:739
方舟編譯器現在可提速哪些軟體 瀏覽:60
微信加密為什麼是黑屏 瀏覽:473
android去電狀態 瀏覽:604
蘋果13如何加密視頻 瀏覽:815
linuxweblogic緩存 瀏覽:69
雲伺服器不同地域 瀏覽:946
python鬧鍾怎麼打 瀏覽:686
虛擬主機伺服器有什麼區別 瀏覽:833
演算法與程序的奧秘章節檢測 瀏覽:378
找pdf 瀏覽:531