gps模块.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:4 大小:34KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

#include<reg51.h>//引用标准库的头文件#include<stdio.h>#include<absacc.h>#defineucharunsignedchar#defineuintunsignedintucharStrGpsLgd[8];//存放经度数据uinti;uintRecFlag;//记录标志uintIGpsLgd;//经度数据计数变量uintNumComa;//逗号计数变量voidDisableAllOut();//配置GPS模块禁用所有输出语句子函数voidEnableGPRMC();//配置GPS模块使能$GPRMC输出语句子函数/*延时t毫秒*/voiddelay(uintt){uinti;while(t--){/*对于12MHz时钟,约延时1ms*/for(i=0;i<125;i++){}}}/*串口接收中断*/serial()interrupt4using1{RI=0;//清除中断标志位/*判断是否收到GPRMC格式语句的第一个字符"$",其数值为0x24,收到后开始记录数据,并设置记录标志RecFlag。*/if(SBUF==0x24){RecFlag=1;i=0;IGpsLgd=0;//经度数据计数变量置0NumComa=0;//逗号计数变量置0}/*开始处理GPRMC中的数据信息*/if(RecFlag==1){if(SBUF==0x2c)NumComa++;/*第5个逗号之后的字符属于经度数据*/if(NumComa==3){StrGpsLgd[IGpsLgd]=SBUF;//存入字符串StrGpsIGpsLgd++;}/*判断是否收到GPRMC格式语句的字符"*",其数值为0x2a,收到则结束记录*/if(SBUF==0x2a){StrGpsLgd[IGpsLgd]='\0';//字符串的结束符RecFlag=0;IGpsLgd=0;//经度数据计数变量置0NumComa=0;//逗号计数变量置0/*延时半秒钟后重新接收新的GPS定位信息中的经度信息*/REN=0;delay(500);//延时500msREN=1;}}}voidmain(){/*初始化串口*/TMOD=0x20;TL1=0xfd;TH1=0xfd;SCON=0x40;//方式1:10位异步收发,波特率由定时器控制。REN=0。PCON=0x00;//SMOD=0IE=0x90;//EA=1,ES=1TR1=1;//定时器1启动DisableAllOut();EnableGPRMC();delay(1000);//延时1sREN=1;//REN=1,开始接收数据while(1);}/*配置GPS模块禁用所有输出语句*/voidDisableAllOut(){/*发送语句:$PGRMO,,2*/TI=0;SBUF=0x24;//发送"$"while(!TI);TI=0;SBUF='P';//发送"P"while(!TI);TI=0;SBUF='G';//发送"G"while(!TI);TI=0;SBUF='R';//发送"R"while(!TI);TI=0;SBUF='M';//发送"M"while(!TI);TI=0;SBUF='O';//发送"O"while(!TI);TI=0;SBUF=',';//发送","while(!TI);TI=0;SBUF=',';//发送","while(!TI);TI=0;SBUF='2';//发送"2"while(!TI);TI=0;SBUF=0x2a;//发送"*"while(!TI);TI=0;}/*配置GPS模块使能$GPRMC输出语句*/voidEnableGPRMC(){/*发送语句:$PGRMO,GPRMC,1*/TI=0;SBUF=0x24;//发送"$"while(!TI);TI=0;SBUF='P';//发送"P"while(!TI);TI=0;SBUF='G';//发送"G"while(!TI);TI=0;SBUF='R';//发送"R"while(!TI);TI=0;SBUF='M';//发送"M"while(!TI);TI=0;SBUF='O';//发送"O"while(!TI);TI=0;SBUF=',';//发送","while(!TI);TI=0;SBUF='G';//发送"G"while(!TI);TI=0;SBUF='P';//发送"P"while(!TI);TI=0;SBUF='R';//发送"R"while(!TI);TI=0;SBUF='M';//发送"M"while(!TI);TI=0;SBUF='C';//发送"C"while(!TI);TI=0;SBUF=',';//发送","while(!TI);TI=0;SBUF='1';//发送