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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12533|回復(fù): 20
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)+gps定位+1602 源程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:116260 發(fā)表于 2016-4-24 02:55 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
很好的GPS  for51



下面是部分程序預(yù)覽(完整版本請下載本帖附件):
  1. /******************************************************************************
  2. Copyright 2007
  3. All rights reserved.

  4. 文件名        :gps1602.c
  5. 模塊名稱:
  6. 功能概要:

  7. 取代版本:0.0.1
  8. 修改人        :pulan
  9. 完成日期:2007.07.27
  10. 升級說明:create
  11. cpu:stc89c58    晶振頻率:11.0592Mhz
  12. 硬件連接:
  13. ---------------------------------------------------------------
  14. |DB0-----P0.0 | DB4-----P0.4 | WR-------P2.2 | A0--------P2.1 |
  15. |DB1-----P0.1 | DB5-----P0.5 | RD-------P2.4 | Vo懸空 |
  16. |DB2-----P0.2 | DB6-----P0.6 | CS-------P2.5 |
  17. |DB3-----P0.3 | DB7-----P0.7 | RST-------P2.3 |                        
  18. ---------------------------------------------------------------
  19. ******************************************************************************/

  20. #include <reg52.h>
  21. #include <string.h>

  22. #define LCM_Data P0
  23. #define Busy 0x80   //用于檢測LCM狀態(tài)字中的Busy標(biāo)識
  24. sbit LCM_RW = P2^5;  //1602定義引腳
  25. sbit LCM_RS = P2^4;
  26. sbit LCM_E = P2^6;

  27. //sbit GPS_SPD=P1^2;
  28. //sbit SPD_TYPE=P1^3;
  29. sbit KEY1=P1^1;


  30. char code TIME_AREA= 8;            //時區(qū)

  31. //GPS數(shù)據(jù)存儲數(shù)組
  32. unsigned char JD[10];            //經(jīng)度
  33. unsigned char JD_a;            //經(jīng)度方向
  34. unsigned char WD[9];            //緯度
  35. unsigned char WD_a;            //緯度方向
  36. unsigned char time[6];        //時間
  37. unsigned char speed[5];        //速度
  38. unsigned char high[6];        //高度
  39. unsigned char angle[5];        //方位角
  40. unsigned char use_sat[2];        //使用的衛(wèi)星數(shù)
  41. unsigned char total_sat[2];    //天空中總衛(wèi)星數(shù)
  42. unsigned char lock;            //定位狀態(tài)

  43. //串口中斷需要的變量
  44. unsigned char seg_count;        //逗號計數(shù)器
  45. unsigned char dot_count;        //小數(shù)點計數(shù)器
  46. unsigned char byte_count;        //位數(shù)計數(shù)器
  47. unsigned char cmd_number;        //命令類型
  48. unsigned char mode;                //0:結(jié)束模式,1:命令模式,2:數(shù)據(jù)模式
  49. unsigned char buf_full;            //1:整句接收完成,相應(yīng)數(shù)據(jù)有效。0:緩存數(shù)據(jù)無效。
  50. unsigned char cmd[5];            //命令類型存儲數(shù)組

  51. //顯示需要的變量
  52. unsigned int dsp_count;        //刷新次數(shù)計數(shù)器
  53. unsigned char time_count;
  54. bit page;
  55. bit spd_type;

  56. void sys_init(void);
  57. bit chk_key(void);

  58. void WriteDataLCM(unsigned char WDLCM);
  59. void WriteCommandLCM(unsigned char WCLCM,BuysC);
  60. unsigned char ReadDataLCM(void);
  61. unsigned char ReadStatusLCM(void);
  62. void LCMInit(void);
  63. void LCD_cls(void);
  64. void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
  65. void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
  66. void Delay5Ms(void);
  67. void Delay400Ms(void);
  68. /******************************************************************************************
  69. * 函數(shù)名稱    :
  70. * 功能描述    :
  71. * 參數(shù)        :  參數(shù)名稱:        輸入/輸出?        類型                描述
  72. *
  73. * 返回值      :
  74. * 作者        :
  75. * 創(chuàng)建日期    :2006-12-19
  76. * 全局變量    :
  77. * 全局靜態(tài)變量:
  78. * 局部靜態(tài)變量:
  79. *----------------------------------------修改歷史------------------------------------------
  80. * 當(dāng)前版本    :                          修改人:                  修改日期:
  81. * 修改說明    :
  82. ******************************************************************************************/
  83. main()
  84. {
  85.     unsigned char i;
  86.     char Bhour;
  87.     unsigned int Knots;
  88.     sys_init();

  89.     while(1)
  90.     {
  91.         if(buf_full==0)                //無GPS信號時
  92.         {
  93.             dsp_count++;
  94.             if(dsp_count>=65000)
  95.                     {
  96.                 LCD_cls();            //清屏
  97.                 DisplayListChar(0,0,"No GPS connect..");
  98.                 while(buf_full==0);
  99.                 LCD_cls();   
  100.                 dsp_count=0;
  101.                     }
  102.         }
  103.         else
  104.                 {                        //有GPS信號時
  105.             if(chk_key())
  106.                     {                //檢測到按鍵切換顯示
  107.                 page=!page;
  108.                 LCD_cls();
  109.                     }

  110.             if(!page)
  111.                     {                        //頁面1
  112.                 if(buf_full|0x01)
  113.                         {                //GGA語句
  114.                     if(lock=='0')
  115.                             {                    //如果未定位
  116.                         DisplayListChar(0,0,"*---.--.----  ");
  117.                         DisplayListChar(0,1,"* --.--.----  ");                    
  118.                             }
  119.                     else
  120.                             {                            //如果已定位
  121.                         DisplayOneChar(0,0,JD_a);            //顯示經(jīng)度
  122.                         for(i=0;i<3;i++)
  123.                                 {
  124.                             DisplayOneChar(i+1,0,JD[i]);
  125.                                 }
  126.                         DisplayOneChar(4,0,'.');
  127.                         for(i=3;i<10;i++)
  128.                                 {
  129.                             DisplayOneChar(i+2,0,JD[i]);
  130.                                 }

  131.                         DisplayOneChar(0,1,WD_a);            //顯示緯度
  132.                         DisplayOneChar(1,1,' ');
  133.                         for(i=0;i<2;i++)
  134.                                 {
  135.                             DisplayOneChar(i+2,1,WD[i]);
  136.                                 }            
  137.                         DisplayOneChar(4,1,'.');
  138.                         for(i=2;i<9;i++)
  139.                                 {
  140.                             DisplayOneChar(i+3,1,WD[i]);
  141.                                 }                           
  142.                       }
  143.                     DisplayOneChar(14,0,use_sat[0]);        //顯示接收衛(wèi)星數(shù)
  144.                     DisplayOneChar(15,0,use_sat[1]);
  145.                     buf_full&=~0x01;
  146.                     dsp_count=0;
  147.                 }
  148.                 if(buf_full|0x02){                //GSV語句
  149.                     DisplayOneChar(14,1,total_sat[0]);
  150.                     DisplayOneChar(15,1,total_sat[1]);
  151.                     buf_full&=~0x02;
  152.                     dsp_count=0;
  153.                 }
  154.                 if(buf_full|0x04)
  155.                         {
  156.                     buf_full&=~0x04;
  157.                     dsp_count=0;
  158.                         }
  159.             }
  160.             else
  161.                     {                            //頁面2
  162.                 if(buf_full|0x01)
  163.                         {                //GGA語句
  164.                     buf_full&=~0x01;
  165.                     dsp_count=0;
  166.                         }
  167.                 if(buf_full|0x02)
  168.                         {
  169.                     buf_full&=~0x02;
  170.                     dsp_count=0;
  171.                         }
  172.                 if(buf_full|0x04)
  173.                                 {                //RMC語句
  174.                     Bhour=((time[0]-0x30)*10+time[1]-0x30)+TIME_AREA;
  175.                     if(Bhour>=24)
  176.                             {
  177.                         Bhour-=24;
  178.                             }
  179.                     else if(Bhour<0)
  180.                             {
  181.                         Bhour+=24;
  182.                             }
  183.                     DisplayListChar(2,1,"BJT ");
  184.                     DisplayOneChar(6,1,Bhour/10+0x30);
  185.                     DisplayOneChar(7,1,Bhour%10+0x30);
  186.                     DisplayOneChar(8,1,':');
  187.                     DisplayOneChar(9,1,time[2]);
  188.                     DisplayOneChar(10,1,time[3]);
  189.                     DisplayOneChar(11,1,':');
  190.                     DisplayOneChar(12,1,time[4]);
  191.                     DisplayOneChar(13,1,time[5]);
  192.                     if(spd_type)
  193.                             {
  194.                         DisplayListChar(5,0,"km/h A");
  195.                             }
  196.                     else
  197.                             {
  198.                         DisplayListChar(5,0,"knot A");
  199.                             }
  200.                     if(lock=='0')
  201.                             {                    //如果未定位
  202.                         DisplayListChar(0,0,"---.-");
  203.                         DisplayListChar(11,0,"---.-");
  204.                             }
  205.                     else
  206.                             {                            //已經(jīng)定位
  207.                         if(spd_type)
  208.                                 {                    //km/h顯示
  209.                             for(i=0;i<5;i++)
  210.                             {
  211.                                 DisplayOneChar(i,0,speed[i]);
  212.                             }
  213.                                 }
  214.                         else
  215.                                 {                            //knot顯示
  216.                             Knots=    (((speed[0]-0x30)*1000
  217.                                     +(speed[1]-0x30)*100
  218.                                     +(speed[2]-0x30)*10
  219.                                     +(speed[4]-0x30))*1000)/1852;
  220.                             DisplayOneChar(0,0,Knots/1000+0x30);
  221.                             DisplayOneChar(1,0,(Knots%1000)/100+0x30);
  222.                             DisplayOneChar(2,0,(Knots%100)/10+0x30);
  223.                             DisplayOneChar(3,0,'.');
  224.                             DisplayOneChar(4,0,Knots%10+0x30);
  225.                                 }
  226.                         for(i=0;i<5;i++)
  227.                         {
  228.                             DisplayOneChar(11+i,0,angle[i]);
  229.                         }
  230.                     }
  231.                     buf_full&=~0x04;
  232.                     dsp_count=0;
  233.                 }
  234.             }
  235.         }
  236.     }
  237. }
  238. /******************************************************************************************
  239. * 函數(shù)名稱    :
  240. * 功能描述    :
  241. * 參數(shù)        :  參數(shù)名稱:        輸入/輸出?        類型                描述
  242. *
  243. * 返回值      :
  244. * 作者        :
  245. * 創(chuàng)建日期    :2006-12-19
  246. * 全局變量    :
  247. * 全局靜態(tài)變量:
  248. * 局部靜態(tài)變量:
  249. *----------------------------------------修改歷史------------------------------------------
  250. * 當(dāng)前版本    :                          修改人:                  修改日期:
  251. * 修改說明    :
  252. ******************************************************************************************/
  253. bit chk_key(void)
  254. {
  255.     if(!KEY1)
  256.             {
  257.         Delay5Ms();
  258.         Delay5Ms();
  259.         if(!KEY1)
  260.                 {
  261.             while(!KEY1);
  262.             Delay5Ms();
  263.             Delay5Ms();
  264.             return(1);
  265.                 }
  266.             }
  267.     return(0);
  268. }

  269. /******************************************************************************************
  270. * 函數(shù)名稱    :sys_init
  271. * 功能描述    :系統(tǒng)初始化
  272. * 參數(shù)        :  參數(shù)名稱:        輸入/輸出?        類型                描述
  273. *
  274. * 返回值      :
  275. * 作者        :
  276. * 創(chuàng)建日期    :2006-12-19
  277. * 全局變量    :
  278. * 全局靜態(tài)變量:
  279. * 局部靜態(tài)變量:
  280. *----------------------------------------修改歷史------------------------------------------
  281. * 當(dāng)前版本    :                          修改人:                  修改日期:
  282. * 修改說明    :
  283. ******************************************************************************************/
  284. void sys_init()
  285. {
  286.                 PCON |= 0x80;
  287.     SCON |= 0x50;     /* SCON: mode 1, 8-bit UART, enable rcvr */
  288.     TMOD = 0x21;     /* TMOD: timer 1, mode 2, 8-bit reload */
  289.     TH1 = 0xfd;            /* TH1: reload value for 4800 baud @ 11.059MHz */

  290.    
  291.     spd_type=1;            //速度單位km/h
  292.    
  293.     TR1 = 1;         /* TR1: timer 1 run */
  294.     LCMInit();        //初始化LCD
  295.     DisplayListChar(0,0,"GPS Monitor V1.2");
  296.     Delay400Ms();
  297.     LCD_cls();
  298.     IE=0x90;            //開總中斷、串口中斷
  299. }

  300. /******************************************************************************************
  301. * 函數(shù)名稱    :WriteDataLCM
  302. * 功能描述    :寫數(shù)據(jù)
  303. * 參數(shù)        :  參數(shù)名稱:        輸入/輸出?        類型                描述
  304. *
  305. * 返回值      :
  306. * 作者        :
  307. * 創(chuàng)建日期    :2006-12-19
  308. * 全局變量    :
  309. * 全局靜態(tài)變量:
  310. * 局部靜態(tài)變量:
  311. *----------------------------------------修改歷史------------------------------------------
  312. * 當(dāng)前版本    :                          修改人:                  修改日期:
  313. * 修改說明    :
  314. ******************************************************************************************/
  315. void WriteDataLCM(unsigned char WDLCM)
  316. {
  317.                 ReadStatusLCM(); //檢測忙
  318.                 LCM_Data = WDLCM;
  319.                 LCM_RS = 1;
  320.                 LCM_RW = 0;
  321.                 LCM_E = 0; //若晶振速度太高可以在這后加小的延時
  322.                 LCM_E = 0; //延時
  323.                 LCM_E = 1;
  324. }

  325. /******************************************************************************************
  326. * 函數(shù)名稱    :WriteCommandLCM
  327. * 功能描述    :寫指令
  328. * 參數(shù)        :  參數(shù)名稱:        輸入/輸出?        類型                描述
  329. *
  330. * 返回值      :
  331. * 作者        :
  332. * 創(chuàng)建日期    :2006-12-19
  333. * 全局變量    :
  334. * 全局靜態(tài)變量:
  335. * 局部靜態(tài)變量:
  336. *----------------------------------------修改歷史------------------------------------------
  337. * 當(dāng)前版本    :                          修改人:                  修改日期:
  338. * 修改說明    :
  339. ******************************************************************************************/
  340. void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC為0時忽略忙檢測
  341. {
  342.                 if (BuysC)
  343.                 ReadStatusLCM(); //根據(jù)需要檢測忙
  344.                 LCM_Data = WCLCM;
  345.                 LCM_RS = 0;
  346.                 LCM_RW = 0;
  347.                 LCM_E = 0;
  348.                 LCM_E = 0;
  349.                 LCM_E = 1;
  350. }

  351. /******************************************************************************************
  352. * 函數(shù)名稱    :ReadStatusLCM
  353. * 功能描述    :讀狀態(tài)
  354. * 參數(shù)        :  參數(shù)名稱:        輸入/輸出?        類型                描述
  355. *
  356. * 返回值      :
  357. * 作者        :
  358. * 創(chuàng)建日期    :2006-12-19
  359. * 全局變量    :
  360. * 全局靜態(tài)變量:
  361. * 局部靜態(tài)變量:
  362. *----------------------------------------修改歷史------------------------------------------
  363. * 當(dāng)前版本    :                          修改人:                  修改日期:
  364. * 修改說明    :
  365. ******************************************************************************************/
  366. unsigned char ReadStatusLCM(void)
  367. {
  368.                 LCM_Data = 0xFF;
  369.                 LCM_RS = 0;
  370.                 LCM_RW = 1;
  371.                 LCM_E = 0;
  372.                 LCM_E = 0;
  373.                 LCM_E = 1;
  374.                 while (LCM_Data & Busy); //檢測忙信號
  375.                 return(LCM_Data);
  376. }
  377. /******************************************************************************************
  378. * 函數(shù)名稱    :LCMInit
  379. * 功能描述    :LCM初始化
  380. * 參數(shù)        :  參數(shù)名稱:        輸入/輸出?        類型                描述
  381. *
  382. * 返回值      :
  383. * 作者        :
  384. * 創(chuàng)建日期    :2006-12-19
  385. * 全局變量    :
  386. * 全局靜態(tài)變量:
  387. * 局部靜態(tài)變量:
  388. *----------------------------------------修改歷史------------------------------------------
  389. * 當(dāng)前版本    :                          修改人:                  修改日期:
  390. * 修改說明    :
  391. ******************************************************************************************/
  392. void LCMInit(void)
  393. {
  394.                 LCM_Data = 0;
  395.                 WriteCommandLCM(0x38,0); //三次顯示模式設(shè)置,不檢測忙信號
  396.                 Delay5Ms();
  397.                 WriteCommandLCM(0x38,0);
  398.                 Delay5Ms();
  399.                 WriteCommandLCM(0x38,0);
  400.                 Delay5Ms();

  401.                 WriteCommandLCM(0x38,1); //顯示模式設(shè)置,開始要求每次檢測忙信號
  402.                 WriteCommandLCM(0x08,1); //關(guān)閉顯示
  403.                 WriteCommandLCM(0x01,1); //顯示清屏
  404.                 WriteCommandLCM(0x06,1); // 顯示光標(biāo)移動設(shè)置
  405.                 WriteCommandLCM(0x0C,1); // 顯示開及光標(biāo)設(shè)置
  406. }
  407. /******************************************************************************************
  408. * 函數(shù)名稱    :LCMInit
  409. * 功能描述    :LCM初始化
  410. * 參數(shù)        :  參數(shù)名稱:        輸入/輸出?        類型                描述
  411. *
  412. * 返回值      :
  413. * 作者        :
  414. * 創(chuàng)建日期    :2006-12-19
  415. * 全局變量    :
  416. * 全局靜態(tài)變量:
  417. * 局部靜態(tài)變量:
  418. *----------------------------------------修改歷史------------------------------------------
  419. * 當(dāng)前版本    :                          修改人:                  修改日期:
  420. * 修改說明    :
  421. ******************************************************************************************/
  422. void LCD_cls(void)
  423. {
  424.                 WriteCommandLCM(0x01,0);
  425.                 Delay5Ms();
  426. }
  427. /******************************************************************************************
  428. * 函數(shù)名稱    :DisplayOneChar
  429. * 功能描述    :按指定位置顯示一個字符
  430. * 參數(shù)        :  參數(shù)名稱:        輸入/輸出?        類型                描述
  431. *
  432. * 返回值      :
  433. * 作者        :
  434. * 創(chuàng)建日期    :2006-12-19
  435. * 全局變量    :
  436. * 全局靜態(tài)變量:
  437. * 局部靜態(tài)變量:
  438. *----------------------------------------修改歷史------------------------------------------
  439. * 當(dāng)前版本    :                          修改人:                  修改日期:
  440. * 修改說明    :
  441. ******************************************************************************************/
  442. void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
  443. {
  444.                 Y &= 0x1;
  445.                 X &= 0xF; //限制X不能大于15,Y不能大于1
  446.                 if (Y) X |= 0x40; //當(dāng)要顯示第二行時地址碼+0x40;
  447.                 X |= 0x80; //算出指令碼
  448.                 WriteCommandLCM(X, 0); //這里不檢測忙信號,發(fā)送地址碼
  449.                 WriteDataLCM(DData);
  450. }
  451. /******************************************************************************************
  452. * 函數(shù)名稱    :DisplayListChar
  453. * 功能描述    :按指定位置顯示一串字符  ***原來的遇到空格0x20就不顯示***
  454. * 參數(shù)        :  參數(shù)名稱:        輸入/輸出?        類型                描述
  455. *
  456. * 返回值      :
  457. * 作者        :
  458. * 創(chuàng)建日期    :2006-12-19
  459. * 全局變量    :
  460. * 全局靜態(tài)變量:
  461. * 局部靜態(tài)變量:
  462. *----------------------------------------修改歷史------------------------------------------
  463. * 當(dāng)前版本    :                          修改人:                  修改日期:
  464. * 修改說明    :
  465. ******************************************************************************************/
  466. void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
  467. {
  468.           unsigned char ListLength,j;
  469.           ListLength = strlen(DData);
  470.           Y &= 0x1;
  471.           X &= 0xF; //限制X不能大于15,Y不能大于1
  472.     if (X <= 0xF) //X坐標(biāo)應(yīng)小于0xF
  473.       {
  474.                     for(j=0;j<ListLength;j++)
  475.                       {
  476.              DisplayOneChar(X, Y, DData[j]); //顯示單個字符
  477.              X++;
  478.           }
  479.        }
  480. }

  481. /******************************************************************************************
  482. * 函數(shù)名稱    :Delay5M
  483. * 功能描述    :5ms延時
  484. * 參數(shù)        :  參數(shù)名稱:        輸入/輸出?        類型                描述
  485. *
  486. * 返回值      :
  487. * 作者        :
  488. * 創(chuàng)建日期    :2006-12-19
  489. * 全局變量    :
  490. * 全局靜態(tài)變量:
  491. * 局部靜態(tài)變量:
  492. *----------------------------------------修改歷史------------------------------------------
  493. * 當(dāng)前版本    :                          修改人:                  修改日期:
  494. * 修改說明    :
  495. ******************************************************************************************/
  496. void Delay5Ms(void)
  497. {
  498.                  unsigned int TempCyc = 5552;
  499.                  while(TempCyc--);
  500. }
  501. /******************************************************************************************
  502. * 函數(shù)名稱    :Delay400Ms
  503. * 功能描述    :400ms延時
  504. * 參數(shù)        :  參數(shù)名稱:        輸入/輸出?        類型                描述
  505. *
  506. * 返回值      :
  507. * 作者        :
  508. * 創(chuàng)建日期    :2006-12-19
  509. * 全局變量    :
  510. * 全局靜態(tài)變量:
  511. * 局部靜態(tài)變量:
  512. *----------------------------------------修改歷史------------------------------------------
  513. * 當(dāng)前版本    :                          修改人:                  修改日期:
  514. * 修改說明    :
  515. ******************************************************************************************/
  516. void Delay400Ms(void)
  517. {
  518.                  unsigned char TempCycA = 5;
  519.                  unsigned int TempCycB;
  520.                  while(TempCycA--)
  521.                 {
  522.                         TempCycB=7269;
  523.                         while(TempCycB--);
  524.                 };
  525. }

  526. /******************************************************************************************
  527. * 函數(shù)名稱    :uart
  528. * 功能描述    :串口接收中斷
  529. * 參數(shù)        :  參數(shù)名稱:        輸入/輸出?        類型                描述
  530. *
  531. * 返回值      :
  532. * 作者        :
  533. * 創(chuàng)建日期    :2006-12-19
  534. * 全局變量    :
  535. * 全局靜態(tài)變量:
  536. * 局部靜態(tài)變量:
  537. *----------------------------------------修改歷史------------------------------------------
  538. * 當(dāng)前版本    :                          修改人:                  修改日期:
  539. * 修改說明    :
  540. ******************************************************************************************/
  541. void uart(void) interrupt 4
  542. {
  543.     unsigned char tmp;
  544.     if(RI)
  545.             {
  546.         tmp=SBUF;
  547.         switch(tmp)
  548.         {
  549.             case '

  550. :
  551.                 cmd_number=0;        //命令類型清空
  552.                 mode=1;                //接收命令模式
  553.                 byte_count=0;        //接收位數(shù)清空
  554.                 break;
  555.             case ',':
  556.                 seg_count++;        //逗號計數(shù)加1
  557.                 byte_count=0;
  558.                 break;
  559.             case '*':
  560.                 switch(cmd_number)
  561.                 {
  562.                     case 1:
  563.                         buf_full|=0x01;
  564.                         break;
  565.                     case 2:
  566.                         buf_full|=0x02;
  567.                         break;
  568.                     case 3:
  569.                         buf_full|=0x04;
  570.                         break;
  571.                 }
  572.                 mode=0;
  573.                 break;
  574.             default:
  575.                 if(mode==1)
  576.                         {
  577.                     //命令種類判斷
  578.                     cmd[byte_count]=tmp;            //接收字符放入類型緩存
  579.                     if(byte_count>=4)
  580.                             {                //如果類型數(shù)據(jù)接收完畢,判斷類型
  581.                         if(cmd[0]=='G')
  582.                                 {
  583.                             if(cmd[1]=='P')
  584.                                     {
  585.                                 if(cmd[2]=='G')
  586.                                         {
  587.                                     if(cmd[3]=='G')
  588.                                             {
  589.                                         if(cmd[4]=='A')
  590.                                                 {
  591.                                             cmd_number=1;
  592.                                             mode=2;
  593.                                             seg_count=0;
  594.                                             byte_count=0;
  595.                                                 }
  596.                                             }
  597.                                     else if(cmd[3]=='S')
  598.                                             {
  599.                                         if(cmd[4]=='V')
  600.                                                 {
  601.                                             cmd_number=2;
  602.                                             mode=2;
  603.                                             seg_count=0;
  604.                                             byte_count=0;
  605.                                                 }
  606.                                             }
  607.                                         }
  608.                                 else if(cmd[2]=='R')
  609.                                         {
  610.                                     if(cmd[3]=='M')
  611.                                             {
  612.                                         if(cmd[4]=='C')
  613.                                                 {
  614.                                             cmd_number=3;
  615.                                             mode=2;
  616.                                             seg_count=0;
  617.                                             byte_count=0;
  618.                                                 }
  619.                                             }
  620.                                         }
  621.                             }
  622.                         }
  623.                     }
  624.                 }
  625.                 else if(mode==2)
  626.                         {
  627.                     //接收數(shù)據(jù)處理
  628.                     switch (cmd_number)
  629.                     {
  630.                         case 1:                //類型1數(shù)據(jù)接收。GPGGA
  631.                             switch(seg_count)
  632.                             {
  633.                                 case 2:                                //緯度處理
  634.                                     if(byte_count<9)
  635.                                             {
  636.                                         WD[byte_count]=tmp;
  637.                                             }
  638.                                     break;
  639.                                 case 3:                                //緯度方向處理
  640.                                     if(byte_count<1)
  641.                                             {
  642.                                         WD_a=tmp;
  643.                                             }
  644.                                     break;
  645.                                 case 4:                                //經(jīng)度處理
  646.                                     if(byte_count<10)
  647.                                             {
  648.                                         JD[byte_count]=tmp;
  649.                                             }
  650.                                     break;
  651.                                 case 5:                                //經(jīng)度方向處理
  652.                                     if(byte_count<1)
  653.                                             {
  654.                                         JD_a=tmp;
  655.                                             }
  656.                                     break;
  657.                                 case 6:                                //定位判斷
  658.                                     if(byte_count<1)
  659.                                             {
  660.                                         lock=tmp;
  661.                                             }
  662.                                     break;
  663.                                 case 7:                                //定位使用的衛(wèi)星數(shù)
  664.                                     if(byte_count<2)
  665.                                             {
  666.                                         use_sat[byte_count]=tmp;
  667.                                             }
  668.                                     break;
  669.                                 case 9:                                //高度處理
  670.                                     if(byte_count<6)
  671.                                             {
  672.                                         high[byte_count]=tmp;
  673.                                             }
  674.                                     break;
  675.                             }
  676.                             break;
  677.                         case 2:                //類型2數(shù)據(jù)接收。GPGSV
  678.                             switch(seg_count)
  679.                             {
  680.                                 case 3:                                //天空中的衛(wèi)星總數(shù)
  681.                                     if(byte_count<2)
  682.                                             {
  683.                                         total_sat[byte_count]=tmp;
  684.                                             }
  685.                                     break;
  686.                             }
  687.                             break;
  688.                         case 3:                //類型3數(shù)據(jù)接收。GPRMC
  689.                             switch(seg_count)
  690.                             {
  691.                                 case 1:
  692.                                     if(byte_count<6)
  693.                                             {                //時間處理
  694.                                         time[byte_count]=tmp;   
  695.                                             }
  696.                                     break;
  697.                                 case 7:                                //速度處理
  698.                                     if(byte_count<5)
  699.                                             {
  700.                                         speed[byte_count]=tmp;
  701.                                             }
  702.                                     break;
  703.                                 case 8:                                //方位角處理
  704.                                     if(byte_count<5)
  705.                                             {
  706.                                         angle[byte_count]=tmp;
  707.                                             }
  708.                                     break;
  709.                             }
  710.                             break;
  711.                     }
  712.                 }
  713.                 byte_count++;        //接收數(shù)位加1
  714.                 break;
  715.         }
  716.     }
  717.     RI=0;
  718. }
復(fù)制代碼


gps 1602.rar

57.94 KB, 下載次數(shù): 323, 下載積分: 黑幣 -5

51GPS定位

評分

參與人數(shù) 6黑幣 +74 收起 理由
WUHONE + 4 很給力!
user240217 + 5 很給力!
czc + 5
ledaswan + 5 贊一個!
朝顏2016 + 5 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏15 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:98275 發(fā)表于 2016-5-5 14:49 來自手機(jī) | 只看該作者
不行,當(dāng)真都不行
回復(fù)

使用道具 舉報

板凳
ID:130538 發(fā)表于 2016-8-19 10:24 | 只看該作者
不錯學(xué)習(xí)一下
回復(fù)

使用道具 舉報

地板
ID:140652 發(fā)表于 2016-9-27 16:54 | 只看該作者
我試試
回復(fù)

使用道具 舉報

5#
ID:145543 發(fā)表于 2016-11-1 17:12 | 只看該作者
u-center這個軟件怎么用啊
回復(fù)

使用道具 舉報

6#
ID:143706 發(fā)表于 2016-11-5 10:12 | 只看該作者
請問這個gps芯片是什么型號?
回復(fù)

使用道具 舉報

7#
ID:150528 發(fā)表于 2016-11-27 14:01 | 只看該作者
好好學(xué)習(xí)一下
回復(fù)

