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

📄 main.lst

📁 LCD12864液晶C语言程序用于带字库的液晶
💻 LST
📖 第 1 页 / 共 2 页
字号:
 341   3      }
 342   2      lcdPosX = 0x88;
 343   2      }
 344   1      lcd_wri(0x36);
 345   1      lcd_wri(0x30);
 346   1      
 347   1      }
 348          
 349          //=============================================== 
 350          
 351          void showPhoto (unsigned char cx,cy,high,width ,unsigned char *bmp)//指定位置显示小图
 352             {
 353   1         lcd_wri(0x34);
 354   1              lcdPosX = cx;//(0x80--------0x8F)
 355   1          if (cy==0)
 356   1          {
 357   2           lcdPosY=0x80;
 358   2      }
 359   1      else if(cy==1)
 360   1          { 
 361   2          lcdPosY=0x90;
 362   2      } 
 363   1             else if(cy==2)
 364   1            {
 365   2          lcdPosY=0x80;
C51 COMPILER V7.50   MAIN                                                                  09/02/2007 20:03:07 PAGE 7   

 366   2        }
 367   1             else if(cy==3)
 368   1            { 
 369   2          lcdPosY=0x90;
 370   2      }
 371   1      //lcdPosY = cy;//(lcdposx+(0-----32)
 372   1          width= 16*width/8;
 373   1      halfLineCnt =high*16;
 374   1      for (;halfLineCnt != 0; halfLineCnt--)
 375   1      {
 376   2      basicBlock =width;//指的是块(块是8点),2*8=16点
 377   2      wrPosition ();//指定坐标
 378   2      
 379   2      for (; basicBlock != 0; basicBlock--)
 380   2      {
 381   3      
 382   3      lcd_wrd (*bmp++);//读入一个字符数据
 383   3      
 384   3      
 385   3      }
 386   2      lcdPosY++;
 387   2      
 388   2      }
 389   1      lcd_wri(0x36);//打开绘图模式
 390   1      lcd_wri(0x30);//写入基本指令
 391   1      
 392   1      }
 393          //===============================================
 394          void convertChar (unsigned char CX, CY, width) 
 395          {
 396   1      //displayPhoto(0,1);
 397   1      
 398   1      lcdPosY = 0x80;
 399   1      
 400   1      if (CX == 0)
 401   1      {
 402   2      CX = 0x80;
 403   2      halfLineCnt = 16;
 404   2      }
 405   1      else if (CX == 1)
 406   1      {
 407   2      CX = 0x80;
 408   2      halfLineCnt = 32;
 409   2      }
 410   1      else if (CX == 2)
 411   1      {
 412   2      CX = 0x88;
 413   2      halfLineCnt = 16;
 414   2      }
 415   1      else if (CX == 3)
 416   1      {
 417   2      CX = 0x88;
 418   2      halfLineCnt = 32;
 419   2      }
 420   1      lcdPosX = CX + CY;
 421   1      
 422   1          for (; halfLineCnt != 0; halfLineCnt--)
 423   1      {
 424   2      basicBlock = width;
 425   2      wrPosition();
 426   2      
 427   2      for (;basicBlock != 0; basicBlock--)
C51 COMPILER V7.50   MAIN                                                                  09/02/2007 20:03:07 PAGE 8   

 428   2      {
 429   3      if (halfLineCnt > 16)
 430   3      {
 431   4      lcd_wrd(0x00);
 432   4      }
 433   3      else
 434   3      {
 435   4      lcd_wrd (0xff);
 436   4      }
 437   3      }
 438   2      lcdPosY++;
 439   2      }
 440   1      
 441   1      lcd_wri(0x36);
 442   1      // lcd_wri(0x30);
 443   1      }
 444          //===============================================
 445          void wrPosition (void) 
 446          {
 447   1      lcd_wri(0x34);
 448   1      lcd_wri(lcdPosY);
 449   1      lcd_wri(lcdPosX);
 450   1      lcd_wri(0x30);
 451   1      }
 452          //===============================================
 453          void dispString (unsigned char X, Y, speed, unsigned char *msg) 
 454          {
 455   1      if (X == 0)
 456   1      {
 457   2      X = 0x80;
 458   2      }
 459   1      else if (X == 1)
 460   1      {
 461   2      X = 0x90;
 462   2      }
 463   1      else if (X == 2)
 464   1      {
 465   2      X = 0x88;
 466   2      }
 467   1      else if (X == 3)
 468   1      {
 469   2      X = 0x98;
 470   2      }
 471   1      Y = X + Y;
 472   1      lcd_wri(Y);
 473   1      while (*msg)
 474   1      {
 475   2      lcd_wrd(*msg++);
 476   2      delayMs(speed);
 477   2      }
 478   1      }
 479          //===============================================
 480          
 481          //===============================================
 482          void delayMs (unsigned char ms) 
 483          {
 484   1      unsigned char i;
 485   1      while (--ms)
 486   1      {
 487   2      for (i = 0; i < 125; i++);
 488   2      }
 489   1      }
