當前位置:名人名言大全網 - 祝福短信 - 求51單片機與sim900a連接的最簡單程序。

求51單片機與sim900a連接的最簡單程序。

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

程序描述:

此程序運行後,如果gprs模塊發現服務提供商的信號,它將呼叫指定的電話。

1.將自己的51單片機的串口1連接到GSM的tx rx gnd。

2.找到程序前面的#define,根據說明修改妳的SCM配置,編譯程序。

下載程序

3.按下模塊復位按鈕,啟動模塊,等待信號燈慢慢閃爍,單片機復位。

4.等待傳輸成功

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

# include & ltREGX52。H & gt

#定義uchar無符號字符

#定義uint無符號整數

//下面是板上的LED配置。把Px_x換成自己對應的腳。

#定義LED1_ON P1_0 = 0

#定義led 1 _ OFF p 1 _ 0 = 1

#定義LED2_ON P1_1 = 0

#定義led 2 _ OFF p 1 _ 1 = 1

#定義LED3_ON P1_2 = 0

#定義LED3_OFF P1_2 = 1

#定義LED4_ON P1_3 = 0

#定義LED4_OFF P1_3 = 1

//下面是妳的51單片機的晶振尺寸。

# define FOSC _ 110592m

//#define FOSC_12M

//以下是手機開機後發送到手機上的內容,發送的號碼在程序中進行了修改。

uchar SMS _ text[]= " 123 ";

//註意,不管信號是接收還是發送,都會進入中斷服務程序。

/*初始化程序(必須使用,否則無法發送或接收),第二個程序將使用定時器1*/

Void SerialInti()//初始值設定項(必須使用,否則無法發送或接收)

{

TMOD = 0x 20;//Timer1工作模式2:8位自動過載定時器

# ifdeffosc _ 12m//根據這裏晶振的大小設置不同的值來初始化串口。

th 1 = 0x F3;//以2400的波特率加載初始值。

TL 1 = 0x F3;

#否則

th 1 = 0x FD;//以9600的波特率加載初始值。

TL 1 = 0x FD;

# endif//SOC _ 12M結束

tr 1 = 1;//打開計時器

SM0 = 0;//設置串口通信的工作模式(10為壹次傳輸,波特率可變,由定時器1的溢出率控制)。

sm 1 = 1;//(同上)在這種模式下,壹旦定時器溢出,就發送壹位數據。

任= 1;//串行接收使能位(在打開串行使能之前設置sm0sm1)

EA = 1;//打開主機中斷

ES = 1;//打開串行端口中斷

}

/*串行通信中斷,接收發送後進入*/

無效串行中斷()中斷4

{

//a = SBUF;

P2 = SBUF;

RI = 0;//接收中斷信號清零,表示接收將繼續。

//flag = 1;//進入中斷的符號

}

void Uart1Send(uchar c)

{

SBUF = c;

而(!TI);//等待傳輸完成信號(TI=1)出現。

TI = 0;

}

//串口連續發送char數組,遇到終止號/0就會停止。

void Uart1Sends(uchar *str)

{

while(*str!='\0')

{

SBUF = * str

而(!TI);//等待傳輸完成信號(TI=1)出現。

TI = 0;

str++;

}

}

//延遲函數大概是1s,但是延遲大的話就不允許了。...

無效延遲時間(中間秒)

{

uint i,j = 0;

for(I = 0;我& ltseci++)

{

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

{

}

}

}

void main()

{

uchar I = 0;

led 1 _ OFF;

LED2 _ OFF

LED3 _ OFF

LED4 _ OFF

serial inti();

while(1)

{

led 1 _ ON;

LED2 _ OFF

UART 1 sends(" AT+CMGF = 1 \ r ");

德萊賽克(3);//延遲3秒

UART 1 sends(" AT+CSCS = \ " GSM \ " \ r ");

德萊賽克(3);//延遲3秒

UART 1 sends(" AT+CSMP = 17,167,0,250 \ r ");//設備短信模式(手機自動保存模式)

//UART 1 sends(" AT+CSMP = 17,167,0,240 \ r ");//設備短信模式(手機非自動保存模式)

德萊賽克(3);//延遲3秒

UART 1 sends(" AT+CMGS = \ " 18332563682 \ " \ r ");

德萊賽克(5);//延遲3秒

UART 1 sends(SMS _ text);

UART 1 send(0x 1a);

LED2 _ ON

led 1 _ OFF;

德萊賽克(15);//延遲20秒

}

}

//可以連接p3.0和p3.1。