⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gpsgai6.2.last.c

📁 接收GPS信息的时间和位置信息,并判别出来存放在寄存器中
💻 C
字号:
#include <reg51.h>
unsigned char code b[6]="$GPGLL";
 unsigned char data_east[7];
 unsigned char data_north[7];
 unsigned char data_time[7];
 unsigned char data_comma=0;//记录逗号的个数
//**********************************************************************************************************************
//函数作用:延时程序
//参数说明:
//注意事项:
//返回说明:
//**********************************************************************************************************************
dlm(int j)
{char k;int l;
 for(l=0;l<j;l++)
 {
 for(k=0;k<120;k++) ;
 }
}
//**********************************************************************************************************************
//函数作用:主函数
//参数说明:
//注意事项:在显示地理位置时,先判断data_north[0]中的数据,是否为错误代码,错误代码 & 表示有时间,没有地理位置,
//          错误代码 ^ 表示时间和地理位置都没接收到等待接收
//  在显示时,只显示data_north[]、data_east[]、data_time[]数组中的前六个数,不显示第七个数
//返回说明:
//**********************************************************************************************************************
void main()
{
 TMOD=0x20;
 PCON&= 0x7F;
 TH1=0xfd;    //波特率为9600 & 11.0592,,无倍数
 TL1=0xFD;
 TR1=1;//启动波特率发生器
 SCON=0x50 ;//串口工作方式1,10位UART unsigned int i;
 ES=1;
 EA=1;
 while(1)
 { ES=1;
   dlm(1000);
 }
}
//*********************************************************************************************************************
//函数作用:从串口接收GPS上的数据
//参数说明:全局变量east[]、north[]、time[]分别存放地理位置的经度、纬度和时间
//注意事项:
//返回说明:通过全局变量返回经度、纬度和时间
//*********************************************************************************************************************
void chuan()interrupt 4 using 1
{
 unsigned char j,data_tmp;
 unsigned char m,n,k;
if(RI)
{
 ES=0; //关中断
 m=n=k=0;
 //开始接收GPS的地理位置信息
 for(j=0;j<50;j++)
    {
     while(RI==0);
     RI=0;
      if(j==0)
         {if(SBUF!=b[j]) j=0; }//
          else{
               if(j<6&&SBUF!=b[j]) j=0;   //标致符判断
                  else{
                      if (SBUF==0x2c)      //判断逗号个数,以找到地理位置和时间
                          data_comma++;
                      }
                    //      data_comma=(data_comma&&0x00ff);
                switch(data_comma)                     //找到位置,时间
                      {case 1:data_north[m]=SBUF;m++;
                       break;
                       case 3:data_east[n]=SBUF;n++;
                       break;
                       case 5:data_time[k]=SBUF;k++;
                       break;
                       case 6:{if(j==43)         //等于44,时间和地理位置都收到
                               data_north[1]='^';
                                  else   if(j==20)       //等于21时间收到,但位置没收到
                                     data_north[1]='&';
                              };
                      };
              };
          };

    };
 //数据接收完毕
    //数据正确,进行数据调整

    for (m=1;m<8;m++)//纬度调整
    data_north[m-1]=data_north[m];
    data_tmp=data_north[2];
    data_north[2]=data_north[4];
    data_north[4]=data_tmp;
    for (n=1;n<8;n++)//经度调整
    data_east[n-1]=data_east[n];
    data_tmp=data_east[3];
    data_east[3]=data_east[5];
    data_east[5]=data_tmp;
    for (k=1;k<8;k++)//时间调整
     data_time[k-1]=data_time[k];
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -