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

📄 display.c

📁 samsung 最新芯片2450 的测试程序.
💻 C
📖 第 1 页 / 共 3 页
字号:
		rINTSUBMSK &= ~(1<<17);//i80 I/F
	}
	else
	{
		rVIDINTCON = (0x3f<<20)|(3<<5)|(3<<2)|(1<<1)|(1<<0); //Win0/1 FIFO(empty)
		rINTSUBMSK &= ~(1<<15);//RGB I/F FIFO int.
	}
	
	Display_Start(LCD_WIN_0);
	if(lcd_if==I80_IF)
		rCPUTRIGCON2=1;
	printf("Winow 0, press any key\n");
	getchar();

	LcdWindowOnOff(LCD_WIN_0,LCD_OFF);
	LcdEnvidOnOff(LCD_OFF);		
	
	// Setting Window 1(24bpp)
	Basic_Display_Setting(LCD_WIN_1,LCD_BUF_0,WINCONx_24BPP_888,180,100);
	//printf("Sart:0x%x, End:0x%x, Ver:0x%x\n",*(int *)0x4c80006c,*(int *)0x4c800084,*(int *)0x4c80009c);
	for(j=0;j<100;j++)
	{
		for(i=0;i<180;i++)
		{
			if(j%2)
			{
				if(i%2)
					PutPixel(i,j,0xff0000);
				else
					PutPixel(i,j,0xffffff);
			}
			else
			{
				if(i%2)
					PutPixel(i,j,0xffffff);
				else
					PutPixel(i,j,0xff0000);
			}
		}
	}
	lprintf((screen_width-64)/2,(screen_height-8)/2,0x0,"Window 1");
	screen_width=lcd_horizon_value;
	screen_height=lcd_line_value;

	// WIN0/1 OSD(top)	
	*VIDOSDxA_Reg_Addr[1] =( ((screen_width-180)/2) << 11 )|( (0)<<0 );
	// WIN0/1 OSD(bottom)
	*VIDOSDxB_Reg_Addr[1] =( (((screen_width-180)/2)+180)-1 <<11 )|( (100-1)<<0 );

	// WINCON0/1
	*WINCONx_Reg_Addr[1] &= ~((1<<6)|(1<<1));
	*WINCONx_Reg_Addr[1] |= (alpha_sel<<1);

	// Alpha value(VIDOSD1C)
	*VIDOSDxC_Reg_Addr[1] = (0xf<<20)|(0xf<<16)|(0xf<<12)|(0xf<<8)|(0xf<<4)|(0xf<<0);
	printf("Winow 0 & 1 no-Color key and 0xf-Blending, press any key\n");
	Display_Start(LCD_WIN_ALL);
	if(lcd_if==I80_IF)
		rCPUTRIGCON2=1;
	getchar();
	LcdWindowOnOff(LCD_WIN_ALL,LCD_OFF);
	LcdEnvidOnOff(LCD_OFF);

	*VIDOSDxC_Reg_Addr[1] = (0x9<<20)|(0x9<<16)|(0x9<<12)|(0x9<<8)|(0x9<<4)|(0x9<<0);
	printf("Winow 0 & 1 no-Color key and 0x9-Blending, press any key\n");
	Display_Start(LCD_WIN_ALL);
	if(lcd_if==I80_IF)
		rCPUTRIGCON2=1;
	getchar();
	LcdWindowOnOff(LCD_WIN_ALL,LCD_OFF);
	LcdEnvidOnOff(LCD_OFF);

	*WxKEYCON0_Reg_Addr[1]	=	(0<<26)|(1<<25)|(0<<24)|(0x000000);
	*WxKEYCON1_Reg_Addr[1]	=	0xff0000;

	*VIDOSDxC_Reg_Addr[1] = (0x9<<20)|(0x9<<16)|(0x9<<12)|(0x9<<8)|(0x9<<4)|(0x9<<0);
	printf("Winow 0 & 1 0xff0000-Color key and 0x9-Blending, press any key\n");
	Display_Start(LCD_WIN_ALL);
	if(lcd_if==I80_IF)
		rCPUTRIGCON2=1;
	getchar();
	LcdWindowOnOff(LCD_WIN_ALL,LCD_OFF);
	LcdEnvidOnOff(LCD_OFF);

	*WxKEYCON0_Reg_Addr[1]	&=	~(1<<25);

	*VIDOSDxC_Reg_Addr[1] = (0x0<<20)|(0x0<<16)|(0x0<<12)|(0x0<<8)|(0x0<<4)|(0x0<<0);
	printf("Winow 0 & 1 no-Color key and 0x0-Blending, press any key\n");
	Display_Start(LCD_WIN_ALL);
	if(lcd_if==I80_IF)
		rCPUTRIGCON2=1;
	
	/* Ending Test */
	Display_End(LCD_WIN_ALL);
	rVIDINTCON=(0x3f<<20)|0;
	rINTMSK |= (1<<16);	
}
#endif
#if 0
void PlaneBlendingTest(void)
{
	uint32 i;
	int32 alpha_sel;

	printf("\nSelect the alpha type which you want to test\n");
	printf(" 0: alpha 0   1: alpha 1\n");
	alpha_sel = GetIntNum();
	if ((alpha_sel<0)||(alpha_sel>1))
		alpha_sel=0;

	LcdWindowOnOff(LCD_WIN_ALL,LCD_OFF);
	LcdEnvidOnOff(LCD_OFF);
			

	// Setting Window 0
	Basic_Display_Setting(LCD_WIN_0,LCD_BUF_0,WINCONx_16BPP_565,lcd_horizon_value,lcd_line_value);	

	LCD_FilledRectangle(0, 0, screen_width-1, screen_height/4*1-1, 0xf800);

	LCD_FilledRectangle(0, screen_height/4*1, screen_width-1, screen_height/4*2-1, 0x7e0);
	LCD_FilledRectangle(0, screen_height/4*2, screen_width-1, screen_height/4*3-1, 0x1f);
	LCD_FilledRectangle(0, screen_height/4*3, screen_width-1, screen_height-1, 0xffff);
	lprintf(50,20,0xffff,"Window 0");			
			
		
	// Setting Window 1
	Basic_Display_Setting(LCD_WIN_1,LCD_BUF_0,WINCONx_16BPP_565,lcd_horizon_value,lcd_line_value);	

	LCD_FilledRectangle(0, 0, screen_width/4*1-1, screen_height-1, 0xf800);
	LCD_FilledRectangle(screen_width/4*1, 0, screen_width/4*2-1, screen_height-1, 0x7e0);
	LCD_FilledRectangle(screen_width/4*2, 0, screen_width/4*3-1, screen_height-1, 0x1f);
	LCD_FilledRectangle(screen_width/4*3, 0, screen_width-1, screen_height-1, 0xffff);
	lprintf(50,100,0xffff,"Window 1");


	*WINCONx_Reg_Addr[1] &= ~((1<<6)|(1<<1));
	*WINCONx_Reg_Addr[1] |= (alpha_sel<<1);
	*VIDOSDxC_Reg_Addr[1] = (0<<20)|(0<<16)|(0<<12)|(0xf<<8)|(0xf<<4)|(0xf<<0);
/*
	LcdWindowOnOff(LCD_WIN_ALL,LCD_ON);
	LcdEnvidOnOff(LCD_ON);
	if(lcd_if==I80_IF)
		rCPUTRIGCON2=1;
	LcdBacklightCon(LCD_ON);
*/
	Display_Start(LCD_WIN_ALL);

	printf("Press any key to start\n");
	getchar();
	
	for(i=0;i<8;i++)
	{
		if(lcd_if==I80_IF)
		{
			*VIDOSDxC_Reg_Addr[1] = (i<<20)|(i<<16)|(i<<12);
			Delay(10);
			rCPUTRIGCON2 = 1;
		}
		else
			*VIDOSDxC_Reg_Addr[1] = (i<<20)|(i<<16)|(i<<12)|((i^0xf)<<8)|((i^0xf)<<4)|((i^0xf)<<0);
		delayLoop(10000000);
	}

	/* Ending Test */
	Display_End(LCD_WIN_ALL);
	
}
#endif

