请问如何用stc单片机启动GPRS模块,并发出相关短信

2020-01-20 18:58发布

最近没事,得到一个sim908的GPRS模块,请问如何用单片机向GPRS发送数据?模块自带的教程在电脑上已经调通,但是不知道如何去通过单片机与它进行通信;还有就是例程中定义了这样一个数组“uchar code tab[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xfd,0xff};//0-9,-,全灭 (共阳字段表)”,关于这个数组还有这样一句代码“   num= 0xff-tab[byte];//共阴”,有没有做过的求解释,我查过这个东西既不是共阳极数码管的码值,也不是共阴极的,在这先谢谢了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
735953120@qq.co
2020-01-20 21:11
这是例程所带的程序:
#include<reg52.h>
#include<absacc.h>
#include<stdio.h>

sbit P2_4=P2^4;
sbit P2_2=P2^2;
//---LED显示控制---------
sbit S1=P1^3;
sbit S2=P1^4;
sbit S3=P1^5;
sbit S4=P1^6;
sbit A1=P0^0;
sbit A2=P0^1;
sbit  WD=P1^0;
sbit  CLK=P1^2;                                 
sbit  EN_LED=P1^1;
//-----------------------

#define uint unsigned int
#define uchar unsigned char

uchar num_c[8],num_d,num_sum,high_t;
uint time_add2,time_add,num_e;

uchar code tab[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xfd,0xff};//0-9,-,全灭 (共阳字段表)


#define RST      0X01
#define CMGF     0X02
#define CMGD     0X03
#define CREG     0X04
#define CMGR     0X05
#define CMGS     0X06
#define CSCA     0X07
#define ATDAT    0X08
#define TC35RET  0X00


uint temp;


void delay(int de_u)
{int u,n;
//10us
for(u=0;u<de_u;u++)
{
for(n=0;n<1000;n++)
{;}
}
}

void Displaybyte(uchar byte)
{   
        uchar num,c;
        num= 0xff-tab[byte];//共阴       
        EN_LED=0;EN_LED=1;       
                for(c=0;c<8;c++)
        {       
                        if(num&0x01)    //(0x80即十进制的128, 二进制的10000000 按位发送)                
                           WD=1;
                        else
                           WD=0;
                        num>>=1;
                        CLK=0;                                  
                          CLK=1;                        
        }
                delay(2);
//                Delay_ms(1);//A0;B0;C0;D0;//CLR_LED;       
}


#include"GSM.h"
void ATE0(void);
void delay_GSM(uint);
void init_serialcom( void );
void send_uart( unsigned char);
void ATNAME(void);
void AT_CMGS(void);
void AT_CSCA(void);
void AT_RST(void);
void AT_CREG(void);
void AT_CMGF(void);
void AT_CMGR(void);
void AT_CMGD(void);
void Init_T0 (void)   
{           
    TMOD = 0x21;   
    TH0 = (65536-10000) /256;
    TL0 = (65536-10000) %256;
    EA = 1;      
    ET0 = 1;
    TR0 = 1;      
}
void Time0_ISR(void)  interrupt 1    using 0
{  
TH0 = (65536-10000) /256; //初始值
TL0 = (65536-10000) %256;


}





main()
{
//--------初始化-------------------
init_serialcom();
//Init_T0();
//--------发三次关闭回显命令----------------
aaaaS1=1;S2=0;S3=0;S4=0;
Displaybyte(0X00);
delay_GSM(100);
ATE0();
Displaybyte(0X01);
delay_GSM(100);
TC35_MAX=0;
ATE0();
Displaybyte(0X02);
delay_GSM(100);
SMS_CONFIG();
//ATE0();
Displaybyte(0X03);
delay_GSM(100);
//------------------------------


for(i_TC35=0;i_TC35<=39;i_TC35++)
{TC35_RE[i_TC35]=0;}
i_TC35_RECE=0;
TC35_MAX=0;

//P0_0是高电平就行这样P01会亮
//

ATE0();
while(1)
{
SEND_MESSAGE();
}



}

一周热门 更多>