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

📄 sed1356.c

📁 YL9200开发板的测试代码,详细请下载后细看
💻 C
📖 第 1 页 / 共 4 页
字号:
}

/*******************************************************************************************************************
【函数名称】void VGA_ClearScr_16BPP640480( U16 c)
【功能描述】16BPP模式640×480分辨率下全屏填充特定颜色单元或清屏
【参数输入】c为象素的值
【参数返回】无
********************************************************************************************************************/
void VGA_ClearScr_16BPP640480( U16 c )
{
	unsigned int x,y ;
	U16* pMem = ( U16 * ) DIS_MEM_BASE ;
		
    for( y = 0 ; y < 480 ; y++ )
    {
    	for( x = 0 ; x < 640 ; x++ )
    	{
			pMem[ (y*640) + x ] = c ; 
    	}
    }
}

/*******************************************************************************************************************
【函数名称】void LcdClearScr_16BPP640480( U16 c)
【功能描述】16BPP模式640×480分辨率下全屏填充特定颜色单元或清屏
【参数输入】c为象素的值
【参数返回】无
********************************************************************************************************************/
void LcdClearScr_16BPP240320( U16 c )
{
	unsigned int x,y ;
	U16* pMem = ( U16 * ) DIS_MEM_BASE ;
		
    for( y = 0 ; y < 320 ; y++ )
    {
    	for( x = 0 ; x < 240 ; x++ )
    	{
			pMem[ (y*240) + x ] = c ;
			/*pMem[ (y*240) + x ] =
				( ( ( c & 0x8000 ) >> 15 ) <<  0 ) |
				( ( ( c & 0x4000 ) >> 14 ) <<  1 ) | 
				( ( ( c & 0x2000 ) >> 13 ) <<  5 ) | 
				( ( ( c & 0x1000 ) >> 12 ) <<  6 ) | 
				( ( ( c & 0x0800 ) >> 11 ) <<  7 ) | 
				( ( ( c & 0x0400 ) >> 10 ) << 11 ) | 
				( ( ( c & 0x0200 ) >>  9 ) << 12 ) | 
				( ( ( c & 0x0100 ) >>  8 ) <<  2 ) | 
				( ( ( c & 0x0080 ) >>  7 ) <<  3 ) | 
				( ( ( c & 0x0040 ) >>  6 ) <<  4 ) | 
				( ( ( c & 0x0020 ) >>  5 ) <<  8 ) | 
				( ( ( c & 0x0010 ) >>  4 ) <<  9 ) | 
				( ( ( c & 0x0008 ) >>  3 ) << 10 ) | 
				( ( ( c & 0x0004 ) >>  2 ) << 13 ) | 
				( ( ( c & 0x0002 ) >>  1 ) << 14 ) | 
				( ( ( c & 0x0001 ) >>  0 ) << 15 ) ; */
    	}
    }
}

/*******************************************************************************************************************
【函数名称】void LcdClearScr_16BPP640480( U16 c)
【功能描述】16BPP模式640×480分辨率下全屏填充特定颜色单元或清屏
【参数输入】c为象素的值
【参数返回】无
********************************************************************************************************************/
void LcdClearScr_16BPP640480( U16 c)
{
	unsigned int x,y ;
	U16* pMem = ( U16 * ) DIS_MEM_BASE ;
		
    for( y = 0 ; y < 480 ; y++ )
    {
    	for( x = 0 ; x < 640 ; x++ )
    	{
			pMem[ (y*640) + x ] = c ;
			/*pMem[ (y*640) + x ] =
				( ( ( c & 0x8000 ) >> 15 ) <<  0 ) |
				( ( ( c & 0x4000 ) >> 14 ) <<  1 ) | 
				( ( ( c & 0x2000 ) >> 13 ) <<  5 ) | 
				( ( ( c & 0x1000 ) >> 12 ) <<  6 ) | 
				( ( ( c & 0x0800 ) >> 11 ) <<  7 ) | 
				( ( ( c & 0x0400 ) >> 10 ) << 11 ) | 
				( ( ( c & 0x0200 ) >>  9 ) << 12 ) | 
				( ( ( c & 0x0100 ) >>  8 ) <<  2 ) | 
				( ( ( c & 0x0080 ) >>  7 ) <<  3 ) | 
				( ( ( c & 0x0040 ) >>  6 ) <<  4 ) | 
				( ( ( c & 0x0020 ) >>  5 ) <<  8 ) | 
				( ( ( c & 0x0010 ) >>  4 ) <<  9 ) | 
				( ( ( c & 0x0008 ) >>  3 ) << 10 ) | 
				( ( ( c & 0x0004 ) >>  2 ) << 13 ) | 
				( ( ( c & 0x0002 ) >>  1 ) << 14 ) | 
				( ( ( c & 0x0001 ) >>  0 ) << 15 ) ; */
    	}
    }
}

