久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5292|回復(fù): 3
收起左側(cè)

單片機(jī)解讀GPS信息

  [復(fù)制鏈接]
ID:486556 發(fā)表于 2019-3-7 23:24 | 顯示全部樓層 |閱讀模式
用單片機(jī)解讀GPS信息是GPS模塊使用最重要的環(huán)節(jié),由于汲設(shè)到產(chǎn)品的保密問(wèn)題,這里只介紹時(shí)間的處理方法,而方位、速度的處理方法不做介紹,但通過(guò)時(shí)間的處理方法,同樣可以處理方位、速度。
1、        獲取GPS模塊的輸出信息
由于GPS模塊每秒輸出一次:$GPGGA 、$GPGSA、$GPGSV、 $GPRMC數(shù)據(jù)。速率慢,因此必須采用中斷方式接收。ú捎貌樵(xún)會(huì)造成數(shù)據(jù)丟失),而且單片機(jī)只需要處理$GPRMC信息,即可得到時(shí)間、方位、速度。程序采用C51編制,在Keil C中編譯!

code unsigned char GPS_ASC[]="$GPRMC" ;  //定義特征字符串
unsigned char idata RsBuf[60];
//**********************************************************

//讀取GPS模塊串口數(shù)據(jù), 采用中斷方式
void GetRs232_Data() interrupt 4
{
        unsigned char i;
        unsigned int j;
        if (RI){
                RI=0;
                RsBuf[0]=SBUF;
                if (RsBuf[0]=='$'){   //是GPS數(shù)據(jù)的開(kāi)始,進(jìn)入查詢(xún)接收
                       for (i=1;i<sizeof(GPS_ASC)-1;i++){
                               j=GetUartDat();     //接收下一個(gè)數(shù)據(jù)
                               if (j<256) {
                                       RsBuf=(unsignedchar)j;
                                       if(RsBuf!=GPS_ASC) return;  
                               }        
                       }
//判別是否為$GPRMC數(shù)據(jù),是繼續(xù)接收!
                       for (;i<sizeof(RsBuf);i++){
                               j=GetUartDat();      
                               if (j<256) {
                                       RsBuf=(unsignedchar)j;
                               }else{
                                       break;
                               }        
                       }
//       接收完畢處理數(shù)據(jù)!
                       if (1==JiaoYanDat(RsBuf)){
                               FormatTimer(RsBuf);           //格式化時(shí)間               
                               FormatSpeed(RsBuf);          //處理速度
                       }
                }
        }
}
//    2、       接收數(shù)據(jù)的處理
//數(shù)據(jù)處理前,必須要再次檢驗(yàn)是否為$GPRMC信息。
unsigned char JiaoYanDat(unsigned char *p){
        unsigned char *pP;
        pP=strstr(p,GPS_ASC);
        if (pP == NULL) return 0;
        return 1;               
}
//     3、接收的數(shù)據(jù)全部轉(zhuǎn)換成二進(jìn)制數(shù)據(jù),便于糾錯(cuò)處理。
unsigned char ASC_To_Bin(unsigned char *p){
        unsigned char i;
        if (p[0]<'0' || p[0]>'9') return 0;
        if (p[1]<'0' || p[1]>'9') return 0;
        i=(p[0]-'0')*10;
        return (i+p[1]-'0');
}
//     4、時(shí)間調(diào)整
//由于GPS模塊采用格林威治時(shí)間,與北京時(shí)間相差8個(gè)時(shí)區(qū),所以要加入8小時(shí)。
unsigned char TurnGLW(unsigned char GLW){
        return (GLW+8)%24;
}            
//     5、       格式化標(biāo)準(zhǔn)時(shí)間
//  定義一個(gè)時(shí)間的數(shù)據(jù)結(jié)構(gòu):
typedef struct{
        unsigned int  ms;
        unsigned char Sec;
        unsigned char Min;
        unsigned char Hour;
        unsigned char Day;
        unsigned char Mon;
        unsigned char Week;
        unsigned char Year;
}TIMER;
//由于GPS模塊輸出的毫秒不準(zhǔn),所以時(shí)間數(shù)據(jù)結(jié)構(gòu)中的ms變量數(shù)據(jù)不準(zhǔn)!請(qǐng)不要隨便使用!
void FormatTimer(unsigned char *p){
        unsigned char i;
        Timer.ms=(p[14]-'0')*100+(p[15]-'0')*10+p[16]-'0';
        Timer.Hour=TurnGLW(ASC_To_Bin(&p[7]));
        Timer.Min=ASC_To_Bin(&p[9]);
        Timer.Sec=ASC_To_Bin(&p[11]);
        if (p[50]==','){
               Timer.Day=ASC_To_Bin(&p[51]);        
               Timer.Mon=ASC_To_Bin(&p[53]);        
               Timer.Year=ASC_To_Bin(&p[55]);        
        }
}
//    6、 單片機(jī)接收串口的數(shù)據(jù)
//由于單片機(jī)接收GPS后續(xù)數(shù)據(jù),采用了查詢(xún)方式!所以要注意避免死機(jī)!必須要帶超時(shí)處理!
unsigned int GetUartDat(void){
        unsigned int i=0,j=0;
        RI=0;
        while(!RI){
                if(i++>30000){  //超時(shí)時(shí)間
                       j=256;
                       return j;         //退出標(biāo)志
                }
        }
        j=SBUF;
        RI=0;
        return j;
}
//    7、單片機(jī)的串口設(shè)置
//    采用89C52接收GPS數(shù)據(jù)的串口設(shè)置
#define  OSC               0                //定義使用晶振0=11.0592  1=18.4320
#if OSC
        code char BPSAsc[]={
        0x60,0xb0,0xd8,0xec,0xf6,0xfb,0xfb,
        };        //18.4320MHz
