GPS接受程序Word文件下载.docx

上传人:b****5 文档编号:20787227 上传时间:2023-01-25 格式:DOCX 页数:28 大小:45.85KB
下载 相关 举报
GPS接受程序Word文件下载.docx_第1页
第1页 / 共28页
GPS接受程序Word文件下载.docx_第2页
第2页 / 共28页
GPS接受程序Word文件下载.docx_第3页
第3页 / 共28页
GPS接受程序Word文件下载.docx_第4页
第4页 / 共28页
GPS接受程序Word文件下载.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

GPS接受程序Word文件下载.docx

《GPS接受程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《GPS接受程序Word文件下载.docx(28页珍藏版)》请在冰豆网上搜索。

GPS接受程序Word文件下载.docx

uchari=0;

ucharch;

chartime[5];

Lcd_DispLine(0,0,date);

//年月日

Int_To_Str(GPS.D.year,time);

//将年转换成字符串,存在time中

Lcd_SetPos(0,0);

//设置显示地址

if(strlen(time)==4)//判断接收数据是否有效,有效则显示

{

i=0;

while(time[i]!

='

\0'

{

ch=time[i++];

Lcd_WriteDat(ch);

//显示年

}

}

Int_To_Str(GPS.D.month,time);

Lcd_SetPos(0,3);

if(strlen(time)==2)//判断接收数据是否有效,有效则显示

ch=time[i++];

Int_To_Str(GPS.D.day,time);

Lcd_SetPos(0,5);

if(strlen(time)==2)//判断接收数据是否有效,有效则显示

Int_To_Str(GPS.D.hour,time);

Lcd_SetPos(1,1);

if(strlen(time)==2)//判断接收数据是否有效,有效则显示

Lcd_WriteDat('

'

);

:

'

Int_To_Str(GPS.D.minute,time);

Lcd_SetPos(1,3);

if(strlen(time)==2)//判断接收数据是否有效,有效则显示

Int_To_Str(GPS.D.second,time);

Lcd_SetPos(1,5);

}

voidGPS_DisplayOne(void)//第一屏

ucharch,i;

charinfo[10];

ET0=0;

//T0的溢出中断允许位,禁止T0的溢出中断

clr_screen();

//Lcd_WriteCmd(0x01);

//清屏

GPS_DispTime();

//显示日期,时间

if(GPS.NS=='

N'

)//判断是北纬还是南纬

Lcd_DispLine(2,0,beiwei);

