打印

关于STC系列单片机与sim300通信问题求教!!!

[复制链接]
2341|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
夜更浓浓|  楼主 | 2011-3-27 19:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用PC测试sim300可以发信息了 所以应该可以确认sim300没问题
我的连线是单片机R连sim300的T T连R!应该对吧?
程序如下 编译也没问题 可就是发不出信息 请高手帮忙看看是什么问题 小弟不胜感激…
#include <reg52.h>
#include <absacc.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
   
sbit Send_SMS_Text_key=P1^4;     //发Text格式短信按键
uchar code PhoneCall[]="15076650982";
uchar code SMS_send[]= "AT+CMGS=";  
uchar code SMS_TXET[]= "AT+CMGF=1";//发送数据为TXET格式
            
uchar Sms[]="test ok!!";
uchar Byte_num[]="20";
uchar Sms2_Pdu[]="0891683108200205F011000B813115423973F40008A70600204F60597D0x1a"; //内容是:您好
delay(uint ms)// 延时子程序
{      
uchar i;
while(ms--)
{
  for(i=0;i<120;i++);
}
}
/***********************************************************
函数名称:Print_Char
函数功能:发送单个字符     
          入口参数:ch      出口参数:无
***********************************************************/
Print_Char(uchar ch)//发送单个字符
{
SBUF=ch; //送入缓冲区
while(TI==0); //等待发送完毕
TI=0; //软件清零
}
/***********************************************************
函数名称:Print_Str
函数功能:发送字符串     
          入口参数:*str    出口参数:无
***********************************************************/
Print_Str(uchar *str)//发送字符串
{
while(*str!='\0')
{
Print_Char(*str++);
    }
}     

/***********************************************************
函数名称:Ini_UART
函数功能:串口初始化、定时器初始化     
          入口参数:无     出口参数:无
***********************************************************/
Ini_UART(void)//串口初始化、定时器初始化
{
TMOD = 0x20;      //T1方式2,用于UART波特率
TH1 = 0xFD;       //UART波特率设置:9600
TL1 = 0xFD;
SCON = 0x50;  ////UART方式1:8位UART;   REN=1:允许接收
PCON = 0x00;
TF1 = 1;     // 中断标志位
TR1 = 1;    // 启动定时器1   
ES=1;       //启动串行口中断
ET0=1;      //启动中断功能
EA=1;
}
/***********************************************************
函数名称:GSM_TEXT
函数功能:设置发送数据为TXET格式      
          入口参数:无     出口参数:无
***********************************************************/

void GSM_TEXT()   //设置GSM为TEXT格式
{   
     Print_Str(SMS_TXET);   //发送设置指令
     Print_Str("\r\n");   //发送回车
      ES=1;
     delay(1000);
}
/***********************************************************
函数名称:GSM_TEXT_SMS
函数功能:发送数据为TXET格式的短信内容      
          入口参数:无     出口参数:无
***********************************************************/

void GSM_TEXT_SMS()  //发送TEXT格式内容
{   
     
     Print_Str(SMS_send);
  Print_Str(PhoneCall);
     Print_Str("\r\n");   //发送回车
     Print_Str(Sms);
     Print_Char(0x1a);  //发送短息内容结束符对应的ASCII为0x1a
     ES=1;
     delay(1000);
     delay(5000);   
}
/***********************************************************
函数名称:main
函数功能:主函数
***********************************************************/
void main()
{
Ini_UART();
while(1)
{  
   
   
     if(!Send_SMS_Text_key)
        {
    GSM_TEXT();
    GSM_TEXT_SMS();            
         }
   
     
}
}

相关帖子

沙发
johnson336| | 2015-3-29 14:38 | 只看该作者
发送TEST文本格式的短信,短信内容是unicode码的话,手机号码也需要转成unicode码的,不然发不出去。

使用特权

评论回复
板凳
johnson336| | 2015-3-29 14:42 | 只看该作者
        Uart1Sends("AT+CMGF=1\r\n");//设置使用TEXT格式发送短信,短信有两种格式,另外一种是UDP
        DelaySec(1);//延时3秒
        Uart1Sends("AT+CSCS=\"UCS2\"\r\n");//使用GSM
        DelaySec(1);//延时3秒
        Uart1Sends("AT+CSMP=17,167,0,24\r\n");//设备短信模式
        DelaySec(1);//延时3秒
        Uart1Sends("AT+CMGS=\"003X003X003X003X003X003X003X003X003X003X003X\"\r\n");//设置发送的号码,自己修改成像发送的号码
        DelaySec(1);//延时5秒
        Uart1Sends(pbuf);//发送的内容。
        Uart1Send(0x1a); //告诉模块内容发送完了。
        11个X顺序填入你的电话号码就可以了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

12

帖子

1

粉丝