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

📄 lcd_test.c

📁 三星 s3c6400测试代码
💻 C
📖 第 1 页 / 共 5 页
字号:
	//LCD_Trigger();

	Disp("\nIf you want to end this test, press any key\n");
	UART_Getc();
}

static void VirtualScreen(void) 
{
	u32 uBgWinNum, uFgWinNum;

	u32 uFgAddr;
	u32 uBgHSz, uBgVSz, uFgHSz, uFgVSz, uLcdHSz, uLcdVSz;

	u32 uViewPort_X, uViewPort_Y;
	u32 uOsd_X, uOsd_Y;
	int i;
	
	bIsRev = false;
	bIsAllWin = false;

	uBgWinNum = 
		(eBgWin == WIN0) ? 0 :
		(eBgWin == WIN1) ? 1 :
		(eBgWin == WIN2) ? 2 :
		(eBgWin == WIN3) ? 3 : 4;

	uFgWinNum = 
		(eFgWin == WIN0) ? 0 :
		(eFgWin == WIN1) ? 1 :
		(eFgWin == WIN2) ? 2 :
		(eFgWin == WIN3) ? 3 : 4;

	// The index number of foreground window must be more than that of background window
	if (uBgWinNum >= uFgWinNum)
	{
		Disp("Error! Invalid Background Window Number or Foreground Window Number\n");
		return;
	}

	// Set Background Parameter
	#if (LCD_MODULE_TYPE== LTV350QV_RGB)
		uBgHSz = 320*2;
		uBgVSz = 240*2;
	#elif (LCD_MODULE_TYPE == LTS222QV_CPU)
		uBgHSz = 240*2;
		uBgVSz = 320*2;
	#elif (LCD_MODULE_TYPE== LTP700WV_RGB ||LCD_MODULE_TYPE ==LTE480WV_RGB)
		uBgHSz = 800*2;
		uBgVSz = 480*2;	
	#elif (LCD_MODULE_TYPE== LTV300GV_RGB)
		uBgHSz = 640*2;
		uBgVSz = 480*2;	
	#else
		Assert(0);
	#endif

	Disp("Enter Any Key To Test Virtual Screen\n");
	UART_Getc();
	Disp("\n");

	LCD_InitBase();
	LCD_InitWin(eBgBpp, uBgHSz, uBgVSz, 0, 0, uBgHSz/2, uBgVSz/2, 0, 0, uLcdFbAddr, eBgWin, false);
	
	LCD_SetWinOnOff(1, eBgWin);
	LCD_Start();

	// Draw Background
	GLIB_Init(uLcdFbAddr, uBgHSz, uBgVSz, eBgBpp);
	GLIB_DrawPattern(uBgHSz, uBgVSz);
	GLIB_SetFontColor(C_BLACK, C_WHITE, true);
	GLIB_Printf(100, 160, "BG's WIN %d", (int)eBgWin);
	
	GLIB_SetFontColor(C_RED, C_WHITE, true);	
	GLIB_Printf(340, 160, "BG's WIN %d", (int)eBgWin);	
	
	GLIB_SetFontColor(C_BLACK, C_WHITE, true);	
	GLIB_Printf(340, 480, "BG's WIN %d", (int)eBgWin);		
	GLIB_Printf(100, 480, "BG's WIN %d", (int)eBgWin);	
	LCD_Trigger();

	// Set Foreground Parameter
	
	#if (LCD_MODULE_TYPE== LTV350QV_RGB)
		uFgHSz  = 320/2;
		uFgVSz  = 240/2;
	#elif (LCD_MODULE_TYPE == LTS222QV_CPU)
		uFgHSz  = 240/2;
		uFgVSz  = 320/2;
	#elif (LCD_MODULE_TYPE== LTP700WV_RGB ||LCD_MODULE_TYPE ==LTE480WV_RGB)
		uFgHSz = 800/2;
		uFgVSz = 480/2;		
	#elif (LCD_MODULE_TYPE== LTV300GV_RGB)	
		uFgHSz = 640/2;
		uFgVSz = 480/2;	
	#else
		Assert(0);
	#endif

	uOsd_X = 0;
	uOsd_Y = 0;

	LCD_GetFbEndAddr(&uFgAddr, eBgWin);
	LCD_InitWin(eBgBpp, uFgHSz, uFgVSz, 0, 0, uFgHSz, uFgVSz, uOsd_X, uOsd_Y, uFgAddr, eFgWin, false);

	LCD_SetWinOnOff(1, eFgWin); // Turn on foreground

	// Draw foreground
	GLIB_Init(uFgAddr, uFgHSz, uFgVSz, eBgBpp);
	GLIB_DrawPattern2(uFgHSz, uFgVSz);
	GLIB_SetFontColor(C_BLACK, C_WHITE, true);
	GLIB_Printf(20, 60, "FG's WIN %d", (int)eFgWin);
	LCD_Trigger();

	uViewPort_X = 0;
	uViewPort_Y = 0;
	
	#if (LCD_MODULE_TYPE== LTV350QV_RGB)
		uLcdHSz = 320;
		uLcdVSz = 240;
	#elif (LCD_MODULE_TYPE == LTS222QV_CPU)
		uLcdHSz = 240;
		uLcdVSz = 320;
	#elif (LCD_MODULE_TYPE== LTP700WV_RGB ||LCD_MODULE_TYPE ==LTE480WV_RGB)
		uLcdHSz = 800;
		uLcdVSz = 480;
	#elif (LCD_MODULE_TYPE== LTV300GV_RGB)	
		uLcdHSz = 640;
		uLcdVSz = 480;
	#else
		Assert(0);
	#endif
	
	Disp("ViewPort Moving Test\n");
	Disp("Enter A \'Enter Key\' To Exit Moving Right\n");
	Disp("\n");
	
	//////////////////////////////////////////////////////////////////////
	for (i=0; i<uBgHSz-uLcdHSz; i++)
	{
		Disp("Enter Any Key Except \'Enter Key\' To Move Background RIGHT\n");
		if (UART_Getc() == '\r')
		{
			i = uBgHSz-uLcdHSz-1;
			break;
		}
		
		LCD_SetViewPosOnFrame(i, uViewPort_Y, eBgWin);
		LCD_Trigger();	
				
		Disp("ViewPort's Left Top Coordinate (X, Y) : (%d, %d)\n", i, uViewPort_Y);
		Disp("\n");		
	}
	uViewPort_X = i;
	//////////////////////////////////////////////////////////////////////
	
	Disp("\n");
	Disp("Enter A \'Enter Key\' To Exit Moving Down\n");
	for (i=0; i<uBgVSz - uLcdVSz; i++)
	{
		Disp("Enter Any Key Except \'Enter Key\' To Move Background DOWN\n");
		if (UART_Getc() == '\r')
		{
			i = uBgVSz - uLcdVSz - 1;
			break;
		}
		
		LCD_SetViewPosOnFrame(uViewPort_X, i, eBgWin);
		LCD_Trigger();	
				
		Disp("ViewPort's Left Top Coordinate (X, Y) : (%d, %d)\n", uViewPort_X, i);		
		Disp("\n");		
	}
	uViewPort_Y = i;

	Disp("\n");
	Disp("Enter A \'Enter Key\' To Exit Moving Left\n");
	for (i=uViewPort_X; i>0; i--)
	{
		Disp("Enter Any Key Except \'Enter Key\' To Move Background LEFT\n");	
		if (UART_Getc() == '\r')
			break;

		LCD_SetViewPosOnFrame(uViewPort_X--, uViewPort_Y, eBgWin);
		LCD_Trigger();	
				
		Disp("ViewPort's Left Top Coordinate (X, Y) : (%d, %d)\n", uViewPort_X, uViewPort_Y);		
		Disp("\n");		
	}

	Disp("\n");
	Disp("Enter A \'Enter Key\' To Exit Moving Up\n");
	for (i=uViewPort_Y; i>0; i--)
	{
		Disp("Enter Any Key Except \'Enter Key\' To Move Background UP\n");		
		if (UART_Getc() == '\r')
			break;

		LCD_SetViewPosOnFrame(0, uViewPort_Y--, eBgWin);
		LCD_Trigger();	
			
		Disp("ViewPort's Left Top Coordinate (X, Y) : (0, %d)\n", uViewPort_Y);				
		Disp("\n");		
	}

	Disp("\n");
	Disp("Foreground Moving Test\n");
	Disp("Enter A \'Enter Key\' To Exit Moving Right\n");	
	for(i=0; i<uLcdHSz - uFgHSz; i++)
	{
		Disp("Enter Any Key Except \'Enter Key\' To Move Foreground RIGHT\n");
		if (UART_Getc() == '\r')
		{
			i = uLcdHSz - uFgHSz;
			break;
		}
		
		LCD_SetViewPosOnLcd(i, uOsd_Y, eFgWin);
		LCD_Trigger();	
			
		Disp("Foreground's Left Top Coordinate (X, Y) : (%d, %d)\n", i, uOsd_Y);						
		Disp("\n");				
	}
	uOsd_X = i;
	
	Disp("\n");
	Disp("Enter A \'Enter Key\' To Exit Moving Down\n");
	for(i=0; i<uLcdVSz - uFgVSz; i++)
	{
		Disp("Enter Any Key Except \'Enter Key\' To Move Foreground DOWN\n");
		if (UART_Getc() == '\r')
		{
			i = uLcdVSz - uFgVSz - 1;
			break;
		}
		
		LCD_SetViewPosOnLcd(uOsd_X, i, eFgWin);
		LCD_Trigger();	
			
		Disp("Foreground's Left Top Coordinate (X, Y) : (%d, %d)\n", uOsd_X, i);						
		Disp("\n");				

	}
	uOsd_Y = i;

	Disp("\n");
	Disp("Enter A \'Enter Key\' To Exit Moving Left\n");
	for(i=uOsd_X; i>0; i--)
	{
		Disp("Enter Any Key Except \'Enter Key\' To Move Foreground LEFT\n");
		if (UART_Getc() == '\r')
			break;
		
		LCD_SetViewPosOnLcd(uOsd_X--, uOsd_Y, eFgWin);
		LCD_Trigger();	
				
		Disp("Foreground's Left Top Coordinate (X, Y) : (%d, %d)\n", uOsd_X, uOsd_Y);						
		Disp("\n");				
		
	}

	Disp("\n");
	Disp("Enter A \'Enter Key\' To Exit Moving Up\n");
	for(i=uOsd_Y; i>0; i--)
	{
		Disp("Enter Any Key Except \'Enter Key\' To Move Foreground UP\n");
		if (UART_Getc() == '\r')
			break;
		
		LCD_SetViewPosOnLcd(0, uOsd_Y--, eFgWin);
		LCD_Trigger();	
		
		Disp("Foreground's Left Top Coordinate (X, Y) : (%d, %d)\n", 0, uOsd_Y);						
		Disp("\n");				
	}
}

