一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
楼主: gongzhu

[其他综合] GPS自动授时万年历第二阶段成果汇报

[复制链接]
发表于 2013-11-29 18:21 | 显示全部楼层
先前有網友教導以 , 來計算他的接收位置,好像比較簡單!!
//0819 跳過幾個逗號

void JPDM(unsigned char DM)
{
  rec=0;
  while(DM)//>dmt
   {
    while(rec==0);
//        if (rec==1)
         {
     if(REV_DATA == ',')
         {
         rec=0;
         DM--;//dmt++
         }
         }
   }
}

我最近作了一個機車超速警報器

unsigned char  Get_Gps(void)//改寫 gps 讀取程式 把 Gok=GPRMC_K() 取消
{
unsigned char TT;
  if(rec==1)
    {
    if(REV_DATA == '$')
     {
      rec=0;
     }
         }
         else
         {
         return 0;
         }
         while(rec==0);
     if(REV_DATA == 'G')
                  {
          rec=0;
          }
         while(rec==0);      
     if(REV_DATA == 'P')           
                {
        rec=0;
        }
         while(rec==0);        
     if(REV_DATA == 'R')//一路比較下去全部要相同 "GPVTG,"           
                  {
          rec=0;
          }
                   else
          {
                 return 0;     
           }
                     while(rec==0);        
          if(REV_DATA == 'M')//一路比較下去全部要相同 "GPRMC,"   
           {      
                        rec=0;     
           }
                     while(rec==0);      
          if(REV_DATA == 'C')//一路比較下去全部要相同 "GPRMC,"           
                   {
                 rec=0;
            }
          while(rec==0);     
          if(REV_DATA == ',')//一路比較下去全部要相同 "GPRMC,"
                   {
             rec=0;
             }
                  else
                    {
              return 0;
            }

  CLCKFL(6);//取 時分秒

    JPDM(1);
        while(rec==0);
        {
    GPS_AV = REV_DATA;
        }
   

  JPDM(5);//跳過5個逗號取速度000.00km
        SPEDFL(6);//取 速度000.00km
  TRNUM();

  TT=CLCK[0]*10+CLCK[1]+8;//時間補差格林威治對中原標準
  if(TT>23)
     TT-=24;
         CLCK[0]=TT/10;
         CLCK[1]=TT%10;

  return 1;
  
  }


// ---------  GPS MAIN PROGRAM -------------

void main(void)
{
        unsigned char STR_DIS=5;
Init_Timer0();
UART_Init();
  CLCK[0]=1;
        CLCK[1]=2;
        CLCK[2]=0;
        CLCK[3]=0;

while(1)
{
Get_Gps();
Gok=1;//----------------------------test
  if(Gok==1)
      {
                                if(dispt_flag)
                                {
                                        Display_tData_Operation ();       
                                }
                                else
                                {
       Display_Data_Operation ();//轉換相關值到顯示
           }
         }
                if(ALRMSPEED>26 && ALRMSPEED<30)//時速在 50~60之間警報
                {
                        alrm_flag=0;//-
                        BZ=0;
                }
                else
                {
                        alrm_flag=1;//*
            BZ=1;
                }               

if(disp_flag==1)
   {
     disp_flag=0;
     Display();
    }
   Display();
  }
}
//$GPRMC,115900.000,A,,N,,E,00.38,,    test pattern
回复

使用道具 举报

 楼主| 发表于 2013-11-29 18:24 | 显示全部楼层
DIY 发表于 2013-11-29 07:19
支持......高手 ...关注下一步

说“高人”就惭愧了,今年国庆节后才开始学单片机的。不过是因为搞自动化有C++基础而已。

我觉得郭天祥的《新概念51单片机C语言教程.入门、提高、开发》不错,
尤其是序言中的《致读者》非常值得搞电子或对电子感兴趣的人看看
回复

使用道具 举报

发表于 2013-11-29 23:16 | 显示全部楼层
用的什么型号GPS模块啊?
回复

使用道具 举报

 楼主| 发表于 2013-11-30 17:47 | 显示全部楼层
iofree 发表于 2013-11-29 23:16
用的什么型号GPS模块啊?

我用的是二手 JSA-S100。 NMEA0183 格式
跟型号无关,只要知道通信协议就行

回复

使用道具 举报

发表于 2013-12-23 14:52 | 显示全部楼层
那个异或验证,按照规范理应加上,楼主提得好。

不过很多人本来就是业余玩玩的,可能不会考虑那么多~
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-11-1 01:24 , Processed in 0.034189 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表