/*******************************************************************************************************************
【函数名称】void VGA640480_Paint_Bmp( int x0,int y0,int h,int l, const unsigned char bmp[] )
【功能描述】16BPP模式640×480分辨率下在LCD屏幕上指定坐标点画一个指定大小的图片
【参数输入】x0为图片基准x坐标,y0为图片基准y坐标,
			h为图片搞定,l为图片宽度,bmp为图片数组
【参数返回】无
********************************************************************************************************************/
void VGA640480_Paint_Bmp( int x0,int y0,int h,int l, const unsigned char bmp[] )
{
	int x,y;
	U32 c;
	int p = 0;
	U16* pMem = ( U16 * ) DIS_MEM_BASE ;
	
    for( y = 0 ; y < l ; y++ )
    {
    	for( x = 0 ; x < h ; x++ )
    	{
    		c = bmp[p+1] | (bmp[p]<<8) ;
			pMem[ (x0+x) + (y0+y) * 640 ] = c ;

    		p = p + 2 ;
    	}
    }
}

/*******************************************************************************************************************
【函数名称】void LCD640480_Paint_Bmp( int x0,int y0,int h,int l, const unsigned char bmp[] )
【功能描述】16BPP模式640×480分辨率下在LCD屏幕上指定坐标点画一个指定大小的图片
【参数输入】x0为图片基准x坐标,y0为图片基准y坐标,
			h为图片搞定,l为图片宽度,bmp为图片数组
【参数返回】无
********************************************************************************************************************/
void LCD240320_Paint_Bmp( int x0,int y0,int h,int l, const unsigned char bmp[] )
{
	int x,y;
	U32 c;
	int p = 0;
	U16* pMem = ( U16 * ) DIS_MEM_BASE ;
	
    for( y = 0 ; y < l ; y++ )
    {
    	for( x = 0 ; x < h ; x++ )
    	{
    		c = bmp[p+1] | (bmp[p]<<8) ;
    		pMem[ (y*320) + x ] = c  ;
			//PutPixel_16BPP240320( (x0+x), (y0+y), c ) ;

    		p = p + 2 ;
    	}
    }
}

/*******************************************************************************************************************
【函数名称】void LCD640480_Paint_Bmp( int x0,int y0,int h,int l, const unsigned char bmp[] )
【功能描述】16BPP模式640×480分辨率下在LCD屏幕上指定坐标点画一个指定大小的图片
【参数输入】x0为图片基准x坐标,y0为图片基准y坐标,
			h为图片搞定,l为图片宽度,bmp为图片数组
【参数返回】无
********************************************************************************************************************/
void LCD640480_Paint_Bmp( int x0,int y0,int h,int l, const unsigned char bmp[] )
{
	int x,y;
	U32 c;
	int p = 0;
	U16* pMem = ( U16 * ) DIS_MEM_BASE ;
	
    for( y = 0 ; y < l ; y++ )
    {
    	for( x = 0 ; x < h ; x++ )
    	{
    		c = bmp[p+1] | (bmp[p]<<8) ;
    		pMem[ (y*640) + x ] = c ;
			//PutPixel_16BPP640480( (x0+x), (y0+y), c ) ;

    		p = p + 2 ;
    	}
    }
}

