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

📄 t102osd.c

📁 这是T118和T103的通用程序
💻 C
字号:
#include <reg51.h>
#include "common.h"
#include "System.h"
#include "OSDDraw.h"
#include "TwoWire.h"
#include "TW803Reg.h"
#include "T102OSD.h"

#include "FONT0_Font12W18H.c"  //Always include

#ifdef LAN_TCHINESE
#include "FONT6_Font12W18H.c"
#endif

#ifdef LAN_KOREA
#include "FONT7_Font12W18H.c"
#endif

#ifdef LAN_JAPANESE
#include "FONT8_Font12W18H.c"
#endif

#ifdef LAN_SCHINESE
#include "FONT9_Font12W18H.c"
#endif

#include "FONT_LANGUAGE_Font12W18H.c"
#include "NVRam.h"
#define __GLOBAL_H__
#include "Global.h"
#include "OSDTbl.h"
#define _OSDMENU_H_
#include "OSDMenu.h"
#define __OSD_ESTR__
#include "E_OSDString.H"

/*
#ifdef NEW_OSD
#include "font1216.c"
#else
#include "T102_Font12W18H.c" 		// 12W18H
//#include "T102_Font8W16H.c"    	//  8W16H // It's better for Au 3.5".
//#include "T102_Font6W16H.c"  	//  6W16H // It's too small for Au 3.5".
#endif
*/

#define LOGO_ON
#ifdef LOGO_ON
#define OSDBMP_2BIT_PIXEL	0xf8
#define OSDBMP_4BIT_PIXEL	0xb8
#define OSDBMP_TYPE OSDBMP_2BIT_PIXEL
#define	BMP_HPOS (1024-320)/2
#define	BMP_VPOS (768-76)/2


#include "T102_Logo.c"

//bit OSD_PowerOnLogo_On = 1;

// define OSD Logo BMP LUT color data
code unsigned char OSDLutLogoData[32]={
	0x33,0x03,  //Black             f=0 ,   b=0  0x12, 03
  	0xaa,0x02,  //Light Blue        f=2 ,   b=1
	0x18,0x01,  //Dark  Blue        f=8 ,   b=4
	0x1f,0x01,  //Dark  Blue        f=8 ,   b=4
  	0xff,0x0f,  //White        		f=3
  	0xf6,0x0f,  //Dark Brown        f=4 ,   b=2
  	0x08,0x08,  //Purple            f=5
  	0xa8,0x07,  //Light Green       f=6 ,   b=3
  	0x86,0x0f,  //Dark  Red         f=7
  	0x54,0x0f,  //Dark  Red         f=7
  	0x54,0x0f,  //Dark  Red         f=7
  	0x0f,0x0f,
  	0xb9,0x00,  //purple                                                                                                                                          6
  	0x44,0x04,
  	0x88,0x08,  //grey
  	0xff,0x0f   //white
};
#endif //LOGO_ON


void OSDLogo(void)
{
	unsigned int i;
#ifdef LOGO_ON
	OSDSetRamAddr(FONT_DATA_START_ADDRESS);
	I2CWriteByte(TW803_P0,OSD_CFG_INDEX,OSD_LUT_RAM_DATA);


	OSDCfgWr(BW_W,20);            	
	OSDCfgWr(BW_H,29);           

	twdWr_Burst_A(OSD_RAM_DL);
	for(i=0;i<40*32;i++)
   	twdWr_Burst_D(logodata[i]);
	twdWr_Burst_P();

	OSDCfgWr(OSD_CTRL,0xf8);           //2 bits pixel BitMap
	//kenny 20060301 ==================
	//#ifdef T116
	I2CWriteByte(TW803_P0,0xE2,0x11);
	//#endif
	//kenny 20060301 ==================
	twdDelay(2000);
#endif
}

