?? sed1356.c
字號:
}
/*******************************************************************************************************************
【函數名稱】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 + -