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

📄 12864lcd.lst

📁 51开发板的源程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 574   1              uchar code *asc_ptr;
 575   1      
 576   1              uint i,j,w,k;
 577   1              bit flag;
 578   1              EA = 0;
 579   1           i=0;       
 580   1              w = lcd_x;
 581   1              Mcs=1;
 582   1              Scs=0;
 583   1              if(lcd_x>=8)
 584   1              {
 585   2                      lcd_x = lcd_x - 8;
 586   2                      Mcs = 0;
 587   2                      Scs = 1;
 588   2              }
 589   1              lcd_y = lcd_y*2;
 590   1              while(ptr[i] != 0)
 591   1              {
 592   2                      if(w==8)
 593   2                      {
 594   3                              lcd_x = 0;
 595   3                              Mcs=0;
 596   3                              Scs=1;
 597   3                      }
 598   2                      if(w>15)
 599   2                              break;          
 600   2                      c1 = ptr[i];
 601   2                      c2 = ptr[i+1];
 602   2                      SetPos(lcd_x,lcd_y);            
 603   2                      if(c1=='\n')
 604   2                      {
 605   3                              lcd_y++;
 606   3                              lcd_y++;
 607   3                              lcd_x = 0;
 608   3                              w = 0;
 609   3                              Mcs=1;
 610   3                              Scs=0;
 611   3                              i++;
 612   3                              c1 = ptr[i];
 613   3                              c2 = ptr[i+1];
C51 COMPILER V7.06   12864LCD                                                              12/18/2007 11:18:07 PAGE 11  

 614   3                              SetPos(lcd_x,lcd_y);
 615   3                      }
 616   2                      if(c1 >= 0x20)                  //// ASCII
 617   2                      {       
 618   3                              asc_ptr = ASC_MSK + (c1-0x20)*ASC_CHR_HEIGHT-(16-ASC_CHR_HEIGHT);
 619   3                              for(j=0;j<16;j++)                       //写16行
 620   3                              {
 621   4                                      if(j==8)
 622   4                                      {
 623   5                                              lcd_y++;
 624   5                                              SetPos(lcd_x,lcd_y);
 625   5                                      }
 626   4                                      write_data(*asc_ptr++);
 627   4                              }
 628   3                              lcd_y--;
 629   3                      }
 630   2                      else                            // 中文
 631   2                      {       
 632   3                              if(w>14)
 633   3                                      break;
 634   3                              flag = 0;
 635   3                              for(j=0;j<sizeof(GB_16)/sizeof(GB_16[0]);j++)
 636   3                                      if(c1 == GB_16[j].Index[0] && c2 == GB_16[j].Index[1])
 637   3                                              break;
 638   3                              for(k=0;k<sizeof(GB_16[0].Msk)/2;k++)
 639   3                              {
 640   4                                      if(k==8 && flag)
 641   4                                      {
 642   5                                              flag = 0;
 643   5                                              Mcs=1;
 644   5                                              Scs=0;
 645   5                                              lcd_y++;
 646   5                                              lcd_x = 7;
 647   5                                              SetPos(lcd_x,lcd_y);
 648   5                                      }
 649   4                                      else if(k == 8)
 650   4                                      {
 651   5                                              lcd_y++;
 652   5                                              SetPos(lcd_x,lcd_y);
 653   5                                      }
 654   4                                      if(k==4 && lcd_x==7 && !flag)
 655   4                                      {
 656   5                                              flag = 1;
 657   5                                              lcd_x = 0;
 658   5                                              Mcs=0;
 659   5                                              Scs=1;
 660   5                                              SetPos(lcd_x,lcd_y);
 661   5                                      }
 662   4                                      if(k==12 && lcd_x==7 && !flag)
 663   4                                      {
 664   5                                              flag = 1;
 665   5                                              lcd_x = 0;
 666   5                                              Mcs=0;
 667   5                                              Scs=1;
 668   5                                              SetPos(lcd_x,lcd_y);
 669   5                                      }
 670   4                                      if(j < sizeof(GB_16)/sizeof(GB_16[0]))
 671   4                                      {
 672   5                                              write_data(GB_16[j].Msk[k*2]);
 673   5                                              write_data(GB_16[j].Msk[k*2+1]);
 674   5                                      }
 675   4                                      else                                            // 未找到该字
C51 COMPILER V7.06   12864LCD                                                              12/18/2007 11:18:07 PAGE 12  

 676   4                                      {
 677   5                                              write_data(0);
 678   5                                              write_data(0);
 679   5                                      }
 680   4                              }
 681   3                              lcd_y--;
 682   3                              if(!flag)
 683   3                                      lcd_x++;
 684   3                              w++;
 685   3                              i++;
 686   3                      }
 687   2                      lcd_x++;
 688   2                      w++;
 689   2                      i++;
 690   2              }
 691   1              EA = 1;
 692   1      }
 693          
 694          
 695          /*-----------------在制定位置显示字符--------------------------*/
 696          
 697          void DisplayType(uchar lcdx,uchar lcdy,uchar value)
 698          {
 699   1              uchar i;
 700   1              uchar code *asc_ptr;
 701   1              EA = 0;
 702   1              if(lcdx>=8)
 703   1              {
 704   2                      lcdx = lcdx-8;
 705   2                      Mcs=0;
 706   2                      Scs=1;
 707   2              }else
 708   1              {
 709   2                      Mcs=1;
 710   2                      Scs=0;
 711   2              }
 712   1              lcdy = lcdy*2;
 713   1              SetPos(lcdx,lcdy);
 714   1              asc_ptr = ASC_MSK + (value-0x20)*ASC_CHR_HEIGHT-(16-ASC_CHR_HEIGHT);
 715   1              for(i=0;i<16;i++)                       //写16行
 716   1              {
 717   2                      if(i==8)
 718   2                      {
 719   3                              lcdy++;
 720   3                              SetPos(lcdx,lcdy);
 721   3                      }
 722   2                      write_data(*asc_ptr++);
 723   2              }
 724   1              EA = 1;
 725   1      }
 726          
 727          /*------------------在制定位置显示'|'-----------------------------*/
 728          void DispRow(uchar lcd_x,uchar lcd_y)
 729          {
 730   1              EA = 0;
 731   1              if(lcd_x>=64)
 732   1              {
 733   2                      lcd_x = lcd_x-64;
 734   2                      Mcs=0;
 735   2                      Scs=1;
 736   2              }else
 737   1              {
C51 COMPILER V7.06   12864LCD                                                              12/18/2007 11:18:07 PAGE 13  

 738   2                      Mcs=1;
 739   2                      Scs=0;
 740   2              }
 741   1              write_com(Col_Add+lcd_x);
 742   1              write_com(Page_Add+lcd_y);
 743   1              write_data(0xfe);
 744   1              write_com(Col_Add+lcd_x);
 745   1              write_com(Page_Add+lcd_y+1);
 746   1              write_data(0x7f);
 747   1              EA = 1;
 748   1      }
 749          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1092    ----
   CONSTANT SIZE    =   5314    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      28
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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