求一份51单片机控制TC35发送短信的程序

单片机控制GSM模块发送短信程序
GSM接受短信,向单片机反馈信息,单片机再对其它模块进行控制的程序
最好是自己亲测过的,希望不要网上随便找一份回答,因为我是急用,谢谢了!

我有发送的 自己用的额
/***********************************************************
***********************************************************/
//#include "stc15.h" //包含STC15单片机寄存器定义文件

#include "STC15F2K.h"
//#include "LCD12864.H"
#include <intrins.H>
typedef unsigned char unint8;
typedef unsigned char unint16;
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
#define SEND "AT+CMGS=\"电话号码\"\r\n"
unsigned char qwh;
sbit buzzer = P0^6;
sbit relay = P0^4;
sbit key=P3^2;

void delay(uchar t,uchar y)
{
uint i,j;
for(i=0;i<y;i++)
for(j=0;j<t;j++);
}
void InitUART(void)
{ //[email protected]

PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xDC; //设定定时初值
TH1 = 0xDC; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1;
ES = 1; //使能串口中断
EA = 1;
}

void SendData(uchar dat)
{
//while (busy_ck); //等待前面的数据发送完成
//busy_ck = 1;
SBUF = dat; //写数据到UART数据寄存器
while(TI==0);
TI=0;
}

/*----------------------------
发送字符串
----------------------------*/
void SendString(uchar *s)
{
while (*s) //检测字符串结束标志
{
SendData(*s++); //发送当前字符
}
}

/****************************************************************************/
void fs(void)
{
int i;
SendString("AT+CMGF=1\r\n"); //m模式设置
for(i=0;i<50;i++)
delay(8888,8888);
SendString(SEND); //电话号码 在顶部定义的
for(i=0;i<50;i++)
delay(8888,88888);
SendString("Warning! Someone broke into the house!\r\n"); //短信内容
for(i=0;i<50;i++)
delay(8888,8888);
SendData(0x1a); //结束符
}
void main(void)
{
int flage=0,i=0,j=0;
InitUART();
while(1)

{
relay = 0;
P2 = 0xA0;
P2 = 0x00;
if(key==1&&flage==0)
{
//P1=0XFF;
relay = 1;
P2 = 0xA0;
P2 = 0x00;
fs();
flage=1;
}
if(flage==1)
{
P1=0XFF;
}
delay(8888,8888);
i++;
if(i>=500)
{
flage=0;
i=0;
}

}
}
void Uart_Isr() interrupt 4 using 1
{
if (RI)
{
RI = 0; //Clear receive interrupt flag
//a[pi]= SBUF; //P0 show UART data
}
if (TI)
{
TI = 0; //Clear transmit interrupt flag
}
// pi++;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-24
通过串口,向其发AT指令。
相似回答