|
嗯,以下是我16BPP显示的代码
初始化:
void Lcd_Init(void)
{
frameBuffer16BitTft =(FBT) LCDFRAMEBUFFER;
rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0;
rLCDCON2=(VBPD<<24)|(LINEVAL_TFT<<14)|(VFPD<<6)|(VSPW);
rLCDCON3=(HBPD<<19)|(HOZVAL_TFT<<8)|(HFPD);
rLCDCON4=(MVAL<<8)|(HSPW);
rLCDCON5=(1<<11)|(0<<10)|(1<<9)|(1<<8)| (0<<7) |(0<<6)|(1<<3)|(BSWP<<1)|(1);
rLCDSADDR1 = ((LCDFRAMEBUFFER >> 22) << 21) | ((M5D(LCDFRAMEBUFFER >> 1)) << 0);
rLCDSADDR2 = M5D((LCDFRAMEBUFFER + (LCD_XSIZE_TFT * LCD_YSIZE_TFT * 2)) >> 1);
rLCDSADDR3 = (((LCD_XSIZE_TFT - LCD_XSIZE_TFT) / 1) << 11) | (LCD_XSIZE_TFT / 1);
rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
rTCONSEL&=(~7); // Disable LPC3600 diff 2410
rTPAL=0; // Disable Temp Palette
Fill_Screen(0x0);
rLCDCON1|=1;
}
显示程序
void paint_logo(const unsigned char bmp[])
{
int x,y,p =0;
U32 c;
FBT logotemp;
for( y = 0 ; y < LCD_YSIZE_TFT ; y++ )
{
for( x = 0 ; x < LCD_XSIZE_TFT ; x++ )
{
c = bmp[p+1] | (bmp[p]<<8) ;
if ( ( x < LCD_XSIZE_TFT) && ( y < LCD_YSIZE_TFT) )
frameBuffer16BitTft[y][x] = c ;
p += 2 ;
}
}
}
而下面是24BPP初始化:
void Lcd_Init(void)
{
frameBuffer16BitTft =(FBT) LCDFRAMEBUFFER;
rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(3<<5)|(13<<1)|0; //12
rLCDCON2=(VBPD<<24)|(LINEVAL_TFT<<14)|(VFPD<<6)|(VSPW);
rLCDCON3=(HBPD<<19)|(HOZVAL_TFT<<8)|(HFPD);
rLCDCON4=(MVAL<<8)|(HSPW);
rLCDCON5=(0<<12)|(1<<11)|(0<<10)|(1<<9)|(1<<8)| (0<<7) |(0<<6)|(1<<3)|(0<<1)|(0);
rLCDSADDR1 = (((U32)LCDFRAMEBUFFER >> 22) << 21) | ((M5D((U32)LCDFRAMEBUFFER >> 1)) << 0);
rLCDSADDR2 = M5D(((U32)LCDFRAMEBUFFER + (U32)(LCD_XSIZE_TFT * LCD_YSIZE_TFT *4)) >> 1);
rLCDSADDR3 = (((LCD_XSIZE_TFT - LCD_XSIZE_TFT) / 1) << 11) | (LCD_XSIZE_TFT *2 / 1);
rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
rTCONSEL&=(~7); // Disable LPC3600 diff 2410
rTPAL=0; // Disable Temp Palette
Fill_Screen(0x0);
rLCDCON1|=1;
}
24BPP显示程序
void paint_logo(const unsigned char bmp[])
{
int x,y,p =0;
U32 c;
FBT logotemp;
for( y = 0 ; y < (2*LCD_YSIZE_TFT) ; y++ )
{
for( x = 0 ; x <(2* LCD_XSIZE_TFT) ; x++ )
{
c = bmp[p+2] | (bmp[p+1]<<8)|(bmp[p]<<16) ;
if ( ( x < 2*LCD_XSIZE_TFT) && ( y < 2*LCD_YSIZE_TFT) )
frameBuffer16BitTft[y][x] = c ;
p += 3 ;
}
}
}
因为是24BPP,占3Byte 所以 c = bmp[p+2] | (bmp[p+1]<<8)|(bmp[p]<<16) ;
代码就是上面这些,帮忙看看有什么缺陷,谢谢
|
|