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 + -
显示快捷键?