osddraw.lst

来自「宏芯T102芯片驱动(51单片机作主控)」· LST 代码 · 共 848 行 · 第 1/3 页

LST
848
字号
 266          
 267          code uCHAR *VPosStr[]={
 268                  iVPos_E,
 269                  iVPos_F,
 270                  iVPos_G,
 271                  iVPos_I,
 272                  iVPos_S
 273          };
 274          
 275          code uCHAR *LangStr[]={
 276                  iLanguage_E,
 277                  iLanguage_F,
 278                  iLanguage_G,
 279                  iLanguage_I,
 280                  iLanguage_S
 281          };
 282          
 283          code uCHAR *ColorStr[]={
 284                  iColor_E,
 285                  iColor_F,
 286                  iColor_G,
 287                  iColor_I,
 288                  iColor_S
 289          };
 290          
 291          //                                                             ADC         Digi
 292          //Bright,contrast,sharp,freq,phase,hpos,vpos,Bklight,OSDH/V,Gain/Offset Gain/Offset Volume
 293          OSDPARAMS code sOSDParamsMax=
 294          {0xff,      0xff,    5,  20, 0x1f, 40,  20,             20,     80,65, 0xC0,0xff,  0xff,0xff,   0xFF};
 295          OSDPARAMS code sOSDParamsMin=
 296          {0,                      0,      0,  0,  0x00, 0,   0,          0,         1,1,  0,0,            0,0,           0x00};
 297          OSDPARAMS code sOSDParamsDef=
 298          {0x80,      0x80,        2,  10, 0x10, 20,  10,         10,     75,45, 0x80,0x80,  0x80,0x80,   0x40};
 299          
 300          uCHAR code cOSDMenuLutData[32]={
 301                  //0xGB, 0x0R
 302                  0x00,0x00, //0
C51 COMPILER V7.06   OSDDRAW                                                               12/28/2004 10:14:04 PAGE 6   

 303                  0x0f,0x00, //1 blue
 304                  0x00,0x00, //2 black
 305                  0x0f,0x0a, //3 purple
 306                  0x0e,0x00, //4 dark blue
 307                  0xf8,0x00,  //5 green
 308                  0x22,0x0A, //6  red
 309                  0xc4,0x0c, //7 olive
 310                  0x88,0x05, //8 light grey
 311                  0xb9,0x0b,  //9 purple
 312                  0xBD,0x05, //A  purple
 313                  0x0f,0x0f,  //B
 314                  0xA3,0x0A,      //C Yellow
 315                  0xcc,0x0c, //D light grey
 316                  0x68,0x03,  //E Light Blue Main Menu Background or 0x79, 0x04 which is a litter light
 317                  0xff,0x0f,  //F white
 318          };
 319          
 320          
 321          #define LOGO_ON
 322          #ifdef LOGO_ON
 323          #define OSDBMP_2BIT_PIXEL       0xf8
 324          #define OSDBMP_4BIT_PIXEL       0xb8
 325          #define OSDBMP_TYPE OSDBMP_2BIT_PIXEL
 326          #define BMP_HPOS (1024-320)/2
 327          #define BMP_VPOS (768-76)/2
 328          
 329          //#include "logodata.c"
 330          //#include "logo1025.c"
 331          #include "logo1113.c"
 332          
 333          bit OSD_PowerOnLogo_On = 1;
 334          
 335          // define OSD Logo BMP LUT color data
 336          code unsigned char OSDLutLogoData[32]={
 337                  0x33,0x03,  //Black             f=0 ,   b=0  0x12, 03
 338                  0xaa,0x02,  //Light Blue        f=2 ,   b=1
 339                  0x18,0x01,  //Dark  Blue        f=8 ,   b=4
 340                  0x1f,0x01,  //Dark  Blue        f=8 ,   b=4
 341                  0xff,0x0f,  // White        f=3
 342                  0xf6,0x0f,  //Dark Brown        f=4 ,   b=2
 343                  0x08,0x08,  //Purple            f=5
 344                  0xa8,0x07,  //Light Green       f=6 ,   b=3
 345                  0x86,0x0f,  //Dark  Red         f=7
 346                  0x54,0x0f,  //Dark  Red         f=7
 347                  0x54,0x0f,  //Dark  Red         f=7
 348                  0x0f,0x0f,
 349                  0xb9,0x00,   //purple                                                                                  
             -                                                        6
 350                  0x44,0x04,
 351                  0x88,0x08,    //grey
 352                  0xff,0x0f   //white
 353          };
 354          #endif //LOGO_ON
 355          
 356          void OSDLogo(void)
 357          {
 358   1      #if 1
 359   1              unsigned int i;
 360   1      //#ifdef LOGO_ON
 361   1              OSDSetRamAddr(FONT_DATA_START_ADDRESS);
 362   1              I2CWriteByte(TW101,OSD_CFG_INDEX,OSD_LUT_RAM_DATA);
 363   1              for(i=0;i<32;i++)
C51 COMPILER V7.06   OSDDRAW                                                               12/28/2004 10:14:04 PAGE 7   

 364   1                      I2CWriteByte(TW101,OSD_CFG_DATA,OSDLutLogoData[i]);
 365   1      
 366   1              OSDCfgWr(BW_W,0x28);                    //width 40(x8)
 367   1              OSDCfgWr(BW_H,58);  //58                //height 64
 368   1              OSDCfgWr(BD_ENLARGE,0x00);           //
 369   1      
 370   1              twdWr_Burst_A(OSD_RAM_DL);
 371   1          //for(i=0;i<80*76;i++){
 372   1              for(i=0;i<80*58;i++)
 373   1              twdWr_Burst_D(logodata[i]);
 374   1              twdWr_Burst_P();
 375   1      
 376   1              OSDCfgWr(OSD_CTRL,0xf8);           //2 bits pixel BitMap
 377   1              twdDelay(2000);
 378   1              //OSDDisable();
 379   1      #endif
 380   1      }
 381          void OSDInit(void)
 382          {
 383   1              unsigned int i;
 384   1              OSDCfgWr(OSD_CTRL,0x18);           //disable osd and width*1
 385   1      
 386   1              /*
 387   1              OSDCfgWr(CHAR_DLY_0,((OSDHPOS_CT & 0x700)+ (OSDVPOS_CT & 0x700)*16)/256 );          // CHAR_DLY_0..2 is s
             -etup OSD position in TFTpanel.
 388   1              OSDCfgWr(CHAR_DLY_1,OSDHPOS_CT & 0xff);          // X position is {CHAR_DLY_0[2:0],CHAR_DLY_1[7:0]}=0x17c
             -.
 389   1          OSDCfgWr(CHAR_DLY_2,OSDVPOS_CT & 0xff);          // Y position is {CHAR_DLY_0[6:4],CHAR_DLY_2[7:0]}=0x
             -180.
 390   1              */
 391   1      
 392   1              /* OSD Position */
 393   1      #if 0
                      i=((EepPublic.cOSDVPos&0xe0)>>1)|((EepPublic.cOSDHPos&0xe0)>>5);
                      OSDCfgWr(CHAR_DLY_0,(uCHAR)i);
                      i=EepPublic.cOSDHPos<<3;
                      OSDCfgWr(CHAR_DLY_1,(uCHAR)i);
                      i=EepPublic.cOSDVPos<<3;
              #endif
 400   1              //OSDCfgWr(CHAR_DLY_0,0x12);            //V[10:8] bit 6-4; H[10:8] bit2-0
 401   1              //OSDCfgWr(CHAR_DLY_1,0xEE);    //H[7:0]
 402   1              //OSDCfgWr(CHAR_DLY_2,0x64);    //v[7:0]
 403   1      
 404   1      
 405   1      //      OSDCfgWr(OSD_CTRL,0x18);
 406   1              OSDSetRamAddr(FONT_DATA_START_ADDRESS);
 407   1              OSDCfgWr(CHAR_FONT_SIZE,FONT_SIZE);
 408   1              OSDCfgWr(CHAR_RAM_BASE_A,CHAR_MAIN_MENU_START);    //To setup character index start address.
 409   1                                                          //If start address is 0x9c0,
 410   1                                                          //You have get ((0x9c0 >> 5) & 0x7f) to store it
 411   1              OSDCfgWr(CHAR_RAM_END_A,CHAR_RAM_END);           //This is to set index end address.
 412   1      
 413   1              OSDCfgWr(CHAR_BS_CTRL,0x40);
 414   1              OSDCfgWr(CHAR_BS_COLOR,0x00);
 415   1              OSDCfgWr(CHAR_HEIGHT_CTRL,0x20);
 416   1              //OSDCfgWr(CHAR_HEIGHT_CTRL,0x40);  //For malata only
 417   1              OSDCfgWr(BLINK_CTRL,0x01);
 418   1         //OSDCfgWr(ALPHA_BLD_CTRL,0x80);          /* Alpha blending is disable */
 419   1          OSDCfgWr(ALPHA_BLD_CTRL,0x87);       //0x86   // Alpha blending is disable; for malata only
 420   1      
 421   1              OSDLoadColor();
 422   1              //OSDSetRamAddr(FONT_DATA_START_ADDRESS);
C51 COMPILER V7.06   OSDDRAW                                                               12/28/2004 10:14:04 PAGE 8   

 423   1      #if 0
              // set TW to fast mode
              #ifdef TW100K
                      I2CWriteByte(TW702_WR_ADDR,TW_INTERFACE,0x04);
              #else
                 I2CWriteByte(TW702_WR_ADDR,TW_INTERFACE,0x05);
              #endif
              #endif
 431   1      
 432   1              twdWr_Burst_A(OSD_RAM_DL);
 433   1              //Below is re-writted
 434   1              for(i=0; i<128*FONT_HEIGHT; i++){
 435   2                      twdWr_Burst_D(font_00[2*i]);
 436   2              twdWr_Burst_D(font_00[2*i+1]);
 437   2              }
 438   1      
 439   1        //0xc00==1024*3;
 440   1              for(; i<0xc00; i++){
 441   2              twdWr_Burst_D(0x00);
 442   2           twdWr_Burst_D(0x00);
 443   2              }
 444   1              twdWr_Burst_P();
 445   1      
 446   1              for(i=0;i<15;i++)
 447   1              {
 448   2                      OSDCleanLine(0,i,0,31);
 449   2              OSDSetLineAttribute(i,0x80);
 450   2              }
 451   1      //#endif
 452   1      }
 453          
 454          void OSDLoadColor(void)
 455          {
 456   1              uCHAR i;
 457   1              I2CWriteByte(TW101,OSD_CFG_INDEX,OSD_LUT_RAM_DATA);
 458   1              for(i=0;i<32;i++)
 459   1                      I2CWriteByte(TW101,OSD_CFG_DATA,cOSDMenuLutData[i]);
 460   1      
 461   1      }
 462          
 463          void OSDSetRamAddr(uWORD address)
 464          {
 465   1              I2CWriteByte(TW101,OSD_RAM_AH,(uCHAR)(address>>8));
 466   1              I2CWriteByte(TW101,OSD_RAM_AL,(uCHAR)(address & 0xff));
 467   1      //EA=0;
 468   1      }
 469          
 470          void OSDEnable(void)
 471          {
 472   1              m_bOSDEnable = 1;
 473   1              OSDCfgWr(OSD_CTRL,0x98);
 474   1              //OSDCfgWr(OSD_CTRL,0x99); //For malata only
 475   1      
 476   1      #ifdef TIMER0
 477   1      //      if(m_bFactryMode)       return;
 478   1              Timer0Start();
 479   1      #endif
 480   1      
 481   1      }
 482          
 483          void OSDDisable(void)
 484          {
C51 COMPILER V7.06   OSDDRAW                                                               12/28/2004 10:14:04 PAGE 9   

 485   1      /*
 486   1      #ifdef TIMER0
 487   1              if(!m_bFactryMode)
 488   1      
 489   1      #endif
 490   1      */              Timer0Stop();
 491   1              OSDCfgWr(OSD_CTRL,0x18);
 492   1              m_cOSDEvent=0;
 493   1              m_cOSDFunc=0;
 494   1              m_cItem=1;
 495   1      //      m_bAdjRGBColor=0;  //Init color
 496   1              m_bOSDEnable=0;
 497   1              m_cCurreKey=m_cPreKey=0xFF;
 498   1      }
 499          
 500          void OSDExit(void)
 501          {
 502   1              OSDCfgWr(OSD_CTRL,0x18);
 503   1              OSDCfgWr(0x10,0x00); //Disable window
 504   1              OSDDisable();
 505   1              OSDClearPage();
 506   1      }
 507          
 508          void OSDEventMgr(void)
 509          {
 510   1              Timer0Stop();
 511   1              switch(m_cOSDEvent){
 512   2              case CLOSEMENU:
 513   2                      OSDExit();
 514   2                      break;
 515   2              case OPENMENU:
 516   2                      m_cItem=1;
 517   2                      OSDOpenMenu();
 518   2                      //m_cOSDFunc|=m_cItem;
 519   2                              OSDMoveCursor(0x00,0x17);
 520   2                      break;  
 521   2              case FUNCSELCT_IN:
 522   2                      OSDFuncSelect(1);
 523   2      //                      OSDShowData(COL_GAUGE);
 524   2                      break;
 525   2              case FUNCSELCT_DN:
 526   2                      OSDFuncSelect(-1);
 527   2      //                      OSDShowData(COL_GAUGE);
 528   2                      break;
 529   2              case FUNCENTER:
 530   2                      if(/*Ruby m_cOSDFunc==idVOLUMEMENU||*/m_cOSDFunc==idBRIGHTMENU
 531   2                      ||m_cOSDFunc==idCONTRASTMENU||m_cOSDFunc==idSATMENU_VIDEO||m_cOSDFunc==idSHARP_VIDEO
 532   2                      ||m_cOSDFunc==idHUEMENU_VIDEO||idTIMEMENU_VIDEO)
 533   2                      {
 534   3                              OSDClearPage();
 535   3                              OSDCfgWr(0x10,0x00); //Disable window
 536   3                      //Ruby test OSDPosition(LEFT_BOTTOM);

⌨️ 快捷键说明

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