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

📄 19264lcd.lst

📁 普通19264图形液晶模块的单片机驱动程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 291   1      row = bakery+1; /*指向下半个字符行 */
 292   1      /*下半个字符输出,8列 */
 293   1      for(i=0;i<8;i++)
 294   1      {
 295   2      cbyte = Ezk[x]; /*取点阵码 */
 296   2      Wrdata(cbyte); /*写输出一字节 */
 297   2      x++;
 298   2      col++;
 299   2      if (col==LCMLIMIT){col=0;row=row+2;}; /*下一列,如果列越界换行*/
 300   2      if (row>7) row=1; /*如果行越界,返回首行 */
 301   2      } /*下半个字符输出结束 */
 302   1      row=bakery;
 303   1      } /*整个字符输出结束 */
C51 COMPILER V8.02   19264LCD                                                              04/01/2009 11:25:55 PAGE 6   

 304          
 305          
 306          /****************************************/
 307          /* 全角字符点阵码数据输出 */
 308          /****************************************/
 309          void Putcdot(Uchar Order)
 310          {
 311   1      Uchar i,bakerx,bakery; /*共定义3个局部变量 */
 312   1      int x; /*偏移量,字符量少的可以定义为UCHAR */
 313   1      bakerx = col; /*暂存x,y坐标,已备下半个字符使用 */
 314   1      bakery = row;
 315   1      x=Order * 0x20; /*每个字符32字节 */
 316   1      
 317   1      /*上半个字符输出,16列 */
 318   1      for(i=0;i<16;i++)
 319   1      {
 320   2      Wrdata(Hzk[x]); /*写输出一字节 */
 321   2      x++;
 322   2      col++;
 323   2      if (col==LCMLIMIT){ col=0;row++;row++;} /*下一列,如果列越界换行*/
 324   2      if (row>6) row=0; /*如果行越界,返回首行 */
 325   2      } /*上半个字符输出结束 */
 326   1      
 327   1      /*下半个字符输出,16列 */
 328   1      col = bakerx;
 329   1      row = bakery+1;
 330   1      for(i=0;i<16;i++) /*下半部分*/
 331   1      {
 332   2      Wrdata(Hzk[x]);
 333   2      x++;
 334   2      col++;
 335   2      if (col==LCMLIMIT){col=0;row++;row++;} /*下一列,如果列越界换行*/
 336   2      if (row>7) row=1; /*如果行越界,返回首行 */
 337   2      } /*下半个字符输出结束 */
 338   1      row = bakery;
 339   1      } /*整个字符输出结束 */
 340          
 341          /****************************************/
 342          /* 清屏,全屏幕清零 */
 343          /****************************************/
 344          void Lcmcls( void )
 345          {
 346   1      for(row=0;row<8;row++)
 347   1      for(col=0;col<LCMLIMIT;col++) Wrdata(0);
 348   1      }
 349          
 350          /****************************************/
 351          /* 从液晶片上读数据,保留在全局变量中 */
 352          /****************************************/
 353          
 354          void Rddata(void)
 355          {
 356   1      Locatexy(); /*坐标定位,返回时保留分区状态不变 */
 357   1      Datalcm=0xFF;
 358   1      Dilcm = 1; /*数据*/
 359   1      Rwlcm = 1; /*读数据*/
 360   1      Elcm = 1; /*读入到LCM*/
 361   1      _nop_();
 362   1      cbyte = Datalcm; /*虚读一次 */
 363   1      Elcm = 0;
 364   1      Locatexy(); /*坐标定位,返回时保留分区状态不变 */
 365   1      Datalcm=0xFF;
C51 COMPILER V8.02   19264LCD                                                              04/01/2009 11:25:55 PAGE 7   

 366   1      _nop_();
 367   1      Dilcm = 1; /*数据*/
 368   1      Rwlcm = 1; /*读数据*/
 369   1      Elcm = 1; /*读入到LCM*/
 370   1      _nop_();
 371   1      cbyte = Datalcm; /*从数据口读数据,真读 */
 372   1      Elcm = 0;
 373   1      }
 374          
 375          /****************************************/
 376          /* 数据写输出 */
 377          /****************************************/
 378          
 379          void Wrdata(Uchar X)
 380          {
 381   1      Locatexy(); /*坐标定位,返回时保留分区状态不变 */
 382   1      // wtcom();
 383   1      Dilcm = 1; /*数据输出*/
 384   1      Rwlcm = 0; /*写输出 */
 385   1      Datalcm = X; /*数据输出到数据口 */
 386   1      Elcm = 1; /*读入到LCM*/
 387   1      _nop_();
 388   1      Elcm = 0;
 389   1      }
 390          
 391          /****************************************/
 392          /* 命令输出,每次输出一个分区控制口 */
 393          /****************************************/
 394          
 395          /*void Wrcmd(Uchar X)
 396          // {
 397          // Locatexy(); /*确定分区,返回时保留分区状态不变 */
 398          // wtcom(); /*等待LCM操作允许 */
 399          // Dilcm = 0; /*数据操作 */
 400          // Rwlcm = 0; /*写输出 */
 401          // Datalcm = X; /*数据输出到数据口 */
 402          // Elcm = 1;_nop_();Elcm = 0; /*读入到LCM*/
 403          // }
 404          
 405          /********************************/
 406          /* 命令输出到左区控制口 */
 407          /********************************/
 408          
 409          void WrcmdL(Uchar X)
 410          {
 411   1      lcdbusyL(); /*确定分区,返回时保留分区状态不变*/
 412   1      Dilcm = 0; /*命令操作 */
 413   1      Rwlcm = 0; /*写输出 */
 414   1      Datalcm = X; /*数据输出到数据口 */
 415   1      Elcm = 1;_nop_();Elcm = 0; /*读入到LCM*/
 416   1      }
 417          
 418          /********************************/
 419          /* 命令输出到中区控制口 */
 420          /********************************/
 421          
 422          void WrcmdM(Uchar X)
 423          {
 424   1      lcdbusyM(); /*确定分区,返回时保留分区状态不变*/
 425   1      Dilcm = 0; /*命令操作 */
 426   1      Rwlcm = 0; /*写输出 */
 427   1      Datalcm = X; /*命令输出到数据口 */
C51 COMPILER V8.02   19264LCD                                                              04/01/2009 11:25:55 PAGE 8   

 428   1      Elcm = 1;_nop_();Elcm = 0; /*读入到LCM*/
 429   1      }
 430          
 431          /********************************/
 432          /* 命令输出到右区控制口 */
 433          /********************************/
 434          
 435          void WrcmdR(Uchar X)
 436          {
 437   1      lcdbusyR(); /*确定分区,返回时保留分区状态不变 */
 438   1      Dilcm = 0; /*命令操作 */
 439   1      Rwlcm = 0; /*写输出 */
 440   1      Datalcm = X; /*命令输出到数据口 */
 441   1      Elcm = 1;_nop_();Elcm = 0; /*读入到LCM*/
 442   1      }
 443          
 444          /********************************************************/
 445          /* 分区操作允许等待,返回时保留分区选择状态 */
 446          /********************************************************/
 447          void lcdbusyL(void)
 448          {
 449   1      CS1LCM = 0; /*CLR CS1 */
 450   1      CS2LCM = 1; /*SETB CS2 */
 451   1      CS3LCM = 1; /*SETB CS3 */
 452   1      wtcom(); /* waitting for enable */
 453   1      }
 454          
 455          void lcdbusyM(void)
 456          {
 457   1      CS1LCM = 1; /*SETB CS1 */
 458   1      CS2LCM = 0; /*CLR CS2 */
 459   1      CS3LCM = 1; /*SETB CS3 */
 460   1      wtcom(); /* waitting for enable */
 461   1      }
 462          
 463          void lcdbusyR(void)
 464          {
 465   1      CS1LCM = 1; /*SETB CS1 */
 466   1      CS2LCM = 1; /*SETB CS2 */
 467   1      CS3LCM = 0; /*CLR CS3 */
 468   1      wtcom(); /* waitting for enable */
 469   1      }
 470          
 471          void wtcom(void)
 472          {
 473   1      Dilcm = 0; /*CLR DI */
 474   1      Rwlcm = 1; /*SETB RW */
 475   1      Datalcm = 0xFF; /*MOV DATA_LCM,#0FFH */
 476   1      Elcm = 1;_nop_(); 
 477   1      while(Datalcm & Lcdbusy);
 478   1      Elcm = 0;
 479   1      }
 480          
 481          /********************************************************/
 482          /*根据设定的坐标数据,定位LCM上的下一个操作单元位置 */
 483          /********************************************************/
 484          void Locatexy(void)
 485          {
 486   1      unsigned char x,y;
 487   1      switch (col&0xc0) /* col.and.0xC0 */
 488   1      { /*条件分支执行 */
 489   2      case 0: {lcdbusyL();break;} /*左区 */
C51 COMPILER V8.02   19264LCD                                                              04/01/2009 11:25:55 PAGE 9   

 490   2      case 0x40: {lcdbusyM();break;} /*中区 */
 491   2      case 0x80: {lcdbusyR();break;} /*右区 */
 492   2      }
 493   1      x = col&0x3F|SETX; /* col.and.0x3f.or.setx */
 494   1      y = row&0x07|SETY; /* row.and.0x07.or.sety */
 495   1      wtcom(); /* waitting for enable */
 496   1      Dilcm = 0; /*CLR DI */
 497   1      Rwlcm = 0; /*CLR RW */
 498   1      Datalcm = y; /*MOV P0,Y */
 499   1      Elcm = 1;_nop_();Elcm = 0;
 500   1      wtcom(); /* waitting for enable */
 501   1      Dilcm = 0; /*CLR DI */
 502   1      Rwlcm = 0; /*CLR RW */
 503   1      Datalcm = x; /*MOV P0,X */
 504   1      Elcm = 1;_nop_();Elcm = 0;
 505   1      }
 506          
 507          /********************************/
 508          /*液晶屏初始化 */
 509          /********************************/
 510          
 511          void Lcminit(void)
 512          {
 513   1      cbyte = DISPOFF; /*关闭显示屏 */
 514   1      WrcmdL(cbyte);
 515   1      WrcmdM(cbyte);
 516   1      WrcmdR(cbyte);
 517   1      cbyte = DISPON; /*打开显示屏 */
 518   1      WrcmdL(cbyte);
 519   1      WrcmdM(cbyte);
 520   1      WrcmdR(cbyte);
 521   1      cbyte = DISPFIRST; /*定义显示起始行为零 */
 522   1      WrcmdL(cbyte);
 523   1      WrcmdM(cbyte);
 524   1      WrcmdR(cbyte);
 525   1      Lcmcls();
 526   1      col=0; /*清屏 */
 527   1      row=0;
 528   1      Locatexy();
 529   1      }
 530          /********************************/
 531          /* 延时 */
 532          /********************************/
 533          void Delay(Uchar MS)
 534          {
 535   1      Uchar us,usn;
 536   1      while(MS!=0)
 537   1      { usn = 4;
 538   2      while(usn!=0)
 539   2      {
 540   3      us=0xf0;
 541   3      while (us!=0){us--;};
 542   3      usn--;
 543   3      }
 544   2      MS--;
 545   2      }
 546   1      }
 547          
 548          /************************************定义字符串数组*************************************/
 549          Uchar code STR1[]="China Mobile";
 550          Uchar code STR2[]="Communications";
 551          Uchar code STR3[]="Corporation";
