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

📄 ks0108.lst

📁 一个占用内存极少的菜单系统的实现
💻 LST
📖 第 1 页 / 共 5 页
字号:
 292          
 293          
 294          
 295          
 296          /*
 297          *****************************************************************************
 298          * Display_Chinese - 指定位置显示一个16x16的汉字
 299          * DESCRIPTION: -
 300          *
 301          * @Param x0:X轴坐标0--(192-16)
 302          * @Param y0:Y轴坐标0--(8-2)
C51 COMPILER V7.06   KS0108                                                                04/16/2008 17:32:01 PAGE 6   

 303          * @Param UniCode:汉字内码
 304          * @Return :
 305          * ----
 306          *****************************************************************************
 307          */
 308          void Display_Chinese(U16 UniCode, U8 x0, U8 y0)
 309          {
 310   1        U16 CodeID;
 311   1        U8 i, ImgData;
 312   1        U8 HZ_X = x0;
 313   1        // 在字库里搜索汉字
 314   1          for(CodeID=0; CodeID < hzNum; CodeID++){
 315   2              // 找到 指定汉字的 Index 后, 跳出循环
 316   2              if ( (hzIndex[2*CodeID] == UniCode/256) && (hzIndex[2*CodeID+1] == UniCode%256) ){
 317   3                  break;
 318   3              }else if(CodeID == (hzNum-1)){//未检索到的汉字,显示个"##"提示吧
 319   3                  GUI_DispCharAt('#',x0,y0);
 320   3                  GUI_DispCharAt('#',x0+Char_XSIZE,y0);
 321   3                  return;
 322   3              }
 323   2          }
 324   1      //----------------------------------
 325   1          switch (GUITextMode) {
 326   2              case GUI_TEXTMODE_NORMAL :
 327   2      //-------------------------------------------------------------------------
 328   2                  // 写汉字的上半部分  (一个汉字 32 个字节,  显示为2行 * 16列)
 329   2                  for(i=0; i<16; i++){
 330   3                      ImgData = hzdot[i+CodeID*32];
 331   3                      Display_Locate(ImgData, HZ_X, y0);
 332   3                      HZ_X++;
 333   3                  }
 334   2                  // 写汉字的下半部分
 335   2                  HZ_X = x0;
 336   2                  for(i=16; i<32; i++){
 337   3                      ImgData = hzdot[i+CodeID*32];
 338   3                      Display_Locate(ImgData, HZ_X, y0 + 1);
 339   3                      HZ_X++;
 340   3                  }
 341   2      //-------------------------------------------------------------------------
 342   2                   break;
 343   2              case GUI_TEXTMODE_REVERSE :
 344   2      //-------------------------------------------------------------------------
 345   2                  // 写汉字的上半部分  (一个汉字 32 个字节,  显示为2行 * 16列)
 346   2                  for(i=0; i<16; i++){
 347   3                    ImgData = hzdot[i+CodeID*32]^0xFF;
 348   3                    Display_Locate(ImgData, HZ_X, y0);
 349   3                    HZ_X++;
 350   3                  }
 351   2                  // 写汉字的下半部分
 352   2                  HZ_X = x0;
 353   2                  for(i=16; i<32; i++){
 354   3                    ImgData = hzdot[i+CodeID*32]^0xFF;
 355   3                    Display_Locate(ImgData, HZ_X, y0 + 1);
 356   3                    HZ_X++;
 357   3                  }
 358   2      //-------------------------------------------------------------------------
 359   2                   break;
 360   2              case GUI_TEXTMODE_UNDERLINE :
 361   2      //-------------------------------------------------------------------------
 362   2                  // 写汉字的上半部分  (一个汉字 32 个字节,  显示为2行 * 16列)
 363   2                  for(i=0; i<16; i++){
 364   3                    ImgData = hzdot[i+CodeID*32];
C51 COMPILER V7.06   KS0108                                                                04/16/2008 17:32:01 PAGE 7   

 365   3                    Display_Locate(ImgData, HZ_X, y0);
 366   3                    HZ_X++;
 367   3                  }
 368   2                  // 写汉字的下半部分
 369   2                  HZ_X = x0;
 370   2                  for(i=16; i<32; i++){
 371   3                    ImgData = hzdot[i+CodeID*32]|0x80;
 372   3                    Display_Locate(ImgData, HZ_X, y0 + 1);
 373   3                    HZ_X++;
 374   3                  }
 375   2      //-------------------------------------------------------------------------
 376   2                   break;
 377   2              default :
 378   2                   break;
 379   2          }
 380   1      }
 381          
 382          
 383          /*
 384          *****************************************************************************
 385          * Display_ASCII - 显示一个ASCII
 386          * DESCRIPTION: -
 387          *
 388          * @Param X:X轴坐标 0--192  (注意边界)
 389          * @Param Y:Y轴坐标 0-- 7   (注意边界)
 390          * @Param Char:ASCII码
 391          * @Return :
 392          * ----
 393          *****************************************************************************
 394          */
 395          void Display_ASCII(U8 Char, U8 X, U8 Y)
 396          {
 397   1          U8 i, ImgData;
 398   1          U8 HZ_X = X;
 399   1          if(GUIEnFont == En_5x8){
 400   2              Display_Locate(0x00, HZ_X, Y);
 401   2              HZ_X++;
 402   2              for(i = 0; i < 5; i++){
 403   3                  ImgData = chardot_5x8[i+(Char-0x20)*5];
 404   3                  Display_Locate(ImgData, HZ_X, Y);
 405   3                  HZ_X++;
 406   3              }
 407   2              Display_Locate(0x00, HZ_X, Y);
 408   2              HZ_X++;
 409   2              Display_Locate(0x00, HZ_X, Y);
 410   2          } else {
 411   2              for(i=0;i<8;i++){
 412   3                  ImgData = chardot_8x16[i+(Char-0x20)*16];
 413   3                  Display_Locate(ImgData, HZ_X, Y);
 414   3                  HZ_X++;
 415   3              }
 416   2              HZ_X=X;
 417   2              for(i=8;i<16;i++){
 418   3                  ImgData = chardot_8x16[i+(Char-0x20)*16];
 419   3                  Display_Locate(ImgData, HZ_X, Y + 1);
 420   3                  HZ_X++;
 421   3            }
 422   2      
 423   2         }
 424   1      }
 425          
 426          
