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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC12單片機GPRS通信 GPS新修改,增加判斷gps是否定位功能

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:222135 發(fā)表于 2017-7-24 20:59 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
有需要的朋友可以加我


單片機源程序如下:

  1. #include"stc.h"
  2. #include"GPS.h"

  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. //GPS數(shù)據(jù)存儲數(shù)組
  6. uchar JD[10];            //經(jīng)度
  7. uchar JD_a;            //經(jīng)度方向
  8. uchar WD[9];            //緯度
  9. uchar WD_a;            //緯度方向
  10. uchar time[6];        //時間
  11. uchar speed[5];        //速度
  12. uchar high[6];        //高度
  13. uchar angle[5];        //方位角
  14. uchar use_sat[2];        //使用的衛(wèi)星數(shù)
  15. uchar total_sat[2];    //天空中總衛(wèi)星數(shù)
  16. uchar lock;            //定位狀態(tài)
  17. uchar date[6];                        //日期

  18. //串口中斷需要的變量
  19. uchar seg_count;        //逗號計數(shù)器
  20. uchar dot_count;        //小數(shù)點計數(shù)器
  21. uchar byte_count;        //位數(shù)計數(shù)器
  22. uchar cmd_number;        //命令類型
  23. uchar mode;                //0:結(jié)束模式,1:命令模式,2:數(shù)據(jù)模式
  24. uchar buf_full;            //1:整句接收完成,相應(yīng)數(shù)據(jù)有效。0:緩存數(shù)據(jù)無效。
  25. uchar cmd[5];            //命令類型存儲數(shù)組

  26. void uart2_init()
  27. {
  28.         S2CON=0x50;//串行口2工作方式1,允許接收
  29.         BRT=0xfd;        //11.0592下波特率為4800
  30.         IE2=0x01;        //開啟串口2通訊中斷
  31.         AUXR|=0x11;
  32. }

  33. void uart() interrupt 8
  34. {
  35.         uchar k;       
  36.         uchar temp;
  37.         k=S2CON&0x01;        //讀取串口2的S2RI位狀態(tài)
  38.         if(k==1)
  39.         {
  40.                 temp=S2BUF;
  41.                 switch(temp)
  42.                 {
  43.                         case ' $ ' :
  44.                                 cmd_number=0;                //類型命令清空
  45.                                 mode=1;                                //接收命令模式
  46.                                 byte_count=0;                //接收位數(shù)清空
  47.                                 break;
  48.                         case ',':
  49.                                 seg_count++;                //逗號累計加1
  50.                                 byte_count=0;                //出現(xiàn)逗號則進去另一字段
  51.                                 break;
  52.                         case '*':
  53.                                 switch(cmd_number)
  54.                                 {
  55.                                         case 1:buf_full|=0x01;break;        //有效接收GPGGA數(shù)據(jù)
  56.                                         case 2:buf_full|=0x02;break;        //有效接收GPGSV數(shù)據(jù)
  57.                                         case 3:buf_full|=0x04;break;        //有效接收GPRMC數(shù)據(jù)
  58.                                 }
  59.                                 mode=0;
  60.                                 break;
  61.                         default:
  62.                                 if(mode==1)                //接收命令
  63.                                 {
  64.                                         cmd[byte_count]=temp;                //接收命令字符保存于cmd
  65.                                         if(byte_count>=4)
  66.                                         {
  67.                                                 if(cmd[0]=='G')
  68.                                                 {
  69.                                                         if(cmd[1]=='P')
  70.                                                                 {
  71.                                                                         if(cmd[2]=='G')
  72.                                                                         {
  73.                                                                                 if(cmd[3]=='G')
  74.                                                                                 {
  75.                                                                                         if(cmd[4]=='A')
  76.                                                                                         {
  77.                                                                                                 cmd_number=1;        //接收到GPGGA類型
  78.                                                                                                 mode=2;
  79.                                                                                                 seg_count=0;
  80.                                                                                                 byte_count=0;
  81.                                                                                         }
  82.                                                                                 }
  83.                                                                                 else
  84.                                                                                         if(cmd[3]=='S')
  85.                                                                                         {
  86.                                                                                                 if(cmd[4]=='V')
  87.                                                                                                 {
  88.                                                                                                         cmd_number=2;        //接收到GPGSV類型
  89.                                                                                                         mode=2;
  90.                                                                                                         seg_count=0;
  91.                                                                                                         byte_count=0;
  92.                                                                                                 }
  93.                                                                                         }
  94.                                                                         }
  95.                                                                         else
  96.                                                                                 if(cmd[2]=='R')
  97.                                                                                 {
  98.                                                                                         if(cmd[3]=='M')
  99.                                                                                         {
  100.                                                                                                 if(cmd[4]=='C')
  101.                                                                                                 {
  102.                                                                                                         cmd_number=3;        //接收到GPRMC類型
  103.                                                                                                         mode=2;
  104.                                                                                                         seg_count=0;
  105.                                                                                                         byte_count=0;
  106.                                                                                                 }
  107.                                                                                         }
  108.                                                                                 }
  109.                                                                 }
  110.                                                         }
  111.                                                 }
  112.                                 }
  113.                                 else
  114.                                         if(mode==2)                //數(shù)據(jù)命令
  115.                                         {
  116.                                                 switch(cmd_number)               
  117.                                                 {
  118.                                                         case 1:                //GPGGA類型
  119.                                                                 switch(seg_count)
  120.                                                                 {
  121.                                                                         case 2:                                //接收字段2緯度信息
  122.                                                                                 if(byte_count<9)
  123.                                                                                 {
  124.                                                                                         WD[byte_count]=temp;
  125.                                                                                 }
  126.                                                                                 break;
  127.                                                                     case 3:                                //接收字段3緯度方向
  128.                                                                                 if(byte_count<1)
  129.                                                                                 {
  130.                                                                                         WD_a=temp;
  131.                                                                                 }
  132.                                                                                 break;
  133.                                                                         case 4:             //接收字段4經(jīng)度信息
  134.                                             if(byte_count<10)
  135.                                             {
  136.                                                 JD[byte_count]=temp;
  137.                                             }
  138.                                                 break;
  139.                                                                         case 5:             //接收字段5經(jīng)度方向
  140.                                             if(byte_count<1)
  141.                                             {
  142.                                                 JD_a=temp;
  143.                                             }
  144.                                             break;
  145.                                                                         case 6:             //GPS狀態(tài)  0=未定位          1\2=已定位
  146.                                             if(byte_count<1)
  147.                                             {
  148.                                                 lock=temp;
  149.                                             }
  150.                                             break;
  151.                                                                         case 7:             //接收字段7定位使用的衛(wèi)星數(shù)信息
  152.                                             if(byte_count<2)
  153.                                             {
  154.                                                 use_sat[byte_count]=temp;
  155.                                             }
  156.                                             break;
  157.                                         case 9:             //接收字段9海拔高度信息
  158.                                             if(byte_count<6)
  159.                                             {
  160.                                                 high[byte_count]=temp;
  161.                                             }
  162.                                             break;
  163.                                                                 }
  164.                                                                 break;
  165.                                                         case 2:                //GPGSV類型
  166.                                                                 switch(seg_count)
  167.                                     {
  168.                                         case 3:              //接收字段3天空中的衛(wèi)星總數(shù)信息
  169.                                             if(byte_count<2)
  170.                                                     {
  171.                                                 total_sat[byte_count]=temp;
  172.                                                     }
  173.                                             break;
  174.                                     }
  175.                                     break;
  176.                                                         case 3:                //GPRMC類型
  177.                                     switch(seg_count)
  178.                                     {
  179.                                         case 1:                                //接收字段1時間信息
  180.                                             if(byte_count<6)
  181.                                                     {               
  182.                                                 time[byte_count]=temp;   
  183.                                                     }
  184.                                             break;
  185.                                         case 7:             //接收字段7速度信息 單位節(jié) Knots
  186.                                             if(byte_count<5)
  187.                                                     {
  188.                                                 speed[byte_count]=temp;
  189. ……………………

  190. …………限于本文篇幅 余下代碼請從51黑下載附件…………

復(fù)制代碼

所有資料51hei提供下載:
STC12 GPRS GPS新修改,增加判斷gps是否定位功能.rar (57.66 KB, 下載次數(shù): 48)



評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 东方伊人免费在线观看 | 欧美一区二区三区视频在线观看 | 久久久久久国产精品mv | 亚洲精品国产a久久久久久 午夜影院网站 | 欧美性极品xxxx做受 | 欧美1区 | av电影手机版 | 99久久精品免费看国产四区 | 久久不卡区 | 亚洲 中文 欧美 日韩 在线观看 | 日本精品久久久一区二区三区 | 日本成人免费观看 | 国产伦一区二区三区视频 | 久久久久国产一区二区 | 成人精品一区二区三区 | 亚洲精品一区二区三区四区高清 | 国产成人精品视频在线观看 | 国产精品不卡一区二区三区 | 99精品在线免费观看 | 国产欧美精品 | 精品日韩欧美一区二区 | 日韩有码在线观看 | 久久成人精品一区二区三区 | 日韩国产中文字幕 | 日本中文字幕视频 | 欧美久久精品一级c片 | 蜜桃av一区二区三区 | 国产成人精品一区二区三区网站观看 | 国产精品久久久久久久久久免费看 | 日韩国产一区二区三区 | 亚洲看片网站 | 性高朝久久久久久久3小时 av一区二区三区四区 | 国产一区二区三区久久久久久久久 | 国产精品精品3d动漫 | 久久成人精品视频 | 亚洲国产精品99久久久久久久久 | 国产一区在线看 | 亚洲国产精品久久久 | 99久久婷婷国产精品综合 | 黄色在线网站 | 亚洲精品久久久久久久久久久 |