void PixelBlendingTest( void)
{
	uint32 i;

	LcdWindowOnOff(LCD_WIN_ALL,LCD_OFF);
	LcdEnvidOnOff(LCD_OFF);

	// Setting Window 0
	Basic_Display_Setting(LCD_WIN_0,LCD_BUF_0,WINCONx_16BPP_565,lcd_horizon_value,lcd_line_value);	

	LCD_FilledRectangle(0, 0, screen_width-1, screen_height/4*1-1, 0xf800);
	LCD_FilledRectangle(0, screen_height/4*1, screen_width-1, screen_height/4*2-1, 0x7e0);
	LCD_FilledRectangle(0, screen_height/4*2, screen_width-1, screen_height/4*3-1, 0x1f);
	LCD_FilledRectangle(0, screen_height/4*3, screen_width-1, screen_height-1, 0xffff);
	lprintf(50,20,0xffff,"Window 0");	
		
	// Setting Window 1
	Basic_Display_Setting(LCD_WIN_1,LCD_BUF_0,WINCONx_16BPP_A555,lcd_horizon_value,lcd_line_value);	

	LCD_FilledRectangle(0, 0, screen_width/8*1-1, screen_height-1, 0x7c00);
	LCD_FilledRectangle(screen_width/8*1, 0, screen_width/8*2-1, screen_height-1, 0x3e0);
	LCD_FilledRectangle(screen_width/8*2, 0, screen_width/8*3-1, screen_height-1, 0x1f);
	LCD_FilledRectangle(screen_width/8*3, 0, screen_width/8*4-1, screen_height-1, 0x7fff);

	LCD_FilledRectangle(screen_width/8*4, 0, screen_width/8*5-1, screen_height-1, 0xfc00);
	LCD_FilledRectangle(screen_width/8*5, 0, screen_width/8*6-1, screen_height-1, 0x83e0);
	LCD_FilledRectangle(screen_width/8*6, 0, screen_width/8*7-1, screen_height-1, 0x801f);
	LCD_FilledRectangle(screen_width/8*7, 0, screen_width-1, screen_height-1, 0xffff);
	
	lprintf(0,100,0x7fff,"Window 1");
	lprintf(0,120,0x7fff,"non blending area");
	
	lprintf(screen_width/2,100,0xffff,"Window 1");
	lprintf(screen_width/2,120,0xffff,"blending area");


	*WINCONx_Reg_Addr[1] &= ~((1<<6)|(1<<1));
	*WINCONx_Reg_Addr[1] |= (1<<6);
	*VIDOSDxC_Reg_Addr[1] = (0x0<<20)|(0x0<<16)|(0x0<<12)|(0xf<<8)|(0xf<<4)|(0xf<<0);

	Display_Start(LCD_WIN_ALL);

	printf("Press any key to start\n");
	getchar();

	for(i=0;i<16;i++)
	{
		if(lcd_if==I80_IF)
		{
			*VIDOSDxC_Reg_Addr[1] = (i<<20)|(i<<16)|(i<<12)|((i^0xf)<<8)|((i^0xf)<<4)|((i^0xf)<<0);
			rCPUTRIGCON2 = 1;
		}
		else
			*VIDOSDxC_Reg_Addr[1] = (i<<20)|(i<<16)|(i<<12)|((i^0xf)<<8)|((i^0xf)<<4)|((i^0xf)<<0);
		delayLoop(10000000);
	}
	/* Ending Test */
	Display_End(LCD_WIN_ALL);

}

