有人做过单片机和3G模块的通信吗?现在手头上有STC89C52和华为的MU-509华为手机传p3 。想问一下它真的和TC35i是太平洋在线xg111xg111net企业邮局一样用的吗?目前用XP的超级终端试了太平洋在线一下AT指令,能发短信和接电话。接下来想通过单片机控制3G模块发短信,就只接了TXDO、RXD1、VUBS、GND,找了一些SIM900的程序,并不能用,感觉接线和程序都应该有问题。该怎么接线啊。。求大神给一点意见,万分感谢!!!
这是单片机c52的程序
#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=P3^0; //发Text格式短信按键
sbit Send_SMS_PDU_key=P3^1; //发PDU格式短信按键
sbit LED0=P1^0;
sbit LED1=P1^1;
sbit LED2=P1^2;
sbit LED3=P1^3;
sbit LED4=P1^4;
sbit LED5=P1^5;
sbit LED6=P1^6;
sbit LED7=P1^7;
uchar code PhoneCall[]="18370993767";
uchar code SMS_send[]= "AT+CMGS=";
uchar code SMS_TXET[]= "AT+CMGF=1";//发送数据为TXET格式
uchar code SMS_PDU[]= "AT+CMGF=0";//发送数据为PDU格式
uchar code Sms[]="test ok!!";
uchar code Byte_num[]="20"; //短信内容字节长度
uchar code Sms2_Pdu[]="0891683108200105F011000D91688173905904F10004000168"; //(8173903967F7)括号里的数为接收短信的手机号码 内容是:您好
delay(uint ms)// 延时子程序
uchar i;
while(ms--)
for(i=0;i<120;i++);
函数名称:Print_Char
函数功能:发送单个字符
入口参数:ch 出口参数:无
Print_Char(uchar ch)//发送单个字符
SBUF=ch; //送入缓冲区
while(TI!=1); //等待发送完毕
TI=0; //软件清零
函数名称:Print_Str
函数功能:发送字符串
入口参数:*str 出口参数:无
Print_Str(uchar *str)//发送字符串
while(*str!='0')
Print_Char(*str);
str++;
函数名称:Ini_UART
函数功能:串口初始化、定时器初始化
入口参数:无 出口参数:无
Ini_UART(void)//串口初始化、定时器初始化
SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr
//UART为模式1华为手机传p3 ,8位数据,允许接收
TMOD |= 0x21 ; //TMOD: timer 1, mode 2, 8-bit reload
//定时器1为模式2,8位自动重装
PCON |= 0x80 ; //SMOD=1;
TH1 = 0xFD ; //Baud:19200 fosc="11".0592MHz
IE |= 0x90 ; //Enable Serial Interrupt
TR1 = 1 ; // timer 1 run
TI=1;
函数名称:GSM_TEXT
函数功能:设置发送数据为TXET格式
入口参数:无 出口参数:无
void GSM_TEXT() //设置GSM为TEXT格式
Print_Str(SMS_TXET); //发送设置指令
Print_Str("rn"); //发送回车
ES=1;
delay(3000);
函数名称:GSM_TEXT_SMS
函数功能:发送数据为TXET格式的短信内容
入口参数:无 出口参数:无
void GSM_TEXT_SMS() //发送TEXT格式内容
Print_Str(SMS_send);
Print_Str(PhoneCall);
Print_Str("rn"); //发送回车
delay(3000);
Print_Str(Sms);
Print_Char(0x1a); //发送短息内容结束符对应的ASCII为0x1a
ES=1;
delay(1000);
delay(5000);
函数名称:GSM_PDU
函数功能:设置发送数据为PDU格式
入口参数:无 出口参数:无
void GSM_PDU() //设置GSM为PDU格式
Print_Str(SMS_PDU); //发送设置指令
Print_Str("rn"); //发送回车
ES=1;
delay(1000);
函数名称:GSM_PDU_SMS
函数功能:发送数据为PDU格式的短信内容
入口参数:无 出口参数:无
void GSM_PDU_SMS() //发送PDU格式内容
Print_Str(SMS_send);
Print_Str(Byte_num);
Print_Str("rn"); //发送回车
delay(3000);
Print_Str(Sms2_Pdu);
//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();
LED0=!LED0;
else if(!Send_SMS_PDU_key)
GSM_PDU();
GSM_PDU_SMS();
LED1=!LED1;