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

📄 display.c

📁 三星2443芯片
💻 C
📖 第 1 页 / 共 5 页
字号:
}



void Basic_Display_CPUIF(void)
{	
	LcdWindowOnOff(LCD_WIN_ALL,LCD_OFF);
	LcdEnvidOnOff(LCD_OFF);

	Test_DisplayFramebufferCpuIf_QVGA1();

	printf("\nPress enter Half word swap test. \n");

	Uart_getc();

	Basic_Display_Setting_CPUIF(0,0,WINCONx_16BPP_565,lcd_horizon_value,lcd_line_value);
	rWINCON0 |= (1<<16);
	Glib_Rectangle(0,0,239,319,255);   
	Glib_Line(0,0,239,319,255);        
	Glib_Line(0,319,239,0,255);

	Display_Start_CPUIF(0);	
	Display_End(LCD_WIN_ALL);
}


void Test_ColorKey_CPUIF(void)
{

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


	// Setting Window 0
	Basic_Display_Setting_CPUIF(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, 0x07e0);
	LCD_FilledRectangle(0, screen_height/4*2, screen_width-1, screen_height/4*3-1, 0x001f);
	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_CPUIF(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, 0x07e0);
	LCD_FilledRectangle(screen_width/4*2, 0, screen_width/4*3-1, screen_height-1, 0x001f);
	LCD_FilledRectangle(screen_width/4*3, 0, screen_width-1, screen_height-1, 0xffff);
	lprintf(50,100,0xffff,"Window 1");
	
	*WxKEYCON0_Reg_Addr[1]	=	(0<<26)|(1<<25)|(0<<24)|(0x7<<16)|(0x3<<8)|(0x7);
	*WxKEYCON1_Reg_Addr[1]	=	0x0;
	
	
	LcdWindowOnOff(LCD_WIN_ALL,LCD_ON);
	LcdEnvidOnOff(LCD_ON);
	rCPUTRIGCON2 = 1;

	printf("Press any key to start\n");
	getchar();
	
	*WxKEYCON1_Reg_Addr[1]	=	0xf80000;
	rCPUTRIGCON2 = 1;
	delayLoop(30000000);
	*WxKEYCON1_Reg_Addr[1]	=	0x00fc00;
	rCPUTRIGCON2 = 1;
	delayLoop(30000000);
	*WxKEYCON1_Reg_Addr[1]	=	0x0000f8;
	rCPUTRIGCON2 = 1;
	delayLoop(30000000);
	*WxKEYCON1_Reg_Addr[1]	=	0xf8fcf8;
	rCPUTRIGCON2 = 1;
	delayLoop(30000000);
	*WxKEYCON1_Reg_Addr[1]	=	0xf80000;
	rCPUTRIGCON2 = 1;
	delayLoop(30000000);
	/* Ending Test */
	Display_End(LCD_WIN_ALL);

}

void Test_Blending_Win01_CPUIF(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_CPUIF();
	else if (blending==1)
		PixelBlendingTest_CPUIF();
}