void Test_Blending_Win01(void)
{
	int blending;
	
	printf("\nSelect the blending mode which you want to test\n");
	printf("(If you want to stop this test, press enter key)\n");
	printf(" 0: Per Plane Blending   1: Per Pixel Blending\n");
		
	blending = GetIntNum();
	if (blending==0)
		PlaneBlendingTest();
	else if (blending==1)
		PixelBlendingTest();
}

//==========================================
// ColorKey Test
//==========================================
void Test_ColorKey(void)// Figure 22-7. Color key operation
{
	int i,j,k=0;

	LcdWindowOnOff(LCD_WIN_ALL,LCD_OFF);
	LcdEnvidOnOff(LCD_OFF);

	pISR_LCD = (unsigned)Display_ISR;
	rINTMSK &= ~(1<<16);

	if(lcd_if==I80_IF)
	{
		rVIDINTCON = (0x3f<<20)|(1<<19)|(1<<18)|(1<<17)|(1<<0); //Main & Sub Sending complete
		rINTSUBMSK &= ~(1<<17);//i80 I/F
	}
	else
	{
		rVIDINTCON = (0x3f<<20)|(3<<5)|(3<<2)|(1<<1)|(1<<0); //Win0/1 FIOF(empty)
		rINTSUBMSK &= ~(1<<15);//RGB I/F FIFO int.
	}
	
	// Setting Window 0
	Basic_Display_Setting(LCD_WIN_0,LCD_BUF_0,WINCONx_16BPP_565,lcd_horizon_value,lcd_line_value);	
	LCD_FilledRectangle(0, 0, screen_width-1, screen_height-1, 0xfc0);
	lprintf(5,10,0xffff,"Window0(Green)");
	Display_Start(LCD_WIN_0);
	if(lcd_if==I80_IF)
		rCPUTRIGCON2=1;
	printf("Winow0(Green), press any key\n");
	getchar();

	LcdWindowOnOff(LCD_WIN_0,LCD_OFF);
	LcdEnvidOnOff(LCD_OFF);
	
 	// Setting Window 1
	Basic_Display_Setting(LCD_WIN_1,LCD_BUF_0,WINCONx_16BPP_565,lcd_horizon_value,lcd_line_value);
	for(j=0;j<screen_height;j++)
		for(i=0;i<screen_width;i++)
		{
			if(lcd_type==LANDSCAPE && lcd_size==WVGA)
				PutPixel(i,j,pColorkey800_480[k++]);//800*480
			else if(lcd_type==LANDSCAPE && lcd_size==QVGA)
				PutPixel(i,j,pColorkey320_240[k++]);//320*240
			else if(lcd_type==PORTRAIT && lcd_size==QVGA)
				PutPixel(i,j,pColorkey240_320[k++]);//240*320			
		}
	lprintf(5,40,0xffff,"Window1(Red)");
	lprintf((screen_width-104)/2,screen_height/2,0xffff,"Window1(Blue)");
	Display_Start(LCD_WIN_1);
	if(lcd_if==I80_IF)
		rCPUTRIGCON2=1;
	printf("Winow1(Red & Blue), press any key\n");
	getchar();		

	LcdWindowOnOff(LCD_WIN_1,LCD_OFF);
	LcdEnvidOnOff(LCD_OFF);

	*WxKEYCON0_Reg_Addr[1]	=	(0<<26)|(1<<25)|(0<<24)|(0x000000);
	*WxKEYCON1_Reg_Addr[1]	=	0xff0000;

	printf("Winow0&1 with Color key=0xff0000(Green & Blue), press any key\n");

	Display_Start(LCD_WIN_ALL);
	if(lcd_if==I80_IF)
		rCPUTRIGCON2=1;

	/* Ending Test */
	Display_End(LCD_WIN_ALL);
	rVIDINTCON = (0x3f<<20)|0;
	rINTMSK |= (1<<16);
}
#if 0
void Test_ColorKey(void)
{

	LcdWindowOnOff(LCD_WIN_ALL,LCD_OFF);
	LcdEnvidOnOff(LCD_OFF);


	// Setting Window 0
	Basic_Display_Setting(LCD_WIN_0,LCD_BUF_0,WINCONx_24BPP_888,lcd_horizon_value,lcd_line_value);	

	LCD_FilledRectangle(0, 0, screen_width-1, screen_height/4*1-1, 0xff0000);
	LCD_FilledRectangle(0, screen_height/4*1, screen_width-1, screen_height/4*2-1, 0x00ff00);
	LCD_FilledRectangle(0, screen_height/4*2, screen_width-1, screen_height/4*3-1, 0x0000ff);
	LCD_FilledRectangle(0, screen_height/4*3, screen_width-1, screen_height-1, 0xffffff);
	lprintf(50,20,0xffffff,"Window 0");			
			
		
	// Setting Window 1
	Basic_Display_Setting(LCD_WIN_1,LCD_BUF_0,WINCONx_24BPP_888,lcd_horizon_value,lcd_line_value);	

	LCD_FilledRectangle(0, 0, screen_width/4*1-1, screen_height-1, 0xff0000);
	LCD_FilledRectangle(screen_width/4*1, 0, screen_width/4*2-1, screen_height-1, 0x00ff00);
	LCD_FilledRectangle(screen_width/4*2, 0, screen_width/4*3-1, screen_height-1, 0x0000ff);
	LCD_FilledRectangle(screen_width/4*3, 0, screen_width-1, screen_height-1, 0xffffff);
	lprintf(50,100,0xffffff,"Window 1");
			
	*WxKEYCON0_Reg_Addr[1]	=	(0<<26)|(1<<25)|(0<<24)|(0x000000);
	*WxKEYCON1_Reg_Addr[1]	=	0x000000;
	
	Display_Start(LCD_WIN_ALL);

	printf("Press any key to start\n");
	getchar();
	
	*WxKEYCON1_Reg_Addr[1]	=	0xff0000;
	if(lcd_if==I80_IF)
		rCPUTRIGCON2=1;
	delayLoop(30000000);
	*WxKEYCON1_Reg_Addr[1]	=	0x00ff00;
	if(lcd_if==I80_IF)
		rCPUTRIGCON2=1;
	delayLoop(30000000);
	*WxKEYCON1_Reg_Addr[1]	=	0x0000ff;
	if(lcd_if==I80_IF)
		rCPUTRIGCON2=1;
	delayLoop(30000000);
	*WxKEYCON1_Reg_Addr[1]	=	0xffffff;
	if(lcd_if==I80_IF)
		rCPUTRIGCON2=1;

⌨️ 快捷键说明

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