C51 COMPILER V7.06   KS0108                                                                04/16/2008 17:32:01 PAGE 8   

 427          
 428          
 429          /*
 430          *****************************************************************************
 431          * Display_InvASCII - 反显示ASCII
 432          * DESCRIPTION: -
 433          *
 434          * @Param X:X轴坐标  0--191
 435          * @Param Y:Y轴坐标  0--7
 436          * @Param Char:ASCII码
 437          * @Return :
 438          * ----
 439          *****************************************************************************
 440          */
 441          void Display_InvASCII(U8 Char, U8 X, U8 Y)
 442          {
 443   1      
 444   1          U8 i, ImgData;
 445   1          U8 HZ_X = X;
 446   1          if(GUIEnFont == En_5x8){
 447   2              Display_Locate(0xFF, HZ_X, Y);
 448   2              HZ_X++;
 449   2              for(i = 0; i < 5; i++){
 450   3                  ImgData = chardot_5x8[i+(Char-0x20)*5]^0xFF;
 451   3                  Display_Locate(ImgData, HZ_X, Y);
 452   3                  HZ_X++;
 453   3              }
 454   2              Display_Locate(0xFF, HZ_X, Y);
 455   2              HZ_X++;
 456   2              Display_Locate(0xFF, HZ_X, Y);
 457   2          } else {
 458   2              for(i=0;i<8;i++){
 459   3                  ImgData = chardot_8x16[i+(Char-0x20)*16] ^ 0xFF;
 460   3                  Display_Locate(ImgData, HZ_X, Y);
 461   3                  HZ_X++;
 462   3              }
 463   2              HZ_X=X;
 464   2              for(i=8;i<16;i++){
 465   3                  ImgData = chardot_8x16[i+(Char-0x20)*16] ^ 0xFF;
 466   3                  Display_Locate(ImgData, HZ_X, Y + 1);
 467   3                  HZ_X++;
 468   3              }
 469   2          }
 470   1      }
 471          
 472          /*
 473          *****************************************************************************
 474          * Display_ASCII_UnderLine - 显示一个带有下划线的ASCII
 475          * DESCRIPTION: -
 476          *
 477          * @Param X:X轴坐标
 478          * @Param Y:Y轴坐标
 479          * @Param Char:ASCII码
 480          * @Return :
 481          * ----
 482          *****************************************************************************
 483          */
 484          void Display_ASCII_UnderLine(U8 Char, U8 X, U8 Y)
 485          {
 486   1        //U16 Position;
 487   1        U8 i, ImgData;
 488   1        U8 HZ_X = X;
C51 COMPILER V7.06   KS0108                                                                04/16/2008 17:32:01 PAGE 9   

 489   1          if(GUIEnFont == En_5x8){
 490   2              Display_Locate(0x80, HZ_X, Y);
 491   2              HZ_X++;
 492   2              for(i = 0; i < 5; i++){
 493   3                ImgData = chardot_5x8[i+(Char-0x20)*5] | 0x80;
 494   3                Display_Locate(ImgData, HZ_X, Y);
 495   3                HZ_X++;
 496   3              }
 497   2              Display_Locate(0x80, HZ_X, Y);
 498   2              HZ_X++;
 499   2              Display_Locate(0x80, HZ_X, Y);
 500   2          } else {
 501   2              for(i=0;i<8;i++){
 502   3                  ImgData = chardot_8x16[i+(Char-0x20)*16];
 503   3                  Display_Locate(ImgData, HZ_X, Y);
 504   3                  HZ_X++;
 505   3              }
 506   2              HZ_X=X;
 507   2              for(i=8;i<16;i++){
 508   3                  ImgData = chardot_8x16[i+(Char-0x20)*16] | 0x80;
 509   3                  Display_Locate(ImgData, HZ_X, Y + 1);
 510   3                  HZ_X++;
 511   3              }
 512   2          }
 513   1      }
 514          
 515          /*
 516          ----------------------------------------------------------------------------------------------
 517          
 518          ----------------------------------------------------------------------------------------------
 519          */
 520          #if 0
              /*
              ----------------------------------------------------------------------------------------------
              //移动当前Y坐标
              ----------------------------------------------------------------------------------------------
              */
              void GUI_GotoY(U8 y)
              {
                  if (y > 7) {
                      PosY = 7;
                  } else {
                      PosY = y;
                  }
              }
              /*
              ----------------------------------------------------------------------------------------------
              //移动当前Y坐标
              ----------------------------------------------------------------------------------------------
              */
              void GUI_GotoX(U8 x)
              {
                  if (x > 127) {
                      PosX = 127;
                  } else {
                      PosX = x;
                  }
              }
              /*
              *****************************************************************************
              * GUI_GotoXY - 系统光标移动到指定位置
              * DESCRIPTION: -
C51 COMPILER V7.06   KS0108                                                                04/16/2008 17:32:01 PAGE 10  

              *
              * @Param y:Y轴坐标
              * @Param x:X轴坐标
              * @Return :
              * ----
              *****************************************************************************
              */
              void GUI_GotoXY(U8 x,U8 y)
              {
                  GUI_GotoX(x);
                  GUI_GotoY(y);
              }
              
              #endif
 565          /*
 566          *****************************************************************************
 567          * GUI_SetTextMode - 设置文字显示模式
 568          * DESCRIPTION: -
 569          *
 570          * @Param TextMode:模式代码
 571          * @Return :模式代码
 572          * ----
 573          *****************************************************************************
 574          */
 575          
 576          U8 GUI_SetTextMode(U8 TextMode)
 577          {
 578   1          GUITextMode = TextMode;
 579   1          return GUITextMode;
 580   1      }
 581          
 582          /*
 583          *****************************************************************************
 584          * GUI_SetEnFont - 设置显示的英文字体
 585          * DESCRIPTION: -
 586          * 目前支持两种字体8x16 5x8
 587          * @Param EnFont:字体代码
 588          * @Return :
 589          * ----
 590          *****************************************************************************

⌨️ 快捷键说明

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