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

📄 osddraw.c

📁 TFT LCD驱动芯片T100A+AU7" Source code
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <reg51.h>
#include "common.h"
#include "System.h"
#include "Struct.h"
#include "OSDDraw.h"
#include "Keypad.h"
#include "TwoWire.h"
#include "TW101Reg.h"
#include "OSDCtrl.h"
//#include "SrcCtrl.h"
//#include "Display.h"
#include "Video.h"
#include "Tuner.h"

#ifdef NEW_OSD
#include "OSD_1216.h"
#include "font1216.c"
#else
#include "OSD1218.h"
#include "font1218.c"
#endif
#include "OSDTbl.h"
#include "OSDMenu.h"

extern uCHAR ir_data;
extern uCHAR m_cSoundSystem;

extern bit m_bAir_Cable;
extern bit m_bTV_Skip;
extern bit m_bKyPowerFlat;
extern bit m_bBKPowerOn;
extern bit m_bOSDEnable;
extern bit m_bKyPowerOn;
extern bit m_bChipPowerOn;
extern bit m_bKyBlocked;
extern uCHAR idata m_cBuff[5];
extern uWORD idata m_wBuff[3];
extern uDWORD	m_dwBuff[2];
extern uCHAR idata m_cOSDEvent;
extern uCHAR idata m_cCurreKey;
extern uCHAR idata m_cPreKey;
extern uCHAR idata m_cItem;
extern uCHAR idata m_cOSDFunc;
extern uWORD idata m_wVRes;
extern uWORD idata m_wHRes;
extern uCHAR idata m_cSource;

extern uCHAR idata m_cTV_Num;

extern uDWORD m_dwVFrameCntPre;
extern uWORD  m_wHSyncPeriodPre;
extern void BKPower(void);
extern void PowerManage(void);
extern void AutoScanChannel(void);

#if VIDEO_AVAILABLE
extern EEPVIDEO idata EepVideo;
#endif

#ifdef TIMER0
extern void Timer0Start(void);
extern void Timer0Stop(void);
#endif

#ifdef NVRAM
#include "NVRam.h"
extern uWORD idata m_wEepRom;
#endif

#define GAUGE_Y  7  // 6 change by charles

code OSDMENU *OSDMenu_E[]={
	mainMenu_E,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
 	colorMenu,
	langMenu,
	NULL,
	srcMenu_E,
};

code OSDMENU *OSDMenu_F[]={
	mainMenu_F,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
 	colorMenu,
	langMenu,
	NULL,
	srcMenu_F,
};

code OSDMENU *OSDMenu_G[]={
	mainMenu_G,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
 	colorMenu,
	langMenu,
	NULL,
	srcMenu_G,
};

code OSDMENU *OSDMenu_I[]={
	mainMenu_I,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
 	colorMenu,
	langMenu,
	NULL,
	srcMenu_I,
};

code OSDMENU *OSDMenu_S[]={
	mainMenu_S,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
 	colorMenu,
	langMenu,
	NULL,
	srcMenu_S,
};

typedef struct tagMULTILANGUAGEOSD{
	uCHAR cLangID;
	OSDMENU **osdMenuPtr;
}MULTILANGUAGEOSD;

MULTILANGUAGEOSD code MultiLangOSD[]={
	{eENGLISH, OSDMenu_E},
	{eFRENCH,  OSDMenu_F},
	{eGERMAN,  OSDMenu_G},
	{eITALIAN, OSDMenu_I},
	{eSPANISH, OSDMenu_S}
};

code OSDMENU *OSDMenuVideo_E[]={
	mainMenuVideo_E,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
 	NULL,
	NULL,
	NULL,
	srcMenu_E,
};

MULTILANGUAGEOSD code MultiLangOSDVideo[]={
	{eENGLISH, OSDMenuVideo_E},
	{eFRENCH,  OSDMenuVideo_E},
	{eGERMAN,  OSDMenuVideo_E},
	{eITALIAN, OSDMenuVideo_E},
	{eSPANISH, OSDMenuVideo_E}
};

code OSDMENU *OSDMenuTV_E[]={
	mainMenuTV_E,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	tvMenu_E,
 	NULL,
	NULL,
	NULL,
	srcMenu_E,
};

MULTILANGUAGEOSD code MultiLangOSDTV[]={
	{eENGLISH, OSDMenuTV_E},
	{eFRENCH,  OSDMenuTV_E},
	{eGERMAN,  OSDMenuTV_E},
	{eITALIAN, OSDMenuTV_E},
	{eSPANISH, OSDMenuTV_E}
};


code uCHAR *MessageData[] = {
		iNoSignal,
		iNoSupport,
		iFailSafeMode,
		iAutoAdjust,
		iPowerOff,
		iADCCalib,
     iAdcSubsample,
     iSyncError
};

code uCHAR *RecallStr[]={
	iRecalling_E,
	iRecalling_F,
	iRecalling_G,
	iRecalling_I,
	iRecalling_S
};

code uCHAR *AutoAdjStr[]={
	iAutoAdj_E,
	iAutoAdj_F,
	iAutoAdj_G,
	iAutoAdj_I,
	iAutoAdj_S,
};

code uCHAR *BrightStr[]={
	iBright_E,
	iBright_F,
	iBright_G,
	iBright_I,
	iBright_S
};

code uCHAR *ContrastStr[]={
	iContrast_E,
	iContrast_F,
	iContrast_G,
	iContrast_I,
	iContrast_S
};

