?? lcdlib.c
字號:
case MODE_TFT_24BIT_640480:
frameBuffer24BitTft640480=(UINT32T (*)[SCR_XSIZE_TFT_640480])LCDFRAMEBUFFER;
rLCDCON1=(CLKVAL_TFT_640480<<8)|(MVAL_USED<<7)|(3<<5)|(13<<1)|0;
// TFT LCD panel,24bpp TFT,ENVID=off
rLCDCON2=(VBPD_640480<<24)|(LINEVAL_TFT_640480<<14)|(VFPD_640480<<6)|(VSPW_640480);
rLCDCON3=(HBPD_640480<<19)|(HOZVAL_TFT_640480<<8)|(HFPD_640480);
rLCDCON4=(MVAL<<8)|(HSPW_640480);
rLCDCON5=(1<<12)|(1<<9)|(1<<8); // BPP24:MSB,HSYNC and VSYNC are inverted
rLCDSADDR1=(((UINT32T)frameBuffer24BitTft640480>>22)<<21)|M5D((UINT32T)frameBuffer24BitTft640480>>1);
rLCDSADDR2=M5D( ((UINT32T)frameBuffer24BitTft640480+(SCR_XSIZE_TFT_640480*LCD_YSIZE_TFT_640480*4))>>1 );
rLCDSADDR3=(((SCR_XSIZE_TFT_640480-LCD_XSIZE_TFT_640480)*2)<<11)|(LCD_XSIZE_TFT_640480*2);
rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
rLPCSEL&=(~7); // Disable LPC3600
rTPAL=0; // Disable Temp Palette
break;
case MODE_TFT_1BIT_800600:
frameBuffer1BitTft800600=(UINT32T (*)[SCR_XSIZE_TFT_800600/32])LCDFRAMEBUFFER;
rLCDCON1=(CLKVAL_TFT_800600<<8)|(MVAL_USED<<7)|(3<<5)|(8<<1)|0;
// TFT LCD panel,1bpp TFT,ENVID=off
rLCDCON2=(VBPD_800600<<24)|(LINEVAL_TFT_800600<<14)|(VFPD_800600<<6)|(VSPW_800600);
rLCDCON3=(HBPD_800600<<19)|(HOZVAL_TFT_800600<<8)|(HFPD_800600);
rLCDCON4=(MVAL<<8)|(HSPW_800600);
rLCDCON5=(1<<9)|(1<<8);
rLCDSADDR1=(((UINT32T)frameBuffer1BitTft800600>>22)<<21)|M5D((UINT32T)frameBuffer1BitTft800600>>1);
rLCDSADDR2=M5D( ((UINT32T)frameBuffer1BitTft800600+(SCR_XSIZE_TFT_800600*LCD_YSIZE_TFT_800600/8))>>1 );
rLCDSADDR3=(((SCR_XSIZE_TFT_800600-LCD_XSIZE_TFT_800600)/16)<<11)|(LCD_XSIZE_TFT_800600/16);
rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
rLPCSEL&=(~7); // Disable LPC3600
rTPAL=0; // Disable Temp Palette
break;
case MODE_TFT_8BIT_800600:
frameBuffer8BitTft800600=(UINT32T (*)[SCR_XSIZE_TFT_800600/4])LCDFRAMEBUFFER;
rLCDCON1=(CLKVAL_TFT_800600<<8)|(MVAL_USED<<7)|(3<<5)|(11<<1)|0;
// TFT LCD panel,8bpp TFT,ENVID=off
rLCDCON2=(VBPD_800600<<24)|(LINEVAL_TFT_800600<<14)|(VFPD_800600<<6)|(VSPW_800600);
rLCDCON3=(HBPD_800600<<19)|(HOZVAL_TFT_800600<<8)|(HFPD_800600);
rLCDCON4=(MVAL<<8)|(HSPW_800600);
rLCDCON5=(1<<9)|(1<<8);
rLCDSADDR1=(((UINT32T)frameBuffer8BitTft800600>>22)<<21)|M5D((UINT32T)frameBuffer8BitTft800600>>1);
rLCDSADDR2=M5D( ((UINT32T)frameBuffer8BitTft800600+(SCR_XSIZE_TFT_800600*LCD_YSIZE_TFT_800600/1))>>1 );
rLCDSADDR3=(((SCR_XSIZE_TFT_800600-LCD_XSIZE_TFT_800600)/2)<<11)|(LCD_XSIZE_TFT_800600/2);
rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
rLPCSEL&=(~7); // Disable LPC3600
rTPAL=0; // Disable Temp Palette
break;
case MODE_TFT_16BIT_800600:
frameBuffer16BitTft800600=(UINT32T (*)[SCR_XSIZE_TFT_800600/2])LCDFRAMEBUFFER;
rLCDCON1=(CLKVAL_TFT_800600<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0;
// TFT LCD panel,16bpp TFT,ENVID=off
rLCDCON2=(VBPD_800600<<24)|(LINEVAL_TFT_800600<<14)|(VFPD_800600<<6)|(VSPW_800600);
rLCDCON3=(HBPD_800600<<19)|(HOZVAL_TFT_800600<<8)|(HFPD_800600);
rLCDCON4=(MVAL<<8)|(HSPW_800600);
rLCDCON5=(1<<11)|(1<<10)|(1<<9)|(1<<8);
rLCDSADDR1=(((UINT32T)frameBuffer16BitTft800600>>22)<<21)|M5D((UINT32T)frameBuffer16BitTft800600>>1);
rLCDSADDR2=M5D( ((UINT32T)frameBuffer16BitTft800600+(SCR_XSIZE_TFT_800600*LCD_YSIZE_TFT_800600*2))>>1 );
rLCDSADDR3=(((SCR_XSIZE_TFT_800600-LCD_XSIZE_TFT_800600)/1)<<11)|(LCD_XSIZE_TFT_800600/1);
rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
rLPCSEL&=(~7); // Disable LPC3600
rTPAL=0; // Disable Temp Palette
break;
default:
break;
}
}
/*********************************************************************************************
* name: Lcd_CstnOnOff
* func: lcd cstn onoff configuration
* para: int onoff -- cstn configuration
* ret: none
* modify:
* comment:
*********************************************************************************************/
void Lcd_CstnOnOff(int onoff)
{
// 1:CSTN Panel on 0:CSTN Panel off //
if(onoff==1)
rLCDCON1|=1; // ENVID=ON
else
rLCDCON1 =rLCDCON1 & 0x3fffe; // ENVID Off
rGPBUP=rGPBUP|(1<<5); // Pull-up disable
rGPBDAT=rGPBDAT&(~(1<<5))|(onoff<<5); // GPB5=On or Off
rGPBCON=rGPBCON&(~(3<<10))|(1<<10); // GPD9=output
}
/*********************************************************************************************
* name: Lcd_EnvidOnOff
* func: lcd Envid onoff configuration
* para: int onoff -- Envid configuration
* ret: none
* modify:
* comment:
*********************************************************************************************/
void Lcd_EnvidOnOff(int onoff)
{
if(onoff==1)
rLCDCON1|=1; // ENVID=ON
else
rLCDCON1 =rLCDCON1 & 0x3fffe; // ENVID Off
}
/*********************************************************************************************
* name: Lcd_Lpc3600Enable
* func: Enable Lpc3600
* para: none
* ret: none
* modify:
* comment:
*********************************************************************************************/
void Lcd_Lpc3600Enable(void)
{
rLPCSEL&=~(7);
rLPCSEL|=(7); // 240320,Enable LPC3600
}
/*********************************************************************************************
* name: Lcd_PowerEnable
* func: Enable power
* para: int invpwren -- indicates the PWREN signal polarity.
* int pwren -- LCD_PWREN output signal enable/disable.
* ret: none
* modify:
* comment:
*********************************************************************************************/
void Lcd_PowerEnable(int invpwren,int pwren)
{
//GPG4 is setted as LCD_PWREN
rGPGUP=rGPGUP&(~(1<<4))|(1<<4); // Pull-up disable
rGPGCON=rGPGCON&(~(3<<8))|(3<<8); // GPG4=LCD_PWREN
//Enable LCD POWER ENABLE Function
rLCDCON5=rLCDCON5&(~(1<<3))|(pwren<<3); // PWREN
rLCDCON5=rLCDCON5&(~(1<<5))|(invpwren<<5); // INVPWREN
}
/*********************************************************************************************
* name: MoveViewPort
* func: screen scrolling
* para: int type -- lcd display mode.
* ret: none
* modify:
* comment:
*********************************************************************************************/
void MoveViewPort(int type)
{
int vx=0,vy=0,vd;
vd=(type==MODE_STN_1BIT)*16+(type==MODE_STN_2BIT)*8+(type==MODE_STN_4BIT)*4
+(type==MODE_CSTN_8BIT)*2+(type==MODE_CSTN_12BIT)*4
+(type==MODE_TFT_1BIT_240320)*16+(type==MODE_TFT_8BIT_240320)*2+(type==MODE_TFT_16BIT_240320)*1
+(type==MODE_TFT_1BIT_640480)*16+(type==MODE_TFT_8BIT_640480)*2+(type==MODE_TFT_16BIT_640480)*1+(type==MODE_TFT_24BIT_640480)/2
+(type==MODE_TFT_1BIT_800600)*16+(type==MODE_TFT_8BIT_800600)*2+(type==MODE_TFT_16BIT_800600)*1;
while(1)
{
switch(uart_getch())
{
case 'i':
if(vy>=vd)vy-=vd;
break;
case 'j':
if(vx>=vd)vx-=vd;
break;
case 'k':
//if((type==MODE_TFT_1BIT_800600)|(type==MODE_TFT_8BIT_800600)|(type==MODE_TFT_16BIT_800600))
if((type&0x4000)&&(type&0x400))
{
if(vx<=(SCR_XSIZE_TFT_800600-LCD_XSIZE_TFT_800600-vd))vx+=vd;
}
//else if((type==MODE_TFT_1BIT_640480)|(type==MODE_TFT_8BIT_640480)|(type==MODE_TFT_16BIT_640480)|(type==MODE_TFT_24BIT_640480))
else if((type&0x4000)&&(type&0x200))
{
if(vx<=(SCR_XSIZE_TFT_640480-LCD_XSIZE_TFT_640480-vd))vx+=vd;
}
//else if((type==MODE_TFT_8BIT_240320)|(type==MODE_TFT_16BIT_240320))
else if((type&0x4000)&&(type&0x100))
{
if(vx<=(SCR_XSIZE_TFT_240320-LCD_XSIZE_TFT_240320-vd))vx+=vd;
}
//else if((type==MODE_CSTN_8BIT)|(type==MODE_CSTN_12BIT))
else if(type&0x2000)
{
if(vx<=(SCR_XSIZE_CSTN-LCD_XSIZE_CSTN-vd))vx+=vd;
}
else
{
if(vx<=(SCR_XSIZE_STN-LCD_XSIZE_STN-vd))vx+=vd;
}
break;
case 'm':
if((type&0x4000)&&(type&0x400))
{
if(vy<=(SCR_YSIZE_TFT_800600-LCD_YSIZE_TFT_800600-vd))vy+=vd;
else if(vy=592) vy+=8;
}
else if((type&0x4000)&&(type&0x200))
{
if(vy<=(SCR_YSIZE_TFT_640480-LCD_YSIZE_TFT_640480-vd))vy+=vd;
}
else if((type&0x4000)&&(type&0x100))
{
if(vy<=(SCR_YSIZE_TFT_240320-LCD_YSIZE_TFT_240320-vd))vy+=vd;
}
else if(type&0x2000)
{
if(vy<=(SCR_YSIZE_CSTN-LCD_YSIZE_CSTN-vd))vy+=vd;
}
else
{
if(vy<=(SCR_YSIZE_STN-LCD_YSIZE_STN-vd))vy+=vd;
}
break;
case '\r':
return;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -