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

📄 lcd_test.c

📁 三星 s3c6400测试代码
💻 C
📖 第 1 页 / 共 5 页
字号:
	Disp("Enter Any Key To Test Color Key (BACKGROUND MATCH) + BLENDING\n");
	UART_Getc();
	Disp("\n");

	LCD_SetColorKey(uMaskKey, uColorKey, MATCH_BG_IMAGE, true, 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();	

	Disp("Enter Any Key To Per Plane Blending(Using ALPHA 1 VALUE) \n");
	Disp("\n");
	UART_Getc();
	
	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();		
	/////////////////////////////////////////////////////////////////////
		
}

static void BlendingPerPlane(void)
{
	u32 uFgAddr;
	u32 uHSz, uVSz;
	int j;
	
	int l=0;
	int m=0;
	int n=0;
	
	bIsRev = false;
	bIsAllWin = false;
	
	Disp("Enter Any Key To Test Per Plane Blending\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 window 0
	Disp("Window %d(Background) is Displayed\n", (int)eBgWin);	
	Disp("\n");
	GLIB_Init(uLcdFbAddr, uHSz, uVSz, eBgBpp);
	GLIB_DrawPattern(uHSz, uVSz);
	LCD_Trigger();

	Disp("Enter Any Key To Display Window %d\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);

	// Draw Rectangles by using Glib for window 1
	GLIB_Init(uFgAddr, uHSz, uVSz, eFgBpp);
	GLIB_ClearFrame(C_MAGENTA);
	LCD_Trigger();	
	
	Disp("Window %d(ForeGround) is Displayed\n", (int)eFgWin);		
	Disp("\n");

	Disp("Enter Any Key To Test Per Plane Blending(Using ALPHA 0 VALUE)\n");
	Disp("\n");
	UART_Getc();

	LCD_SetBlendingType(PER_PLANE, ALPHA0_PLANE, eFgWin);
	LCD_SetAlpha(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, eFgWin);

	for (j=0; j<0x10; j++)
	{
		LCD_SetAlpha(0x0+j, 0x0+j, 0x0+j, 0x0, 0x0, 0x0, eFgWin);
		LCD_Trigger();	
		Disp("Enter Any Key To Test Per Plane Blending (Using ALPHA 0 VALUE): %d\n", j);
		UART_Getc();
	}
	
	Disp("Enter Any Key To Per Plane lending(Using ALPHA 1 VALUE) \n");
	Disp("\n");
	UART_Getc();
	
	GLIB_ClearFrame(C_YELLOW);
	LCD_SetBlendingType(PER_PLANE, ALPHA1_PLANE, eFgWin);	
	LCD_SetAlpha(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, eFgWin);		
	LCD_Trigger();
	
	for (j=0; j<0x10; j++)
	{
		
		LCD_SetAlpha(0x0, 0x0, 0x0, 0x0+l, 0x0+m, 0x0+n, eFgWin);
		LCD_Trigger();		

		l++;
		m = (m<0xf) ? m+2 : m;
		n = (n<0xf) ? n+3 : n;

		Disp("Enter Any Key To Test Per Plane Blending (Using ALPHA 1 VALUE): %d\n", j);
		UART_Getc();
	}

}

static void BlendingPerPixel(void)
{
	u32 uFgAddr;
	u32 uHSz, uVSz;
	int j;
	
	bIsRev = false;
	bIsAllWin = false;
	
	Disp("Enter Any Key To Test Per Pixel Blending\n");
	UART_Getc();
	
	LCD_InitDISPC(eBgBpp, uLcdFbAddr, eBgWin, false);
	LCD_SetWinOnOff(1, eBgWin);	
	LCD_GetFrmSz(&uHSz,  &uVSz, eBgWin);
	
	LCD_Start();

	// Draw Pattern by using Glib for window 0
	Disp("Window 0(Background) is Displayed\n");	
	GLIB_Init(uLcdFbAddr, uHSz, uVSz, eBgBpp);
	GLIB_DrawPattern(uHSz, uVSz);
	LCD_Trigger();

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

	LCD_GetFbEndAddr(&uFgAddr, eBgWin);

	LCD_InitWin(eFgArgbBpp, uHSz, uVSz, 0, 0, uHSz, uVSz, 0, 0, uFgAddr, eFgWin, false);

	LCD_SetWinOnOff(1, eFgWin);

	LCD_GetFrmSz(&uHSz, &uVSz, eFgWin);

	LCD_SetBlendingType(PER_PIXEL, AEN_PIXEL, eFgWin);

	GLIB_Init(uFgAddr, uHSz, uVSz, eFgArgbBpp);
	GLIB_SetFontColor(C_BLACK, C_WHITE, true);

	GLIB_ClearFrame3(C_RED, ALPHA_0);
	GLIB_Printf(20, 40, "Alpha 0 is applied");

	GLIB_FillRectangle3(40, 60, 160, 120, C_GREEN, ALPHA_1);
	GLIB_Printf(50, 70, "Alpha 1 is applied");
	LCD_Trigger();		

	Disp("\n");
	Disp("Window %d (Foreground) is Displayed\n", (int)eFgWin);
	Disp("Enter Any Key To Test Per-Pixel Blending\n");
	UART_Getc();

	for (j=0; j<0x10; j++)
	{
		LCD_SetAlpha(0x0+j, 0x0+j, 0x0+j, 0xf-j, 0xf-j, 0xf-j, eFgWin);
		LCD_Trigger();
		Disp("Enter Any Key To Test Per-Pixel Blending: %d\n", j);
		UART_Getc();
	}
}

static void DisIntRgb(void)
{
	u32 i;
	u32 uHSz, uVSz;
	FRAME_INT_SEL eFIntSel;
	FIFO_INT_LEVEL eFifoIntLevel;
	FIFO_INT_SEL eFifoIntSel;

	bIsRev = false;
	bIsAllWin = false;

	LCD_InitDISPC(eBgBpp, uLcdFbAddr, eBgWin, false);
	
	LCD_SetWinOnOff(1, eBgWin);
	LCD_GetFrmSz(&uHSz, &uVSz, eBgWin);
	GLIB_InitInstance(uLcdFbAddr, uHSz, uVSz, eBgBpp);
	GLIB_DrawPattern(uHSz, uVSz);


	Disp("\nDisplay Frame Interrupt. \n");
	Disp("Background: WINDOW %d\n", (int)eBgWin);
	
	INTC_SetVectAddr(NUM_LCD1, Isr_LCD_FrameInt);

	for(i=0;i<4;i++)
	{
	       eFIntSel = 
		(i == 0) ? FINT_BACKPORCH :
		(i == 1) ? FINT_VSYNC :			
		(i == 2) ? FINT_ACTIVE : FINT_FRONTPORCH;
	       
		LCD_InitInt(LCD_FRAME_INT, eLcdCpuifInt, FIFO_25, FIFO_INT_WIN0, eFIntSel);
		LCD_EnableInt();
	
		INTC_Enable(NUM_LCD1);

		LCD_Start();
	
		Disp("\nIf you want to stop Frame Int., press any key\n");
		UART_Getc();
	
		INTC_Disable(NUM_LCD1);
		LCD_DisableInt();
	}

	Disp("\nDisplay FIFO Interrupt. \n");
	INTC_SetVectAddr(NUM_LCD0, Isr_LCD_FifoInt);

	Disp("\nIf you want to stop FIFO Int., press any key\n");

	 eFifoIntSel=
		(eBgWin == WIN0) ? FIFO_INT_WIN0 :
		(eBgWin == WIN1) ? FIFO_INT_WIN1 :
		(eBgWin == WIN2) ? FIFO_INT_WIN2 :
		(eBgWin == WIN3) ? FIFO_INT_WIN3 : FIFO_INT_WIN4;

	for(i=0;i<5;i++)
	{
		uCount=0;
		
	       eFifoIntLevel = 
		(i == 0) ? FIFO_25 :
		(i == 1) ? FIFO_50 :		
		(i == 2) ? FIFO_75 :	
		(i == 3) ? FIFO_EMPTY : FIFO_FULL;
	       
		LCD_InitInt(LCD_FIFO_INT, eLcdCpuifInt, eFifoIntLevel, eFifoIntSel, FINT_BACKPORCH);
		LCD_EnableInt();
	
		INTC_Enable(NUM_LCD0);

		LCD_Start();
	
		while(GetKey() == 0)
		{}
		
		INTC_Disable(NUM_LCD0);
		LCD_DisableInt();

		Disp("\n");
	}

} 


static void DoubleBuffering(void)
{
	u32 uDoubleBufAddr;
	u32 uHSz, uVSz;
	LCD_WINDOW eBgWin_Temp;

	bIsRev = false;
	bIsAllWin = false;
	
	// Enable Double Buffer
	Disp("Enter Any Key To Test Simple Double Buffering\n");
	UART_Getc();

	eBgWin_Temp=eBgWin;
	
	eBgWin=WIN0;
	
	LCD_InitDISPC(eBgBpp, uLcdFbAddr, eBgWin, true);
	LCD_SetWinOnOff(1, eBgWin);	
	LCD_GetFrmSz(&uHSz,  &uVSz, eBgWin);

	INTC_SetVectAddr(NUM_LCD1, Isr_LCD_FrameInt);
	LCD_InitInt(LCD_FRAME_INT, eLcdCpuifInt, FIFO_25, FIFO_INT_WIN0, FINT_VSYNC);
	LCD_EnableInt();
	INTC_Enable(NUM_LCD1);

	Disp("Window 0's Double Buffering Test\n");
	Disp("Enter Any Key To Exit Double Buffering Test\n");

	LCD_GetDoubleBufAddr(&uDoubleBufAddr, 0, eBgWin);
	GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);
	//GLIB_ClearFrame(C_YELLOW);
	GLIB_DrawPattern(uHSz, uVSz);
	
	LCD_SetActiveFrameBuf(0, eBgWin);
	GLIB_SetFontColor(C_BLACK, C_YELLOW, false);
	GLIB_Printf(40, 160, "WINDOW 0's Buffer %d", 0);

	LCD_GetDoubleBufAddr(&uDoubleBufAddr, 1, eBgWin);
	GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);
	//GLIB_ClearFrame(C_GREEN);
	GLIB_DrawPattern(uHSz, uVSz);

	LCD_SetActiveFrameBuf(1, eBgWin);
	GLIB_SetFontColor(C_BLACK, C_GREEN, false);
	GLIB_Printf(40, 160, "WINDOW 0's Buffer %d", 1);

	LCD_Start();

	while(GetKey() == 0)
	{
		//LCD_Trigger();
	}

	LCD_SetWinOnOff(0, eBgWin);
	INTC_Disable(NUM_LCD1);
	LCD_DisableInt();

	Disp("\n");	
	Disp("Window 1's Double Buffering Test\n");
	Disp("Enter Any Key To Exit Double Buffering Test\n");
	eBgWin=WIN1;
	
	LCD_InitWin(eBgBpp, uHSz, uVSz, 0, 0, uHSz, uVSz, 0, 0, uLcdFbAddr, eBgWin, true);
	LCD_SetWinOnOff(1, eBgWin);
	LCD_GetFrmSz(&uHSz, &uVSz, eBgWin);

	INTC_SetVectAddr(NUM_LCD1, Isr_LCD_FrameInt);
	LCD_InitInt(LCD_FRAME_INT, eLcdCpuifInt, FIFO_25, FIFO_INT_WIN0, FINT_ACTIVE);
	LCD_EnableInt();
	INTC_Enable(NUM_LCD1);
	

	LCD_GetDoubleBufAddr(&uDoubleBufAddr, 0, eBgWin);
	GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);
	GLIB_ClearFrame(C_WHITE);

	LCD_SetActiveFrameBuf(0, eBgWin);
	GLIB_SetFontColor(C_BLACK, C_WHITE, false);
	GLIB_Printf(40, 160, "WINDOW 1's Buffer %d", 0);

	LCD_GetDoubleBufAddr(&uDoubleBufAddr, 1, eBgWin);
	GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);
	GLIB_ClearFrame(C_BLUE);

	LCD_SetActiveFrameBuf(1, eBgWin);
	GLIB_SetFontColor(C_BLACK, C_BLUE, false);
	GLIB_Printf(40, 160, "WINDOW 1's Buffer %d", 1);

	while(GetKey() == 0)
	{
		//LCD_Trigger();
	}

	LCD_SetWinOnOff(0, eBgWin);
	INTC_Disable(NUM_LCD1);
	LCD_DisableInt();

	LCD_PerFrameOff();

	eBgWin = eBgWin_Temp;
}


