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

📄 lcd_osd_rel.lst

📁 keil c51平台,此代码可用于学习TFT LCD 之TCON,SCALER,OSD,(本人自己修改)
💻 LST
📖 第 1 页 / 共 5 页
字号:
 252   1          Data[5] = 0x30;
 253   1          Data[6] = 0;
 254   1          RTDWrite(Data); 
 255   1      
 256   1          for (row = 1; row <= length; row++)
 257   1          {
 258   2              Data[4] = col + row;
 259   2      
 260   2              if (bound)
 261   2              {
 262   3                  if (bound >= range)
 263   3                  {
 264   4                      Data[5] = 0x37;
 265   4                      bound   = bound - range;
 266   4                  }
 267   3                  else
 268   3                  {
 269   4                      color   = (bound << 4) / range;
 270   4                      bound   = 0;
 271   4      
 272   4                      if (4 > color)
 273   4                          Data[5] = 0x32;
 274   4                      else if (7 > color)
 275   4                          Data[5] = 0x33;
 276   4                      else if (10 > color)
 277   4                          Data[5] = 0x34;
 278   4                      else if (13 > color)
 279   4                          Data[5] = 0x35;
 280   4                      else
 281   4                          Data[5] = 0x36;
 282   4                  }
 283   3              }
 284   2              else
 285   2              {
 286   3                  Data[5] = 0x31;
 287   3              }
 288   2              
 289   2              RTDWrite(Data);
 290   2          }
 291   1      
 292   1          range   = value / 10;
 293   1          row     = value - (range * 10);     // x1
 294   1          color   = range / 10;               // x100
 295   1          range   = range - (color * 10);     // x10
C51 COMPILER V7.50   LCD_OSD_REL                                                           07/28/2008 16:10:58 PAGE 6   

 296   1      
 297   1          row     = row + _0_;
 298   1          range   = (range || color) ? range + _0_ : 0x00;
 299   1          color   = color ? color + _0_ : 0x00;
 300   1      
 301   1          // Right Border, Space and Number
 302   1          Data[0] = 8;
 303   1          Data[1] = N_INC;
 304   1          Data[2] = OSD_DATA_92;
 305   1          Data[3] = 0x38;     // Right Border
 306   1          Data[4] = color;    // Number x100
 307   1          Data[5] = range;    // Number x10
 308   1          Data[6] = row;      // Number x1
 309   1          Data[7] = 0x00;     // Space
 310   1          Data[8] = 0;
 311   1          RTDWrite(Data);
 312   1      }
 313          
 314          void OSD_Opening(void)
 315          {
 316   1      #if (1)
 317   1      
 318   1          RTDCodeW(OSD_Enable);
 319   1      
 320   1      #else
              
                  // For OSD animetion
              
                  RTDCodeW(Palette_Open);
                  RTDCodeW(Palette_1);
              
                  RTDCodeW(OSD_Enable);
                  
                  Delay_Xms(16);
                  Wait_For_Event(EVENT_DEN_STOP);     // Wait for Frame End                                    
                  RTDCodeW(Palette_2);
              
                  Delay_Xms(16);
                  Wait_For_Event(EVENT_DEN_STOP);     // Wait for Frame End
                  RTDCodeW(Palette_3);
                  
                  Delay_Xms(28);
                  Wait_For_Event(EVENT_DEN_STOP);     // Wait for Frame End
                  RTDCodeW(Palette_4);
                  
                  Delay_Xms(28);
                  Wait_For_Event(EVENT_DEN_STOP);     // Wait for Frame End
                  RTDCodeW(Palette_5);
              
                  Delay_Xms(28);
                  Wait_For_Event(EVENT_DEN_STOP);     // Wait for Frame End
                  RTDCodeW(Palette_6);
              
                  Delay_Xms(28);
                  Wait_For_Event(EVENT_DEN_STOP);     // Wait for Frame End
                  RTDCodeW(Palette_7);
              
                  RTDCodeW(Palette_Close);
              
              #endif
 356   1      }
 357          