#else
        code char BPSAsc[]={
        0xa0,0xd0,0xe8,0xf4,0xfa,0xfd,0xfd,
        };        //11.0592MHz
#endif
//  串口設(shè)置
void InitBps (char Bps ){
        PCON &=0x7f;        //PCON。7==0
        SCON =0x50;        //設(shè)置成串口1方式
        TH1=BPSAsc[Bps];  //22.1184必須*22004-12-16
        TL1=TH1;
        TR1=1;
}
四、NEMA 0183協(xié)議祥解
該協(xié)議為NAEA 0183 20版(此協(xié)議是為了在不同的GPS導(dǎo)航設(shè)備中建立統(tǒng)一的RTCM標(biāo)準(zhǔn))。
下列命令描述了GPS 25導(dǎo)航儀的數(shù)據(jù)格式定義,包括波特率選擇,秒脈沖輸出,RTCM定義輸出。

1、NMEA接收語(yǔ)句
*GPS 25輸入語(yǔ)句,主要為初始化,參數(shù)設(shè)置導(dǎo)通過(guò)RXP管腳
(1)ALM(歷書(shū)信息)格式:$GPALM、<1>、<2>、<3>、<4>、<5>、<6>、<7>、<8>、<9>、<10>、<11>、<12>、<13>、<14>、<15>、*hh<CR><LF>
如果板上的備用電池耗完,用此語(yǔ)句初始化信息
<1>在歷書(shū)下傳時(shí)能將歷書(shū)總數(shù)傳至GPS板上,當(dāng)發(fā)送歷書(shū)到GPS板上此字段可空或任意數(shù)。
   <2>當(dāng)前歷書(shū)數(shù)20這個(gè)字段可為空或任意值;
   <3>衛(wèi)星PRN數(shù)不清0到32
   <4>GPS星歷數(shù)
   <5>SV狀態(tài),每個(gè)歷書(shū)的17-24位
   <6>離心率
   <7>星歷參考時(shí)間
   <8>傾角
   <9>上升速率
  <10>半軸
  <11>近地點(diǎn)的末端
  <12>節(jié)經(jīng)度
  <13>近點(diǎn)離角
  <14>Afo 時(shí)間參數(shù)
  <15> Af1 時(shí)間參數(shù)
   hh:語(yǔ)句末端的hh為該語(yǔ)句的校檢符,應(yīng)由用戶(hù)計(jì)算送給GPS 25板,計(jì)算規(guī)則為:“S”后的所有字節(jié)的8個(gè)計(jì),每4個(gè)組成一個(gè)BCD碼(A、B、C等應(yīng)用大寫(xiě))。GPS 25輸出,語(yǔ)句后均有校驗(yàn)位,用戶(hù)可通過(guò)它,驗(yàn)證結(jié)果。
(2)初始化信息命令(僅在GPS 25上用)
$PGRMI用來(lái)初始化板子設(shè)定衛(wèi)星位置和時(shí)間
該語(yǔ)句一般在裙位置和當(dāng)前實(shí)際位置的距離超過(guò)800公里時(shí)使用,以回憶定位速度
格式:$PGRMI$GPALM、<1>、<2>、<3>、<4>、<5>、<6>、*hh<CR><LF>
  <1>緯度ddmm.mmm格式(初始化必須被寫(xiě)入板子)
  <2>緯度方向N或S
  <3>經(jīng)度ddmm.mmm格式(初始化必須被寫(xiě)入板子)
  <4>經(jīng)度方向E或N
  <5>當(dāng)前UTC日期,kkmm yy格式
  <6>當(dāng)前UTC時(shí)間hhmm ss格式
