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

📄 gps1602.lst

📁 GPS定位系统,1602液晶显示的源码.
💻 LST
📖 第 1 页 / 共 3 页
字号:
 502          
 503          /******************************************************************************************
 504          * 函数名称    :Delay5M
 505          * 功能描述    :5ms延时
 506          * 参数        :  参数名称:    输入/输出?     类型            描述
 507          * 
 508          * 返回值      :
 509          * 作者        :
 510          * 创建日期    :2006-12-19
 511          * 全局变量    :
 512          * 全局静态变量:
 513          * 局部静态变量:
 514          *----------------------------------------修改历史------------------------------------------
 515          * 当前版本    :                         修改人:                  修改日期:
 516          * 修改说明    :
 517          ******************************************************************************************/
 518          void Delay5Ms(void)
 519          {
 520   1                      unsigned int TempCyc = 5552;
 521   1                      while(TempCyc--);
 522   1      }
 523          /******************************************************************************************
 524          * 函数名称    :Delay400Ms
 525          * 功能描述    :400ms延时
 526          * 参数        :  参数名称:    输入/输出?     类型            描述
 527          * 
 528          * 返回值      :
 529          * 作者        :
 530          * 创建日期    :2006-12-19
 531          * 全局变量    :
 532          * 全局静态变量:
 533          * 局部静态变量:
 534          *----------------------------------------修改历史------------------------------------------
 535          * 当前版本    :                         修改人:                  修改日期:
 536          * 修改说明    :
 537          ******************************************************************************************/
 538          void Delay400Ms(void)
 539          {
 540   1                      unsigned char TempCycA = 5;
 541   1                      unsigned int TempCycB;
 542   1                      while(TempCycA--)
 543   1                      {
 544   2                              TempCycB=7269;
 545   2                              while(TempCycB--);
 546   2                      };
 547   1      }
 548          
 549          /******************************************************************************************
 550          * 函数名称    :uart
 551          * 功能描述    :串口接收中断
C51 COMPILER V7.09   GPS1602                                                               03/26/2008 13:55:09 PAGE 10  

 552          * 参数        :  参数名称:    输入/输出?     类型            描述
 553          * 
 554          * 返回值      :
 555          * 作者        :
 556          * 创建日期    :2006-12-19
 557          * 全局变量    :
 558          * 全局静态变量:
 559          * 局部静态变量:
 560          *----------------------------------------修改历史------------------------------------------
 561          * 当前版本    :                         修改人:                  修改日期:
 562          * 修改说明    :
 563          ******************************************************************************************/
 564          void uart(void) interrupt 4
 565          {
 566   1          unsigned char tmp;
 567   1          if(RI)
 568   1              {
 569   2              tmp=SBUF;
 570   2              switch(tmp)
 571   2              {
 572   3                  case '$':
 573   3                      cmd_number=0;        //命令类型清空
 574   3                      mode=1;                //接收命令模式
 575   3                      byte_count=0;        //接收位数清空
 576   3                      break;
 577   3                  case ',':
 578   3                      seg_count++;        //逗号计数加1
 579   3                      byte_count=0;
 580   3                      break;
 581   3                  case '*':
 582   3                      switch(cmd_number)
 583   3                      {
 584   4                          case 1:
 585   4                              buf_full|=0x01;
 586   4                              break;
 587   4                          case 2:
 588   4                              buf_full|=0x02;
 589   4                              break;
 590   4                          case 3:
 591   4                              buf_full|=0x04;
 592   4                              break;
 593   4                      }
 594   3                      mode=0;
 595   3                      break;
 596   3                  default:
 597   3                      if(mode==1)
 598   3                              {
 599   4                          //命令种类判断
 600   4                          cmd[byte_count]=tmp;            //接收字符放入类型缓存
 601   4                          if(byte_count>=4)
 602   4                              {                //如果类型数据接收完毕,判断类型
 603   5                              if(cmd[0]=='G')
 604   5                                      {
 605   6                                  if(cmd[1]=='P')
 606   6                                      {
 607   7                                      if(cmd[2]=='G')
 608   7                                              {
 609   8                                          if(cmd[3]=='G')
 610   8                                              {
 611   9                                              if(cmd[4]=='A')
 612   9                                                      {
 613  10                                                  cmd_number=1;
C51 COMPILER V7.09   GPS1602                                                               03/26/2008 13:55:09 PAGE 11  

 614  10                                                  mode=2;
 615  10                                                  seg_count=0;
 616  10                                                  byte_count=0;
 617  10                                                      }
 618   9                                              }
 619   8                                          else if(cmd[3]=='S')
 620   8                                              {
 621   9                                              if(cmd[4]=='V')
 622   9                                                      {
 623  10                                                  cmd_number=2;
 624  10                                                  mode=2;
 625  10                                                  seg_count=0;
 626  10                                                  byte_count=0;
 627  10                                                      }
 628   9                                              }
 629   8                                              }
 630   7                                      else if(cmd[2]=='R')
 631   7                                              {
 632   8                                          if(cmd[3]=='M')
 633   8                                              {
 634   9                                              if(cmd[4]=='C')
 635   9                                                      {
 636  10                                                  cmd_number=3;
 637  10                                                  mode=2;
 638  10                                                  seg_count=0;
 639  10                                                  byte_count=0;
 640  10                                                      }
 641   9                                              }
 642   8                                              }
 643   7                                  }
 644   6                              }
 645   5                          }
 646   4                      }
 647   3                      else if(mode==2)
 648   3                              {
 649   4                          //接收数据处理
 650   4                          switch (cmd_number)
 651   4                          {
 652   5                              case 1:                //类型1数据接收。GPGGA
 653   5                                  switch(seg_count)
 654   5                                  {
 655   6                                      case 2:                                //纬度处理
 656   6                                          if(byte_count<9)
 657   6                                              {
 658   7                                              WD[byte_count]=tmp;
 659   7                                              }
 660   6                                          break;
 661   6                                      case 3:                                //纬度方向处理
 662   6                                          if(byte_count<1)
 663   6                                              {
 664   7                                              WD_a=tmp;
 665   7                                              }
 666   6                                          break;
 667   6                                      case 4:                                //经度处理
 668   6                                          if(byte_count<10)
 669   6                                              {
 670   7                                              JD[byte_count]=tmp;
 671   7                                              }
 672   6                                          break;
 673   6                                      case 5:                                //经度方向处理
 674   6                                          if(byte_count<1)
 675   6                                              {
C51 COMPILER V7.09   GPS1602                                                               03/26/2008 13:55:09 PAGE 12  

 676   7                                              JD_a=tmp;
 677   7                                              }
 678   6                                          break;
 679   6                                      case 6:                                //定位判断
 680   6                                          if(byte_count<1)
 681   6                                              {
 682   7                                              lock=tmp;
 683   7                                              }
 684   6                                          break;
 685   6                                      case 7:                                //定位使用的卫星数
 686   6                                          if(byte_count<2)
 687   6                                              {
 688   7                                              use_sat[byte_count]=tmp;
 689   7                                              }
 690   6                                          break;
 691   6                                      case 9:                                //高度处理
 692   6                                          if(byte_count<6)
 693   6                                              {
 694   7                                              high[byte_count]=tmp;
 695   7                                              }
 696   6                                          break;
 697   6                                  }
 698   5                                  break;
 699   5                              case 2:                //类型2数据接收。GPGSV
 700   5                                  switch(seg_count)
 701   5                                  {
 702   6                                      case 3:                                //天空中的卫星总数
 703   6                                          if(byte_count<2)
 704   6                                              {
 705   7                                              total_sat[byte_count]=tmp;
 706   7                                              }
 707   6                                          break;
 708   6                                  }
 709   5                                  break;
 710   5                              case 3:                //类型3数据接收。GPRMC
 711   5                                  switch(seg_count)
 712   5                                  {
 713   6                                      case 1:
 714   6                                          if(byte_count<6)
 715   6                                              {                //时间处理
 716   7                                              time[byte_count]=tmp;    
 717   7                                              }
 718   6                                          break;
 719   6                                      case 7:                                //速度处理
 720   6                                          if(byte_count<5)
 721   6                                              {
 722   7                                              speed[byte_count]=tmp;
 723   7                                              }
 724   6                                          break;
 725   6                                      case 8:                                //方位角处理
 726   6                                          if(byte_count<5)
 727   6                                              {
 728   7                                              angle[byte_count]=tmp;
 729   7                                              }
 730   6                                          break;
 731   6                                  }
 732   5                                  break;
 733   5                          }
 734   4                      }
 735   3                      byte_count++;        //接收数位加1
 736   3                      break;
 737   3              }
C51 COMPILER V7.09   GPS1602                                                               03/26/2008 13:55:09 PAGE 13  

 738   2          }
 739   1          RI=0;
 740   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1657    ----
   CONSTANT SIZE    =     90    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     62      13
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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