使用道具 舉報

8#
ID:151444 發(fā)表于 2016-12-4 11:31 | 只看該作者
正好需要,,參考一下
回復(fù)

使用道具 舉報

9#
ID:190395 發(fā)表于 2017-4-17 13:18 | 只看該作者
這個直接可以用嗎
回復(fù)

使用道具 舉報

10#
ID:213966 發(fā)表于 2017-6-23 15:34 | 只看該作者
看不懂
回復(fù)

使用道具 舉報

11#
ID:68429 發(fā)表于 2017-12-5 10:12 來自手機(jī) | 只看該作者
學(xué)習(xí)一下
回復(fù)

使用道具 舉報

12#
ID:353874 發(fā)表于 2018-6-18 21:06 | 只看該作者
真是不錯,認(rèn)真的學(xué)習(xí)了。
回復(fù)

使用道具 舉報

13#
ID:423051 發(fā)表于 2018-12-5 18:40 | 只看該作者
GPS是通用的嗎
回復(fù)

使用道具 舉報

14#
ID:676888 發(fā)表于 2020-3-28 11:24 | 只看該作者

GPS用法大同小異,根據(jù)協(xié)議 你想采用那個格式你自己把數(shù)據(jù)提出來就好了
回復(fù)

使用道具 舉報

15#
ID:726307 發(fā)表于 2020-4-14 00:24 來自手機(jī) | 只看該作者
下載之后找不到了
回復(fù)