static void AutoDoubleBuffering(void)
{
	u32 uDoubleBufAddr;
	u32 uHSz, uVSz;
	u32 uBufferIdx = 0;
	
	bIsRev = false;
	bIsAllWin = false;

	// Enable Double Buffer
	Disp("Enter Any Key To Test Auto Double Buffering\n");
	UART_Getc();
	
 	//// WIN 0 ////	
	
	LCD_InitDISPC(eBgBpp,  uLcdFbAddr, WIN0, true);
	LCD_SetWinOnOff(1, WIN0);	
	LCD_GetFrmSz(&uHSz,  &uVSz, WIN0);

	//LCD_Start();
	
	LCD_GetDoubleBufAddr(&uDoubleBufAddr, 0, WIN0);
	GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);
	GLIB_DrawPattern2(uHSz, uVSz);

	LCD_GetDoubleBufAddr(&uDoubleBufAddr, 1, WIN0);
	GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);	
	GLIB_DrawPattern2(uHSz, uVSz);

	LCD_SetActiveFrameBuf(1, WIN0);
	LCD_EnableAutoBuf(1, WIN0); // 0: Normal Double Buffering 1: Auto Double Buffering

	LCD_Start();

	Disp("Enter Any Key To Exit Test\n");
	while (GetKey() == 0)
	{
		LCD_Trigger();
		LCD_GetBufIdx(&uBufferIdx, WIN0);
		
		Disp("Selected Buffer Index(WIN 0): %d\n", uBufferIdx);
		Delay(1000);
	}

	Disp("\n");
	Disp("Enter Any Key To Test WIN 1's Auto Double Buffering\n");
	UART_Getc();

	LCD_SetWinOnOff(0, WIN0);

 	//// WIN 1 ////
	LCD_InitWin(eBgBpp, uHSz, uVSz, 0, 0, uHSz, uVSz, 0, 0, uLcdFbAddr, WIN1, true);

	LCD_SetWinOnOff(1, WIN1);
	
	uBufferIdx = 0;
	
	LCD_GetDoubleBufAddr(&uDoubleBufAddr, 0, WIN1);
	GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);
	GLIB_DrawPattern(uHSz, uVSz);
	LCD_Trigger();	

	LCD_GetDoubleBufAddr(&uDoubleBufAddr, 1, WIN1);
	GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);	
	GLIB_DrawPattern2(uHSz, uVSz);
	LCD_Trigger();

	LCD_SetActiveFrameBuf(1, WIN1);
	LCD_EnableAutoBuf(1, WIN1); // 0: Normal Double Buffering 1: Auto Double Buffering

	Disp("Enter Any Key To Exit Test\n");
	while (GetKey() == 0)
	{
		LCD_Trigger();
		LCD_GetBufIdx(&uBufferIdx, WIN1);
		Disp("Selected Buffer Index(WIN 1): %d\n", uBufferIdx);
		Delay(1000);
	}

	LCD_SetWinOnOff(0, WIN1);
	LCD_Stop();
}

