系统功能分析
(末尾附文件) 系统功能分析 本系统由STC89C52单片机电路+GPS模块电路+GSM模块SIM800A+指示灯电路+电源电路组成。 1、系统上电后,系统向特定手机号码发送短信,短信内容为系统的当前经纬度信息。40s左右发一次。 2、如果需要立刻发送经纬度信息,直接按板载按键即可立刻发送经纬度数据,不用等待40s。 3、短信发送及初始化有状态指示灯指示。 4、GSM模块是SIM800A,该模块和SIM900A电路程序完全兼容外观外形一模一样。 3.1.2系统总体结构 本系统具体框图如下图所示: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200720092501127.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzUyODA2Ng==,size_16,color_FFFFFF,t_70)
模块电路的设计
5V电源电路设计 本系统选择5V直流电源作为系统总电源,为整个系统供电,电路简单、稳定。DC为电源的DC插座,可以直接接USB电源线,一端插在DC插座上,另外一端可以插在5V电源上,如电脑USB、充电宝、手机充电器等等。LED为红色LED灯,作为系统是否有点的指示灯,电阻为1K电阻,起到限流作用,保护LED灯,以防电流过大烧坏LED灯。SW为自锁开关,开关按下后,红灯亮,此时系统电源5V直流输出。开关再次按下后,红灯灭,此时系统电源无5V电源输出。 GSM_SIM800A模块电路设计 GSM模块,是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上,具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。GSM模块具有发送SMS短信,语音通话,GPRS数据传输等基于GSM网络进行通信的所有基本功能。简单来讲,GSM模块加上键盘、显示屏和电池,就是一部手机。 SIM800A是SIMCOM公司推出的一款高性能工业级 GSM/GPRS 模块, 该模块具有极高的性价比,在双频的市场中占据极大份额。 GSM_SIM800A模块采用高性能工业级GSM/GPRS模块:SIM800A,工作频段:GSM900/1800MHz。硬件设计在官方设计上加以优化,采用高效开关电源供电,SIM卡采用主流的卡座,质量更坚固。GSM_SIM800A模块在外围硬件的设计上参考了SIM800A 模块的硬件设计指南,对板子的电源、保护和抗干扰上做足了功夫。电源采用开关电源模块供电,电源利用效率高。
系统软件设计
#include
#include
#include
#include "delay.h"
/**The UART1 stage1**/
#define STAGE_SOHE 0x01
#define STAGE_TYPE 0x02
#define STAGE_NONE 0x03
#define STAGE_DATA 0x04
#define INIT 0xFF
#define TRUE 0x00
#define FALSE 0x01
sbit LED = P1^0;//指示灯
sbit key =P2^0;//按键
unsigned char Lin0_No[13]="N:000.000000";//显示北纬
unsigned char Lin1_Ea[12]="E:000.000000";//显示东经
unsigned long xdata time_20ms=0;
unsigned char xdata devide_flag; //GPS数据逗号分隔符
unsigned char xdata speed_end; //收速度数据结束标志
unsigned char xdata dir_end; //收方向角数据结束标志
unsigned char xdata sysmode_GPS=FALSE; //gps有效无效标志
unsigned char xdata ew_flag; //东西标志
unsigned char xdata ns_flag; //南北标志
unsigned char xdata gps_infor_weijing[17]; //暂存经纬度 格式是以度分秒的是形式
unsigned char xdata gps_infor_speed[4]; //暂存速率
unsigned char xdata gps_infor_time[6]; //时间暂存
unsigned char xdata gps_infor_date[6]; //日期暂存
unsigned char xdata gps_infor_dir[3]; //方向暂存
unsigned char xdata recv1_step=STAGE_SOHE; //串口接收指令步骤
unsigned char xdata uart1_r_buf; //串口的缓存
unsigned char xdata rev1_buf_busy; //串口接收忙碌标志
unsigned char xdata temp1_buf[85]; //串口接收数组
unsigned int xdata record1=0; //串口接收计数
unsigned char i ;
unsigned char dealGpsMes=FALSE; //gps定时处理标志
unsigned char reportTime = 0;//短信上报时间 计数
void Init_Timer0(void);//函数声明
void gpsDealfun(void);
void uartSendStr(unsigned char *s,unsigned char length);
void UART_Init(void);
void uartSendByte(unsigned char dat);
void main (void)
{
Init_Timer0(); //定时器0初始化
UART_Init(); //串口初始化
LED = 0; //打开led
key = 1;
for(i=0;i 2)
{
gps_infor_speed[1]=gps_infor_speed[record1-3];
}
else
{
gps_infor_speed[1]=0x30;
}
if(record1 > 3)
{
gps_infor_speed[0]=gps_infor_speed[record1-4];
}
else
{
gps_infor_speed[0]=0x30;
}
}
}
if(devide_flag == 8)
{
if(dir_end == 0x00)
{
if((record1 > 0) && (uart1_r_buf != '.'))
{
gps_infor_dir[record1-1]=uart1_r_buf; //存储方向
}
else if(uart1_r_buf == '.')
{
record1--;
dir_end=0xff;
}
}
else if(dir_end == 0xff)
{
dir_end=0xfe;
if(record1 == 2)
{
gps_infor_dir[2]=gps_infor_dir[record1-2];
gps_infor_dir[1]=0x30;
gps_infor_dir[0]=0x30;
}
if(record1 == 3)
{
gps_infor_dir[2]=gps_infor_dir[record1-2];
gps_infor_dir[1]=gps_infor_dir[record1-3];
gps_infor_dir[0]=0x30;
}
}
}
if(devide_flag == 9)
{
if((record1 > 0) && (record1 < 7))
{
gps_infor_date[record1-1]=uart1_r_buf;
}
}
if(uart1_r_buf == 0x0d)
{
recv1_step=STAGE_SOHE; //接收完成 并信号确定
record1=0; //恢复初始化状态 为下一次准备
devide_flag=0;
sysmode_GPS=TRUE; //置位 GPS 信号为正确
}
}
break;
}
}
if(TI) //如果是发送标志位,清零
TI=0;
}
链接:https://pan.baidu.com/s/1FSMLsaumjvjNPuRfHn4CWw 提取码:kpye
|