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

📄 gps1602.lst

📁 GPS定位系统,1602液晶显示的源码.
💻 LST
📖 第 1 页 / 共 3 页
字号:
 247   5                          dsp_count=0;
 248   5                      }
 249   4                  }
 250   3              }
 251   2          }
 252   1      }
 253          /******************************************************************************************
 254          * 函数名称    :
 255          * 功能描述    :
 256          * 参数        :  参数名称:    输入/输出?     类型            描述
 257          * 
 258          * 返回值      :
 259          * 作者        :
 260          * 创建日期    :2006-12-19
 261          * 全局变量    :
 262          * 全局静态变量:
 263          * 局部静态变量:
 264          *----------------------------------------修改历史------------------------------------------
 265          * 当前版本    :                         修改人:                  修改日期:
 266          * 修改说明    :
 267          ******************************************************************************************/
 268          bit chk_key(void)
 269          {
 270   1          if(!KEY1)
 271   1              {
 272   2              Delay5Ms();
 273   2              Delay5Ms();
 274   2              if(!KEY1)
 275   2                      {
 276   3                  while(!KEY1);
 277   3                  Delay5Ms();
 278   3                  Delay5Ms();
 279   3                  return(1);
 280   3                      }
 281   2              }
 282   1          return(0);
 283   1      }
 284          
 285          /******************************************************************************************
 286          * 函数名称    :sys_init
 287          * 功能描述    :系统初始化
 288          * 参数        :  参数名称:    输入/输出?     类型            描述
 289          * 
 290          * 返回值      :
 291          * 作者        :
 292          * 创建日期    :2006-12-19
 293          * 全局变量    :
 294          * 全局静态变量:
 295          * 局部静态变量:
 296          *----------------------------------------修改历史------------------------------------------
 297          * 当前版本    :                         修改人:                  修改日期:
 298          * 修改说明    :
 299          ******************************************************************************************/
 300          void sys_init() 
 301          {
 302   1         
 303   1          SCON = 0x50;     /* SCON: mode 1, 8-bit UART, enable rcvr */
C51 COMPILER V7.09   GPS1602                                                               03/26/2008 13:55:09 PAGE 6   

 304   1          TMOD = 0x21;     /* TMOD: timer 1, mode 2, 8-bit reload */
 305   1          TH1 = 0xfa;            /* TH1: reload value for 4800 baud @ 11.059MHz */
 306   1      
 307   1         
 308   1          spd_type=1;            //速度单位km/h
 309   1          
 310   1          TR1 = 1;         /* TR1: timer 1 run */
 311   1          LCMInit();        //初始化LCD
 312   1          DisplayListChar(0,0,"GPS Monitor V1.2");
 313   1          Delay400Ms();
 314   1          LCD_cls();
 315   1          IE=0x90;            //开总中断、串口中断
 316   1      }
 317          
 318          /******************************************************************************************
 319          * 函数名称    :WriteDataLCM
 320          * 功能描述    :写数据
 321          * 参数        :  参数名称:    输入/输出?     类型            描述
 322          * 
 323          * 返回值      :
 324          * 作者        :
 325          * 创建日期    :2006-12-19
 326          * 全局变量    :
 327          * 全局静态变量:
 328          * 局部静态变量:
 329          *----------------------------------------修改历史------------------------------------------
 330          * 当前版本    :                         修改人:                  修改日期:
 331          * 修改说明    :
 332          ******************************************************************************************/
 333          void WriteDataLCM(unsigned char WDLCM)
 334          {
 335   1                      ReadStatusLCM(); //检测忙
 336   1                      LCM_Data = WDLCM;
 337   1                      LCM_RS = 1;
 338   1                      LCM_RW = 0;
 339   1                      LCM_E = 0; //若晶振速度太高可以在这后加小的延时
 340   1                      LCM_E = 0; //延时
 341   1                      LCM_E = 1;
 342   1      }
 343          
 344          /******************************************************************************************
 345          * 函数名称    :WriteCommandLCM
 346          * 功能描述    :写指令
 347          * 参数        :  参数名称:    输入/输出?     类型            描述
 348          * 
 349          * 返回值      :
 350          * 作者        :
 351          * 创建日期    :2006-12-19
 352          * 全局变量    :
 353          * 全局静态变量:
 354          * 局部静态变量:
 355          *----------------------------------------修改历史------------------------------------------
 356          * 当前版本    :                         修改人:                  修改日期:
 357          * 修改说明    :
 358          ******************************************************************************************/
 359          void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC为0时忽略忙检测
 360          {
 361   1                      if (BuysC) 
 362   1                      ReadStatusLCM(); //根据需要检测忙
 363   1                      LCM_Data = WCLCM;
 364   1                      LCM_RS = 0;
 365   1                      LCM_RW = 0; 
C51 COMPILER V7.09   GPS1602                                                               03/26/2008 13:55:09 PAGE 7   

 366   1                      LCM_E = 0;
 367   1                      LCM_E = 0;
 368   1                      LCM_E = 1; 
 369   1      }
 370          
 371          /******************************************************************************************
 372          * 函数名称    :ReadStatusLCM
 373          * 功能描述    :读状态
 374          * 参数        :  参数名称:    输入/输出?     类型            描述
 375          * 
 376          * 返回值      :
 377          * 作者        :
 378          * 创建日期    :2006-12-19
 379          * 全局变量    :
 380          * 全局静态变量:
 381          * 局部静态变量:
 382          *----------------------------------------修改历史------------------------------------------
 383          * 当前版本    :                         修改人:                  修改日期:
 384          * 修改说明    :
 385          ******************************************************************************************/
 386          unsigned char ReadStatusLCM(void)
 387          {
 388   1                      LCM_Data = 0xFF; 
 389   1                      LCM_RS = 0;
 390   1                      LCM_RW = 1;
 391   1                      LCM_E = 0;
 392   1                      LCM_E = 0;
 393   1                      LCM_E = 1;
 394   1                      while (LCM_Data & Busy); //检测忙信号
 395   1                      return(LCM_Data);
 396   1      }
 397          /******************************************************************************************
 398          * 函数名称    :LCMInit
 399          * 功能描述    :LCM初始化
 400          * 参数        :  参数名称:    输入/输出?     类型            描述
 401          * 
 402          * 返回值      :
 403          * 作者        :
 404          * 创建日期    :2006-12-19
 405          * 全局变量    :
 406          * 全局静态变量:
 407          * 局部静态变量:
 408          *----------------------------------------修改历史------------------------------------------
 409          * 当前版本    :                         修改人:                  修改日期:
 410          * 修改说明    :
 411          ******************************************************************************************/
 412          void LCMInit(void) 
 413          {
 414   1                      LCM_Data = 0;
 415   1                      WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号
 416   1                      Delay5Ms(); 
 417   1                      WriteCommandLCM(0x38,0);
 418   1                      Delay5Ms(); 
 419   1                      WriteCommandLCM(0x38,0);
 420   1                      Delay5Ms(); 
 421   1      
 422   1                      WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号
 423   1                      WriteCommandLCM(0x08,1); //关闭显示
 424   1                      WriteCommandLCM(0x01,1); //显示清屏
 425   1                      WriteCommandLCM(0x06,1); // 显示光标移动设置
 426   1                      WriteCommandLCM(0x0C,1); // 显示开及光标设置
 427   1      }