static void NonPaletteBpp(void)
{
	u32 uHSz, uVSz, uNofPixel;
	u32 uColor[16];
	u32 i;
	
	bIsRev = false;
	bIsAllWin = false;

	uColor[0] = 0x0;				// Black
	uColor[1] = 0x3f<<0; 			// Blue
	uColor[2] = 0x3f<<6; 			// Green
	uColor[3] = (0x3f<<6)|(0x3f<<0);  // Cyan

	uColor[4] = 0x3f<<12; 			// Red
	uColor[5] = (0x3f<<12)|(0x3f<<0); // Magenta
	uColor[6] = (0x3f<<12)|(0x3f<<6); // Yellow
	uColor[7] = 0x3ffff; 			// White

	
	Disp("Enter Any Key To Test 18 bpp.\n");
	UART_Getc();

	LCD_InitDISPC(RGB18, uLcdFbAddr, eBgWin, false);
	LCD_GetFrmSz(&uHSz,  &uVSz, eBgWin);
	LCD_SetWinOnOff(1, eBgWin);

	uNofPixel = uHSz*uVSz;
		
	for (i=0; i<uNofPixel; i++)
	{			
		if ( i < uNofPixel/8) 					  *(u32*)(uLcdFbAddr+i*4) = uColor[0];
		else if ( i >= uNofPixel/8 && i < uNofPixel/8*2)    *(u32*)(uLcdFbAddr+i*4) = uColor[1];
		else if ( i >= uNofPixel/8*2 && i < uNofPixel/8*3) *(u32*)(uLcdFbAddr+i*4) = uColor[2];
		else if ( i >= uNofPixel/8*3 && i < uNofPixel/8*4) *(u32*)(uLcdFbAddr+i*4) = uColor[3];
		else if ( i >= uNofPixel/8*4 && i < uNofPixel/8*5) *(u32*)(uLcdFbAddr+i*4) = uColor[4];
		else if ( i >= uNofPixel/8*5 && i < uNofPixel/8*6) *(u32*)(uLcdFbAddr+i*4) = uColor[5];
		else if ( i >= uNofPixel/8*6 && i < uNofPixel/8*7) *(u32*)(uLcdFbAddr+i*4) = uColor[6];

⌨️ 快捷键说明

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