當前位置:名人名言大全網 - 祝福短信 - 跪求單片機控制通過串口TC35模塊發送短信的程序。希望高手能幫幫我,我也是剛學的。。

跪求單片機控制通過串口TC35模塊發送短信的程序。希望高手能幫幫我,我也是剛學的。。

來這個QQ群127858558。上面有現成的原理圖和程序,都經過測試。我先給妳發壹些:請檢查壹下。我現在用這個,不會有問題。

# include & ltreg52.h & gt

# include & ltintrins.h & gt

#定義uchar無符號字符

#定義uint無符號整數

#define RxIn 90 //定義接收到的數組長度為90。

uchar代碼AT[]= " AT ";//握手信號

uchar代碼ATE[]= " ATE ";//關閉回顯

uchar碼AT _ CNMI[]= " AT+CNMI = 21 ";//設置這組參數,新的信息會直接顯示到串口,不存儲。

uchar碼AT _ CSCA[]= " AT+CSCA = \ "+8613800571500 \ " ";//設置服務中心號碼

uchar碼AT _ CMGF[]= " AT+CMGF = 1 ";//將短信格式設置為文本格式。

uchar代碼AT _ CMGR[]= " AT+CMGR = ";//讀取SMS命令

uchar代碼AT _ CMGS[]= " AT+CMGS = ";//發送短信命令

uchar代碼AT _ CMGD[]= " AT+CMGD = ";//發送短信命令

uchar代碼成功[]=“操作成功!”;//向目標號碼發送操作成功信息。

uchar code fail[]= "操作失敗,再試壹次!";//向目標號碼發送操作失敗信息。

uchar AT _ delete[12];

uchar AT _ Read[12];//用於存儲發送和閱讀短信的指令。

uchar AT _ send number[25];//用於存儲發送短信號碼的指令。

uchar number buf[3];//用於保存消息的數量。

uchar idata system buf[RxIn];//存儲插座接收到的數據。

uchar command buf[6];//用於存儲指令

烏恰爾伊達州[17];//用於存儲IO端口的狀態。

uchar idata state 1[17];//用於存儲IO端口的狀態。

uchar Rx = 0;

單位溫度;//記錄狀態

uchar temp 1;//用於記錄P0端口的狀態。

uchar temp2//用於記錄P2端口狀態。

位校驗= 0;//查詢標誌位

位receive ready = 0;//接收SMS標誌位

位send ready = 0;//發送SMS就緒標誌位

位發送= 0;//發送短信標誌位

位標誌= 0;//指令標誌位

sbit p3_7=p3^7;//啟動GSM的啟動線路連接IGT。

sbit realy0=p0^0;//中繼1

sbit key1=p2^0;//開關1

sbit key2=p2^1;//開關2

/******************************************************************************************************************/

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////void Delay _ ms(uint I);實現功能:毫秒級延時///////////////////////////////。

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/******************************************************************************************************************/

無效延遲_毫秒(uint i)

{

無符號int j;

for(;我& gt0;我- ){

for(j = 0;j & lt125;j++)

}

}

/******************************************************************************************************************/

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////void Start _ GSM(void);功能:啟動TC35,打開TC35//////////////////////////////。

//功能描述:單片機上的P3_7引腳與TC35的IGT引腳相連;要啟動TC35,必須在15引腳(/IGT)添加壹個持續時間至少為100ms的低電平信號。

///且該信號的下降沿時間小於1 ms,啟動後,15腳的信號應保持高電平。

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/******************************************************************************************************************/

void Start_GSM(void)

{

P3 _ 7 = 0;

delay _ ms(1000);

P3 _ 7 = 1;

delay _ ms(1000);

}

/******************************************************************************************************************/

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////void UART _ init;功能:初始化串口//////////////////////////////////////////。

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/******************************************************************************************************************/

void UART_init (void)

{

TMOD = 0x 20;//選擇定時器1

PCON = 0x 00;///波特率沒有加倍

SCON = 0x 50;//串行工作模式1允許串行接收。

th 1 = 0x FD;//晶振11.0592MHZ,波特率9600。

TL 1 = 0x FD;//在相應的計數器上賦值

EA = 1;//總中斷開啟

ES = 1;//串行中斷開啟

tr 1 = 1;//啟動計時器1

}

/******************************************************************************************************************/

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////Void send char(uchirch);函數:發送壹個字節的數據/////////////////////////////////////////////。

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/******************************************************************************************************************/

void sendchar(uchar ch)

{

SBUF = ch

while(TI = = 0);

TI = 0;

}

/******************************************************************************************************************/

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////void sendstring(uchar * p);實現功能:通過串口發送字符串////////////////////////////////。

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/******************************************************************************************************************/

void發送字符串(uchar *p)

{

while(*p)

{

send char(* p);

p++;

}

send char(0x0D);

send char(0x0A);

}

/******************************************************************************************************************/

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////void receive(void)interrupt 4 using 1;實現功能:通過串口接收數據/////////////////////////////////。

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/******************************************************************************************************************/

void接收(void)中斷4使用1

{

中頻(RI)

{

如果(Rx & ltRxIn)

{

system buf[Rx]= SBUF;

rx++;

}

RI = 0;

}

}

/******************************************************************************************************************/

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////void GSM _ INIT(void);功能:初始化TC35模塊//////////////////////////////////。

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/******************************************************************************************************************/

void GSM_INIT(void)

{

循環:

delay _ ms(1000);

send string(AT);

delay _ ms(1000);

發送字符串(ATE);

delay _ ms(1000);

send string(AT _ CNMI);

delay _ ms(1000);

send string(AT _ CSCA);

delay _ ms(1000);

for(Rx = 0;Rx & ltRxInRx++)

{

system buf[Rx]= 0x 00;

}

rx = 0;

send string(AT _ CMGF);

delay _ ms(1000);

if((system buf[2]= = ' O ')& amp;& amp(system buf[3]= = ' k ')//判斷模塊是否初始化成功,如果成功,模塊會回復微控制器“OK”。

{//如果微控制器沒有收到OK,它將繼續發送初始化指令/

for(Rx = 0;Rx & ltRxInRx++)

{

system buf[Rx]= 0x 00;

}

rx = 0;

}

其他

{

for(Rx = 0;Rx & ltRxInRx++)

{

system buf[Rx]= 0x 00;

}

rx = 0;

轉到循環;

}

}

/*******