使用道具 舉報

16#
ID:688367 發(fā)表于 2020-5-22 03:58 來自手機(jī) | 只看該作者
可以學(xué)習(xí)下,不錯
回復(fù)

使用道具 舉報

17#
ID:1051332 發(fā)表于 2022-12-4 01:23 | 只看該作者
請問我連接我的GPS模塊后,LCD上顯示NO GPS Connect 怎么回事,沒有GPS連接
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 狠狠影院 | 黄色a三级 | 亚洲欧美日韩精品久久亚洲区 | 日本韩国欧美在线观看 | 色综合久 | 久久国产精品久久国产精品 | 亚洲h色| 日韩一区二区三区视频 | 国产福利一区二区 | 日韩在线免费 | 在线日韩欧美 | av在线免费观看网址 | 日本在线播放一区二区 | 国产精品欧美一区二区 | 国产精品xxxx | 国产午夜精品一区二区三区在线观看 | 日韩久久中文字幕 | 免费v片在线观看 | 狠狠色综合久久婷婷 | 日日干日日射 | 午夜影视免费片在线观看 | 日韩综合在线播放 | 欧洲亚洲视频 | 精品国产乱码一区二区三 | 欧美xxxⅹ性欧美大片 | 亚洲一区二区三区免费视频 | www.久久久 | 日韩1区2区 | 罗宾被扒开腿做同人网站 | 国产精品国产三级国产aⅴ中文 | 欧美成人视屏 | 国产伊人精品 | 日韩一区二区在线免费观看 | 美女人人操 | 一区二区三区亚洲 | 青青草精品视频 | 亚洲成av人片在线观看无码 | 成人免费在线观看 | 欧美日韩久久 | 丁香五月网久久综合 | 久久久精品网站 |