C51 COMPILER V8.02   19264LCD                                                              04/01/2009 11:25:55 PAGE 10  

 552          Uchar code STR4[]="Welcome you!";
 553          
 554          /************************************定义中文字库***************************************/
 555          Uchar code Hzk[]={
 556          0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,        /*中*/
 557          0x00, 0x03,0x01,0x01,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x01,0x01,0x03,0x00,0x00,
 558          0x00,0xFE,0x02,0x0A,0x8A,0x8A,0x8A,0xFA,0x8A,0xCA,0x8E,0x0A,0x02,0xFF,0x02,0x00,/*国*/
 559          0x00,0xFF,0x40,0x50,0x50,0x50,0x50,0x5F,0x50,0x52,0x54,0x50,0x40,0xFF,0x00,0x00,
 560          0x24,0x24,0xA4,0xFE,0xA3,0x22,0x10,0x88,0x8C,0x57,0xE4,0x24,0x14,0x0C,0x00,0x00,        /*移*/
 561          0x04,0x02,0x01,0xFF,0x00,0x83,0x80,0x88,0x44,0x46,0x29,0x31,0x11,0x0D,0x03,0x00,
 562          0x20,0x24,0x24,0xE4,0x26,0x34,0x20,0x10,0x10,0xFF,0x10,0x10,0x10,0xF8,0x10,0x00,        /*动*/
 563          0x08,0x1C,0x0B,0x08,0x08,0x8A,0x4C,0x30,0x0C,0x03,0x40,0x80,0x40,0x3F,0x00,0x00,
 564          0x40,0x42,0x44,0xCC,0x00,0x00,0xF1,0x91,0x95,0xF9,0x95,0x93,0xF9,0x10,0x00,0x00,        /*通*/
 565          0x00,0x40,0x20,0x1F,0x20,0x40,0xBF,0x84,0x84,0xBF,0x94,0xA4,0x9F,0xC0,0x40,0x00,
 566          0x80,0x40,0x20,0xF8,0x07,0x24,0x24,0x24,0x25,0x26,0x24,0x24,0xB4,0x26,0x04,0x00,        /*信*/
 567          0x00,0x00,0x00,0xFF,0x00,0x01,0xFD,0x45,0x45,0x45,0x45,0x45,0xFD,0x01,0x00,0x00,
 568          0x20,0x10,0x08,0xFC,0x57,0x54,0x54,0xFD,0x56,0x54,0x54,0x56,0x04,0x00,0x00,0x00,        /*集*/
 569          0x04,0x44,0x44,0x27,0x15,0x0D,0x05,0xFF,0x05,0x0D,0x15,0x25,0x65,0x24,0x04,0x00,
 570          0x00,0xFE,0x22,0x22,0x22,0x22,0xA2,0x62,0xFE,0x22,0x22,0x32,0x22,0xFF,0x02,0x00,        /*团*/
 571          0x00,0xFF,0x48,0x44,0x42,0x41,0x50,0x60,0x5F,0x40,0x40,0x40,0x40,0xFF,0x00,0x00,
 572          0x00,0x00,0x80,0x40,0x30,0x0C,0x00,0xC0,0x06,0x18,0x20,0x40,0x80,0x80,0x80,0x00,        /*公*/
 573          0x01,0x01,0x00,0x30,0x28,0x24,0x23,0x20,0x20,0x28,0x30,0x60,0x00,0x01,0x00,0x00,
 574          0x10,0x10,0x92,0x92,0x92,0x92,0x92,0x92,0xD2,0x9A,0x12,0x02,0xFF,0x02,0x00,0x00,        /*司*/
 575          0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x40,0x80,0x7F,0x00,0x00,0x00
 576          };
 577          /****************************************/
 578          /* 定义ASCII字库8列*16行 */
 579          /****************************************/
 580          
 581          Uchar code Ezk[]={
 582          /*-文字: --0x20 */
 583          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 584          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 585          /*-文字:!--0x21 */
 586          0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,
 587          0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x00,

⌨️ 快捷键说明

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