/*******************************************************************************************************************
【函数名称】void Test_SED1356_VGA_640_480( void )
【功能描述】SED1356测试VGA显示存储器
【参数输入】
【参数返回】无
********************************************************************************************************************/
void Test_SED1356_Vidio_Memory( void )
{
	U32 i ;
	U16* pMem ;
	pMem = ( U16 * ) DIS_MEM_BASE;

	printf( "SED1356 Vidio Memory test......\n" );
	for( i = 0; i < (0x200000/2-4); i += 7 )
	{
		pMem[i+0] = 0x5555 ;
		pMem[i+1] = 0xaaaa ;
		pMem[i+2] = 0x0000 ;
		pMem[i+3] = 0xffff ;
		pMem[i+4] = 0x3333 ;
		pMem[i+5] = 0xcccc ;
		pMem[i+6] = 0xc3c3 ;
		if( (i%0x800) == 0x400 )    putchar( '.' ) ;  //getch() ;  //等待串口输入一个字符,然后继续
	}
	
	printf( "\nSED1356 Vidio Memory verfy......\n" );
	for( i = 0; i < (0x200000/2-4); i += 7 )
	{
		if( pMem[i+0] != 0x5555 )		printf( "Err at 0x%08x\n", (i+0) ) ;
		if( pMem[i+1] != 0xaaaa )		printf( "Err at 0x%08x\n", (i+1) ) ;
		if( pMem[i+2] != 0x0000 )		printf( "Err at 0x%08x\n", (i+2) ) ;
		if( pMem[i+3] != 0xffff )		printf( "Err at 0x%08x\n", (i+3) ) ;
		if( pMem[i+4] != 0x3333 )		printf( "Err at 0x%08x\n", (i+4) ) ;
		if( pMem[i+5] != 0xcccc )		printf( "Err at 0x%08x\n", (i+5) ) ;
		if( pMem[i+6] != 0xc3c3 )		printf( "Err at 0x%08x\n", (i+6) ) ;
		if( (i%0x800) == 0x400 )    putchar( '.' ) ;  //getch() ;  //等待串口输入一个字符,然后继续
	}

}

/*******************************************************************************************************************
【函数名称】void Test_SED1356_VGA_640_480( U32 m , U32 n )
【功能描述】SED1356测试VGA显示(640×480)
【参数输入】
【参数返回】无
********************************************************************************************************************/
void Test_SED1356_VGA_640_480( U32 m , U32 n )
{
	int i;
	U16 v;
	volatile U8* pReg = ( U8* ) DIS_REG_BASE;
	//U16* pMem;

	pReg[1] = 0;
	printf( "SED1356 Product version is 0x%x, " , pReg[0] );
	printf( "MD configruation is 0x%x\n" , ( pReg[0xd] << 8 ) | pReg[0xc] );

	for ( i = 0; i < sizeof( SED_Reg_VGA640480 ) / sizeof( SED_Reg_VGA640480[0] ); i++ )
	{
		v = *( U16 * ) ( DIS_REG_BASE + ( SED_Reg_VGA640480[i].index & ~1 ) );
		v &= ( SED_Reg_VGA640480[i].index & 1 ) ? 0xff : ( 0xff << 8 );
		v |= ( SED_Reg_VGA640480[i].index & 1 ) ? ( SED_Reg_VGA640480[i].value << 8 ) : SED_Reg_VGA640480[i].value;
		*( U16 * ) ( DIS_REG_BASE + ( SED_Reg_VGA640480[i].index & ~1 ) ) = v;
		//pReg[SED_Reg_VGA640480[i].index] = SED_Reg_VGA640480[i].value;
	}

	/*while ( 1 )
	{
		*( volatile U16 * ) 0x80200000 = 0x55aa;
		v = *( volatile U16 * ) 0x80200000;
		pReg[1] = 0;
		v = pReg[0];
		printf( "%x\n" , v );
	}*/

	/*while ( 1 )
	{
		pReg[0x57] = 1;
		pReg[0x56] = 0xdf;
		i = pReg[0];
	}*/

	printf( "VGA H : %d\n" , ( (pReg[0x50]+1) * 8 ) );
	printf( "VGA V : %d\n" , ( ( pReg[0x57] << 8 ) | pReg[0x56] + 1 ) );

	//Test_SED1356_Vidio_Memory() ;		//显示存储器读写测试

	printf( "LCD Display test......\n" );

	VGA_ClearScr_16BPP640480( BPP16_RED ) ;
	printf( "BPP16_RED Any key to continue...\n" );
	getch() ;		//等待串口输入一个字符,然后继续

	VGA_ClearScr_16BPP640480( BPP16_GREEN ) ;

⌨️ 快捷键说明

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