(3)板子配置信息命令(僅用于GPS 25)
$GPALM配置接收板上的參數(shù),存儲(chǔ)在備用電池上。
$GPALM、<1>、<2>、<3>、<4>、<5>、<6>、<7>、<8>、<9>、<10>、<11>、<12>、*hh<CR><LF>
  <1>合適的工作模式A——自動(dòng),2——2D模式,3—3D模式
  <2>海平面高度-1500.00~1800.00米
  <3>地理坐標(biāo)索引
  <4>用戶(hù)在地坐標(biāo)
  <5>用戶(hù)大地坐標(biāo)精度
  <6>用戶(hù)大地坐標(biāo) x軸
  <7>用戶(hù)大地坐標(biāo) y軸
  <8>用戶(hù)大地坐標(biāo)z軸
  <9>差分模式A—自動(dòng)(激活時(shí)自動(dòng)輸出差分信息)D—差分模式
  <10>NMEA波特率1=200 2=2400 3=4800 4=9600
  <11>速度濾波器狀態(tài)0=不過(guò)濾  1—自動(dòng) 2~255=濾波器時(shí)間常數(shù)
  <12>PPS模式:1=無(wú)Z=1HZ
  波特率和PPS的改變?cè)谥匦录与娀騊IN6初始化后發(fā)揮作用。
(4)輸出語(yǔ)句的激活(僅適用于GPS 25)
$PGRMO決定是否進(jìn)行語(yǔ)句輸出。
$PGRMO<1>、<2>*hh<CR><LF>
(1)語(yǔ)句描述
(2)語(yǔ)句模式0—關(guān)閉特殊1 —開(kāi)啟特  2—關(guān)閉所有  3—開(kāi)啟所有(除GPALM)
注意:(1)如果為2或3時(shí),不做檢驗(yàn)。允許有空字段
(2)如果為0或1時(shí),描述字段必須被定義
(3)如果如果都不作用時(shí)(指上語(yǔ)句中<1><2>),該語(yǔ)句無(wú)影響
(4)$PGRMO、GPALM、1將傳送所有昨歷

2、NMEA的發(fā)送語(yǔ)句
   通過(guò)TXD管腳(GPS 25板上)
(1)傳輸速率
     用戶(hù)可自定義
     傳輸長(zhǎng)度表傳輸長(zhǎng)度=傳輸總字符數(shù)/每秒傳輸數(shù)
波特率        每秒傳輸數(shù)       語(yǔ)句        最大字符
1200        120        GPGGA       72
2400        240        GPGSA       65
4800        480        GPGSV       210
9600        960        GPRMC       70
                GPVTG       34
                PGRME       36
                PGRMT       47
                PGRMV       26
                PGRMF       79
                LCGLL       36
                LCDTG       34
缺省波特率為48000。
(2)時(shí)間傳輸
     輸出UTC時(shí)間和日期,通過(guò)計(jì)算板上時(shí)間得到當(dāng)前日期時(shí)間。
(3)全球衛(wèi)星的星歷(ALM)
$GPALM、<1>、<2>、<3>、<4>、<5>、<6>、<7>、<8>、<9>、<10>、<11>、<12>、<13>、<14>、<15>、*hh<CR><LF>
I 不能正常傳送,要通過(guò)$PGRMO、GPALM、1命令初始化后得到
*在讀取輸出語(yǔ)句時(shí)數(shù)據(jù)之間最好用“、”區(qū)分,不要按位讀取,以保證應(yīng)用程序兼容性
(4)位置信息(GGA)
$GPGGA、<1>、<2>、<3>、<4>、<5>、<6>、<7>、<8>、<9>、M, <11>、<12>*hh<CR><LF>
    <1>UTC時(shí)間,hh mm ss格式(定位它的)
    <2>經(jīng)度dd mm mmmm 格式(非0)
    <3>經(jīng)度方向 N或S
    <4>緯度ddd mm mmmm 格式(非0)
    <5>緯度方向E或W
    <6>GPS狀態(tài)批示0—未定位 1—無(wú)差分定位信息 2—帶差分定位信息
    <7>使用衛(wèi)星號(hào)(00~08)
    <8>精度百分比
    <9>海平面高度
    <10>*大地隨球面相對(duì)海平面的高度
    <11>差分GPS信息
    <12>差分站ID號(hào) 0000-123
