最近没事,得到一个sim908的GPRS模块,请问如何用单片机向GPRS发送数据?模块自带的教程在电脑上已经调通,但是不知道如何去通过单片机与它进行通信;还有就是例程中定义了这样一个数组“uchar code tab[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xfd,0xff};//0-9,-,全灭 (共阳字段表)”,关于这个数组还有这样一句代码“ num= 0xff-tab[byte];//共阴”,有没有做过的求解释,我查过这个东西既不是共阳极数码管的码值,也不是共阴极的,在这先谢谢了
#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();
}
}
一周热门 更多>