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

📄 l2_lcdtv.c

📁 台湾凌阳方案300万数码相机源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
		{
                        //Joe@2003.2.25 14:52 add begin
			//Joe@2003.2.25 14:52 add end
#if(TURNKEY_OPTION == 1)
			//L2_SetGPIOBit(15,1);	//LCD_BACKLIGHT
#else
			L2_SetGPIOBit(16,1);	 //Back light(5V,18V)
#endif

			//Joe@2003.3.5 13:42 add begin
			if ((XBYTE[0x2001] & 0x01) > 0)	//Make sure TV output is enabled
			{
				while ((XBYTE[0x2DA0] & 0x08) > 0);	//wait TV VD low
				while ((XBYTE[0x2DA0] & 0x08) == 0);	//wait TV VD high
			}
			//Joe@2003.3.5 13:43 add end

			XBYTE[0x2001] = 0x05;
			XBYTE[0x2D01] = XBYTE[0x2D01] | 0x10;
			XBYTE[0x2013] = XBYTE[0x2013] | 0x18; // start the 27 and 13.5MHz source


		}
        }
        else if(mode==2)
        {   // no image input
		//Joe@2003.2.25 14:53 add begin
		#if(TURNKEY_OPTION == 1)
		//L2_SetGPIOBit(15,1);	//LCD_BACKLIGHT
		#else
		L2_SetGPIOBit(16,1);     //Back light(5V,18V)
		#endif
		//Joe@2003.2.25 14:53 add end

		//Joe@2003.3.5 13:42 add begin
		if ((XBYTE[0x2001] & 0x01) > 0)	//Make sure TV output is enabled
		{
			while ((XBYTE[0x2DA0] & 0x08) > 0);	//wait TV VD low
			while ((XBYTE[0x2DA0] & 0x08) == 0);	//wait TV VD high
		}
		//Joe@2003.3.5 13:43 add end

		XBYTE[0x2D01] = XBYTE[0x2D01] & 0x0F;
        }

        //patch4.4.1@yichang@ to fix two LCD/TV display bugs
        //1. TV output field sequence error.
 	//2. LCD and TV picture become vague as the display device is changed repeatedly.
        //end

        MemStretch = tmp;
	return LCD_state;

}


//-----------------------------------------------------------------------------
//L2_TurnOnOffDisplay
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_TurnOnOffDisplay (UCHAR mode)