elseif(GPS.NS=='

S'

Lcd_DispLine(2,0,nanwei);

if(GPS.EW=='

E'

)//判断是东经还是西经

Lcd_DispLine(3,0,dongjing);

elseif(GPS.EW=='

W'

Lcd_DispLine(3,0,xijing);

Int_To_Str(GPS.latitude_Degree,info);

//纬度

Lcd_SetPos(2,2);

if(strlen(info)==2)

{//只有正常显示纬度,才显示纬分

while(info[i]!

ch=info[i++];

Lcd_WriteDat('

Lcd_WriteDat(0xA1);

Lcd_WriteDat(0xE3);

//显示度的符号

Int_To_Str(GPS.latitude_Cent,info);

//纬分

if(strlen(info)==2)

{//只有正常显示纬分,才显示纬秒

i=0;

while(info[i]!

{

ch=info[i++];

Lcd_WriteDat(ch);

}

Lcd_WriteDat(0xA1);

Lcd_WriteDat(0xE4);

//显示秒的符号

Int_To_Str(GPS.latitude_Second,info);

//纬秒

if(strlen(info)==2)

i=0;

while(info[i]!

{

ch=info[i++];

Lcd_WriteDat(ch);

}

}

}

Int_To_Str(GPS.longitude_Degree,info);

//经度

if(strlen(info)==3)

Lcd_DispLine(3,2,info);

Int_To_Str(GPS.longitude_Cent,info);

//经分

Lcd_DispLine(3,5,info);

Int_To_Str(GPS.longitude_Second,info);

//经秒

Lcd_DispLine(3,7,info);

ET0=1;

voidGPS_DisplayTwo(void)//第二屏用于显示单位

Lcd_DispLine(0,0,sudu);

Lcd_DispLine(1,0,hangxiang);

Lcd_DispLine(2,0,gaodu);

Lcd_DispLine(3,0,haiba);

Show_Float(GPS.speed,0,3);

Lcd_DispLine(0,6,kmperhour);

Show_Float(GPS.direction,1,3);

Lcd_DispLine(1,6,du);

Show_Float(GPS.height_ground,2,3);

Lcd_DispLine(2,6,meter);

Show_Float(GPS.height_sea,3,3);

Lcd_DispLine(3,6,meter);

voidShow_Float(floatfla,ucharx,uchary)

intintegar;

charInfo[10],ch;

uchari;

Lcd_SetPos(x,y);

integar=(int)fla;

//显示整数部分

Int_To_Str(fla,Info);

//显示整数部分

i=0;

while(Info[i]!

='

ch=Info[i++];

Lcd_WriteDat(ch);

.'

//显示小数点

fla=fla-integar;

//显示小数部分

fla=fla*10;

//0.1//显示0.1

integar=(int)fla;

//改变fla的值,使fla总是小于1

ch=integar+0x30;

Lcd_WriteDat(ch);

fla=fla*10;

//0.01//显示0.01

ch=integar+0x30;

GPS程序:

GPS.h"

LCD.h"

#include<

string.h>

ucharcodeinit1[]={"

BASE-MCUGPS终端"

};

ucharcodeinit2[]={"

商院电信091班"

ucharcodeinit3[]={"

GPS初始化......"

ucharcodeinit4[]={"

搜索定位卫星...."

staticucharGetComma(ucharnum,char*str);

staticdoubleGet_Double_Number(char*s);

//得到双精度的数据

staticfloatGet_Float_Number(char*s);

//得到单精度的数据

staticvoidUTC2BTC(DATE_TIME*GPS);

//格林时间到北京时间的转换

voidGPS_Init(void)//GPS初始化

Lcd_DispLine(0,0,init1);

Lcd_DispLine(1,0,init2);

Lcd_DispLine(2,0,init3);

Lcd_DispLine(3,0,init4);

intGPS_RMC_Parse(char*line,GPS_INFO*GPS)//运输定位数据最大帧70

{//*GPS为结构体类型的指针

ucharch,status,tmp;

floatlati_cent_tmp,lati_second_tmp;

//经度的分、秒临时变量

floatlong_cent_tmp,long_second_tmp;

//纬度的分、秒临时变量

floatspeed_tmp;

//速度的临时变量

char*buf=line;

ch=buf[5];

status=buf[GetComma(2,buf)];

//定位状态给status,判断是否是A,

if(ch=='

C'

)//如果第五个字符是C,($GPRMC)推荐最小定位信息

if(status=='

A'

)//如果数据有效,则分析‘V’无效,‘A’有效

GPS->

NS=buf[GetComma(4,buf)];

EW=buf[GetComma(6,buf)];

GPS->

latitude=Get_Double_Number(&

buf[GetComma(3,buf)]);

longitude=Get_Double_Number(&

buf[GetComma(5,buf)]);

latitude_Degree=(int)GPS->

latitude/100;

//分离纬度

lati_cent_tmp=(GPS->

latitude-GPS->

latitude_Degree*100);

latitude_Cent=(int)lati_cent_tmp;

lati_second_tmp=(lati_cent_tmp-GPS->

latitude_Cent)*60;

latitude_Second=(int)lati_second_tmp;

longitude_Degree=(int)GPS->

longitude/100;

//分离经度

long_cent_tmp=(GPS->

longitude-GPS->

longitude_Degree*100);

longitude_Cent=(int)long_cent_tmp;

long_second_tmp=(long_cent_tmp-GPS->

longitude_Cent)*60;

longitude_Second=(int)long_second_tmp;

speed_tmp=Get_Float_Number(&

buf[GetComma(7,buf)]);

//速度(单位:

海里/时)

speed=speed_tmp*1.85;

//1海里=1.85公里

direction=Get_Float_Number(&

buf[GetComma(8,buf)]);

//角度

D.hour=(buf[7]-'

0'

)*10+(buf[8]-'

//时间

D.minute=(buf[9]-'

)*10+(buf[10]-'

D.second=(buf[11]-'

)*10+(buf[12]-'

tmp=GetComma(9,buf);

D.day=(buf[tmp+0]-'

)*10+(buf[tmp+1]-'

//日期

D.month=(buf[tmp+2]-'

)*10+(buf[tmp+3]-'

D.year=(buf[tmp+4]-'

)*10+(buf[tmp+5]-'

)+2000;

UTC2BTC(&

GPS->

D);

return1;

}

return0;

intGPS_GGA_Parse(char*line,GPS_INFO*GPS)//全球定位数据,最大帧为72

{//丛这个数据得到海拔的数据

ucharch,status;

ch=buf[4];

G'

)//$GPGGA丛这个数据得到海拔的数据

if(status!

'

height_sea=Get_Float_Number(&

buf[GetComma(9,buf)]);

height_ground=Get_Float_Number(&

buf[GetComma(11,buf)]);

staticfloatStr_To_Float(char*buf)//字符串到单精度的转换函数

floatrev=0;

floatdat;

intinteger=1;

char*str=buf;

//

inti;

while(*str!

switch(*str)

case'

dat=0;

break;

1'

dat=1;

2'

dat=2;

3'

dat=3;

4'

dat=4;

5'

dat=5;

6'

dat=6;

7'

dat=7;

8'

dat=8;

9'

dat=9;

dat='

if(dat=='

integer=0;

i=1;

str++;

continue;

if(integer==1)

rev=rev*10+dat;

else

rev=rev+dat/(10*i);

i=i*10;

str++;

returnrev;

staticfloatGet_Float_Number(char*s)

charbuf[10];

floatrev;

i=GetComma(1,s);

i=i-1;

strncpy(buf,s,i);

buf[i]=0;

rev=Str_To_Float(buf);

staticdoubleStr_To_Double(char*buf)//字符串到双精度的转换函数

doublerev=0;

doubledat;

staticdoubleGet_Double_Number(char*s)

doublerev;

rev=Str_To_Double(buf);

staticucharGetComma(ucharnum,char*str)

uchari,j=0;

intlen=strlen(str);

//字符串的长度

for(i=0;

i<

len;

i++)

if(str[i]=='

)//计算字符串中的逗号的个数

j++;

if(j==num)

returni+1;

//把逗号后的字符下标值返回

ret

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1