void PlaneBlendingTest_CPUIF(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_CPUIF(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_CPUIF(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);
	rCPUTRIGCON2 = 1;

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

	for(i=0;i<8;i++)
	{
		//*VIDOSDxC_Reg_Addr[1] = (i<<20)|(i<<16)|(i<<12)|((i^0xf)<<8)|((i^0xf)<<4)|((i^0xf)<<0);
		*VIDOSDxC_Reg_Addr[1] = (i<<20)|(i<<16)|(i<<12);
		Delay(10);
		rCPUTRIGCON2 = 1;
		delayLoop(10000000);
	}

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


void PixelBlendingTest_CPUIF( void)
{
	uint32 i;

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

	// Setting Window 0
	Basic_Display_Setting_CPUIF(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_CPUIF(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);

	LcdWindowOnOff(LCD_WIN_ALL,LCD_ON);
	LcdEnvidOnOff(LCD_ON);
	Delay(1);
	rCPUTRIGCON2 = 1;

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

	for(i=0;i<16;i++)
	{
		*VIDOSDxC_Reg_Addr[1] = (i<<20)|(i<<16)|(i<<12)|((i^0xf)<<8)|((i^0xf)<<4)|((i^0xf)<<0);
		//Delay(1);
		rCPUTRIGCON2 = 1;
		delayLoop(10000000);
	}

	/* Ending Test */
	Display_End(LCD_WIN_ALL);

}

void Test_ColorMap_CPUIF(void)
{
	int8 window=-1;
	uint8 i=0;
	uint32 color_map=0;
	uint32 j,k=0;

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

	Basic_Display_Setting_CPUIF(0,0,WINCONx_16BPP_565,lcd_horizon_value,lcd_line_value);			
		for(j=0;j<screen_height;j++)
			for(i=0;i<screen_width;i++)
				PutPixel(i,j,prayer16bpp[k++]);
			
	Display_Start_CPUIF(0);	
	
	while(1)
	{
		printf("\nSelect the window # which you want to test\n");
		printf("(If you want to stop this test, press enter key)\n");
		printf(" 0: Window 0   1: Window 1 \n");

		window = GetIntNum();
		if( window==(-1) )	return;
		else
		{	
			switch(window)
			{
				case 0:
					color_map = 0xff0000;
					break;
				case 1:
					color_map = 0x0000ff;
					break;
				default:
					color_map = 0;	
					break;			
			}
			
		*WINxMAP_Reg_Addr[window] = (1<<24)|(color_map);	//color map enable

		LcdWindowOnOff(window,LCD_OFF);
		LcdEnvidOnOff(LCD_OFF);	
		Display_Start_CPUIF(window);	
		Display_End(window);
		}		
	}
}

void Test_EachWindow_EachBPP_CPUIF(void)
{
	int32 window,bpp;
	uint32 i=0;


	while(1)
	{
		printf("\nSelect the window # which you want to test\n");
		printf("(If you want to stop this test, press enter key)\n");
		printf(" 0: Window 0 (Buffer0)   1: Window 1\n");

		window = GetIntNum();
		if ((window<0)||(window>1)) break;

		while(1)
		{
			printf("\nSelect the bpp type which you want to test\n");
			printf("(If you want to exit, press enter key)\n");

			for(i=0;i<14;i++)
			{
				printf("   %2d:%s\n",i,lcd_bpp_mode[i]);
			}

			bpp = GetIntNum();
			if( (bpp<0)||(bpp>14) )	break;

			LcdWindowOnOff(LCD_WIN_ALL,LCD_OFF);
			LcdEnvidOnOff(LCD_OFF);
				
			Basic_Display_Setting_CPUIF(window,LCD_BUF_0,bpp,lcd_horizon_value,lcd_line_value);	
			LCD_ClearScr(0);

			Prepare_Image(window,bpp);

			Display_Start_CPUIF(window);
			Display_End(window);

		}

	}
	
}

void Test_Lcd_Stn_1Bit(void)
{
    int i,j;
    //Lcd_Port_Init();
    Lcd_Init(MODE_STN_1BIT);
    Glib_Init(MODE_STN_1BIT);
    Lcd_EnvidOnOff(1); // Enable ENVID Bit
    printf("[STN Mono(1bit/1pixel) LCD Test]\n");              

    Glib_ClearScr(0, MODE_STN_1BIT);
    for(j=0;j<LCD_YSIZE_STN;j+=16)
		for(i=0;i<LCD_XSIZE_STN;i+=16)
		    Glib_FilledRectangle(i,j,i+15,j+15,((j+i)/16)%2);
    printf("STN Mono test 1. Press any key!\n");
    Uart_getc();  	

    Glib_ClearScr(0, MODE_STN_1BIT);
    Glib_FilledRectangle(160,0,319,239,1);    //Half Screen
    printf("STN Mono test 2. Press any key!\n");
    Uart_getc();  	

    Glib_ClearScr(0, MODE_STN_1BIT); 
    Glib_Rectangle(0,0,319,239,1);   // #0
    Glib_Line(0,0,319,239,1);        // 00
    Glib_Line(0,239,319,0,1);

    Glib_Rectangle(0+320,0,319+320,239,1);   // 0#
    Glib_Line(0+320,0,319+320,239,1);        // 00
    Glib_Line(0+320,239,319+320,0,1);
    Glib_FilledRectangle(50+320,50,269+320,189,1);

    Glib_Rectangle(0,0+240,319,239+240,1);   // 00
    Glib_Line(0,0+240,319,239+240,1);        // #0
    Glib_Line(0,239+240,319,0+240,1);
    Glib_FilledRectangle(50,50+240,269,189+240,1);
    
    Glib_Rectangle(0+320,0+240,319+320,239+240,1);   // 00	
    Glib_Line(0+320,0+240,319+320,239+240,1);        // 0#
    Glib_Line(0+320,239+240,319+320,0+240,1);
    Glib_Rectangle(50+320,50+240,269+320,189+240,1);

    printf("Virtual Screen Test(STN Mono). Press any key[ijkm\\r]!\n");
    MoveViewPort(MODE_STN_1BIT);
    Lcd_MoveViewPort(0,0,MODE_STN_1BIT);
    Lcd_EnvidOnOff(0); // Disable ENVID Bit
}

void Test_Lcd_Stn_2Bit(void)
{
    int i,j,k;

    Lcd_Init(MODE_STN_2BIT);
    Glib_Init(MODE_STN_2BIT);
    Lcd_EnvidOnOff(1); // Enable ENVID Bit
    printf("[STN 4 gray(2bit/1pixel) LCD Test]\n");

    Glib_ClearScr(0, MODE_STN_2BIT);
    j=0;
    for(i=0;i<320;i+=80)
        Glib_FilledRectangle(0+i,0,79+i,239,j++);
    printf("4 gray mode test 1. Press any key!\n");
    Uart_getc();  	

    Glib_ClearScr(0, MODE_STN_2BIT);
    j=0;
    for(i=0;i<320;i+=80)
    {
    	Glib_FilledRectangle(0+i,0,79+i,119,j);
    	Glib_FilledRectangle(0+i,120,79+i,239,3-j);
    	j++;
    }
    printf("4 gray mode test 2. Press any key!\n");
    Uart_getc();  	

    Glib_ClearScr(0, MODE_STN_2BIT);
    j=0;
    for(i=0;i<240;i+=60)
    {
    	Glib_FilledRectangle(i,i,i+59,i+59,j);
    	j++;
    }
    printf("4 gray mode test 3. Press any key!\n");
    Uart_getc();  	

    Glib_ClearScr(0, MODE_STN_2BIT);
    k=0;
    for(i=160;i<480;i+=80)
    {
    	for(j=120;j<360;j+=60)
    	{
    	    Glib_FilledRectangle(i,j,i+79,j+59,k%4);
    	    k++;
    	}
    	k+=2;;
    }

    // #0
    // 00
    Glib_Rectangle(0,0,319,239,3);   
    Glib_Line(0,0,319,239,3);        
    Glib_Line(0,239,319,0,3);

    // 0#
    // 00
    Glib_Rectangle(0+320,0,319+320,239,3);          
    Glib_Line(0+320,0,319+320,239,3);        
    Glib_Line(0+320,239,319+320,0,3);

    // 00
    // #0
    Glib_Rectangle(0,0+240,319,239+240,3);          
    Glib_Line(0,0+240,319,239+240,3);        
    Glib_Line(0,239+240,319,0+240,3);

    // 00
    // 0#
    Glib_Line(0+320,0+240,319+320,239+240,3);        
    Glib_Line(0+320,239+240,319+320,0+240,3);
    Glib_Rectangle(50+320,50+240,269+320,189+240,3);

    printf("Virtual Screen Test(STN 4 gray). Press any key[ijkm\\r]!\n");
    MoveViewPort(MODE_STN_2BIT);
    Lcd_MoveViewPort(0,0,MODE_STN_2BIT);
    Lcd_EnvidOnOff(0); // Disable ENVID Bit
}

void Test_Lcd_Stn_4Bit(void)
{
    int i,j,k;

    Lcd_Init(MODE_STN_4BIT);
    Glib_Init(MODE_STN_4BIT);
    Lcd_EnvidOnOff(1);
    printf("[STN 16 gray(4bit/1pixel) LCD Test]\n");

    Glib_ClearScr(0, MODE_STN_4BIT);
    j=0;
    for(i=0;i<320;i+=20)
        Glib_FilledRectangle(0+i,0,19+i,239,j++);
    printf("16 gray mode test 1. Press any key!\n");
    Uart_getc();  	

    Glib_ClearScr(0, MODE_STN_4BIT);
    j=0;
    for(i=0;i<320;i+=20)
    {
    	Glib_FilledRectangle(0+i,0,19+i,119,j);
    	Glib_FilledRectangle(0+i,120,19+i,239,15-j);
    	j++;
    }
    printf("16 gray mode test 2. Press any key!\n");
    Uart_getc();  	


    Glib_ClearScr(0, MODE_STN_4BIT);
    j=0;
    for(i=0;i<240;i+=30)
    {
    	Glib_FilledRectangle(i,i,i+29,i+29,j);
    	Glib_FilledRectangle(i+110,i,i+29+110,i+29,j+8);
    	j++;
    }
    printf("4 gray mode test 3. Press any key!\n");
    Uart_getc();  	 


    Glib_ClearScr(0, MODE_STN_4BIT);
    k=0;
    for(i=160;i<480;i+=40)
    	for(j=120;j<360;j+=30)
    	{

⌨️ 快捷键说明

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