static void ColorMap(void)
{
	u32 uHSz, uVSz;
	const char* pcColorStr;
	u32 uColorMapVal;
	
	bIsRev = false;
	bIsAllWin = false;
		
	Disp("Enter Any Key To Test Color Map\n");
	UART_Getc();

	LCD_InitDISPC(eBgBpp, uLcdFbAddr, eBgWin, false);	
	LCD_SetWinOnOff(1, eBgWin);

	LCD_Start();
	
	LCD_GetFrmSz(&uHSz, &uVSz, WIN0);
	GLIB_Init(uLcdFbAddr, uHSz, uVSz, eBgBpp);
	GLIB_DrawPattern(uHSz, uVSz);

	GLIB_SetFontColor(C_BLACK, C_WHITE, true);
	GLIB_Printf(40, 80, "WINDOW %d", (int)eBgWin);
	LCD_Trigger();	

	Disp("Enter Any Key To Test Window %d's Color-Map\n", (int)eBgWin);
	UART_Getc();

	uColorMapVal = 
		((int)eBgWin == 0) ? 0x000000ff : // BLUE	
		((int)eBgWin == 1) ? 0x00ff0000 : // RED
		((int)eBgWin == 2) ? 0x0000ff00 : // GREEN
		((int)eBgWin == 3) ? 0x00ffff00 : // YELLOW
		0x00ff00ff; // MAGENTA

	pcColorStr =
		(uColorMapVal == 0x000000ff) ? "BLUE" :		
		(uColorMapVal == 0x00ff0000) ? "RED" :
		(uColorMapVal == 0x0000ff00) ? "GREEN" :
		(uColorMapVal == 0x00ffff00) ? "YELLOW" :
		(uColorMapVal == 0x00ff00ff) ? "MAGENTA" : "NOT DEFINED";

	LCD_SetColorMapOnOff(1, eBgWin);
	LCD_SetColorMapValue(uColorMapVal, eBgWin);
	LCD_Trigger();	
		
	Disp("The Color Of Color-Map's Color : %s\n", pcColorStr);
	Disp("Enter Any Key To Exit This Test\n");
	UART_Getc();
}


