• 大小: 42KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-12-17
  • 语言: 其他
  • 标签: SIM900A  

资源简介

STC51单片机控制SIM900A数据发送与接收,亲测可用

资源截图

代码片段和文件信息


#include 
#include 
#include “STC12C5A60S2.h“

//! 服务器IP地址与端口号注意用户需要将此IP替换为
//! 自己服务器的公网IP地址
#define TCPIP_SERVER_IPADDR “115.171.51.103“
#define TCPIP_SERVER_PORT   “8088“

//! 串口发送与接收缓冲区大小
#define TTY_MAX_BUFFER_SIZE 256
//! 串口发送与接收缓冲区
char ttyBuffer[TTY_MAX_BUFFER_SIZE];

//! TCPIP发送与接收缓冲区大小
#define TCPIP_MAX_BUFFER_SIZE 256 
//! TCPIP发送与接收缓冲区
char tcpipBuffer[TCPIP_MAX_BUFFER_SIZE];

//! 串口0初始化函数 此串口用作接收终端控制命令
//! 晶振频率:22.1184MHz
//! 串口0波特率:9600
void Uart0_Init(void)   //9600bps@22.1184MHz
{
  PCON |= 0x80;       //使能波特率倍速位SMOD
  SCON = 0x50;        //8位数据可变波特率
  AUXR |= 0x40;       //定时器1时钟为Fosc即1T
  AUXR &= 0xfe;       //串口1选择定时器1为波特率发生器
  TMOD &= 0x0f;       //清除定时器1模式位
  TMOD |= 0x20;       //设定定时器1为8位自动重装方式
  TL1 = 0x70;         //设定定时初值
  TH1 = 0x70;         //设定定时器重装值
  ET1 = 0;            //禁止定时器1中断
  TR1 = 1;            //启动定时器1
}

//! 串口0字符串输出函数
//! 参数说明:pString为字符串缓冲区首地址
void Uart0_PutString(char* pString)

  unsigned short i = 0; 
  while(pString[i]) 
  {     
    SBUF = pString[i++];
    while(!TI);
    TI = 0;
  }
}

//! 串口0字符串读取函数 获取一行数据 遇到换行符为止
//! 参数说明:pBuffer为缓冲区首地址 nBufferLen为缓冲区大小 nTimeOut为超时时间
//!          如果nTimeOut=0 那么函数会阻塞 直到缓冲区满或遇到换行符
unsigned short Uart0_GetALine(char* pBuffer unsigned char nBufferLen unsigned char nTimeOut)
{
  char ch = 0;
  unsigned int i = 0 j = 0 k = 0;

  k = 20000*nTimeOut;
  for(i = 0 j = 0; i < nBufferLen; i++)
  {
    while(1)
    {
      if(RI)
      {
        RI = 0;         //清除接收完成标志
        pBuffer[i] = SBUF;
        //! 回显给终端显示
        SBUF = pBuffer[i];
        while(!TI);
        TI = 0;
        if(pBuffer[i] == 0x0d)
        {  
          pBuffer[i] = 0x00;
          return i;
        }
        break;
      }
      else if(nTimeOut == 0)
        continue;
      else
        j++;

      if(j == k)
        break;
    }
  }

  return i;
}

//! 串口1初始化函数 此串口用作控制GSM模块
//! 晶振频率:22.1184MHz
//! 串口1波特率:9600
void Uart1_Init(void)   //9600bps@22.1184MHz
{
  AUXR |= 0x08;  //使能波特率倍速位S2SMOD
  S2CON = 0x50;  //8位数据可变波特率
  BRT = 0x70;    //设定独立波特率发生器重装值
  AUXR |= 0x04;  //独立波特率发生器时钟为Fosc即1T
  AUXR |= 0x10;  //启动独立波特率发生器
}

//! 串口1字符串输出函数
//! 参数说明:pString为字符串缓冲区首地址
//! 备注:此函数一方面向串口1发送数据
//!       另一方面也向串口0发送数据
//!       目的是为了方便调试
void Uart1_PutString(char* pString)

  unsigned char i = 0;

  //! 向串口1写数据
  i = 0;
  while(pString[i])
  {     
    //! 向串口0写数据目的是方便调试
    SBUF = pString[i];
    while(!TI);
    TI = 0;

    S2BUF = pString[i++];
    while(!(S2CON&S2TI));
    S2CON &= ~S2TI;
  }
}

/**
 * @func Uart1_GetString
 * @author SwanTech (2011/12/14)
 * @param pBuffer 缓冲区地址
 * @param nBufferLen 缓冲区长度
 * @param nTimeOut 读取返回数据的超时时间
 * @return unsigned short 成功: 返回接收到的字节数. 失败: 返回-1
 * @remark 注意nTimeOut超时时间从接收到第一个字符开始计数
 */
unsigned short Uart1_GetString(char* pBuffer unsigned short nBufferLen unsigned short nTimeOut

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      11516  2011-11-02 21:22  STC51_For_SIM900_TCPIPDemo\STC12C5A60S2.h

     文件      28062  2011-12-28 21:36  STC51_For_SIM900_TCPIPDemo\SwanTech_TCPIP_ForSIM900

     文件      16385  2012-08-14 17:18  STC51_For_SIM900_TCPIPDemo\SwanTech_TCPIP_ForSIM900.c

     文件      17992  2011-12-28 21:36  STC51_For_SIM900_TCPIPDemo\SwanTech_TCPIP_ForSIM900.hex

     文件      26475  2011-12-28 21:36  STC51_For_SIM900_TCPIPDemo\SwanTech_TCPIP_ForSIM900.LST

     文件      33785  2011-12-28 21:36  STC51_For_SIM900_TCPIPDemo\SwanTech_TCPIP_ForSIM900.M51

     文件      31744  2011-12-28 21:36  STC51_For_SIM900_TCPIPDemo\SwanTech_TCPIP_ForSIM900.OBJ

     文件        744  2011-12-28 21:36  STC51_For_SIM900_TCPIPDemo\SwanTech_TCPIP_ForSIM900.Opt

     文件        254  2012-08-14 16:24  STC51_For_SIM900_TCPIPDemo\SwanTech_TCPIP_ForSIM900.plg

     文件       2064  2011-12-17 19:06  STC51_For_SIM900_TCPIPDemo\SwanTech_TCPIP_ForSIM900.Uv2

     目录          0  2011-12-28 21:36  STC51_For_SIM900_TCPIPDemo

----------- ---------  ---------- -----  ----

               169021                    11


评论

共有 条评论