C51 COMPILER V7.50   MAIN                                                                  09/02/2007 20:03:07 PAGE 9   

 490          //===============================================
 491          void delaySec (unsigned char sec) 
 492          {
 493   1      unsigned char i;
 494   1      while (--sec)
 495   1      {
 496   2      for (i = 0; i < 200; i++)
 497   2      {
 498   3      delayMs (6);
 499   3      }
 500   2      }
 501   1      }
 502          //===============================================
 503          void lcd_nop(void)
 504          {
 505   1      _nop_();
*** WARNING C206 IN LINE 505 OF MAIN.C: '_nop_': missing function-prototype
*** ERROR C264 IN LINE 505 OF MAIN.C: intrinsic '_nop_': declaration/activation error
 506   1      _nop_();
 507   1      _nop_();
 508   1      _nop_();
 509   1      _nop_();
 510   1      _nop_();
 511   1      _nop_();
 512   1      _nop_();
 513   1      _nop_();
 514   1      _nop_();
 515   1      _nop_();
 516   1      }
 517          
 518          void lcd_wri(unsigned char indata)
 519          {
 520   1          bitLCDcs = 0;
*** ERROR C202 IN LINE 520 OF MAIN.C: 'bitLCDcs': undefined identifier
 521   1      lcd_nop();
 522   1      bitLCDcs = 1;
*** ERROR C202 IN LINE 522 OF MAIN.C: 'bitLCDcs': undefined identifier
 523   1      lcd_nop();
 524   1          lcd_wbyte(0xf8);
 525   1          lcd_wbyte(indata & 0xf0);
 526   1          lcd_wbyte((indata << 4) & 0xf0);
 527   1      }
 528          
 529          
 530          void lcd_wrd(unsigned char indata)
 531          {
 532   1          bitLCDcs = 0;
*** ERROR C202 IN LINE 532 OF MAIN.C: 'bitLCDcs': undefined identifier
 533   1      lcd_nop();
 534   1      bitLCDcs = 1;
*** ERROR C202 IN LINE 534 OF MAIN.C: 'bitLCDcs': undefined identifier
 535   1      lcd_nop();
 536   1          lcd_wbyte(0xfa);
 537   1          lcd_wbyte(indata & 0xf0);
 538   1          lcd_wbyte((indata << 4) & 0xf0);
 539   1      }
 540          
 541          
 542          void lcd_wbyte(unsigned char sendbyte)
 543          {
 544   1      unsigned char data j=8;
 545   1      for(;j>0;j--)
C51 COMPILER V7.50   MAIN                                                                  09/02/2007 20:03:07 PAGE 10  

 546   1      {
 547   2              lcd_nop();
 548   2      sendbyte<<=1; //无论C51怎样实现这个操作,始终会使CY=sendbyte^7;
 549   2      bitLCDsid=CY;
*** ERROR C202 IN LINE 549 OF MAIN.C: 'bitLCDsid': undefined identifier
 550   2              lcd_nop();
 551   2      bitLCDsclk=0;
*** ERROR C202 IN LINE 551 OF MAIN.C: 'bitLCDsclk': undefined identifier
 552   2              lcd_nop();
 553   2      bitLCDsclk=1;
*** ERROR C202 IN LINE 553 OF MAIN.C: 'bitLCDsclk': undefined identifier
 554   2              lcd_nop();
 555   2              bitLCDsclk=0;
*** ERROR C202 IN LINE 555 OF MAIN.C: 'bitLCDsclk': undefined identifier
 556   2              lcd_nop();
 557   2      }
 558   1      }
 559          
 560          
 561          void lcd_delay(void)
 562          {
 563   1         delay_ms(1);
 564   1      }
 565          
 566          
 567          void delay_ms(unsigned char k)
 568          {
 569   1      unsigned char i;
 570   1      unsigned char j;
 571   1      for ( ; k>0 ; k--)
 572   1      {
 573   2      for (i=0x0c ; i>0 ; i--)
 574   2      {
 575   3      for (j=0xe5 ; j>0 ; j--)
 576   3      {
 577   4      }
 578   3      }
 579   2      }
 580   1      }
 581          
 582          
 583          
 584          
 585          
 586          void alldisplayPhoto (unsigned char *bmp, unsigned char bmpCls)
 587          
 588          {
 589   1      
 590   1        lcdPosX = 0x80;
 591   1      halfScr = 2;
 592   1      
 593   1      for (;halfScr != 0; halfScr--)
 594   1      {
 595   2      lcdClear ();
 596   2      lcdPosY = 0x80;
 597   2      halfLineCnt = 32;
 598   2      
 599   2      for (;halfLineCnt != 0; halfLineCnt--)
 600   2      {
 601   3      basicBlock = 16;
 602   3      wrPosition ();
 603   3      
C51 COMPILER V7.50   MAIN                                                                  09/02/2007 20:03:07 PAGE 11  

 604   3      for (; basicBlock != 0; basicBlock--)
 605   3      {
 606   4      if (bmpCls == 0)
 607   4      {
 608   5      lcd_wrd (*bmp++);
 609   5      }
 610   4      else if (bmpCls == 1)
 611   4      {
 612   5      lcd_wrd (0x00);
 613   5      }
 614   4      }
 615   3      lcdPosY++;
 616   3      }
 617   2      lcdPosX = 0x88;
 618   2      }
 619   1      lcd_wri(0x36);
 620   1      lcd_wri(0x30);
 621   1      
 622   1      }
 623          
 624          
 625          void clearChar (unsigned char CX, CY, width) 
 626          {
 627   1      lcd_wri(0x36);
 628   1      lcdPosY = 0x80;
 629   1      
 630   1      if (CX == 0)
 631   1      {
 632   2      CX = 0x80;
 633   2      halfLineCnt = 16;
 634   2      }
 635   1      else if (CX == 1)
 636   1      {
 637   2      CX = 0x80;
 638   2      halfLineCnt = 32;
 639   2      }
 640   1      else if (CX == 2)
 641   1      {
 642   2      CX = 0x88;
 643   2      halfLineCnt = 16;
 644   2      }
 645   1      else if (CX == 3)
 646   1      {
 647   2      CX = 0x88;
 648   2      halfLineCnt = 32;
 649   2      }
 650   1      lcdPosX = CX + CY;
 651   1      
 652   1          for (; halfLineCnt != 0; halfLineCnt--)
 653   1      {
 654   2      basicBlock = width;
 655   2      wrPosition();
 656   2      
 657   2      for (;basicBlock != 0; basicBlock--)
 658   2      {
 659   3      if (halfLineCnt > 16)
 660   3      {
 661   4      lcd_wrd(0x00);
 662   4      }
 663   3      else
 664   3      {
 665   4      lcd_wrd (0x00);
C51 COMPILER V7.50   MAIN                                                                  09/02/2007 20:03:07 PAGE 12  

 666   4      }
 667   3      }
 668   2      lcdPosY++;
 669   2      }
 670   1      
 671   1      lcd_wri(0x36);
 672   1      //lcd_wri(0x30);
 673   1      }

C51 COMPILATION COMPLETE.  1 WARNING(S),  9 ERROR(S)

⌨️ 快捷键说明

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