(5)GPS  DOP 和活動(dòng)衛(wèi)星
  $GPGSA、<1>、<2>、<3>、<3>、<3>、<3>、<3>、<3>、<3>、<3>、<3>、<3>、<3>、<3>、<4>、<5>、<6>、*hh<CR><LF>
    <1>模式M—手動(dòng),A—自動(dòng)
    <2>當(dāng)前狀態(tài) 1—無(wú)定位信息,2—2D  3—3D
    <3>PRN號(hào)01~32
    <4>位置精度
    <5>垂直精度
    <6>水平精度
(6)當(dāng)前GPS衛(wèi)星狀態(tài)(GSV)
    $GPGSV、<1>、<2>、<3>、<4>、<5>、<6>、<7><4>、<5>、<6>、<7>*hh<CR><LF>
    <1>GSV語(yǔ)句的總數(shù)目
    <2>當(dāng)前GSV語(yǔ)句數(shù)目
    <3>顯示衛(wèi)星的總數(shù)目00~12
    <4>衛(wèi)星的PRV號(hào)星號(hào)
    <5>衛(wèi)星      仰角
    <6>衛(wèi)星      旋角
    <7>信操比
    語(yǔ)句共兩條,第條最多包括4顆星的處所。每個(gè)星有4個(gè)數(shù)據(jù),即<4>—星號(hào) <5>—仰角<6>—方位<7>—信噪比
(7)最簡(jiǎn)特性(RMC)
$GPRMC、<1>、<2>、<3>、<4>、<5>、<6>、<7>、<8>、<9>、<10>、<11>、*hh<CR><LF>
    <1>定位時(shí)UTC時(shí)間hhmmss 格式
    <2>狀態(tài)A=定位V=導(dǎo)航
    <3>經(jīng)度ddmm.mmm 格式
    <4>經(jīng)度方向N 或S
    <5>緯度dddmm.mmmm
    <6>緯度方向E或W
    <7>速率
    <8>方位敬愛(ài)(二維方向指向,相當(dāng)于二維羅盤(pán))
    <9>當(dāng)前UTC日期ddmmyy 格式
    <10>太陽(yáng)方位
    <11>太陽(yáng)方向
(8)VTG速度相對(duì)正北的方向
  $GPVTG、<1>、T、<2>、M、<3>、N、<4>K*hh<CR><LF>
<1>真實(shí)方向<2>、相對(duì)方向<3>步長(zhǎng)<4>速率
(9)帶有LORAN ID的地理信息命令
LCGLL 報(bào)告位置信息
     $LCGLL、<1>、<2>、<3>、<4>,<5><CR><LF>
1、        經(jīng)度,ddmm .mm格式
2、        經(jīng)度方向 N或S
3、        緯度,dddmm .mm格式
4、        緯度方向 E或W
5、        UTC時(shí)間(定位點(diǎn))hhmmss格式
(10)帶有LORAN ID的軌跡,速度信息
LCVTG報(bào)告軌跡和速度信息
    $LCVTG、<1>、T、<2>、、<3>、N、<4>,K,<CR><LF>
1、        真實(shí)方向(相對(duì)于正北)
2、        相對(duì)方向
3、        步長(zhǎng)
4、        速率
(11)評(píng)估錯(cuò)誤信息
$PGRME 報(bào)告評(píng)估錯(cuò)誤信息
    $PGRME、<1>、M、<2>、M、<3>、M、*hh<CR><LF>