C51 COMPILER V7.09   GPS1602                                                               03/26/2008 13:55:09 PAGE 8   

 428          /******************************************************************************************
 429          * 函数名称    :LCMInit
 430          * 功能描述    :LCM初始化
 431          * 参数        :  参数名称:    输入/输出?     类型            描述
 432          * 
 433          * 返回值      :
 434          * 作者        :
 435          * 创建日期    :2006-12-19
 436          * 全局变量    :
 437          * 全局静态变量:
 438          * 局部静态变量:
 439          *----------------------------------------修改历史------------------------------------------
 440          * 当前版本    :                         修改人:                  修改日期:
 441          * 修改说明    :
 442          ******************************************************************************************/
 443          void LCD_cls(void)
 444          {
 445   1                      WriteCommandLCM(0x01,0);
 446   1                      Delay5Ms();
 447   1      }
 448          /******************************************************************************************
 449          * 函数名称    :DisplayOneChar
 450          * 功能描述    :按指定位置显示一个字符
 451          * 参数        :  参数名称:    输入/输出?     类型            描述
 452          * 
 453          * 返回值      :
 454          * 作者        :
 455          * 创建日期    :2006-12-19
 456          * 全局变量    :
 457          * 全局静态变量:
 458          * 局部静态变量:
 459          *----------------------------------------修改历史------------------------------------------
 460          * 当前版本    :                         修改人:                  修改日期:
 461          * 修改说明    :
 462          ******************************************************************************************/
 463          void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
 464          {
 465   1                      Y &= 0x1;
 466   1                      X &= 0xF; //限制X不能大于15,Y不能大于1
 467   1                      if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
 468   1                      X |= 0x80; //算出指令码
 469   1                      WriteCommandLCM(X, 0); //这里不检测忙信号,发送地址码
 470   1                      WriteDataLCM(DData);
 471   1      }
 472          /******************************************************************************************
 473          * 函数名称    :DisplayListChar
 474          * 功能描述    :按指定位置显示一串字符  ***原来的遇到空格0x20就不显示***
 475          * 参数        :  参数名称:    输入/输出?     类型            描述
 476          * 
 477          * 返回值      :
 478          * 作者        :
 479          * 创建日期    :2006-12-19
 480          * 全局变量    :
 481          * 全局静态变量:
 482          * 局部静态变量:
 483          *----------------------------------------修改历史------------------------------------------
 484          * 当前版本    :                         修改人:                  修改日期:
 485          * 修改说明    :
 486          ******************************************************************************************/
 487          void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
 488          {
 489   1              unsigned char ListLength,j;
C51 COMPILER V7.09   GPS1602                                                               03/26/2008 13:55:09 PAGE 9   

 490   1              ListLength = strlen(DData);
 491   1              Y &= 0x1;
 492   1              X &= 0xF; //限制X不能大于15,Y不能大于1
 493   1          if (X <= 0xF) //X坐标应小于0xF
 494   1            { 
 495   2                          for(j=0;j<ListLength;j++)
 496   2                            {
 497   3                   DisplayOneChar(X, Y, DData[j]); //显示单个字符
 498   3                   X++;
 499   3                }
 500   2             }
 501   1      }

⌨️ 快捷键说明

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