资源简介
单片机51读取GPS NMEA0183格式及解析;uart.h ,uart.c串口中断程序;gps.c,gps.h 读取GPS NMEA数据及解析位置,时间,和卫星状态。主要包括了GGA和RMC数据读取及解析;时区调整。采用的是upsd3300单片机(51系列);
代码片段和文件信息
/*************************************************/
//项 目:水利数码通
//文件名:UART.C
//功 能: 串口0、1数据收发处理,软件串口处理
//作 者:杨世峰
//日 期:2004-03-13
/*************************************************/
#include “upsd3300.h“
#include “hardware.h“
#include “gps.h“
#include “uart.h“
#include “string.h“
#include “const.h“
//////////////////////////////////
//====================变量定义=====================
extern uchar idata ucGpsCommandStatus;//GPS信息处理状态机
extern uchar xdata ucGPSCommand[8];//GPS命令标识头
extern uchar xdata ucGPSDataBuff[82];//GPS数据缓存
extern uchar xdata ucCheckSum[2];//GPS命令校验字节
extern uchar idata ucGPSBuffCnt;
//每月最大天数表
extern uchar xdata GPS_Date[];
extern uint idata unInBufCntComm1; //缓冲区计数
extern union ByteToFloatOrLong xdata ByteChang;
///////////////////////////////////
extern INFO_GPS xdata InfoGPS;
extern INFO_GPS xdata NowInfoGPS;//实时gps 信息
extern INFO_STAR xdata ucSNR[12];
////////////////////////////////////
//=================================================
//GPS数据处理主循环
//=================================================
void GPS_ProcessNMEA(void)
{
uchar idata uch0;
while(unInBufCntComm1)
{
switch (ucGpsCommandStatus)
{
case 0:
{
ReadCharComm1(&uch0);
if (uch0==‘$‘)
{
ucGpsCommandStatus++;
}
break;
}
case 1:
{
ReadCharComm1(&uch0);
if (uch0==‘G‘)
ucGpsCommandStatus++;
else
ucGpsCommandStatus=0;
break;
}
case 2:
{
ReadCharComm1(&uch0);
if (uch0==‘P‘)
ucGpsCommandStatus++;
else
ucGpsCommandStatus=0;
break;
}
case 3:
{
if(unInBufCntComm1 >= 3)
{
ReadCharComm1(&ucGPSCommand[0]);
ReadCharComm1(&ucGPSCommand[1]);
ReadCharComm1(&ucGPSCommand[2]);
ucGPSCommand[3] = ‘\0‘;
ucGPSDataBuff[0] = ‘G‘;
ucGPSDataBuff[1] = ‘P‘;
strcpy(ucGPSDataBuff+2ucGPSCommand);
ucGPSBuffCnt = 5;
ucGpsCommandStatus++;
}
break;
}
case 4: //process command
{
if(unInBufCntComm1 < 2)
break;
else
{
if(ucGPSBuffCnt>80)
{
ucGpsCommandStatus = 0;
break;
}
ReadCharComm1(ucGPSDataBuff+ucGPSBuffCnt);
ReadCharComm1(ucGPSDataBuff+ucGPSBuffCnt+1);
if((ucGPSDataBuff[ucGPSBuffCnt] ==‘\r‘)\
&&(ucGPSDataBuff[ucGPSBuffCnt+1] ==‘\n‘))
{
ucCheckSum[0] =ucGPSDataBuff[ucGPSBuffCnt-2] - 0x30;
ucCheckSum[1] =ucGPSDataBuff[ucGPSBuffCnt-1] - 0x30;;
if(GPS_CheckCommand())
{
ProcessGPSCommand();
}
ucGpsCommandStatus=0;
break;
}
else
{
if(ucGPSDataBuff[ucGPSBuffCnt+1] ==‘\r‘)
ucGpsCommandStatus++;
}
ucGPSBuffCnt+=2;
}
break;
}//end of case 4
case 5:
{
if(ucGPSBuffCnt>81)
{
ucGpsCommandStatus = 0;
break;
}
ReadCharComm1(ucGPSDataBuff+ucGPSBuffCnt);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11665 2008-07-08 14:44 gpsnmea\gps.c
文件 1711 2006-04-29 05:22 gpsnmea\gps.h
文件 6301 2008-07-08 14:43 gpsnmea\uart.c
文件 1068 2006-04-27 16:50 gpsnmea\uart.h
文件 211 2008-07-08 15:16 gpsnmea\说明.txt
目录 0 2008-07-08 15:12 gpsnmea
----------- --------- ---------- ----- ----
20956 6
相关资源
- GPS中误差计算
- GPS卫星定位中载波相位测量的观测方
- GPS词汇及缩写-gps专业资料
- 修改版gpsr协议
- zw_GPS_INS组合导航程序.zip
- qt编写的GPS界面
- .crx .d文件转o文件
- 用51单片机设计的GPS定位系统论文
- GPStrackingGeneral1009A.slx
- 新移动路由表BGPSHOW
- gps文件格式转换工具gpsbabel
- qt实现串口读取GPS信息
- RINEX_格式中文详解
- 坐标批量生成GPX文件,实现坐标批量
- 嵌入式ARM ,Linux,GPS导航
- GPS_INS位置组合程序
- 华测GPS传数据英文版
- 根据卫星星历结算GPS卫星位置
- 载波相位测量
- GPS串口数据读取及解析的LABVIEW程序
- ROS:实现串口解析GPS协议,并发布到
- STM32F4 GPS NEO-M8N完整项目
- GPS卫星单点定位程序-利用伪距-源代码
- gps单点定位计算算法
- 北斗/GPS双模定位上位机
- gps授时校时系统
- ARM9mini2440GPS程序
- GPS接收程序
- 车辆北斗GPS定位管理方案
- 星历文件,GPS星历文件的格式及介绍
评论
共有 条评论