📄 lcdinit.c
字号:
#include "def.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "Lcd.h"
//#define ATLOG
U16 (*frameBuffer16BitTft)[SCR_XSIZE_TFT];
#ifdef ATLOG
#include "bitmap.c"
#endif
void LcdInit(void)
{
frameBuffer16BitTft = (U16 (*)[SCR_XSIZE_TFT])LCDFRAMEBUFFER;
rLCDCON1 = (CLKVAL_TFT<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0;
// TFT LCD panel,12bpp TFT,ENVID=off
rLCDCON2 = (VBPD<<24)|(LINEVAL_TFT<<14)|(VFPD<<6)|(VSPW);
rLCDCON3 = (HBPD<<19)|(HOZVAL_TFT<<8)|(HFPD);
rLCDCON4 = (MVAL<<8)|(HSPW);
rLCDCON5 = (1<<11)|(1<<10)|(0<<8)|(1<<0); //FRM5:6:5,HSYNC and VSYNC are inverted
rLCDSADDR1 = (((U32)frameBuffer16BitTft>>22)<<21)|M5D((U32)frameBuffer16BitTft>>1);
rLCDSADDR2 = M5D( ((U32)frameBuffer16BitTft+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1 );
rLCDSADDR3 = (((SCR_XSIZE_TFT-LCD_XSIZE_TFT)/1)<<11)|(LCD_XSIZE_TFT/1);
rLCDINTMSK |= (3); // MASK LCD Sub Interrupt
rTCONSEL &=~((1<<4)|1); // Disable LCC3600, LPC3600
rTPAL = 0; // Disable Temp Palette
rLCDCON1 |= 1; // ENVID=ON
}
#ifdef ATLOG
void LcdDrawMap (void)
{
int x,y;
int i;
i = 0;
for(y=0; y<LCD_YSIZE_TFT; y++){
for(x=0; x<LCD_XSIZE_TFT; x++)
frameBuffer16BitTft[y][x] = ScreenBitmap[i++];
}
}
#else
void LcdDrawMap (void)
{
int x,y;
#define RED_YSIZE (LCD_YSIZE_TFT/3)
#define RED_XSIZE (LCD_XSIZE_TFT/3)
#define GREEN_YSIZE (RED_YSIZE*2)
#define GREEN_XSIZE (RED_XSIZE*2)
#define BLUE_YSIZE (LCD_YSIZE_TFT)
#define BLUE_XSIZE (LCD_XSIZE_TFT)
for(y=0; y<RED_YSIZE; y++){
for(x=0; x<RED_XSIZE; x++)
frameBuffer16BitTft[y][x] = COLOR_RED_TFT16;
for(x=RED_XSIZE; x<GREEN_XSIZE; x++)
frameBuffer16BitTft[y][x] = COLOR_GREEN_TFT16;
for(x=GREEN_XSIZE; x<BLUE_XSIZE; x++)
frameBuffer16BitTft[y][x] = COLOR_BLUE_TFT16;
}
for(y=RED_YSIZE; y<GREEN_YSIZE; y++){
for(x=0; x<RED_XSIZE; x++)
frameBuffer16BitTft[y][x] = COLOR_BLUE_TFT16;
for(x=RED_XSIZE; x<GREEN_XSIZE; x++)
frameBuffer16BitTft[y][x] = COLOR_RED_TFT16;
for(x=GREEN_XSIZE; x<BLUE_XSIZE; x++)
frameBuffer16BitTft[y][x] = COLOR_GREEN_TFT16;
}
for(y=GREEN_YSIZE; y<BLUE_YSIZE; y++){
for(x=0; x<RED_XSIZE; x++)
frameBuffer16BitTft[y][x] = COLOR_GREEN_TFT16;
for(x=RED_XSIZE; x<GREEN_XSIZE; x++)
frameBuffer16BitTft[y][x] = COLOR_BLUE_TFT16;
for(x=GREEN_XSIZE; x<BLUE_XSIZE; x++)
frameBuffer16BitTft[y][x] = COLOR_RED_TFT16;
}
}
#endif
void LcdDisplay(void)
{
LcdInit();
//#ifdef ATLOG
LcdDrawMap();
//#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -