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

📄 l2_lcdtv.c

📁 dz3000_51.0.0.4.rar
💻 C
📖 第 1 页 / 共 5 页
字号:
/*++

Copyright (c) 2001 Sunplus Technology Co., Ltd.

Module Name:

        L2_lcdtv.c

Abstract:

        Module related to L2 LCD/TV functions

Environment:

        Keil C51 Compiler

Revision History:

        11/12/2001      Prover    created

--*/

//=============================================================================
//Header file
//=============================================================================
#include "general.h"
#include "main.h"
//patch4.4@yichang@tv begin
#include "lcdtv.h"
//patch4.4@yichang@tv end

//Joe@2003.3.12 14:44 mask begin
#include "uiflow.h"
#include "JoeToEvb.h"
#include "Timer.h"
//Joe@2003.3.12 14:44 add end
//=============================================================================
//Symbol
//=============================================================================
//-----------------------------------------------------------------------------
//Constant
//-----------------------------------------------------------------------------
// patch 5.2.1_33@mattwang@rename LC15004_write to ThreeWire_WriteMsb16Data beg
//void LC15004_write(USHORT);  // 20040512 mattwang mark
void ThreeWire_WriteMsb16Data(USHORT);  // 20040512 mattwang modify
// patch 5.2.1_33@mattwang@rename LC15004_write to ThreeWire_WriteMsb16Data end
// patch 5.2.1_33@mattwang@rename Casio2G_write to ThreeWire_WriteLsb12Data beg
//void Casio2G_write(USHORT);  // 20040512 mattwang mark
void ThreeWire_WriteLsb12Data(USHORT);  // 20040512 mattwang modify
// patch 5.2.1_33@mattwang@rename Casio2G_write to ThreeWire_WriteLsb12Data end

//-----------------------------------------------------------------------------
//Variable
//-----------------------------------------------------------------------------
sfr MemStretch = 0x8E;

//=============================================================================
//Program
//=============================================================================
//-----------------------------------------------------------------------------
//L2_InitLCDTV
//-----------------------------------------------------------------------------
//patch3.3@cytsai@0417
UCHAR L2_InitLCDTV(UCHAR CamMode)
{
        UCHAR i,j;
        UCHAR status = 1;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;

        //PRINT_L2("        L2_InitLCDTV: Enter\n");
	//patch4.1@yichang@0517
	//L2_TurnOnOffDisplay (0); // TESTTEST
	if(CamMode!=0)
        {
                status = 1;                     // if not power on initial
        }
	else
	{
		XBYTE[0x2D30] = 0x00;
		XBYTE[0x2D20] = 0x40;		// imgsubsamp
		XBYTE[0x2D21] = 0x40;		// osdsubsamp
		XBYTE[0x2D27] = 0x7a;		// lp, eoi for STN-LCD
		XBYTE[0x2D28] = 0x20;		// fr change every 32 lines
		XBYTE[0x2D29] = 0x00;		// xcksel for STN-LCD
		XBYTE[0x2D2B] = 0x00;		// {osdlpfen,dien,gammaen}
		//Joe@2003.3.11 20:27 modify begin
		//XBYTE[0x2D35] = 0x03;		// {htonefac,osdblkspd}
		XBYTE[0x2D35] = 0x02;		// {htonefac,osdblkspd}
		//Joe@2003.3.11 20:27 modify end
                XBYTE[0x2D36] = 0x0e;           // fonthbits

                #ifdef STNLCD   //cytsai@0328
		// LCD Gamma
		XBYTE[0x2D60] = 0x00;
		XBYTE[0x2D61] = 0x19;
		XBYTE[0x2D62] = 0x35;
		XBYTE[0x2D63] = 0x4c;
		XBYTE[0x2D64] = 0x61;
		XBYTE[0x2D65] = 0x74;
		XBYTE[0x2D66] = 0x85;
		XBYTE[0x2D67] = 0x95;
		XBYTE[0x2D68] = 0xa3;
		XBYTE[0x2D69] = 0xb0;
		XBYTE[0x2D6a] = 0xbc;
		XBYTE[0x2D6b] = 0xc8;
		XBYTE[0x2D6c] = 0xd3;
		XBYTE[0x2D6d] = 0xdf;
		XBYTE[0x2D6e] = 0xec;
		XBYTE[0x2D6f] = 0xf8;
		XBYTE[0x2D70] = 0xff;
		XBYTE[0x2D2b] = 0x01;
                #endif

                //OSD related
                //L2_SetDisplaySrcImgSize(288, 432, 11);
                L2_SetColorPalette(0, 255, 255, 255);
                L2_SetColorPalette(1, 255, 0, 0);
                L2_SetColorPalette(2, 0, 0, 0);
                L2_SetColorPalette(3, 255, 255, 0);
                L2_SetColorPalette(4, 0, 0, 255);
                L2_SetColorPalette(5, 255, 0, 255);
                L2_SetColorPalette(6, 0, 255, 255);
                L2_SetColorPalette(7, 255, 255, 255);
                L2_SetColorPalette(8, 0, 128, 0);
                for(i=0;i<10;i++) for(j=0;j<25;j++)
                {
                        L2_SetFOSDIndex(i, j, 0);
                        L2_SetFOSDAttr(i, j, 0x00);
                }

                //cytsai@0131
/*
                L2_SetFOSDIndex(0, 0, 96);
		L2_SetFOSDIndex(1, 0, 97);
		L2_SetFOSDIndex(2, 0, 98);
		L2_SetFOSDIndex(3, 0, 99);
		L2_SetFOSDIndex(4, 0, 100);
		L2_SetFOSDIndex(5, 0, 101);
		L2_SetFOSDIndex(6, 0, 102);
		L2_SetFOSDIndex(7, 0, 103);
                L2_SetFOSDIndex(0, 1, 96);
		L2_SetFOSDIndex(1, 1, 97);
		L2_SetFOSDIndex(2, 1, 98);
		L2_SetFOSDIndex(3, 1, 99);
		L2_SetFOSDIndex(4, 1, 100);
		L2_SetFOSDIndex(5, 1, 101);
		L2_SetFOSDIndex(6, 1, 102);
		L2_SetFOSDIndex(7, 1, 103);

                L2_SetFOSDAttr(0, 0, 0x08);
		L2_SetFOSDAttr(1, 0, 0x08);
		L2_SetFOSDAttr(2, 0, 0x08);
		L2_SetFOSDAttr(3, 0, 0x08);
		L2_SetFOSDAttr(4, 0, 0x08);
                L2_SetFOSDAttr(5, 0, 0x08);
                L2_SetFOSDAttr(6, 0, 0x08);
                L2_SetFOSDAttr(7, 0, 0x08);
                L2_SetFOSDAttr(0, 1, 0x08);
		L2_SetFOSDAttr(1, 1, 0x08);
		L2_SetFOSDAttr(2, 1, 0x08);
		L2_SetFOSDAttr(3, 1, 0x08);
		L2_SetFOSDAttr(4, 1, 0x08);
                L2_SetFOSDAttr(5, 1, 0x08);
                L2_SetFOSDAttr(6, 1, 0x08);
                L2_SetFOSDAttr(7, 1, 0x08);
*/

		L2_SetFOSDOffset(0, 0, 0);
                L2_SetFOSDBGMixlevel(4);
/*
                #ifdef STNLCD
                L2_SetOSDSelWindow(0, 32, 239, 191, 10);        //cytsai@0128
		#endif
*/
                L2_DefineColorKey(0);
                //XBYTE[0x2DC0] = 0x00;           // clear vd interrupt event

                //PRINT_L2("        L2_InitLCDTV: Exit\n");
                status =0;
	}

        MemStretch = tmp;
        return(status);
}

//-----------------------------------------------------------------------------
//L2_SetDisplayType
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
//patch3.3@cytsai@0417
UCHAR L2_SetDisplayType(UCHAR index)
	{
			UCHAR status = 1;
			UCHAR tmp;
	
			 //patch4.4@yichang@tv out quality begin
			UCHAR chipID;
			//patch4.4@yichang@tv out quality end
	
			tmp = MemStretch;
			MemStretch = 0x01;
	
			////printf("L2_SetDisplayType Enter  Type = %bx \n", index);
		//#ifdef ANANTSC
		if(index==0)// composite NTSC output
		{
	
			XBYTE[0x201C] = 0x00;		// using 27MHz for TV
			XBYTE[0x2D00] = 0x00;		// tvdspmode
			XBYTE[0x2D08] = 0xa1;		// vldx0
			XBYTE[0x2D09] = 0x00;		// vldx0
			XBYTE[0x2D0A] = 0x1C;		// vldy0
			XBYTE[0x2D0B] = 0x00;		// vldy0
			XBYTE[0x2D0C] = 0x20;		// vldx1
			XBYTE[0x2D0D] = 0x03;		// vldx1
			XBYTE[0x2D0E] = 0xf0;		// vldy1
			XBYTE[0x2D0F] = 0x00;		// vldy1
			XBYTE[0x2D1B] = 0x01;		// imgvofst
			XBYTE[0x2D1C] = 0x00;		// imgvofst
			XBYTE[0x2D1D] = 0x00;		// imghofst
			XBYTE[0x2D1E] = 0x00;		// imghofst
			XBYTE[0x2D21] = 0x20;		// osdsubsamp
			XBYTE[0x2D32] = 0x18;		// osdvzfac
			XBYTE[0x2D34] = 0x30;		// osdhofst
					//patch4.3@yichang@0613 for TV sharpness
			//XBYTE[0x2DE2] = 0x01; 	// field mode
					XBYTE[0x2DE2] = 0x03;		// field mode
					 //patch4.4@yichang@tv out quality begin
	
					chipID = XBYTE[0x20FF];
					if(chipID < 2)
							XBYTE[0x2D19] = 0x40;
					else
							XBYTE[0x2D19] = 0x3F;
	
					//patch4.4@yichang@tv out quality end
					status = 0;
		}
		//#endif
	
		//#ifdef ANAPAL
		if(index==1)// composite PAL output
		{
			XBYTE[0x201C] = 0x00;		// using 27MHz for TV
			XBYTE[0x2D00] = 0x01;		// tvdspmode
			XBYTE[0x2D08] = 0xA0;		// vldx0
			XBYTE[0x2D09] = 0x00;		// vldx0
			XBYTE[0x2D0A] = 0x20;		// vldy0
			XBYTE[0x2D0B] = 0x00;		// vldy0
			XBYTE[0x2D0C] = 0x2f;		// vldx1
			XBYTE[0x2D0D] = 0x03;		// vldx1
			XBYTE[0x2D0E] = 0x23;		// vldy1
			XBYTE[0x2D0F] = 0x01;		// vldy1
			XBYTE[0x2D1B] = 0x01;		// imgvofst
			XBYTE[0x2D1C] = 0x00;		// imgvofst
			XBYTE[0x2D1D] = 0x00;		// imghofst
			XBYTE[0x2D1E] = 0x00;		// imghofst
			XBYTE[0x2D21] = 0x20;		// osdsubsamp
			XBYTE[0x2D33] = 0x08;		// osdvofst
			XBYTE[0x2D34] = 0x30;		// osdhofst
					//patch4.3@yichang@0613
			//XBYTE[0x2DE2] = 0x01; 	// field mode
					//patch4.4@yichang@0621 for PAL, begin
					XBYTE[0x2D32] = 0x14;		// osdvzfac
					//patch4.4@yichang@0621 for PAL, end
					XBYTE[0x2DE2] = 0x03;		// field mode
					//patch4.4@yichang@tv out quality begin
					chipID = XBYTE[0x20FF];
					if(chipID < 2)
							XBYTE[0x2D19] = 0x40;
					else
							XBYTE[0x2D19] = 0x3F;
					//patch4.4@yichang@tv out quality end
					status = 0;
		}
		//#endif
	
		//#ifdef NTSC656
		if(index==2)// CCIR656 NTSC output
		{
			XBYTE[0x201C] = 0x00;		// using 27MHz for TV
			XBYTE[0x2D00] = 0x02;		// tvdspmode
	
			//patch5.2.1@ada@Fix CCIR656 NTSC output unstable problem begin
			XBYTE[0x2D08] = 0x3f;		// vldx0
			//XBYTE[0x2D08] = 0x80; 	// vldx0
			//patch5.2.1@ada@Fix CCIR656 NTSC output unstable problem end
	
			XBYTE[0x2D09] = 0x00;		// vldx0
	
			//patch5.2.1@ada@Fix CCIR656 NTSC output unstable problem begin
			XBYTE[0x2D0A] = 0x0b;		// vldy0
			//XBYTE[0x2D0A] = 0x04; 	// vldy0
			//patch5.2.1@ada@Fix CCIR656 NTSC output unstable problem end
	
			XBYTE[0x2D0B] = 0x00;		// vldy0
	
			//patch5.2.1@ada@Fix CCIR656 NTSC output unstable problem begin
			XBYTE[0x2D0C] = 0x10;		// vldx1
			//XBYTE[0x2D0C] = 0x4f; 	// vldx1
			//patch5.2.1@ada@Fix CCIR656 NTSC output unstable problem end
	
			XBYTE[0x2D0D] = 0x03;		// vldx1
	
			//patch5.2.1@ada@Fix CCIR656 NTSC output unstable problem begin
			XBYTE[0x2D0E] = 0xfd;		// vldy1
			//XBYTE[0x2D0E] = 0xf3; 	// vldy1
			//patch5.2.1@ada@Fix CCIR656 NTSC output unstable problem end
	
			XBYTE[0x2D0F] = 0x00;		// vldy1
			XBYTE[0x2D1B] = 0x00;		// imgvofst
			XBYTE[0x2D1C] = 0x00;		// imgvofst
			XBYTE[0x2D1D] = 0x00;		// imghofst
			XBYTE[0x2D1E] = 0x00;		// imghofst
			XBYTE[0x2D21] = 0x20;		// osdsubsamp
			XBYTE[0x2D33] = 0x08;		// osdvofst
			XBYTE[0x2D34] = 0x30;		// osdhofst
					//patch4.3@yichang@0613 for TV sharpness
			//XBYTE[0x2DE2] = 0x01; 	// field mode
					XBYTE[0x2DE2] = 0x03;		// field mode
					//patch4.4@yichang@tv out quality begin
					chipID = XBYTE[0x20FF];
					if(chipID < 2)
							XBYTE[0x2D19] = 0x40;
					else
							XBYTE[0x2D19] = 0x3F;
					//patch4.4@yichang@tv out quality end
					status = 0;
		}
		//#endif
	
		//#ifdef PAL656
		if(index==3)// CCIR656 PAL output
		{
			XBYTE[0x201C] = 0x00;		// using 27MHz for TV
			XBYTE[0x2D00] = 0x03;		// tvdspmode
			XBYTE[0x2D08] = 0x80;		// vldx0
			XBYTE[0x2D09] = 0x00;		// vldx0
			XBYTE[0x2D0A] = 0x04;		// vldy0
			XBYTE[0x2D0B] = 0x00;		// vldy0
			XBYTE[0x2D0C] = 0x4f;		// vldx1
			XBYTE[0x2D0D] = 0x03;		// vldx1
			XBYTE[0x2D0E] = 0x23;		// vldy1
			XBYTE[0x2D0F] = 0x01;		// vldy1
			XBYTE[0x2D1B] = 0x00;		// imgvofst
			XBYTE[0x2D1C] = 0x00;		// imgvofst
			XBYTE[0x2D1D] = 0x00;		// imghofst
			XBYTE[0x2D1E] = 0x00;		// imghofst
			XBYTE[0x2D21] = 0x20;		// osdsubsamp
			XBYTE[0x2D33] = 0x08;		// osdvofst
			XBYTE[0x2D34] = 0x30;		// osdhofst
					//patch4.3@yichang@0613 for TV sharpness
			//XBYTE[0x2DE2] = 0x01; 	// field mode
					//patch4.4@yichang@0621 for PAL, begin
					XBYTE[0x2D32] = 0x14;		// osdvzfac
					//patch4.4@yichang@0621 for PAL, end
					XBYTE[0x2DE2] = 0x03;		// field mode
					//patch4.4@yichang@tv out quality begin
					chipID = XBYTE[0x20FF];
					if(chipID < 2)
							XBYTE[0x2D19] = 0x40;
					else
							XBYTE[0x2D19] = 0x3F;
					//patch4.4@yichang@tv out quality end
					status = 0;
		}
		//#endif
	
		//#ifdef NTSC8
		if(index==4)// CCIR601(8-bit) NTSC output
		{
			XBYTE[0x201C] = 0x00;		// using 27MHz for TV
			XBYTE[0x2D00] = 0x04;		// tvdspmode
			XBYTE[0x2D08] = 0x68;		// vldx0
			XBYTE[0x2D09] = 0x00;		// vldx0
			XBYTE[0x2D0A] = 0x10;		// vldy0
			XBYTE[0x2D0B] = 0x00;		// vldy0
			XBYTE[0x2D0C] = 0x37;		// vldx1
			XBYTE[0x2D0D] = 0x03;		// vldx1
			XBYTE[0x2D0E] = 0xff;		// vldy1
			XBYTE[0x2D0F] = 0x00;		// vldy1
			XBYTE[0x2D1B] = 0x00;		// imgvofst
			XBYTE[0x2D1C] = 0x00;		// imgvofst
			XBYTE[0x2D1D] = 0x00;		// imghofst
			XBYTE[0x2D1E] = 0x00;		// imghofst
			XBYTE[0x2D21] = 0x20;		// osdsubsamp
			XBYTE[0x2D2A] = 0x01;		// CCIR type
			XBYTE[0x2D33] = 0x08;		// osdvofst
			XBYTE[0x2D34] = 0x30;		// osdhofst
					//patch4.3@yichang@0613 for TV sharpness

⌨️ 快捷键说明

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