void OSDInit(void)
{
	unsigned int i;//,j;
	
	OSDCfgWr(OSD_CTRL,0x18);             			   //disable osd and width*1
	OSDSetRamAddr(FONT_DATA_START_ADDRESS);
	OSDCfgWr(CHAR_FONT_SIZE,FONT_SIZE);
	// add by Sherman 06'02'06
	#if (defined T102)|(defined T112)|(defined T118)	
	if((FONT_SIZE==FONT_SIZE8W16H)|(FONT_SIZE==FONT_SIZE6W16H))
		OSDCfgWr(0x0f,0x40);
	#endif
	//
	OSDCfgWr(CHAR_RAM_BASE_A,CHAR_MAIN_MENU_START);    //To setup character index start address.
                                                       //If start address is 0x9c0,
                                                       //You have get ((0x9c0 >> 5) & 0x7f) to store it
	OSDCfgWr(CHAR_RAM_END_A,CHAR_RAM_END);             //This is to set index end address.
  	OSDCfgWr(BLINK_CTRL,0x09);
    OSDCfgWr(ALPHA_BLD_CTRL,0x83);       
	OSDLoadColor();  
	OSDSetRamAddr(FONT_DATA_START_ADDRESS);
	twdWr_Burst_A(OSD_RAM_DL);

      #ifdef LAN_TCHINESE
      if (EepPublic.cOSDLang == eTCHINESE){
      	AllFonts = font6_000;
      }else
      #endif
      #ifdef LAN_KOREA
	  if (EepPublic.cOSDLang == eKOREA){
      	AllFonts = font7_000;
      }else
      #endif
      #ifdef LAN_JAPANESE
	  if (EepPublic.cOSDLang == eJAPANESE){
      	AllFonts = font8_000;
      }else
      #endif
      #ifdef LAN_SCHINESE
	  if (EepPublic.cOSDLang == eSCHINESE){
      	AllFonts = font9_000;
      }else
      #endif
      #ifdef LAN_ENGLISH
	 // if (EepPublic.cOSDLang == eENGLISH)
     {
      	AllFonts = font0_000;
      }
      #endif

	twdWr_Burst_A(OSD_RAM_DL);
	//Below is re-writted
	for(i=0; i<128*FONT_HEIGHT; i++)
	{
        twdWr_Burst_D(AllFonts[2*i]);
        twdWr_Burst_D(AllFonts[2*i+1]);
	}	

/*	
	//Below is re-writted   // chagne by Sherman 06'02'06
#ifdef T102
	if((FONT_SIZE==FONT_SIZE8W16H)|(FONT_SIZE==FONT_SIZE6W16H)){
		for(j=0;j<(TOTAL_FONT_NUM/2)+1;j++)	
		for(i=0; i<FONT_HEIGHT; i++){
			twdWr_Burst_D(AllFonts[2*j+1][2*i+1]);
			twdWr_Burst_D(AllFonts[2*j][2*i+1]);
		}
	}else{
#endif
		for(j=0;j<TOTAL_FONT_NUM;j++)	
		for(i=0; i<FONT_HEIGHT; i++){
			twdWr_Burst_D(AllFonts[j][2*i]);
			twdWr_Burst_D(AllFonts[j][2*i+1]);
		}
#ifdef T102
	}
#endif
    //0x400==1024;
*/
#ifdef T118
	for(i=(TOTAL_FONT_NUM)*FONT_HEIGHT; i<0xc00; i++){
#else
	for(i=(TOTAL_FONT_NUM)*FONT_HEIGHT; i<0x400; i++){
#endif
		twdWr_Burst_D(0x00);
		twdWr_Burst_D(0x00);	
	}
 	twdWr_Burst_P();

	for(i=0;i<OSD_LINE_NUM;i++){
		OSDCleanLine(0,i,0,31);
		OSDSetLineAttribute(i,0x80);
	}
	I2CWriteByte(TW803_P0,0xE2,0x11);

}
void OSDShowLine(uCHAR *string,uCHAR x,uCHAR y,uCHAR cColor,uCHAR cLength)
{
	if((x < 30) && ( y < 0x13)){
		OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x);
     	twdWr_Burst_A(OSD_RAM_DL);      // Write OSD index
     	while((*string) != EOL && (x < cLength)){
     		twdWr_Burst_D(*string++);
        	twdWr_Burst_D(cColor );
        	x++;
  		}
   		twdWr_Burst_P();
	}
}
/*
void OSDShowLine(uCHAR *string,uCHAR x,uCHAR y,uCHAR cColor,uCHAR cLength)
{
 	uCHAR c;
	if((x < 30) && ( y < OSD_LINE_NUM)){
		OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x);
		twdWr_Burst_A(OSD_RAM_DL);      // Write OSD index
     	while((*string) != EOL && (x < cLength)){
		    c=*string++;
		    if(c>0x40)			// Character
		    	twdWr_Burst_D(c-IndexCharacterOffset);
			else if(c>=0x30)	// number
				twdWr_Burst_D(c-IndexNumOffset);  
			else				
				twdWr_Burst_D(c);
			
        	twdWr_Burst_D(cColor );
        	x++;
  		}
	}
   	twdWr_Burst_P();
}
*/
void OSDTransfer(BYTE Langue){

	unsigned int i;
	OSDCfgWr(OSD_CTRL,0x18);           //disable osd and width*1

  	OSDSetRamAddr(FONT_DATA_START_ADDRESS + 0x10*FONT_HEIGHT);
	OSDCfgWr(CHAR_FONT_SIZE,FONT_SIZE);
	OSDCfgWr(CHAR_RAM_BASE_A,CHAR_MAIN_MENU_START);    //To setup character index start address.
                                                    //If start address is 0x9c0,
                                                    //You have get ((0x9c0 >> 5) & 0x7f) to store it
	OSDCfgWr(CHAR_RAM_END_A,CHAR_RAM_END);           //This is to set index end address.

//  	OSDCfgWr(CHAR_BS_CTRL,0x40);		// Sherman, 06/07/19
//		OSDCfgWr(CHAR_BS_COLOR,0x00);	    // Sherman, 06/07/19
//  	OSDCfgWr(CHAR_HEIGHT_CTRL,0x20);	// Sherman, 06/07/19
	//OSDCfgWr(CHAR_HEIGHT_CTRL,0x40);  //For malata only
  	OSDCfgWr(BLINK_CTRL,0x01);
   	//OSDCfgWr(ALPHA_BLD_CTRL,0x80);          /* Alpha blending is disable */
    	OSDCfgWr(ALPHA_BLD_CTRL,0x83);       //0x86   // Alpha blending is disable; for malata only

	OSDLoadColor();
	//OSDSetRamAddr(FONT_DATA_START_ADDRESS);


	twdWr_Burst_A(OSD_RAM_DL);
	//Below is re-writted
	for(i=Langue*FONT_HEIGHT*10; i<(Langue+1)*FONT_HEIGHT*10; i++){
          twdWr_Burst_D(font_t_000[2*i]);
	 	    twdWr_Burst_D(font_t_000[2*i+1]);
    }

 	twdWr_Burst_P();
	I2CWriteByte(TW803_P0,0xE2,0x11);
}

void SelectLanguage(uCHAR Adj){
   Adj = 0;
   OSDTransfer(EepPublic.cOSDLang);
   OSDEnable();
   OSDCleanLine(0,ALL_MENU[m_cOSDMenu]->Item_Num+2,COL_NORMAL,28);
   OSDSetLineAttribute(ALL_MENU[m_cOSDMenu]->Item_Num+2,0x80);
   OSDShowLine(iTransfer_ALL,(OSD_LENGTH-16),ALL_MENU[m_cOSDMenu]->Item_Num+2,BLUE_PURPLE,OSD_LENGTH);
}

void UpdateOSDFont(){
   OSDInit();
   OSDTransfer(EepPublic.cOSDLang);          // update the index '0x10 to 0x18'
   I2CWriteByte(EEPGLOBAL_BLOCK, EEPPUBLIC_OFFSET,EepPublic.cOSDLang);   //write the language idex to eeprom
   twdDelay(NVRDELAY);
   OSDOpenMenu();	  
}

⌨️ 快捷键说明

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