1、        GPS星號(hào)(0-1023)
2、        附加PGS(0-604799)
3、        UTC日期(當(dāng)前點(diǎn))hhmmss格式
4、        UTC時(shí)間(當(dāng)前點(diǎn))hhmmss格式
5、        GPS跳躍秒數(shù)
6、        經(jīng)度,ddmm.mmmm格式
7、        經(jīng)度方向,N或S
8、        緯度,dddmm.mmmm格式
9、        緯度方向,E或W
10、模式 M=手動(dòng)  A=自動(dòng)
11、定位類(lèi)型   0=沒(méi)定位  1=2D  2=3D
12、速率
13、方位角
(13)狀態(tài)信息
$PGRMT、<1>、<2>、<3>、<4>、<5>、<6>、<7>、<8>、<9>*hh<CR><LF>
報(bào)告板子狀態(tài)語(yǔ)句
1、        產(chǎn)品名稱(chēng),模式和軟件版本
2、        自測(cè) P-通過(guò) F-失敗
3、        接收檢測(cè) P-通過(guò)  F-失敗
4、        儲(chǔ)存數(shù)據(jù)狀態(tài) R-保留 L-丟失
5、        時(shí)鐘數(shù)據(jù)狀態(tài)  R-保存 L-丟失
6、        晶振檢測(cè) P-通過(guò) F-測(cè)試有誤
7、        數(shù)據(jù)采集 C-收集  空時(shí)為不收集
8、        板子溫度 ℃
9、        板子配置數(shù)據(jù) R-保留 L-丟失
(14) 3D定位信息
$PGRMV、<1>、<2>、<3>*hh<CR><LF>
1、        向東真實(shí)速率  -999.9to 9999.9
2、        向北真實(shí)速率  -999.9to 9999.9
3、        垂直速率     -999.9 to 9999.9
$GPGSA,A,1,,,,,,,,,,,,,99.9,99.9,99.9*09
$PSNY,0,00,05,500,06,06,06,06*14
$GPVTG,000.0,T,,M,000.0,N,000.0,K*60
$GPGGA,062320,3537.8333,N,13944.6667,E,0,00,99.9,0100,M,,M,000,0000*7D
$GPGLL,3537.8333,N,13944.6667,E,062320,V*3B
$GPRMC,062320,V,3537.8333,N,13944.6667,E,000.0,000.0,030222,,*0D
$GPZDA,062320,03,02,2022,,*4E
$GPGSV,1,1,00,,,,,,,,,,,,,,,,*79
$GPVTG,000.0,T,,M,000.0,N,000.0,K*60
$GPGGA,062321,3537.8333,N,13944.6667,E,0,00,99.9,0100,M,,M,000,0000*7C
$GPGLL,3537.8333,N,13944.6667,E,062321,V*3A
$GPRMC,062321,V,3537.8333,N,13944.6667,E,000.0,000.0,030222,,*0C
$GPZDA,062321,03,02,2022,,*4F
$GPGSA,A,1,,,,,,,,,,,,,99.9,99.9,99.9*09
$PSNY,0,00,05,500,06,06,06,06*14
$GPVTG,000.0,T,,M,000.0,N,000.0,K*60
$GPGGA,062322,3537.8333,N,13944.6667,E,0,00,99.9,0100,M,,M,000,0000*7F
$GPGLL,3537.8333,N,13944.6667,E,062322,V*39
$GPRMC,062322,V,3537.8333,N,13944.6667,E,000.0,000.0,030222,,*0F
$GPZDA,062322,03,02,2022,,*4C

評(píng)分

參與人數(shù) 2黑幣 +55 收起 理由
ricardo60472174 + 5
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:447439 發(fā)表于 2021-1-21 09:45 | 顯示全部樓層
學(xué)習(xí)下,最近在研究UBLOX m8n模塊?吹侥愕奈恼掠悬c(diǎn)思路了。
回復(fù)

使用道具 舉報(bào)

ID:260407 發(fā)表于 2022-10-11 09:52 | 顯示全部樓層
學(xué)習(xí)下,最近在研究
回復(fù)

使用道具 舉報(bào)

ID:1086148 發(fā)表于 2023-7-17 17:39 | 顯示全部樓層
非常感謝樓主作品, 仔細(xì)閱讀了, 非常好!  謝謝!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久com| 久久五月婷 | 午夜免费视频 | 日韩一区二区三区在线观看 | 国产一级免费在线观看 | 国产内谢 | 国产久 | 欧美1区 | 免费激情网站 | 国产在线资源 | 国产日韩精品一区 | 国产精品一区二区免费 | jizz中国日本 | 91精品一区二区 | av国产在线观看 | 国产精品一区在线播放 | 日韩欧美高清dvd碟片 | 国产目拍亚洲精品99久久精品 | 亚洲精品自在在线观看 | 亚洲一区在线日韩在线深爱 | 国产精品一区二区视频 | 亚洲国产欧美国产综合一区 | 视频一区在线观看 | 日韩精品一区二区三区中文字幕 | 亚洲午夜精品视频 | 欧美日韩综合精品 | 亚洲精品一区二区 | 白浆在线 | 欧美综合网 | 国产精品永久久久久久久www | 午夜大片 | 亚洲人成在线播放 | 草樱av | 国产免费视频在线 | 99久久国产免费 | 国内精品视频在线观看 | 亚洲一级毛片 | ririsao久久精品一区 | 国产大学生情侣呻吟视频 | 91亚洲精选 | 亚洲一区二区三区视频 |