{
 if (VIDEO_DET == 1)
	 	L2_SetGPIOBit(15,0);
else
	{
 if(mode==0)
	//Joe@2003.3.12 14:26 modify end
	{
		L2_SetGPIOBit(15,0);	//LCD_BACKLIGHT
		if ((XBYTE[0x2001] & 0x01) > 0)	//Make sure TV output is enabled
		{
			while ((XBYTE[0x2DA0] & 0x08) > 0);	//wait TV VD low
			while ((XBYTE[0x2DA0] & 0x08) == 0);	//wait TV VD high
		}
		//Joe@2003.3.5 13:43 add end

		XBYTE[0x2001] = 0x04;
		XBYTE[0x2D01] = XBYTE[0x2D01] | 0x10;

              XBYTE[0x2013] = XBYTE[0x2013] & 0xE7;  // stop the 27 and 13.5MHz source

   L2_CtrlScreen(1);//wendy@2004/9/8

        }
	else if(mode==1)
	{

			if ((XBYTE[0x2001] & 0x01) > 0)	//Make sure TV output is enabled
			{
				while ((XBYTE[0x2DA0] & 0x08) > 0);	//wait TV VD low
				while ((XBYTE[0x2DA0] & 0x08) == 0);	//wait TV VD high
			}
			//Joe@2003.3.5 13:43 add end

			XBYTE[0x2001] = 0x05;
			XBYTE[0x2D01] = XBYTE[0x2D01] | 0x10;
			XBYTE[0x2013] = XBYTE[0x2013] | 0x18; // start the 27 and 13.5MHz source
			//DELAY_1ms();
			      // L2_CtrlScreen(1);//wendy@2004/9/8
				//UI_ClearFOSD(25, 8, 0x08);
				L2_SetGPIOBit(15,1);	//LCD_BACKLIGHT

        }

}

}
//-----------------------------------------------------------------------------
//L2_TurnOnOffDisplay
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_TurnOnOffDisplay2 (UCHAR mode)
	{
	UCHAR type;
	UCHAR LCD_state = 0;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;

	type = XBYTE[0x2D00];
	//patch4.4@richie@flip
	type = type & 0x0F;

	if(mode>2){
		LCD_state = 1;		// parameter error
	}
	//Joe@2003.3.12 14:26 modify begin
	//else if(mode==0)
	else if( (mode==0) || (G_DisplayMode == K_DisplayModePowerOff) )
	//Joe@2003.3.12 14:26 modify end
	{	// turn off display
		//Joe@2003.3.5 13:42 add begin
		if ((XBYTE[0x2001] & 0x01) > 0)	//Make sure TV output is enabled
		{
			while ((XBYTE[0x2DA0] & 0x08) > 0);	//wait TV VD low
			while ((XBYTE[0x2DA0] & 0x08) == 0);	//wait TV VD high
		}
		//Joe@2003.3.5 13:43 add end

		XBYTE[0x2001] = 0x04;
		XBYTE[0x2D01] = XBYTE[0x2D01] | 0x10;
                //patch4.4.1@yichang@ to fix two LCD/TV display bugs
                //1. TV output field sequence error.
 	        //2. LCD and TV picture become vague as the display device is changed repeatedly.
                //begin:

                XBYTE[0x2013] = XBYTE[0x2013] & 0xE7;  // stop the 27 and 13.5MHz source


		//Joe@2003.2.25 14:52 add begin
		#if(TURNKEY_OPTION == 1)
		L2_SetGPIOBit(15,0);	//LCD_BACKLIGHT
		//DbgPrint("L2_TurnOnOffDisplay15=%bu\n",15);
		#else
		L2_SetGPIOBit(16,0);
		#endif
		//Joe@2003.2.25 14:52 add end
        }
	else if(mode==1)
	{	// turn on display
		if(type==0||type==1)
		{
			//Joe@2003.2.25 14:52 add begin
                  #if(TURNKEY_OPTION == 1)
			L2_SetGPIOBit(15,0);	//LCD_BACKLIGHT
			//DbgPrint("L2_TurnOnOffDisplay16=%bu\n",16);
                  #else
			L2_SetGPIOBit(16,0);     //Back light(5V,18V)
                  #endif
			//Joe@2003.3.5 13:42 add begin
			if ((XBYTE[0x2001] & 0x01) > 0)	//Make sure TV output is enabled
			{
				while ((XBYTE[0x2DA0] & 0x08) > 0);	//wait TV VD low
				while ((XBYTE[0x2DA0] & 0x08) == 0);	//wait TV VD high
			}
			//Joe@2003.3.5 13:43 add end

			//Joe@2003.2.27 13:06 modify begin
			XBYTE[0x2001] = 0x01;
			//XBYTE[0x2001] = 0x09;
			//Joe@2003.2.27 13:06 modify end

			XBYTE[0x2D01] = XBYTE[0x2D01] | 0x10;
                        XBYTE[0x2013] = XBYTE[0x2013] | 0x18; // start the 27 and 13.5MHz source

			//Joe@2003.2.25 14:52 add end
		}
		else
		{
                        //Joe@2003.2.25 14:52 add begin
			//Joe@2003.2.25 14:52 add end
#if(TURNKEY_OPTION == 1)
			L2_SetGPIOBit(15,1);	//LCD_BACKLIGHT
#else
			L2_SetGPIOBit(16,1);	 //Back light(5V,18V)
#endif

			//Joe@2003.3.5 13:42 add begin
			if ((XBYTE[0x2001] & 0x01) > 0)	//Make sure TV output is enabled
			{
				while ((XBYTE[0x2DA0] & 0x08) > 0);	//wait TV VD low
				while ((XBYTE[0x2DA0] & 0x08) == 0);	//wait TV VD high
			}
			//Joe@2003.3.5 13:43 add end

			XBYTE[0x2001] = 0x05;
			XBYTE[0x2D01] = XBYTE[0x2D01] | 0x10;
			XBYTE[0x2013] = XBYTE[0x2013] | 0x18; // start the 27 and 13.5MHz source


		}
        }
        else if(mode==2)
        {   // no image input
		//Joe@2003.2.25 14:53 add begin
		#if(TURNKEY_OPTION == 1)
		L2_SetGPIOBit(15,1);	//LCD_BACKLIGHT
		#else
		L2_SetGPIOBit(16,1);     //Back light(5V,18V)
		#endif
		//Joe@2003.2.25 14:53 add end

		//Joe@2003.3.5 13:42 add begin
		if ((XBYTE[0x2001] & 0x01) > 0)	//Make sure TV output is enabled
		{
			while ((XBYTE[0x2DA0] & 0x08) > 0);	//wait TV VD low
			while ((XBYTE[0x2DA0] & 0x08) == 0);	//wait TV VD high
		}
		//Joe@2003.3.5 13:43 add end

		XBYTE[0x2D01] = XBYTE[0x2D01] & 0x0F;
        }

        //patch4.4.1@yichang@ to fix two LCD/TV display bugs
        //1. TV output field sequence error.
 	//2. LCD and TV picture become vague as the display device is changed repeatedly.
        //end

        MemStretch = tmp;
	return LCD_state;

}


//-----------------------------------------------------------------------------
//L2_SetColorPalette
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_SetColorPalette(UCHAR index, UCHAR r, UCHAR g, UCHAR b)
{
	UCHAR LCD_state = 0;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;

	if(index>8) LCD_state = 1;
	else if(index==0){
		XBYTE[0x2D37] = r/8;	// set R
		XBYTE[0x2D38] = g/8;	// set G
		XBYTE[0x2D39] = b/8;	// set B
        }
	else if(index==1){
		XBYTE[0x2D3A] = r/8;	// set R
		XBYTE[0x2D3B] = g/8;	// set G
		XBYTE[0x2D3C] = b/8;	// set B
        }
	else if(index==2){
		XBYTE[0x2D3D] = r/8;	// set R
		XBYTE[0x2D3E] = g/8;	// set G
		XBYTE[0x2D3F] = b/8;	// set B
        }
	else if(index==3){
		XBYTE[0x2D40] = r/8;	// set R
		XBYTE[0x2D41] = g/8;	// set G
		XBYTE[0x2D42] = b/8;	// set B
        }
	else if(index==4){
		XBYTE[0x2D43] = r/8;	// set R
		XBYTE[0x2D44] = g/8;	// set G
		XBYTE[0x2D45] = b/8;	// set B
        }
	else if(index==5){
		XBYTE[0x2D46] = r/8;	// set R
		XBYTE[0x2D47] = g/8;	// set G
		XBYTE[0x2D48] = b/8;	// set B
        }
	else if(index==6){
		XBYTE[0x2D49] = r/8;	// set R
		XBYTE[0x2D4A] = g/8;	// set G
		XBYTE[0x2D4B] = b/8;	// set B
        }
	else if(index==7){
		XBYTE[0x2D4C] = r/8;	// set R
		XBYTE[0x2D4D] = g/8;	// set G
		XBYTE[0x2D4E] = b/8;	// set B
        }
	else{
		XBYTE[0x2D4F] = r/8;	// set R
		XBYTE[0x2D50] = g/8;	// set G
		XBYTE[0x2D51] = b/8;	// set B
        }

        MemStretch = tmp;
	return LCD_state;
}

//-----------------------------------------------------------------------------
//L2_SetFOSDIndex
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_SetFOSDIndex(UCHAR y, UCHAR x, USHORT value)
{
	UCHAR LCD_state = 0;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;
	if(x>24 || y>9 || value >511)
		LCD_state = 1;
        else{
                if(value>255){
                        XBYTE[0x2D2C] = 0x03;   // turn on buffer enable
		}
                else{
                        XBYTE[0x2D2C] = 0x02;   // turn on buffer enable
                }
		XBYTE[0x2D2D] = (25*y) + x;	// set buffer address
		XBYTE[0x2D2E] = value;	// set the index
        }

        MemStretch = tmp;
	return LCD_state;
}

//-----------------------------------------------------------------------------
//L2_SetFOSDAttr
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_SetFOSDAttr(UCHAR y, UCHAR x, UCHAR attr)
{
	UCHAR LCD_state = 0;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;

	if(x>24 || y>9 || attr>63)
		LCD_state = 1;
	else{
                XBYTE[0x2D2C] = 4;              // turn on buffer enable
		XBYTE[0x2D2D] = (25*y) + x;	// set buffer address
		XBYTE[0x2D2E] = attr;		// set the attribute
	}

        MemStretch = tmp;
        return 0;
}


//-----------------------------------------------------------------------------
//L2_SetFOSDOffset
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_SetFOSDOffset(UCHAR x, UCHAR y, UCHAR scrll)
{
	USHORT osdhofst;
	UCHAR LCD_state = 0;
        USHORT tmp;
        //patch4.3@yichang@0611 for v

⌨️ 快捷键说明

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