#ifndef __GPS_H__ #define __GPS_H__ #include "common.h" typedef struct { u8 UTCDateTime[6]; //YMDHMS u8 Status; //A/V u8 Latitude[9]; //ddmm.mmmm u8 NS; //N/S u8 Longitude[10]; //dddmm.mmmm u8 EW; //E/W u8 Speed[5]; //速率000.0~999.9 节 u8 Course[5]; //航向 000.0~359.9 度 }stru_GPSRMC; typedef struct { // u8 UTCTime[10]; //hhmmss.mmm // u8 Latitude[9]; //ddmm.mmmm // u8 NS; //N/S // u8 Longitude[10]; //dddmm.mmmm // u8 EW; //E/W u8 PositionFix; //0,1,2,6 u8 SatUsed[2]; //00~12 // u8 HDOP[4]; //0.5~99.9 u8 Altitude[7]; //-9999.9~99999.9 }stru_GPSGGA; typedef struct { u8 Mode; //A/M u8 Mode2; //0,1,2,3 u8 SatUsedList[12]; u8 PDOP[4]; u8 HDOP[4]; u8 VDOP[4]; }stru_GPSGSA; typedef struct { u8 SatID; // u8 Elevation[2];//0-90 degree // u8 Azimuth[3]; //0-359 degree u8 SNR; //0-99 dbHz }stru_SatInfo; typedef struct { u8 SatInView; stru_SatInfo SatInfo[12]; }stru_GPSGSV; #define NMEA_NULL 0x00 //GPS 语句类型 #define NMEA_GPGGA 0x01 #define NMEA_GPGSA 0x02 #define NMEA_GPGSV 0x04 #define NMEA_GPRMC 0x08 void GPS(void); void ShowLongitude(u8,u8); void ShowLatitude(u8,u8); void ShowGPSTime(u8,u8); void GPSSateDataInit(void); bit ReciveOK(void); void ShowSatSNR(u8,u8); #endif GPS.C //------------------------------------------------------- //GPS 解析模块 By wowbanui //版本历史: // 2010/08 v0.1 初始版本 // 2011/03 v0.2 注释掉不需要的字段,部分数据直接处理成数值, // 减少内存占用.输出部分直接调用 LCD 命令,移植需更改 //--------------------------------------------------------- #include "GPS.H" #include "S1D15E06.h" static u8 NMEA_CMD=NMEA_NULL; //NMEA 语句 static u8 NMEA_CMD_Buff[]="$GPxxx,"; //NMEA 语句类型缓存 static u8 NMEA_CMD_Index=0; //读取 CMD 字符的个数 static bit NMEA_CMD_Parsered=0; //CMD 类型解析完毕 static u8 NMEA_DAT_Block=0; //NMEA 数据字段号 从 0 开始 static u8 NM...