电工基础

电工基础知识_电工技术-电工最常见电路

gsm模块如何与单片机通信?(2)

时间:2024-04-01 11:57来源:[db:来源] 作者:admin 点击:
电路见下图只需设计一个TTL转 RS232 电平电路,连接到 MCU 的 UART 口,另一端直接连接到TC35。 2、指令输出的方法 单片机串口设置成模式1(9600,N,8,1),

  电路见下图只需设计一个TTL转RS232电平电路,连接到MCUUART口,另一端直接连接到TC35。

gsm模块如何与单片机通信?

  2、指令输出的方法

  单片机串口设置成模式1(9600,N,8,1),依次将AT+xxx以ASCII码形式输出到UART口;接收TC35的数据采用中断方式。这里给出详细的程序清单(Keil C51),不介绍编程的方法。程序见下:

  //AT指令的定义

  char code AT_Tc35[]=“AT+”; //连机

  char code Bps_Tc35[]=“IPR=38400”; //波特率

  char code Text_Tc35[]=“CMGF=1”; //文本模式

  char code Read_Tc35[]=“CMGR=”; //读信息

  char code Erase_Tc35[]=“CMGD=”; //删除信息

  char code Send_Tc35[]=“CMGS=”; //发送信息

  char code Creg_Tc35[]=“CREG?”; //注册

  //模式设置

  void UART_Init(void)

  {

  SCON=0x50; //01010000b=》1模式scon,#11011000b;

  ES=l;

  }

  //发送-个ASCII

  void SendASC(unsigned char ASC)

  {

  bit es;

  es=ES;

  ES=0;//关闭中断

  TI=0;

  SBUF=ASC;

  while(!TI);

  TI=0;

  ES=es;

  )

  //发送命令到TC35

  void SendToTc35(unsigned char* p,unsigned char Long)

  {

  while(Long--)

  {

  SendASC(*p++);

  }

  }

  // 通讯中断接收程序

  void Rs485_Do(void) interrupt 4 using 1

  {

  if(RI==l)

  {

  RI=0;

  RsBuq[RsPoint++]=SBUF;

  if fRsPoint》=sizeof(RsBuf))

  {

  RsPoint=0;//FlagRs485=0;

  } //数据处理

  }

  }

  // 发送AT连机命令

  char code AT_Code[]=“OK”;

  void Send_AT(void)

  {

  unsigned char *p;

  while(1)

  {

  ClrRsBuf(RsBuf,sizeof(RsBuf));

  SendToTc35(AT_Tc35,2); //“AT”

  SendASC(OVER);

  //************等待应答“ok“

  ES=1; //必须中断

  Delay(50);

  P=strstr(RsBuf,AT_Code);

  if(p!=NULL) break;

  }

  )
(责任编辑:admin)

织梦二维码生成器
------分隔线----------------------------
栏目列表
推荐内容