static void ColorKey(void)
{
	u32 uFgAddr;
	u32 uHSz, uVSz;

	u32 uKeyAreaColor, uNonKeyAreaColor;
	u32 uColorKey, uMaskKey;
	int k;
	
	bIsRev = false;
	bIsAllWin = false;
	
	if ((int)eBgWin >= (int)eFgWin)
	{
		Disp("Invalid Window Number Correspond to Foreground/ Background!\n");
		return;
	}

	Disp("Enter Any Key To Test Color Key\n");
	UART_Getc();

	LCD_InitDISPC(eBgBpp, uLcdFbAddr, eBgWin, false);	
	LCD_SetWinOnOff(1, eBgWin);

	LCD_Start();
	
	LCD_GetFrmSz(&uHSz,  &uVSz, eBgWin);
	// Draw Pattern by using Glib for Back-ground window 
	GLIB_Init(uLcdFbAddr, uHSz, uVSz, eBgBpp);

	Disp("Window %d (Background) is Displayed\n", (int)eBgWin);
	GLIB_DrawPattern(uHSz, uVSz);
	LCD_Trigger();

	if (eFgBpp == RGB24)
	{
		uColorKey =
			((int)eFgWin == 1) ? 0x0000ff :
			((int)eFgWin == 2) ? 0x00ff00 :
			((int)eFgWin == 3) ? 0xff0000 : 0xff00ff;

		uMaskKey =
			((int)eFgWin == 1) ? 0x00000c :
			((int)eFgWin == 2) ? 0x000c00 :
			((int)eFgWin == 3) ? 0x0c0000 : 0x00000c;

		uKeyAreaColor =
			((int)eFgWin == 1) ? 0x0000fb : // valid color: 0xf3, 0xf7, 0xfb, 0xff
			((int)eFgWin == 2) ? 0x00f300 : // valid color: 0x00f300, 0x00f700, 0x00fb00, 0x00ff00
			((int)eFgWin == 3) ? 0xf70000 : // valid color: 0xf30000, 0xf70000, 0xfb0000, 0xff0000
			0xff00f3; // valid color: 0xff00f3, 0xff00f7, 0xff00fb, 0xff00ff

		uNonKeyAreaColor =
			((int)eFgWin == 1) ? 0x00ff0000 : // RED
			((int)eFgWin == 2) ? 0x000000ff : // BLUE
			((int)eFgWin == 3) ? 0x0000ff00 : // GREEN
			0x0000ffff; // CYAN
	}
	else if (eFgBpp == RGB16)
	{
		// In RGB16(565) Bpp,
		// The Valid bit position of color key value
		// RED : COLVAL[23:19]
		// GREEN : COLVAL[15:10]
		// BLUE : COLVAL[7:3]
		uColorKey =
			((int)eFgWin == 1) ? 0x0000f8 : // BLUE
			((int)eFgWin == 2) ? 0x00fc00 : // GREEN
			((int)eFgWin == 3) ? 0xf80000 : // RED
			0xf800f8; // MAGENTA

		// In RGB16(565) Bpp,
		// Mask Key[18:16] must be 0x7
		// Mask Key[9:8] must be 0x3
		// Mask Key[2:0] must be 0x7 and
		// The valid bit postion of mask key(compare key) value
		// RED : COLVAL[23:19]
		// GREEN : COLVAL[15:10]
		// BLUE : COLVAL[7:3]
		uMaskKey =
			((int)eFgWin == 1) ? 0x070337 :
			((int)eFgWin == 2) ? 0x071b07 :
			((int)eFgWin == 3) ? 0xc70307 : 0x070337;

		uKeyAreaColor =
			((int)eFgWin == 1) ? 0x0019 : // valid color: 0x19, 0x1b, 0x1d, 0x1f
			((int)eFgWin == 2) ? 0x07e0 : // valid color: 0x720, 0x760, 0x790, 0x7e0
			((int)eFgWin == 3) ? 0x7800 : // valid color: 0x3800, 0x7800, 0xc800, 0xf800
			0xf81b; // valid color: 0xf819, 0xf81b, 0xf81d, 0xf81f

		uNonKeyAreaColor =
			((int)eFgWin == 1) ? 0xf800 : // RED
			((int)eFgWin == 2) ? 0x001f : // BLUE
			((int)eFgWin == 3) ? 0x07d0 : // GREEN
			0x07ff; // CYAN
	}

	Disp("Enter Any Key To Display Window %d (Foreground)\n", (int)eFgWin);
	UART_Getc();

	LCD_GetFbEndAddr(&uFgAddr, eBgWin);
	LCD_InitWin(eFgBpp, uHSz, uVSz, 0, 0, uHSz, uVSz, 0, 0, uFgAddr, eFgWin, false);

	LCD_SetWinOnOff(1, eFgWin);
	LCD_GetFrmSz(&uHSz, &uVSz, eFgWin);

	GLIB_Init(uFgAddr, uHSz, uVSz, eFgBpp);
	GLIB_ClearFrame2(uKeyAreaColor);	 // Color key area	
	LCD_Trigger();
	
	GLIB_FillRectangle2(10, 80, 210, 120, uNonKeyAreaColor); // Non-color key area
	LCD_Trigger();
	
	LCD_SetColorKeyOnOff(1, eFgWin);
	
	Disp("Enter Any Key To Test Color Key (FOREGROUND MATCH)\n");
	UART_Getc();
	Disp("\n");
	LCD_SetColorKey(uMaskKey, uColorKey, MATCH_FG_IMAGE, false, eFgWin);
	LCD_Trigger();	


	Disp("Enter Any Key To Test Color Key (BACKGROUDN MATCH)\n");
	UART_Getc();
	Disp("\n");
	LCD_SetColorKey(uMaskKey, uColorKey, MATCH_BG_IMAGE, false, eFgWin);
	LCD_Trigger();	
			
	
	///////////////////////////////////////////////////////////////////
	Disp("Enter Any Key To Test Color Key (FOREGROUND MATCH) + BLENDING\n");
	UART_Getc();
	Disp("\n");
	LCD_SetColorKey(uMaskKey, uColorKey, MATCH_FG_IMAGE, false, eFgWin);
	
	for(k=0; k<0x10; k++)
	{
		LCD_SetAlpha(0x0, 0x0, 0x0, 0x0+k, 0x0+k, 0x0+k, eFgWin);
		LCD_Trigger();	
		Disp("Enter Any Key To Process A Color Key Test: %d\n", k);
		UART_Getc();
	}
	
	LCD_SetAlpha(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, eFgWin);
	LCD_Trigger();	
	
	for(k=0; k<0x10; k++)
	{
		LCD_SetAlpha(0x0+k, 0x0+k, 0x0+k, 0x0, 0x0, 0x0, eFgWin);
		LCD_Trigger();	
		Disp("Enter Any Key To Process A Color Key Test: %d\n", k);
		UART_Getc();
	}
	
	LCD_SetAlpha(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, eFgWin);
	LCD_Trigger();		
	
	for(k=0; k<0x10; k++)
	{
		LCD_SetAlpha(0x0+k, 0x0+k, 0x0+k, 0x0+k, 0x0+k, 0x0+k, eFgWin);
		LCD_Trigger();	
		Disp("Enter Any Key To Process A Color Key Test: %d\n", k);
		UART_Getc();
	}
	LCD_SetAlpha(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, eFgWin);
	LCD_Trigger();		
	/////////////////////////////////////////////////////////////////////


	/////////////////////////////////////////////////////////////////////
	Disp("\n");	

⌨️ 快捷键说明

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