當前位置:名人名言大全網 - 端午節短信 - 基於單片機的短信收發系統

基於單片機的短信收發系統

這個程序已經調好了,功能是定義壹個按鈕1,按下後會自動發送短信。短信的內容是倪好,GSM_ATCMGS()函數中有壹個數組。存儲說明加手機號加0d。把手機好的asc換成妳的就行了。如果妳不會用,就打電話給我:

# include & ltreg52.h & gt

#定義uchar無符號字符

#定義uint無符號整數

void GSM _ UART();

unsigned int UART _ delay(unsigned int z);

void GSM _ init();

void GSM _ CMGF();

void GSM _ ATC MGS();

void TELNUM();

void GSM _ TEXT();

void GSM _ test();

void BUTTON();

無符號整數d;

無符號字符代碼ATEnter[]={0x41,0x54,0x0d };

無符號字符代碼ATCMGFEnter[]={0x41,0x54,0x2b,0x43,0x4d,0x47,0x46,0x3d,0x31,0x0d };

無符號字符代碼ATCMGS[]={0x41,0x54,0x2b,0x43,0x4d,0x47,0x53,0x3d };

無符號char碼TEL_NUM[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x 39 };

無符號字符代碼文本[]={0x4b,0x4f };

無符號字符代碼Enter[]= { 0x0d };

無符號字符代碼oneA[]={0x31,0x 41 };

無符號字符idata buf[20];

int標誌;

int buf num = 0;

uchar str 1[]= { " AT " };

uchar str 2[]= { " ATD " };

uchar str 3[]= { " ATH " };

uchar str 5[]= { " AT+CMGS = " };

sbit bell=p1^6;

sbit betton1_1=p3^3;

sbit betton1=p3^4;

void gsm_uart()

{ EA = 1;

ES = 1;

SCON = 0x 50;//UART模式1:8位UART;REN=1:允許接收。

PCON = 0x 00;//SMOD=0:波特率不加倍。

TMOD = 0x 20;//T1Mode 2,用於UART波特率。

th 1 = 0x FD;

TL 1 = 0x FD;//UART波特率設置:9600

TI = 0;

RI = 0;

EA = 1;

tr 1 = 1;

}

無符號整數uart_delay(無符號整數z)

{無符號整數a,b;

for(a = z;a & gt0;答-)

{ for(b = 1000;b & gt0;b-);}

返回z;

}

使用3使ddd()中斷4無效

{

If(RI) //處理接收中斷。

{ buf[buf num]= SBUF;//接收串行數據

RI = 0;

buf num++;//清除中斷標誌位

}

}

void GSM_init()

{

uint I;

uchar代碼測試[]= {0x41,0x54,0x0d };

ES = 0;

for(I = 0;我& lt3;i++)

{

SBUF = test[I];

while(TI = = 0);

TI = 0;

}

ES = 1;

}

void GSM_CMGF()

{

uchar碼sel[10]= {0x41,0x54,0x2B,0x43,0x4D,0x47,0x46,0x3D,0x31,0x0d };//AT+CMGF=1回車

uint I;

for(I = 0;我& lt10;i++)

{

SBUF = sel[I];

while(TI = = 0);

TI = 0;

}

}

void GSM_ATCMGS()

{ uint I;

uchar代碼tel[20]= {0x41,0x54,0x2B,0x43,0x4D,0x47,0x53,0x3D,0x31,0x33,0x38,0x33,

0x36,0x30,0x32,0x33,0x33,0x37,0x39,0x0d };

for(I = 0;我& lt20;i++)

{

SBUF = tel[I];

while(TI = = 0);

TI = 0;

}

}

void GSM_TEXT()

{

uchar碼neirong[10]={0x48,0x69,0x21,0x6E,0x69,0x68,0x61,0x6F,0x2E,0x 1a };//嗨!倪好。

uint I;

ES = 0;

for(I = 0;我& lt10;i++)

{

SBUF = nei Rong[I];

while(TI = = 0);

TI = 0;

}

ES = 1;

}

void發送()

{

SBUF = oneA[0];while(TI = = 0);TI = 0;

SBUF = oneA[1];while(TI = = 0);TI = 0;

}

void GSM_test()

{

GSM _ UART();

UART _ delay(400);

GSM _ init();

UART _ delay(1000);

ES = 0;

buf num = 0;

if(buf[5]= = ' O ' & amp;& ampbuf[6] =='K ')

{

P0 = 0xfeUART _ delay(1000);P0 = 0xff

}

其他

{

P0 = 0x00UART _ delay(4000);P0 = 0xff

}

}

無效按鈕()

{ betton 1 = 1;

betton 1 _ 1 = 0;

if(betton1==0)

{

GSM _ test();

UART _ delay(1200);

GSM _ CMGF();

UART _ delay(1200);

GSM _ ATC MGS();

UART _ delay(1200);

GSM _ TEXT();

UART _ delay(800);

UART _ delay(500);

betton 1 = 1;

}

}

主()

{

BUTTON();

UART _ delay(10);

}