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

📄 rt240128.lst

📁 基于MST-G240128点阵液晶的 状态机机制 人机界面四级滚屏菜单 源代码 ,带时间片机制模拟操作系统
💻 LST
📖 第 1 页 / 共 3 页
字号:
 415   1         x = xx;
 416   1              y = yy;
 417   1         while(*str != '\0')
 418   1         {
 419   2            LCD_DispAsciiCh16x8(x, y, *str);
 420   2            str++;
 421   2            x = x + 8;
 422   2         } 
 423   1      }
 424          
 425          
 426          /****************************************************************************
 427          * 名称:LCD_DispChChar16x16()
 428          * 功能:显示汉字(16*16字体)。
 429          * 入口参数:x   指定显示位置,x坐标
 430          *           y   指定显示位置,y坐标
 431          *           ch  要显示的汉字对应的数组的首地址。
 432          * 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
 433          * 说明:操作失败原因是指定地址超出有效范围。
 434          ****************************************************************************/
 435          bit LCD_DispChChar16x16(uint8 xx, uint8 yy, char *ucCHAR, uint8 FontNo)
 436          {  
 437   1         uint8  xdata x, y;
 438   1         uint8  xdata i, j, k;
 439   1         char   xdata *OffSetCH; 
 440   1         uint16 xdata AddrOffSet;
 441   1            
 442   1         x = xx;
 443   1              y = yy;
 444   1         if( x >= (GUI_LCM_XMAX-8) )                  /* 参数过滤 */
 445   1           return(0);
 446   1         if( y >= (GUI_LCM_YMAX-8) )                  /* 参数过滤 */
 447   1           return(0);
 448   1      
 449   1         OffSetCH   = strstr(HzIndex, ucCHAR);
 450   1         if( OffSetCH == 0 )
 451   1           return (0);
 452   1         AddrOffSet = ( OffSetCH - HzIndex ) << 4;    // = / 2 * 32;
*** ERROR C193 IN LINE 452 OF RT240128.C: '<<': bad operand type
 453   1                                                   
 454   1         k = 0;
 455   1         for(i=0; i<16; i++)                                                   // 显示共16行
 456   1         {  
 457   2            for(j=0; j<2; j++)                                              // 每行共16点
 458   2            {  
 459   3                         if( FontNo == 0 )                      // 宋体
 460   3                 LCD_UpdateByte(x, y, FONT16x16ChCH1[AddrOffSet + k]);
 461   3                         if( FontNo == 1 )                      // 宋体加粗
 462   3                 LCD_UpdateByte(x, y, FONT16x16ChCH2[AddrOffSet + k]);
 463   3      
 464   3                         x = x + 8;
 465   3                              k++;
C51 COMPILER V7.05   RT240128                                                              08/27/2006 23:31:34 PAGE 9   

 466   3            }      
 467   2            y++;                                                                                  // 指向下一行
 468   2            x = x - 16;                                                                   // 恢复x值
 469   2         }   
 470   1         return(1);
 471   1      }
 472          
 473          
 474          /****************************************************************************
 475          * 名称:LCD_DispChStr16x16()
 476          * 功能:输出显示字符串(16*16字体)。
 477          * 入口参数:x   指定显示位置,x坐标
 478          *           y   指定显示位置,y坐标
 479          *           str 要显示的字符串
 480          * 出口参数:无
 481          * 说明:操作失败原因是指定地址超出有效范围。
 482          ****************************************************************************/
 483          void LCD_DispChStr16x16(uint8 xx, uint8 yy, const char *str, uint8 FontNo)
 484          {  
 485   1         uint8  idata x, y;
 486   1         char   idata SubStr[3] = {0, 0, 0};
 487   1      
 488   1         x = xx;
 489   1              y = yy;
 490   1         while( *str != 0 )
 491   1         {
 492   2            strncpy(SubStr, str, 2);
 493   2            SubStr[2] = 0;
 494   2       
 495   2            LCD_DispChChar16x16(x, y, SubStr, FontNo);
 496   2            str = str + 2;
 497   2            x = x + 16;
 498   2         } 
 499   1      }
 500          
 501          
 502          /****************************************************************************
 503          * 名称:LCD_DispAsciiChStr()
 504          * 功能:显示ASCII码和汉字混编字符串.
 505          * 入口参数:x   指定显示位置,x坐标
 506          *           y   指定显示位置,y坐标
 507          *           str 要显示的字符串
 508          * 出口参数:无
 509          * 说明:操作失败原因是指定地址超出有效范围。
 510          ****************************************************************************/
 511          void LCD_DispAsciiChStr(uint8 xx, uint8 yy, const char *str, uint8 FontNo)
 512          {  
 513   1         uint8  idata x, y;
 514   1         char   idata SubStr[3] = {0, 0, 0};
 515   1      
 516   1         x = xx;
 517   1              y = yy;
 518   1         while( *str != 0 )
 519   1         {
 520   2            if( (uint8)*str < 0xA0 )
 521   2                      {
 522   3                    LCD_DispAsciiCh16x8(x, y, *str);
 523   3               str++;
 524   3               x = x + 8;
 525   3                      }
 526   2      
 527   2            if( (uint8)*str >= 0xA0 )
C51 COMPILER V7.05   RT240128                                                              08/27/2006 23:31:34 PAGE 10  

 528   2                      {
 529   3               strncpy(SubStr, str, 2);
 530   3               SubStr[2] = 0;
 531   3       
 532   3               LCD_DispChChar16x16(x, y, SubStr, FontNo);
 533   3               str = str + 2;
 534   3               x = x + 16;
 535   3            } 
 536   2         } 
 537   1      }
 538          
 539          
 540          /****************************************************************************
 541          * 名称:LCD_DispAsciiChCURS()
 542          * 功能:显示光标
 543          * 入口参数:x        指定显示位置,x坐标
 544          *           y        指定显示位置,y坐标
 545          *           bCOLOR  0/1, 不显示/显示.    
 546          *           bCHAR   0/1, ASCII码字符/汉字字符型光标.
 547          * 出口参数:
 548          * 说明:
 549          ****************************************************************************/
 550          void LCD_DispAsciiChCURS(uint8 xx, uint8 yy, bit bCOLOR, bit bCHAR)
 551          {                                                   
 552   1         uint8  idata x, y;
 553   1      
 554   1         x = xx;
 555   1              y = yy;
 556   1      
 557   1         if( bCHAR == 1 )    // 显示汉字
 558   1              {
 559   2                 if( bCOLOR == 1 )      // 显示光标
 560   2                      {
 561   3                    LCD_UpdateByte(x,   y+15, 0xff);
 562   3                    LCD_UpdateByte(x+8, y+15, 0xff);
 563   3            } 
 564   2                 else                   // 不显示光标
 565   2                      {
 566   3                    LCD_UpdateByte(x,   y+15, 0x00);
 567   3                    LCD_UpdateByte(x+8, y+15, 0x00);
 568   3            } 
 569   2              }
 570   1         else     // 显示ASCII码
 571   1              {
 572   2                 if( bCOLOR == 1 )      // 显示光标
 573   2                      {
 574   3                    LCD_UpdateByte(x,   y+15, 0xff);
 575   3            } 
 576   2                 else                   // 不显示光标
 577   2                      {
 578   3                    LCD_UpdateByte(x,   y+15, 0x00);
 579   3            } 
 580   2              }
 581   1      }
 582          
 583          
 584          /****************************************************************************
 585          ** 函数名称: LCD_SelfTest()
 586          ** 功能描述: LCD测试程序
 587          ** 入口参数: 无
 588          ** 出口参数: 无
 589          ** 全局变量: 无
C51 COMPILER V7.05   RT240128                                                              08/27/2006 23:31:34 PAGE 11  

 590          ** 调用模块: 无
 591          ** 说明:
 592          ****************************************************************************/
 593          void LCD_SelfTest(void)
 594          {   
 595   1         LCD_DispAsciiChStr  (16, 96, "苏州LZK-X型电动机", 1);
 596   1      
 597   1         LCD_DispAsciiCh16x8 (16, 16, '4' );
 598   1         LCD_DispAsciiStr16x8( 0, 32, ">0123456789LZK-xABCDEFG");
 599   1         LCD_DispChChar16x16 (16, 48, "科", 1);
 600   1              LCD_DispChStr16x16  (32, 48, "科树", 1);
 601   1      
 602   1         LCD_DispChStr16x16  (64, 48, "通信", 1);
 603   1         LCD_DispChStr16x16  (64+2*16+8, 48, "公科有技限司", 1);
 604   1         LCD_DispChStr16x16  (16, 72, "友明科技有限公司", 1);
 605   1      
 606   1              LCD_DispAsciiChStr  (16,112, "常滑全", 0);
 607   1              LCD_DispAsciiChStr  (64,112, "科树", 1);
 608   1      }
 609          
 610          
 611          /****************************************************************************
 612          ** 函数名称: LCD_GoToXY()
 613          ** 功能描述: 光标定位
 614          ** 入口参数: 无
 615          ** 出口参数: 无
 616          ** 全局变量: 无
 617          ** 调用模块: 无
 618          ** 说明:
 619          ****************************************************************************/
 620          void LCD_GoToXY(uint8 x, uint8 y)
 621          {   
 622   1         CURS_X = x;
 623   1         CURS_Y = y;
 624   1      }
 625          
 626          
 627          
 628          
 629          
 630          
 631          
 632          
 633          

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

⌨️ 快捷键说明

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