當前位置:名人名言大全網 - 短信平臺 - 我在做單片機寫指令到GSM讓GSM發短信到指定手機號,求資料或QQ幫助

我在做單片機寫指令到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);

}