📄 lcd.h
字号:
#ifdef LCD_HEADER#undef CONFIG_LCD_MONO320X240 /* 1pixel/1bit LCD */#undef CONFIG_LCD_GRAY320X240 /* 16Gray, 1pixel/4bit LCD */#define CONFIG_LCD_STN320X240 /* 256Color, 1pixel/8bit LCD */#undef CONFIG_LCD_STN640X480 /* 256Color, 1pixel/8bit LCD */#undef CONFIG_LCD_TFT240X320 /* 1pixel/8bit LCD */#if defined(CONFIG_LCD_TFT320X240)#define VD_WIDTH 8 /* ???? */#elif defined(CONFIG_LCD_STN320X240)#define VD_WIDTH 8#elif defined(CONFIG_LCD_MONO320X240) || defined(CONFIG_LCD_GRAY320X240)#define VD_WIDTH 4#endif#if defined(CONFIG_LCD_STN640X480)#define FR_WIDTH 640#define FR_HEIGHT 480#elif defined(CONFIG_LCD_TFT240X320)#define FR_WIDTH 240#define FR_HEIGHT 320#elif defined(CONFIG_LCD_STN320X240) || defined(CONFIG_LCD_GRAY320X240) || defined(CONFIG_LCD_MONO320X240)#define FR_WIDTH 320#define FR_HEIGHT 240#endif#define FR_PALETTE 256/* * Frame Frequency(MAX) : 70 Hz * HCLK = MCLK/2 = 70MHz * * VCLK = Frame_rate * (LINEVAL+1) * (HOZVAL+1) * @ In mono mode : HOZVAL = (FR_WIDTH/VD_WIDTH) - 1 * @ In color mode : HOZVAL = ((FR_WIDTH*3)/VD_WIDTH) - 1 * * @ STN : VCLK = HCLK / (CLKVAL*2), CLKVAL >= 2 * @ TFT : VCLK = HCLK / [(CLKVAL+1)*2], CLKVAL >= 1 * * Ex 0) 320x240 MONO LCD * VCLK = 70(freq) * 240(ysize) * 80(hozval) = 1.344MHz * CLKVAL = 70MHz / (1.344MHz * 2) = 22.3214 = 22 * Ex 1) 320x240 16GRAY LCD * VCLK = 70(freq) * 240(ysize) * 80(hozval) = 1.344MHz * CLKVAL = 70MHz / (1.344MHz * 2) = 22.3214 = 22 * Ex 2) 320x240 256STN LCD * VCLK = 70(freq) * 240(ysize) * 120(hozval) = 2.016MHz * CLKVAL = 70MHz / (2.016MHz * 2) = 14.8809 = 14 * Ex 3) 640x480 256STN LCD * VCLK = 70(freq) * 480(ysize) * 240(hozval) = 8.064MHz * CLKVAL = 70MHz / (8.064MHz * 2) = 3.7202 = 3 * Ex 3) 240x320 256TFT LCD * VCLK = 70(freq) * 480(ysize) * 240(hozval) = 8.064MHz * CLKVAL = 70MHz / (8.064MHz * 2) = 3.7202 = 3 */#define Frame_rate 70#if defined(CONFIG_LCD_MONO320X240)#define HOZVAL ((FR_WIDTH/VD_WIDTH) - 1)#define PNRMODE 0x1#define BPPMODE 0x0#define BPP 1#elif defined(CONFIG_LCD_GRAY320X240)#define HOZVAL ((FR_WIDTH/VD_WIDTH) - 1)#define PNRMODE 0x1#define BPPMODE 0x2#define BPP 4#elif defined(CONFIG_LCD_STN320X240)#define HOZVAL (((FR_WIDTH*3)/VD_WIDTH) - 1)#define PNRMODE 0x2#define BPPMODE 0x3#define BPP 8#elif defined(CONFIG_LCD_STN640X480)#elif defined(CONFIG_LCD_TFT320X240)#endif#define VCLK (Frame_rate * FR_HEIGHT * (HOZVAL+1))#define CLKVAL ( (HCLK) / (VCLK*2) )/* LCDCON1 register definition */#define bCLKVAL (CLKVAL<<8) /* VCLK rate ( MCLK / (VCLK * 2) ) */#define bMMODE (0<<7) /* 0=each frame, 1=defined by the MVAL */#define bPNRMODE (PNRMODE<<5) /* 0=4bit dual, 1=4bit single */ /* 2=8bit single, 3=TFT LCD panel */#define bBPPMODE (BPPMODE<<1) /* 0=1 bpp for STN, Monochrome mode */ /* 1=2 bpp for STN, 4-level gray mode */ /* 2=4 bpp for STN, 16-level gray mode */ /* 3=8 bpp for STN, color mode */ /* 4=12 bpp for STN, color mode */ /* 8=1 bpp for TFT */ /* 9=2 bpp for TFT */ /* 10=4 bpp for TFT */ /* 11=8 bpp for TFT */ /* 12=16 bpp for TFT */#define bENVID (0<<0) /* LCD Diable */#define bLCDCON1 (bCLKVAL|bMMODE|bPNRMODE|bBPPMODE|bENVID)/* LCDCON2 register definition */#define bVBPD (0<<24) /* TFT ??? */#define bLINEVAL ((FR_HEIGHT - 1)<<14) /* vertical size of LCD panel */#define bVFPD (0<<6) /* TFT ??? */#define bVSPW (0<<0) /* TFT ??? */#define bLCDCON2 (bVBPD|bLINEVAL|bVFPD|bVSPW)/* LCDCON3 register definition */#define bHBPD (0<<19) /* TFT ??? */#define bWDLY (0<<19) /* Delay between VLINE and VCLK *//* 0=16clock, 1=32clock, 2=64clock, 3=128clock */#define bHOZVAL (HOZVAL<<8) /* horizontal size of LCD panel */#define bHFPD (0<<0) /* TFT ??? */#define bLINEBLANK (1<<0) /* Blank time in one horizontal line duration time */#if defined(CONFIG_LCD_TFT320X240)#define bLCDCON3 (bHBPD|bHOZVAL|bHFPD)#else#define bLCDCON3 (bWDLY|bHOZVAL|bLINEBLANK)#endif/* LCDCON4 register definition */#define bPALADDEN (0<<24) /* TFT : Palette index offset -> 0:enable, 1:disable */#define bADDVAL (0<<16) /* TFT : Palette index offset value */#define bMVAL (13<<8) /* STN : rate at VM signal will toggle */#define bHSPW (0<<0) /* TFT : Hosizontal sync pulse width */#define bWLH (0<<0) /* STN : VLINE pulse width *//* 0=16clock, 1=32clock, 2=64clock, 3=128clock */#if defined(CONFIG_LCD_TFT320X240)#define bLCDCON4 (bPALADDEN|bADDVAL|bMVAL|bHSPW)#else#define bLCDCON4 (bMVAL|bWLH)#endif/* LCDCON5 register definition */#define bSLOWCLKSYNC (0<<14) /* STN : SLOW mode select -> 0:disable, 1:enable */#define bSELFREF (0<<13) /* STN : self refresh mode -> 0:disable, 1:enable */#define bINVVCLK (0<<10) /* VCLK active edge -> 0:falling, 1:rising */#define bINVVLINE (0<<9) /* VLINE/HSYNC pulse polarity */#define bINVVFRAME (0<<8) /* VFRAME/VSYNC pulse polarity */#define bINVVD (0<<7) /* VD pulse polarity */#define bINVVDEN (0<<6) /* TFT : VDEN pulse polarity */#define bINVENDLINE (0<<4) /* TFT : LEND pulse polarity */#define bENLEND (0<<2) /* TFT : LEND output select */#define bBSWP (1<<1) /* Byte swap control */#define bHWSWP (0<<0) /* Half-Word swap control */#define bLCDCON5 (bSLOWCLKSYNC|bSELFREF|bINVVCLK|bINVVLINE|bINVVFRAME|bINVVD|bINVVDEN|bINVENDLINE|bENLEND|bBSWP|bHWSWP)/* LCDSADDR1 register definition */#define bMODESEL MODESEL /* 0=Mono, 1=4-gray, 2=16-gray, 3=color */#define bOFFSIZE 0 /* will use in virtual screen */#define bPAGEWIDTH ((FR_WIDTH*BPP)/16) /* LCD_XSIZE width to transfer to lcd */typedef struct FrameBuffer { unsigned short palette [FR_PALETTE]; unsigned char pixel[FR_HEIGHT][(FR_WIDTH*BPP)/8]; int row, col;} FB;struct font_header { unsigned char type; /* font type */ unsigned char wide; /* character width in pixels */ unsigned char high; /* char height in pixels */ unsigned char baseline; /* pixels from bottom of glyph */ unsigned char count; /* number of chars in font */ char start; /* starting char in font */};extern int do_kbd_init;extern int do_scroll;void initLCD(void);void clrScreen(void);void clrCharRow(int /* row */);void putcToFBrc(char /* c */, unsigned int /* row */, unsigned int /* col */);void setCursor(int /* r */, int /* c */);int moveCursor(int /* r */, int /* c */);void scroll(void);void putcToFB(char /* c */);void putcToFBi(char /* c */);void putcToFBd(char /* c */);void putsToFB(char * /* s */);void setRC(int, int);void incRC(int, int /* int ri, int ci */);void setRow(int /* int r */);void setCol(int /* int c */);int getCol(void);int getRow(void);#endif /* LCD_HEADER */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -