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

📄 l2_lcdtv.new

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

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"

//=============================================================================
//Symbol
//=============================================================================
//-----------------------------------------------------------------------------
//Constant
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
//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");

	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}
		XBYTE[0x2D35] = 0x03;		// {htonefac,osdblkspd}
                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;

        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
		XBYTE[0x2DE2] = 0x01;		// field mode
                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
		XBYTE[0x2DE2] = 0x01;		// field mode
                status = 0;
	}
	#endif

	#ifdef NTSC656
	if(index==2)// CCIR656 NTSC output
	{
		XBYTE[0x201C] = 0x00;		// using 27MHz for TV
		XBYTE[0x2D00] = 0x02;		// 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] = 0xf3;		// 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[0x2D33] = 0x08;		// osdvofst
		XBYTE[0x2D34] = 0x30;		// osdhofst
		XBYTE[0x2DE2] = 0x01;		// field mode
                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
		XBYTE[0x2DE2] = 0x01;		// field mode
                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
		XBYTE[0x2DE2] = 0x01;		// field mode
                status = 0;
	}
	#endif

	#ifdef PAL8
	if(index==5)// CCIR601(8-bit) PAL output
	{
		XBYTE[0x201C] = 0x00;		// using 27MHz for TV
		XBYTE[0x2D00] = 0x05;		// 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
		XBYTE[0x2DE2] = 0x01;		// field mode
                status = 0;
	}
	#endif

	#ifdef NTSC16
	if(index==6)// CCIR601(16-bit) NTSC output
	{
		XBYTE[0x201C] = 0x00;		// using 27MHz for TV
		XBYTE[0x2D00] = 0x06;		// 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] = 0xf3;		// 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[0x2D33] = 0x08;		// osdvofst
		XBYTE[0x2D34] = 0x30;		// osdhofst
		XBYTE[0x2DE2] = 0x01;		// field mode
                status = 0;
	}
	#endif

	#ifdef PAL16
	if(index==7)// CCIR601(16-bit) PAL output
	{
		XBYTE[0x201C] = 0x00;		// using 27MHz for TV
		XBYTE[0x2D00] = 0x07;		// 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
		XBYTE[0x2DE2] = 0x01;		// field mode
                status =  0;
	}
	#endif

	#ifdef UPS051
	if(index==8)// UPS051 output
	{
		XBYTE[0x201C] = 0x02;		// using 24MHz for unipac TFT-LCD
		XBYTE[0x2D00] = 0x08;		// tvdspmode
		XBYTE[0x2D02] = 0x05;		// vline
		XBYTE[0x2D03] = 0x01;		// vline
		XBYTE[0x2D04] = 0x59;		// hpixel
		XBYTE[0x2D05] = 0x03;		// hpixel
		XBYTE[0x2D06] = 0x03;		// vsyncw
		XBYTE[0x2D07] = 0x62;		// hsyncw
		XBYTE[0x2D08] = 0x86;		// vldx0
		XBYTE[0x2D09] = 0x00;		// vldx0
		XBYTE[0x2D0A] = 0x16;		// vldy0
		XBYTE[0x2D0B] = 0x00;		// vldy0
		XBYTE[0x2D0C] = 0x48;		// vldx1
		XBYTE[0x2D0D] = 0x03;		// vldx1
		XBYTE[0x2D0E] = 0xF1;		// vldy1
		XBYTE[0x2D0F] = 0x00;		// vldy1
		XBYTE[0x2D1B] = 0x00;		// imgvofst
		XBYTE[0x2D1C] = 0x00;		// imgvofst
		XBYTE[0x2D1D] = 0x00;		// imghofst
		XBYTE[0x2D1E] = 0x00;		// imghofst
		XBYTE[0x2D20] = 0x1a;		// imgsubsamp
		XBYTE[0x2D21] = 0x1a;		// osdsubsamp
		XBYTE[0x2D33] = 0x00;		// osdvofst
		XBYTE[0x2D34] = 0x1a;		// osdhofst
		XBYTE[0x2DE2] = 0x00;		// frame mode
                status = 0;
	}
	#endif

	#ifdef AU015AN02
	if(index==13)// AU015AN02 output
	{
		XBYTE[0x201C] = 0x00;		// using 27MHz for AU digital I/F TFT-LCD
		XBYTE[0x20E6] = 0x80;		// phase adjustment
		XBYTE[0x2D00] = 0x09;		// tvdspmode
		XBYTE[0x2D02] = 0x05;		// vline
		XBYTE[0x2D03] = 0x01;		// vline
		XBYTE[0x2D04] = 0x59;		// hpixel
		XBYTE[0x2D05] = 0x03;		// hpixel
		XBYTE[0x2D06] = 0x15;		// vsyncw
		XBYTE[0x2D07] = 0x11;		// hsyncw
		XBYTE[0x2D08] = 0x86;		// vldx0
		XBYTE[0x2D09] = 0x00;		// vldx0
		XBYTE[0x2D0A] = 0x03;		// vldy0
		XBYTE[0x2D0B] = 0x00;		// vldy0
		XBYTE[0x2D0C] = 0xE0;		// vldx1
		XBYTE[0x2D0D] = 0x02;		// vldx1
		XBYTE[0x2D0E] = 0xDE;		// vldy1

⌨️ 快捷键说明

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