code uCHAR *PhaseStr[]={
	iPhase_E,
	iPhase_F,
	iPhase_G,
	iPhase_I,
	iPhase_S
};

code uCHAR *PixelStr[]={
	iPixel_E,
	iPixel_F,
	iPixel_G,
	iPixel_I,
	iPixel_S
};

code uCHAR *HPosStr[]={
	iHPos_E,
	iHPos_F,
	iHPos_G,
	iHPos_I,
	iHPos_S
};

code uCHAR *VPosStr[]={
	iVPos_E,
	iVPos_F,
	iVPos_G,
	iVPos_I,
	iVPos_S
};

code uCHAR *LangStr[]={
	iLanguage_E,
	iLanguage_F,
	iLanguage_G,
	iLanguage_I,
	iLanguage_S
};

code uCHAR *ColorStr[]={
	iColor_E,
	iColor_F,
	iColor_G,
	iColor_I,
	iColor_S
};

//                                                             ADC         Digi
//Bright,contrast,sharp,freq,phase,hpos,vpos,Bklight,OSDH/V,Gain/Offset Gain/Offset Volume
OSDPARAMS code sOSDParamsMax=
{0xff,	    0xff,    5,  20, 0x1f, 40,  20,		20,	80,65, 0xC0,0xff,  0xff,0xff,	0x3F};
OSDPARAMS code sOSDParamsMin=
{0,	 	 	 0,    	 0,  0,  0x00, 0,   0,		0,	   1,1,	 0,0, 		 0,0,		0x00};
OSDPARAMS code sOSDParamsDef=
{0x80,	    0x80, 	 2,  10, 0x10, 20,  10,		10,	75,45, 0x80,0x80,  0x80,0x80,	0x1f};

uCHAR code cOSDMenuLutData[32]={
	//0xGB, 0x0R
	  0x00,0x00, //0
  	0x0f,0x00, //1 blue
  	0x00,0x00, //2 black
  	0x0f,0x0a, //3 purple
	  0x0e,0x00, //4 dark blue
  	0xf0,0x00,  //5 green  // 0xF8
	  0x22,0x0A, //6  red
  	0xc4,0x0c, //7 olive
 	  0x88,0x05, //8 light grey
  	0xb9,0x0b,  //9 purple
  	0xBD,0x05, //A  purple
  	0x0f,0x0f,  //B
  	0xA3,0x0A, 	//C Yellow
	  0xcc,0x0c, //D light grey
	  0x68,0x03,  //E Light Blue Main Menu Background or 0x79, 0x04 which is a litter light
  	0xff,0x0f,  //F white
};


#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 "logodata.c"
//#include "logo1025.c"
#include "logo1113.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)
{
#if 1
	unsigned int i;
//#ifdef LOGO_ON
	OSDSetRamAddr(FONT_DATA_START_ADDRESS);
	I2CWriteByte(TW101,OSD_CFG_INDEX,OSD_LUT_RAM_DATA);
  	for(i=0;i<32;i++)
  		I2CWriteByte(TW101,OSD_CFG_DATA,OSDLutLogoData[i]);

	OSDCfgWr(BW_W,0x28);            	//width 40(x8)
	OSDCfgWr(BW_H,58);  //58         	//height 64
	OSDCfgWr(BD_ENLARGE,0x00);           //
		OSDCfgWr(CHAR_DLY_0,0x00);	  //V[10:8] bit 6-4; H[10:8] bit2-0  23 12
  		OSDCfgWr(CHAR_DLY_1,0x90);    //H[7:0]                           80 80
  		OSDCfgWr(CHAR_DLY_2,0x40);    //v[7:0]                           64 30

	twdWr_Burst_A(OSD_RAM_DL);
    //for(i=0;i<80*76;i++){
	for(i=0;i<80*58;i++)
   	twdWr_Burst_D(logodata[i]);
	twdWr_Burst_P();

	OSDCfgWr(OSD_CTRL,0xf8);           //2 bits pixel BitMap
	twdDelay(1000);
	//OSDDisable();
#endif
}
void OSDInit(void)
{
	unsigned int i;
	OSDCfgWr(OSD_CTRL,0x18);           //disable osd and width*1

	/*
	OSDCfgWr(CHAR_DLY_0,((OSDHPOS_CT & 0x700)+ (OSDVPOS_CT & 0x700)*16)/256 );          // CHAR_DLY_0..2 is setup OSD position in TFTpanel.
	OSDCfgWr(CHAR_DLY_1,OSDHPOS_CT & 0xff);          // X position is {CHAR_DLY_0[2:0],CHAR_DLY_1[7:0]}=0x17c.
    OSDCfgWr(CHAR_DLY_2,OSDVPOS_CT & 0xff);          // Y position is {CHAR_DLY_0[6:4],CHAR_DLY_2[7:0]}=0x180.
	*/

	/* OSD Position */
#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
	//OSDCfgWr(CHAR_DLY_0,0x12);		//V[10:8] bit 6-4; H[10:8] bit2-0
  	//OSDCfgWr(CHAR_DLY_1,0xEE);    //H[7:0]
  	//OSDCfgWr(CHAR_DLY_2,0x64);    //v[7:0]


//	OSDCfgWr(OSD_CTRL,0x18);
	OSDSetRamAddr(FONT_DATA_START_ADDRESS);
	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,0x00);//0x40);
	OSDCfgWr(CHAR_BS_COLOR,0x00); //0x00);

⌨️ 快捷键说明

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