发 帖  
原厂入驻New
申请华秋企业认证 多层板首单免费打样!
30s提交资料,10分钟通过审核(免费赔付+顺丰包邮)>>立即报名
如何将TC35I模块连接实物图?
269 开发板 51单片机
分享
本人买了一块TC35I模块(程序中用的是TC35),想利用开发板设计一个防盗报警的毕设。程序如下,能生成hex文件。但不知道如何连接实物图,准确的说是TC35I与单片机之间只需连TXD,RXD,GND这几个引脚吗???那么该系统里传感器有改接单片机哪个引脚???因为程序中好像把P3^0定义为光电传感器的输出信号端了。还望大神能帮我看看,感激不尽。
程序功能:是入室开门触发光电传感器输出信号电平取反,51单片机IO口识别并触发TC35向客户端间隔1min发送报警短信,若客户端未及时回复短信系统默认客户未发现已收到短信,触发TC35拨打客户手机
#include <reg52.h>
#include <intrins.h>
#include <string.h>   //字符串处理函数
#include <stdio.h>     //文件类型指针
#define uint unsigned int
#define uchar unsigned char   
#define RxIn 90    //定义接收的数组长度为90
uchar idata SystemBuf[RxIn];    //储存出口接收数据
uchar code AT[]="AT"; //握手信号
uchar code ATE[]="ATE";  //关回显  
uchar code AT_CNMI[]="AT+CNMI=2,1";//设置这组参数来了新信息直接显示到串口,不作存储  uchar code AT_CSCA[]="AT+CSCA=\"+8618860905485\"";//设置服务中心号码 AT+CSCA=\"+8613010360500\"  
uchar code AT_CMGF[]="AT+CMGF=1";//设置短信的格式为text格式
uchar code AT_CSCA[]="AT+CSCA=\"+8613800391500\"";//设置服务中心号码
uchar code godphone[11]="18236882422";//客户端号码  
uchar code AT7[]={0x41,0x54,0x2B,0x43,0x4D,0x47,0x53,0x3D};//AT+CMGS=     即发送短信客户端号码指令   eg:AT+CMGS=13771992474  回车 发送  
uchar code AT12[]={0x41,0x54,0x44,0x3E};//ATD>    即拨打客户端电话指令   eg:呼叫13973292929,则为ATD13973292929  
uchar code warning[]="warning! IF you get it, please send get it to me";
uchar Rx=0;
uchar i;  
uchar rec_flag=0;
uchar flag=0;  
sbit sig=P3^0; //检测信号源的高低电平
void Delay_ms(uint ms)// 延时子程序
{
uchar i;     
while(ms--)     
       {
        for(i=0;i<120;i++);     
  }
}
void sendchar(uchar ch)//发送单个字符
{      
SBUF=ch; //送入缓冲区,SBUF串口的缓冲寄存器      
while(ti!=1); //等待发送完毕     
TI=0; //软件清零 ,串口通信工作原理
}
void sendstring(uchar *str)//通过串口发送字符串
{      
while(*str!='\0')    //"\0"的ASCII码为0,作为字符串结束打的标志
{         
sendchar(*str);         
Delay_ms(2);         
str++;     
}   
sendchar(0x0D);   
sendchar(0x0A);
}
void senddata(uchar dat) /*发送数据函数*/
{      
SBUF =dat;      
while(!TI);      
TI = 0;
}
void mingling(uchar zijie,uchar *p) /*发送数组函数*/
{   
uchar m;      
for(m=0;m<zijie;m++)   
{   
senddata(p[m]);   
}
}
void clearBuff(void)  //清空
{      
for(Rx=0;Rx<RxIn;Rx++)     
{           
SystemBuf[Rx]=0x00;     
}      
Rx=0;
}   
/*void Start_GSM(void)
{   
IGT=0;   
Delay_ms(1000);   
IGT=1;
Delay_ms(1000);
} */
void UART_init (void) /*对串口进行初始化*/
{      
TMOD=0x20;  //选择定时器1,T1方式2,用于UART波特率      
PCON=0x00; ///波特率不加倍      
SCON=0x50; //串行工作方式1允许串行接收         
TH1=0xFD; //实验板上晶振位11.0592MHZ,选择波特率为9600      
TL1=0xFD; //在相应计数器上赋值      
EA=1;  //总中断开启      
ES=1;  //串行中断开启      
TR1=1;  //开启定时器1
}   
void receive() interrupt 4 using 1 //通过中断,单片机串口接收TC35回复的数据
{  
if(RI)   //RI为接收中断标志
{   
if(Rx<RxIn)   
{     
SystemBuf[Rx]=SBUF;   
Rx++;   
}   
RI=0;
}
}   
void GSM_INIT(void)  /*初始化TC35模块*/
{  
LOOP:  
Delay_ms(1000);  
sendstring(AT);  
Delay_ms(1000);     
sendstring(ATE);   
Delay_ms(1000);   
sendstring(AT_CNMI);  
Delay_ms(1000);   
sendstring(AT_CSCA);  
Delay_ms(1000);   
clearBuff();      
sendstring(AT_CMGF);   
Delay_ms(1000);   
if((SystemBuf[2]=='O')&&(SystemBuf[3]=='K'))  //判断是否模块初始化成功,成功的话模块会回复"OK"给单片机     
{           //如果单片机没有收到OK,就继续发送初始化指令/   
clearBuff();      
}     
else      
{                        
clearBuff();         
goto LOOP;               
}
}   
void receivedmessage_flag(void)  /*接收短信准备*/  
{  
if((SystemBuf[5]==0x54)&&SystemBuf[6]==0x49)   //如果有新短信来,模块会通过串口向单片机发送字符串, TI  
{              // 此函数的功能是判断是否有新短信来,如果来的话就置位准备接受位标志为1   
rec_flag=1;  
}  
else  
{   
clearBuff();  
}  
clearBuff();
}   
void call(void)
{  
uint x;  
mingling(3,AT12);  
for(x=0;x<11;x++)  
{   
senddata(godphone[x]);  
}  
senddata(0x3b);//打电话的时候需要在电话号面跟随一个分号  
senddata(0x0D);//回车  
}   
void sendmessage(void)
{  
uint x;  
mingling(8,AT7);
for(x=0;x<11;x++)  
{   
senddata(godphone[x]);  
}  
senddata(0x0D);  
Delay_ms(100);  
sendstring(warning);
}   
void main()
{  
//Start_GSM();   
Delay_ms(10000);  
UART_init();  
GSM_INIT();  
while(sig==1&&flag==0)  
{   
while(rec_flag==0&&i<3)//flag=1表示客户端已看到发送过去的短信并回复了get it;系统未收到回复短信则默认客户端没发现收到的短信                        
//当对客户端发送第三次短信时若有回复flag=1 i=3;若无回复则flag=0 i=3   
{  
sendmessage();      
Delay_ms(60000);     
receivedmessage_flag();     
i=i+1;   
}   
if(rec_flag==0&&i==3)   
{     
call();   
}   
i=0;   
flag=1;  
}
}
0
2019-11-8 04:35:23   评论 分享淘帖 邀请回答
5个回答
2019-11-8 06:48:42 评论

举报

2019-11-8 07:03:06 评论

举报

TXD,RXD,GND只需要好单片机连接着三个就可以了,当然也要给TC35模块供电。P1,P2口都可以接传感器啊!!
试过这个,程序应该没错,但还是发送不了。大神,已把细节短信发给你了。希望能帮本人看看,感激不尽。
2019-11-8 07:37:18 评论

举报

2019-11-8 07:53:54 评论

举报

只有小组成员才能发言,加入小组>>

881个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表