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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3134|回復: 0
打印 上一主題 下一主題
收起左側

51單片機控制的GPS 1602顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:135998 發表于 2016-11-22 23:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
51單片機控制的GPS 1602顯示   入門新手了解
下載:
51單片機控制的gps 1602液晶顯示.rar (57.94 KB, 下載次數: 33)

  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狀態字中的Busy標識
  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;            //時區

  31. //GPS數據存儲數組
  32. unsigned char JD[10];            //經度
  33. unsigned char JD_a;            //經度方向
  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];        //使用的衛星數
  41. unsigned char total_sat[2];    //天空中總衛星數
  42. unsigned char lock;            //定位狀態

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

  51. //顯示需要的變量
  52. unsigned int dsp_count;        //刷新次數計數器
  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. * 函數名稱    :
  70. * 功能描述    :
  71. * 參數        :  參數名稱:        輸入/輸出?        類型                描述
  72. *
  73. * 返回值      :
  74. * 作者        :
  75. * 創建日期    :2006-12-19
  76. * 全局變量    :
  77. * 全局靜態變量:
  78. * 局部靜態變量:
  79. *----------------------------------------修改歷史------------------------------------------
  80. * 當前版本    :                          修改人:                  修改日期:
  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);            //顯示經度
  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]);        //顯示接收衛星數
  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.                             {                            //已經定位
  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. * 函數名稱    :
  240. * 功能描述    :
  241. * 參數        :  參數名稱:        輸入/輸出?        類型                描述
  242. *
  243. * 返回值      :
  244. * 作者        :
  245. * 創建日期    :2006-12-19
  246. * 全局變量    :
  247. * 全局靜態變量:
  248. * 局部靜態變量:
  249. *----------------------------------------修改歷史------------------------------------------
  250. * 當前版本    :                          修改人:                  修改日期:
  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. * 函數名稱    :sys_init
  271. * 功能描述    :系統初始化
  272. * 參數        :  參數名稱:        輸入/輸出?        類型                描述
  273. *
  274. * 返回值      :
  275. * 作者        :
  276. * 創建日期    :2006-12-19
  277. * 全局變量    :
  278. * 全局靜態變量:
  279. * 局部靜態變量:
  280. *----------------------------------------修改歷史------------------------------------------
  281. * 當前版本    :                          修改人:                  修改日期:
  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. * 函數名稱    :WriteDataLCM
  302. * 功能描述    :寫數據
  303. * 參數        :  參數名稱:        輸入/輸出?        類型                描述
  304. *
  305. * 返回值      :
  306. * 作者        :
  307. * 創建日期    :2006-12-19
  308. * 全局變量    :
  309. * 全局靜態變量:
  310. * 局部靜態變量:
  311. *----------------------------------------修改歷史------------------------------------------
  312. * 當前版本    :                          修改人:                  修改日期:
  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. * 函數名稱    :WriteCommandLCM
  327. * 功能描述    :寫指令
  328. * 參數        :  參數名稱:        輸入/輸出?        類型                描述
  329. *
  330. * 返回值      :
  331. * 作者        :
  332. * 創建日期    :2006-12-19
  333. * 全局變量    :
  334. * 全局靜態變量:
  335. * 局部靜態變量:
  336. *----------------------------------------修改歷史------------------------------------------
  337. * 當前版本    :                          修改人:                  修改日期:
  338. * 修改說明    :
  339. ******************************************************************************************/
  340. void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC為0時忽略忙檢測
  341. {
  342.                 if (BuysC)
  343.                 ReadStatusLCM(); //根據需要檢測忙
  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. * 函數名稱    :ReadStatusLCM
  353. * 功能描述    :讀狀態
  354. * 參數        :  參數名稱:        輸入/輸出?        類型                描述
  355. *
  356. * 返回值      :
  357. * 作者        :
  358. * 創建日期    :2006-12-19
  359. * 全局變量    :
  360. * 全局靜態變量:
  361. * 局部靜態變量:
  362. *----------------------------------------修改歷史------------------------------------------
  363. * 當前版本    :                          修改人:                  修改日期:
  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. * 函數名稱    :LCMInit
  379. * 功能描述    :LCM初始化
  380. * 參數        :  參數名稱:        輸入/輸出?        類型                描述
  381. *
  382. * 返回值      :
  383. * 作者        :
  384. * 創建日期    :2006-12-19
  385. * 全局變量    :
  386. * 全局靜態變量:
  387. * 局部靜態變量:
  388. *----------------------------------------修改歷史------------------------------------------
  389. * 當前版本    :                          修改人:                  修改日期:
  390. * 修改說明    :
  391. ******************************************************************************************/
  392. void LCMInit(void)
  393. {
  394.                 LCM_Data = 0;
  395.                 WriteCommandLCM(0x38,0); //三次顯示模式設置,不檢測忙信號
  396.                 Delay5Ms();
  397.                 WriteCommandLCM(0x38,0);
  398.                 Delay5Ms();
  399.                 WriteCommandLCM(0x38,0);
  400.                 Delay5Ms();

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

  481. /******************************************************************************************
  482. * 函數名稱    :Delay5M
  483. * 功能描述    :5ms延時
  484. * 參數        :  參數名稱:        輸入/輸出?        類型                描述
  485. *
  486. * 返回值      :
  487. * 作者        :
  488. * 創建日期    :2006-12-19
  489. * 全局變量    :
  490. * 全局靜態變量:
  491. * 局部靜態變量:
  492. *----------------------------------------修改歷史------------------------------------------
  493. * 當前版本    :                          修改人:                  修改日期:
  494. * 修改說明    :
  495. ******************************************************************************************/
  496. void Delay5Ms(void)
  497. {
  498.                 unsigned int TempCyc = 5552;
  499.                 while(TempCyc--);
  500. }
  501. /******************************************************************************************
  502. * 函數名稱    :Delay400Ms
  503. * 功能描述    :400ms延時
  504. * 參數        :  參數名稱:        輸入/輸出?        類型                描述
  505. *
  506. * 返回值      :
  507. * 作者        :
  508. * 創建日期    :2006-12-19
  509. * 全局變量    :
  510. * 全局靜態變量:
  511. * 局部靜態變量:
  512. *----------------------------------------修改歷史------------------------------------------
  513. * 當前版本    :                          修改人:                  修改日期:
  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. * 函數名稱    :uart
  528. * 功能描述    :串口接收中斷
  529. * 參數        :  參數名稱:        輸入/輸出?        類型                描述
  530. *
  531. * 返回值      :
  532. * 作者        :
  533. * 創建日期    :2006-12-19
  534. * 全局變量    :
  535. * 全局靜態變量:
  536. * 局部靜態變量:
  537. *----------------------------------------修改歷史------------------------------------------
  538. * 當前版本    :                          修改人:                  修改日期:
  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;        //接收位數清空
  554.                 break;
  555.             case ',':
  556.                 seg_count++;        //逗號計數加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.                             {                //如果類型數據接收完畢,判斷類型
  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.                     //接收數據處理
  628.                     switch (cmd_number)
  629.                     {
  630.                         case 1:                //類型1數據接收。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:                                //經度處理
  646.                                     if(byte_count<10)
  647.                                             {
  648.                                         JD[byte_count]=tmp;
  649.                                             }
  650.                                     break;
  651.                                 case 5:                                //經度方向處理
  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:                                //定位使用的衛星數
  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數據接收。GPGSV
  678.                             switch(seg_count)
  679.                             {
  680.                                 case 3:                                //天空中的衛星總數
  681.                                     if(byte_count<2)
  682.                                             {
  683.                                         total_sat[byte_count]=tmp;
  684.                                             }
  685.                                     break;
  686.                             }
  687.                             break;
  688.                         case 3:                //類型3數據接收。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++;        //接收數位加1
  714.                 break;
  715.         }
  716.     }
  717.     RI=0;
  718. }
復制代碼


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品久久视频 | 亚洲精品国产成人 | 中文字幕在线观看视频网站 | 亚洲天堂成人在线视频 | 91传媒在线观看 | jlzzjlzz国产精品久久 | 中文字幕av一区二区三区 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 亚洲视频一区在线观看 | 中文字幕成人免费视频 | 成人国产精品久久 | 午夜欧美一区二区三区在线播放 | 亚洲综合在线视频 | 在线看片网站 | 久久久久久国产精品 | 国产精品乱码一区二三区小蝌蚪 | 成人国产精品视频 | 欧美久久一区 | www.久久| 欧美99久久精品乱码影视 | 亚洲免费精品 | 我要看黄色录像一级片 | 欧美性久久久 | 成人免费视频在线观看 | 欧美男人的天堂 | av中文字幕网站 | 国产成人免费 | 久国产视频 | 精品一区二区三区在线观看 | 欧美一区二区视频 | 精品国产乱码久久久久久蜜退臀 | 国产精品欧美一区二区三区不卡 | 欧美成人激情视频 | 夜夜艹 | 久久久久国产一区二区三区四区 | 日韩欧美在线视频 | 99国产在线| 一区二区在线 | 久久精品视频免费看 | 国产成人高清成人av片在线看 | 一级黄色毛片免费 |