C51 COMPILER V7.50   LCD_OSD_REL                                                           07/28/2008 16:10:58 PAGE 7   

 358          void OSD_Ending(void)
 359          {
 360   1      #if (0)
              
                  // For OSD animetion
              
                  unsigned char ucTemp;
              
                  // First, clear debug information drawn by OSD_Show_Check()
                  OSD_Line(13, 2, 24, 0x00, 0);
                  OSD_Line(13, 2, 24, 0x00, 1);
              
                  // Close unused window
                  OSD_Window(0, 0, 0, 0, 0, 0, 0);
                  OSD_Window(1, 0, 0, 0, 0, 0, 0);
                  OSD_Window(2, 0, 0, 0, 0, 0, 0);
              
                  OSD_Line(11, 2, 24, 0x00, 0);
                  OSD_Line(11, 2, 24, 0x00, 1);
              
                  for (ucTemp = 0; ucTemp < 5; ucTemp ++)
                  {
                      OSD_Line(ucTemp, 2, 24, 0x00, 0);          // Attribute
                      OSD_Line(ucTemp, 2, 24, 0x00, 1);          // Display
                      OSD_Line(10 - ucTemp, 2, 24, 0x00, 0);     // Attribute
                      OSD_Line(10 - ucTemp, 2, 24, 0x00, 1);     // Display
                      OSD_Window(3, ucTemp + 1, 9 - ucTemp, 2, 25,
                          OSD_WINDOW_ENABLE | OSD_WINDOW_SHADOWING, COLOR_CYAN);  // Main OSD window
              
                      Wait_For_Event(EVENT_DEN_STOP);     // Wait for Frame End
                  }
              
                  OSD_Line(5, 2, 24, 0x00, 0);    // Attribute
                  OSD_Line(5, 2, 24, 0x00, 1);    // Display
              
                  for (ucTemp = 0; ucTemp < 12; ucTemp += 2)
                  {
                      OSD_Window(3, 5, 5, ucTemp + 3, 23 - ucTemp,
                          OSD_WINDOW_ENABLE | OSD_WINDOW_SHADOWING, COLOR_CYAN);
              
                      Wait_For_Event(EVENT_DEN_STOP);     // Wait for Frame End
                  }
              
              #endif
 402   1      }
 403          
 404          void Show_Mode(void)
 405          {
 406   1          OSD_Line(11, 2, 24, 0x00, 1);       // Clear old characters
 407   1      
 408   1          switch (ucMode_Curr)
 409   1          {    
 410   2          case MODE_NOSIGNAL:     // NO SIGNAL
 411   2      
 412   2              OSD_Line(11, 2, 24, CHINESE == (stGUD1.FUNCTION & 0x07) ? 0x80 | COLOR_BLUE : COLOR_BLUE, 0);
 413   2      
 414   2              if ((SOURCE_VGA == (stGUD1.INPUT_SOURCE & 0x07)) && (VGA_ONLINE != bVGA_CONNECT))
 415   2                  RTDCodeW((unsigned char *)OSD_HINT_TABLE[0][stGUD1.FUNCTION & 0x07]);
 416   2              else
 417   2                  RTDCodeW((unsigned char *)OSD_HINT_TABLE[1][stGUD1.FUNCTION & 0x07]);
 418   2              break;
 419   2      
C51 COMPILER V7.50   LCD_OSD_REL                                                           07/28/2008 16:10:58 PAGE 8   

 420   2          case MODE_UNDEFINED0:
 421   2          case MODE_UNDEFINED1:
 422   2          case MODE_NOSUPPORT:
 423   2      
 424   2              OSD_Line(11, 2, 24, CHINESE == (stGUD1.FUNCTION & 0x07) ? 0x80 | COLOR_BLUE : COLOR_BLUE, 0);
 425   2      
 426   2              RTDCodeW((unsigned char *)OSD_HINT_TABLE[2][stGUD1.FUNCTION & 0x07]);
 427   2              break;
 428   2      
 429   2          case MODE_VIDEO60HZ:    // NTSC 60HZ
 430   2              OSD_Line(11, 2, 24, COLOR_BLUE, 0);     // Set characters to blue
 431   2              RTDCodeW(Remark_Mode);
 432   2              switch(ucAV_Mode)
 433   2              {
 434   3              case 0x01:  RTDCodeW(Remark_V60_0); break;
 435   3              case 0x11:  RTDCodeW(Remark_V60_1); break;
 436   3              case 0x21:  RTDCodeW(Remark_V60_2); break;
 437   3              case 0x31:  RTDCodeW(Remark_V60_3); break;
 438   3              case 0x41:  RTDCodeW(Remark_V60_4); break;
 439   3              }
 440   2              break;
 441   2          case MODE_VIDEO50HZ:    // PAL 50HZ
 442   2              OSD_Line(11, 2, 24, COLOR_BLUE, 0);     // Set characters to blue
 443   2              RTDCodeW(Remark_Mode);
 444   2              switch(ucAV_Mode)
 445   2              {   
 446   3              case 0x02:  RTDCodeW(Remark_V50_0); break;
 447   3              case 0x12:  RTDCodeW(Remark_V50_1); break;
 448   3              case 0x22:  RTDCodeW(Remark_V50_2); break;
 449   3              case 0x32:  RTDCodeW(Remark_V50_3); break;
 450   3              case 0x03:  RTDCodeW(Remark_V50_5); break;
 451   3              }
 452   2              break;
 453   2      
 454   2          case MODE_YUV60HZ:
 455   2          case MODE_YUV50HZ:
 456   2              break;
 457   2      
 458   2          default :
 459   2              OSD_Line(11, 2, 24, COLOR_BLUE, 0);     // Set characters to blue
 460   2              {
 461   3                  unsigned int    usHwid;
 462   3                  unsigned char   ucTemp;
 463   3      
 464   3                  usHwid  = usIPH_ACT_WID;
 465   3      
 466   3                  if (SOURCE_VGA == (stGUD1.INPUT_SOURCE & 0x07))
 467   3                  {
 468   4                      if (MODE_1600x1200x60HZ == ucMode_Curr)
 469   4                      {
 470   5                          usHwid  = 1600;
 471   5                      }
 472   4                      else 
 473   4                      {
 474   5                          if (MODE_1600x1200x60HZ > ucMode_Curr)
 475   5                          {
 476   6                              if (MODE_1280x0960x60HZ <= ucMode_Curr)
 477   6                                  usHwid  = 1280;
 478   6                              else if (MODE_1152x0864x75HZ <= ucMode_Curr)
 479   6                                  usHwid  = 1152;
 480   6                          }
 481   5                          else
C51 COMPILER V7.50   LCD_OSD_REL                                                           07/28/2008 16:10:58 PAGE 9   

 482   5                          {
 483   6                              if (MODE_USER1600x1200 == ucMode_Curr)
 484   6                                  usHwid  = 1600;
 485   6                              else if (MODE_USER1280x960 <= ucMode_Curr)
 486   6                                  usHwid  = 1280;
 487   6                              else if (MODE_USER1152x864 <= ucMode_Curr)
 488   6                                  usHwid  = 1152;
 489   6                          }
 490   5                      }
 491   4                  }
 492   3      
 493   3                  RTDCodeW(Remark_Mode);
 494   3      
 495   3                  Data[0] = 12;
 496   3                  Data[1] = N_INC;
 497   3                  Data[2] = OSD_DATA_92;
 498   3      
 499   3                  ucTemp  = usHwid / 100;
 500   3      
 501   3                  if (10 <= ucTemp)
 502   3                  {
 503   4                      Data[3] = _1_;
 504   4                      Data[4] = ucTemp - 10 + _0_;
 505   4                  }
 506   3                  else
 507   3                  {
 508   4                      Data[3] = 0;
 509   4                      Data[4] = ucTemp + _0_;
 510   4                  }
 511   3      
 512   3                  ucTemp  = usHwid - ((unsigned int)100 * ucTemp);
 513   3              
 514   3                  Data[5] = ucTemp / 10;
 515   3                  Data[6] = ucTemp - (10 * Data[5]) + _0_;
 516   3                  Data[5] = Data[5] + _0_;
 517   3                  Data[7] = _X_;
 518   3      
 519   3                  ucTemp      = usIPV_ACT_LEN / 100;

⌨️ 快捷键说明

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