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

📄 8.3.lst

📁 LCD液晶显示器
💻 LST
📖 第 1 页 / 共 3 页
字号:
 302   2        x++;
 303   2        col++;
C51 COMPILER V7.09   8_3                                                                   08/23/2005 22:56:19 PAGE 6   

 304   2        if (col==LCMLIMIT){ col=0;row++;row++;} /*下一列,如果列越界换行*/
 305   2         if (row>6) row=0;  /*如果行越界,返回首行 */
 306   2        }     /*上半个字符输出结束 */
 307   1        
 308   1      /*下半个字符输出,16列 */
 309   1       col = bakerx;
 310   1       row = bakery+1;
 311   1       for(i=0;i<16;i++)    /*下半部分*/
 312   1        {
 313   2        Wrdata(Hzk[x]);
 314   2        x++;
 315   2        col++;
 316   2        if (col==LCMLIMIT){col=0;row++;row++;} /*下一列,如果列越界换行*/
 317   2         if (row>7) row=1;  /*如果行越界,返回首行 */
 318   2        }     /*下半个字符输出结束 */
 319   1       row = bakery;
 320   1       }      /*整个字符输出结束 */
 321          
 322          /****************************************/
 323          /* 清屏,全屏幕清零  */
 324          /****************************************/
 325          void Lcmcls( void )
 326           {
 327   1       for(row=0;row<8;row++)
 328   1           for(col=0;col<LCMLIMIT;col++) Wrdata(0);
 329   1       }
 330          
 331          /****************************************/
 332          /*  从液晶片上读数据,保留在全局变量中 */
 333          /****************************************/
 334          
 335          void Rddata(void)
 336           {
 337   1       Locatexy();  /*坐标定位,返回时保留分区状态不变 */
 338   1        Datalcm=0xFF;
 339   1        Dilcm = 1; /*数据*/
 340   1        Rwlcm = 1; /*读数据*/
 341   1        Elcm = 1; /*读入到LCM*/
 342   1        _nop_();
 343   1        cbyte = Datalcm; /*虚读一次 */
 344   1        Elcm = 0;
 345   1       Locatexy();  /*坐标定位,返回时保留分区状态不变 */
 346   1        Datalcm=0xFF;
 347   1        _nop_();
 348   1        Dilcm = 1; /*数据*/
 349   1        Rwlcm = 1; /*读数据*/
 350   1        Elcm = 1; /*读入到LCM*/
 351   1        _nop_();
 352   1        cbyte = Datalcm; /*从数据口读数据,真读 */
 353   1        Elcm = 0;
 354   1       }
 355          
 356          /****************************************/
 357          /* 数据写输出   */
 358          /****************************************/
 359          
 360          void Wrdata(Uchar X)
 361           {
 362   1       Locatexy();  /*坐标定位,返回时保留分区状态不变 */
 363   1      // wtcom();
 364   1        Dilcm = 1; /*数据输出*/
 365   1        Rwlcm = 0; /*写输出  */
C51 COMPILER V7.09   8_3                                                                   08/23/2005 22:56:19 PAGE 7   

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

 428          void lcdbusyL(void)
 429           {
 430   1              CS1LCM = 0;  /*CLR CS1  */
 431   1              CS2LCM = 1;  /*SETB CS2  */
 432   1              CS3LCM = 1;  /*SETB CS3  */
 433   1       wtcom();  /* waitting for enable */
 434   1       }
 435          
 436          void lcdbusyM(void)
 437           {
 438   1              CS1LCM = 1;  /*SETB CS1  */
 439   1              CS2LCM = 0;  /*CLR CS2  */
 440   1              CS3LCM = 1;  /*SETB CS3  */
 441   1       wtcom();  /* waitting for enable */
 442   1       }
 443          
 444          void lcdbusyR(void)
 445           {
 446   1              CS1LCM = 1;  /*SETB CS1  */
 447   1              CS2LCM = 1;  /*SETB CS2  */
 448   1              CS3LCM = 0;  /*CLR CS3  */
 449   1       wtcom();  /* waitting for enable */
 450   1       }
 451          
 452          void wtcom(void)
 453           {
 454   1       Dilcm = 0;  /*CLR DI  */
 455   1       Rwlcm = 1;  /*SETB RW  */
 456   1              Datalcm = 0xFF;  /*MOV DATA_LCM,#0FFH  */
 457   1       Elcm  = 1;_nop_();  
 458   1             while(Datalcm & Lcdbusy);
 459   1             Elcm  = 0;
 460   1       }
 461          
 462          /********************************************************/
 463          /*根据设定的坐标数据,定位LCM上的下一个操作单元位置 */
 464          /********************************************************/
 465          void Locatexy(void)
 466           {
 467   1       unsigned char  x,y;
 468   1       switch (col&0xc0)  /*  col.and.0xC0 */
 469   1        {   /*条件分支执行  */
 470   2        case 0:  {lcdbusyL();break;} /*左区 */
 471   2        case 0x40: {lcdbusyM();break;} /*中区 */
 472   2        case 0x80: {lcdbusyR();break;} /*右区 */
 473   2        }
 474   1       x = col&0x3F|SETX;  /*  col.and.0x3f.or.setx */
 475   1       y = row&0x07|SETY;  /*  row.and.0x07.or.sety */
 476   1        wtcom();  /*  waitting for enable  */
 477   1        Dilcm = 0;   /*CLR DI */
 478   1        Rwlcm = 0;   /*CLR RW */
 479   1        Datalcm = y;   /*MOV P0,Y */
 480   1        Elcm = 1;_nop_();Elcm = 0;
 481   1        wtcom();  /*  waitting for enable  */
 482   1        Dilcm = 0;   /*CLR DI */
 483   1        Rwlcm = 0;   /*CLR RW */
 484   1        Datalcm = x;   /*MOV P0,X */
 485   1        Elcm = 1;_nop_();Elcm = 0;
 486   1       }
 487          
 488          /********************************/
 489          /*液晶屏初始化   */
C51 COMPILER V7.09   8_3                                                                   08/23/2005 22:56:19 PAGE 9   

 490          /********************************/
 491          
 492          void Lcminit(void)
 493           {
 494   1        cbyte = DISPOFF; /*关闭显示屏 */
 495   1        WrcmdL(cbyte);
 496   1        WrcmdM(cbyte);
 497   1        WrcmdR(cbyte);
 498   1        cbyte = DISPON;  /*打开显示屏 */
 499   1        WrcmdL(cbyte);
 500   1        WrcmdM(cbyte);
 501   1        WrcmdR(cbyte);
 502   1        cbyte = DISPFIRST; /*定义显示起始行为零 */
 503   1        WrcmdL(cbyte);
 504   1        WrcmdM(cbyte);
 505   1        WrcmdR(cbyte);
 506   1        Lcmcls();
 507   1        col=0;  /*清屏  */
 508   1        row=0;
 509   1        Locatexy();
 510   1       }
 511          /********************************/
 512          /* 延时    */
 513          /********************************/
 514          void Delay(Uchar MS)
 515           {
 516   1        Uchar us,usn;
 517   1        while(MS!=0)
 518   1         { usn = 4;
 519   2          while(usn!=0)
 520   2           {
 521   3            us=0xf0;
 522   3            while (us!=0){us--;};
 523   3            usn--;
 524   3           }
 525   2          MS--;
 526   2         }
 527   1       }
 528          
 529          /********************************/
 530          //定义字符串数组  */
 531          /********************************/
 532          
 533          Uchar code STR1[]=
 534            {
 535            0x80,0x81,0x82,0x83,0x84,0x85,
 536            0x86,0x87,0x88,0x89,0x8a,0x8B
 537            };
 538             
 539          Uchar code STR2[]="Our friend over the wold";
 540          Uchar code STR3[]="Program by Keil C51 6.12";
 541          Uchar code STR4[]="Thank you ~v~ 1234567890";
 542          
 543          /********************************/
 544          /*  定义中文字库  */
 545          /********************************/
 546          
 547          Uchar code Hzk[]={
 548          /*茂 C3515 0 */
 549            0x04,0x04,0xC4,0x44,0x5F,0x44,0x44,0xF4,
 550            0x44,0x4F,0x54,0x64,0x44,0x46,0x04,0x00,
 551            0x80,0x40,0x3F,0x00,0x40,0x40,0x20,0x20,
C51 COMPILER V7.09   8_3                                                                   08/23/2005 22:56:19 PAGE 10  

 552            0x13,0x0C,0x18,0x24,0x43,0x80,0xE0,0x00,
 553          /*兴 C4843 1 */
 554            0x00,0xFE,0x4A,0x4A,0x00,0xFE,0xEA,0xAA,
 555            0xAA,0xFE,0x00,0x4A,0x4A,0xFE,0x00,0x00,
 556            0x02,0x83,0x42,0x22,0x12,0x1B,0x02,0x02,
 557            0x02,0x0B,0x12,0x22,0x62,0xC3,0x02,0x00,
 558          /*国 C2590 2 */
 559            0x00,0xFE,0x02,0xD2,0x52,0x52,0xD2,0x3E,
 560            0xD2,0x16,0x1A,0x12,0xFF,0x02,0x00,0x00,
 561            0x00,0xFF,0x50,0x53,0x52,0x4A,0x6B,0x50,
 562            0x4F,0x54,0x7B,0x40,0xFF,0x00,0x00,0x00,
 563          /*际 C2842 3 */
 564            0x00,0xFE,0x22,0xD2,0x0E,0x20,0xB8,0x4F,
 565            0xB2,0x9E,0x80,0x9F,0x72,0x8A,0x06,0x00,
 566            0x00,0xFF,0x04,0x08,0x07,0x21,0x12,0x0A,
 567            0x46,0x82,0x7E,0x06,0x0A,0x12,0x31,0x00,
 568          /*( C0308 4 */
 569            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 570            0x00,0xC0,0x30,0x08,0x04,0x02,0x00,0x00,
 571            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 572            0x00,0x03,0x0C,0x10,0x20,0x40,0x00,0x00,
 573          /*广 C2567 5 */
 574            0x00,0x00,0xFC,0x44,0x54,0x54,0x7C,0x55,
 575            0xD6,0x54,0x7C,0x54,0x54,0x44,0x44,0x00,
 576            0x80,0x60,0x1F,0x80,0x9F,0x55,0x35,0x15,
 577            0x1F,0x15,0x15,0x35,0x5F,0x80,0x00,0x00,
 578          /*东 C2211 6 */
 579            0x00,0x08,0xE8,0xA8,0xA8,0xA8,0xA8,0xFF,
 580            0xA8,0xA8,0xA8,0xA8,0xE8,0x0C,0x08,0x00,
 581            0x00,0x40,0x23,0x12,0x0A,0x06,0x02,0xFF,
 582            0x02,0x06,0x0A,0x12,0x23,0x60,0x20,0x00,
 583          /*) C0309 7 */
 584            0x00,0x00,0x02,0x04,0x08,0x30,0xC0,0x00,
 585            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 586            0x00,0x00,0x40,0x20,0x10,0x0C,0x03,0x00,
 587            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 588          /*有 C5148 8 */
 589            0x04,0x04,0x04,0x84,0xE4,0x3C,0x27,0x24,
 590            0x24,0x24,0x24,0xF4,0x24,0x06,0x04,0x00,
 591            0x04,0x02,0x01,0x00,0xFF,0x09,0x09,0x09,
 592            0x09,0x49,0x89,0x7F,0x00,0x00,0x00,0x00,
 593          /*限 C4762 9 */
 594            0x00,0xFE,0x02,0x22,0xDA,0x06,0x00,0xFE,
 595            0x92,0x92,0x92,0x92,0xFF,0x02,0x00,0x00,
 596            0x00,0xFF,0x08,0x10,0x08,0x07,0x00,0xFF,
 597            0x42,0x24,0x08,0x14,0x22,0x61,0x20,0x00,
 598          /*公 C2511 10 */
 599            0x00,0x00,0x80,0x40,0x30,0x0C,0x00,0xC0,
 600            0x07,0x1A,0x20,0x40,0x80,0x80,0x80,0x00,
 601            0x01,0x01,0x20,0x70,0x28,0x24,0x23,0x20,
 602            0x20,0x28,0x30,0x60,0x00,0x01,0x00,0x00,
 603          /*司 C4330 11 */
 604            0x10,0x10,0x92,0x92,0x92,0x92,0x92,0x92,
 605            0xD2,0x9A,0x12,0x02,0xFF,0x02,0x00,0x00,
 606            0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,
 607            0x3F,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,
 608          };
 609          /****************************************/

⌨️ 快捷键说明

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