⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcdlib.h

📁 嵌入式2410板子上的LCD显示
💻 H
字号:
/*********************************************************************************************
* File:	lcdlib.h
* Author:	Embest	
* Desc:	header file of lcd lib 
* History:	
*			Y.J.Guo, Programming modify, April 12, 2005
*********************************************************************************************/
#ifndef __LCDLIB_H__
#define __LCDLIB_H__

/*------------------------------------------------------------------------------------------*/
/*	 								macro define						 				    */
/*------------------------------------------------------------------------------------------*/
#define BLACK 0x0
#define WHITE 0xff
#define RED 0xe0
#define GREEN 0x1c
#define BLUE 0x03
#define ALLBLACK ((BLACK << 24) | (BLACK << 16) | (BLACK << 8) | BLACK)
#define ALLWHITE ((WHITE << 24)  | (WHITE << 16)  | (WHITE << 8)  | WHITE)
#define LIGHTGRAY    0xa0
#define DARKGRAY     0x50
#define TRANSPARENCY 0xff


#define MVAL		(13)
#define MVAL_USED 	(0)
#define M5D(n) ((n) & 0x1fffff)                                 // To get lower 21bits
#define GUISWAP(a, b){a^=b; b^=a; a^=b;}

//STN LCD Panel(320*240)
#define MODE_STN_1BIT 	(0x1001)
#define MODE_STN_2BIT  	(0x1002)
#define MODE_STN_4BIT  	(0x1004)
//Color STN LCD Panel(320*240)
#define MODE_CSTN_8BIT   (0x2001)
#define MODE_CSTN_12BIT (0x2002)
//TFT LCD Panel(240*320)
#define MODE_TFT_1BIT_240320     (0x4101)
#define MODE_TFT_8BIT_240320 	 (0x4102)
#define MODE_TFT_16BIT_240320    (0x4104)
//TFT LCD Panel(640*480)
#define MODE_TFT_1BIT_640480     (0x4201)
#define MODE_TFT_8BIT_640480     (0x4202)
#define MODE_TFT_16BIT_640480    (0x4204)
#define MODE_TFT_24BIT_640480    (0x4208)
//TFT LCD Panel(800*600)
#define MODE_TFT_1BIT_800600     (0x4401)
#define MODE_TFT_8BIT_800600     (0x4402)
#define MODE_TFT_16BIT_800600    (0x4404)

//STN
#define LCD_XSIZE_STN 	(320)
#define LCD_YSIZE_STN 	(240)
//Color STN
#define LCD_XSIZE_CSTN 	(320)
#define LCD_YSIZE_CSTN 	(240)
//TFT 240320
#define LCD_XSIZE_TFT_240320 	(240)	
#define LCD_YSIZE_TFT_240320 	(320)
//TFT 640480
#define LCD_XSIZE_TFT_640480 	(640)	
#define LCD_YSIZE_TFT_640480 	(480)
//TFT 800600
#define LCD_XSIZE_TFT_800600 	(800)	
#define LCD_YSIZE_TFT_800600 	(600)
//STN
#define SCR_XSIZE_STN 	(LCD_XSIZE_STN*2)                       //for virtual screen  
#define SCR_YSIZE_STN 	(LCD_YSIZE_STN*2)
//Color STN
#define SCR_XSIZE_CSTN 	(LCD_XSIZE_CSTN*2)        				//for virtual screen  
#define SCR_YSIZE_CSTN 	(LCD_YSIZE_CSTN*2)
//TFT 240320
#define SCR_XSIZE_TFT_240320 	(LCD_XSIZE_TFT_240320*2)
#define SCR_YSIZE_TFT_240320 	(LCD_YSIZE_TFT_240320*2)
//TFT 640480
#define SCR_XSIZE_TFT_640480 	(LCD_XSIZE_TFT_640480*2)
#define SCR_YSIZE_TFT_640480 	(LCD_YSIZE_TFT_640480*2)
//TFT 800600
#define SCR_XSIZE_TFT_800600 	(LCD_XSIZE_TFT_800600*2)
#define SCR_YSIZE_TFT_800600 	(LCD_YSIZE_TFT_800600*2)

//STN
#define HOZVAL_STN		(LCD_XSIZE_STN/4-1)	                    // Valid VD data line number is 4.
#define LINEVAL_STN		(LCD_YSIZE_STN-1)
//Color STN
#define HOZVAL_CSTN		(LCD_XSIZE_CSTN*3/8-1)	                // Valid VD data line number is 8.
#define LINEVAL_CSTN		(LCD_YSIZE_CSTN-1)
//TFT240320
#define HOZVAL_TFT_240320	(LCD_XSIZE_TFT_240320-1)
#define LINEVAL_TFT_240320	(LCD_YSIZE_TFT_240320-1)
//TFT640480
#define HOZVAL_TFT_640480	(LCD_XSIZE_TFT_640480-1)
#define LINEVAL_TFT_640480	(LCD_YSIZE_TFT_640480-1)
//TFT800600
#define HOZVAL_TFT_800600	(LCD_XSIZE_TFT_800600-1)
#define LINEVAL_TFT_800600	(LCD_YSIZE_TFT_800600-1)

//STN
#define WLH_STN	    		(0)
#define WDLY_STN		(0)
#define LINEBLANK_MONO		(1 &0xff)                           // MONO timing parameter for CPT CLS-040S-C3M(CHUNGHWA)
#define LINEBLANK_GRAY		(13 &0xff)                          // GRAY timing parameter for CPT CLS-040S-C3M(CHUNGHWA)
//CSTN timing parameter for LCBHBT161M(NANYA)
#define WLH_CSTN	        (0)
#define WDLY_CSTN		(0)
#define LINEBLANK_CSTN		(16 &0xff)
//Timing parameter for LTS350Q1(SAMSUNG) 
#define VBPD_240320		((2-1)&0xff)
#define VFPD_240320		((3-1)&0xff)
#define VSPW_240320		((2-1) &0x3f)
#define HBPD_240320		((7-1)&0x7f)
#define HFPD_240320		((3-1)&0xff)
#define HSPW_240320		((4-1)&0xff)
//Timing parameter for V16C6448AB(PRIME VIEW) 
#define VBPD_640480		((33-1)&0xff)
#define VFPD_640480		((10-1)&0xff)
#define VSPW_640480		((2-1) &0x3f)
#define HBPD_640480		((48-1)&0x7f)
#define HFPD_640480		((16-1)&0xff)
#define HSPW_640480		((96-1)&0xff)
//Timing parameter for LP104S5-B2AP(LGPHILIPS) 
#define VBPD_800600        	((2-1)&0xff)
#define VFPD_800600		((3-1)&0xff)
#define VSPW_800600		((1-1) &0x3f)
#define HBPD_800600		((30-1)&0x7f)
#define HFPD_800600		((30-1)&0xff)
#define HSPW_800600		((12-1)&0xff)


#define CLKVAL_STN_MONO		(20) 	
    // 64hz @50Mhz,WLH=16hclk,WDLY=16hclk,LINEBLANK=1*8hclk,VD=4 
#define CLKVAL_STN_GRAY		(10) 	
    // 120hz @50Mhz,WLH=16hclk,WDLY=16hclk,LINEBLANK=13*8hclk,VD=4 
#define CLKVAL_CSTN		(6) 	
    // 130hz @50Mhz,WLH=16hclk,WDLY=16hclk,LINEBLANK=16*8hclk,VD=8  
#define CLKVAL_TFT_240320	(4) 	
    // 60hz @50Mhz
    //VSYNC,HSYNC should be inverted
    //HBPD=6VCLK,HFPD=2VCLK,HSPW=3VCLK
    //VBPD=1HSYNC,VFPD=2HSYNC,VSPW=1HSYNC
#define CLKVAL_TFT_640480 	(1)
    //53.5hz @90Mhz
    //VSYNC,HSYNC should be inverted
    //HBPD=47VCLK,HFPD=15VCLK,HSPW=95VCLK
    //VBPD=32HSYNC,VFPD=9HSYNC,VSPW=1HSYNC
#define CLKVAL_TFT_800600 	(0)
    //85hz @90Mhz
    //71hz @76Mhz
    //VSYNC,HSYNC should be inverted
    //HBPD=29VCLK,HFPD=29VCLK,HSPW=11VCLK
    //VBPD=1HSYNC,VFPD=2HSYNC,VSPW=0HSYNC
#define LCDFRAMEBUFFER 0x33800000 //_NONCACHE_STARTADDRESS 
    // 1. The LCD frame buffer should be write-through or non-cachable.
    // 2. The total frame memory should be inside 4MB.
    // 3. To meet above 2 conditions, the frame buffer should be 
    // inside the following regions.
    // 0x31000000~0x313ffffff,
    // 0x31400000~0x317ffffff,
    // 0x31800000~0x31bffffff,
    //        .....    
    // 0x33800000~0x33bffffff                

/*------------------------------------------------------------------------------------------*/
/*	 								external variables					 				    */
/*------------------------------------------------------------------------------------------*/
//Mono
extern UINT32T (*frameBuffer1Bit)[SCR_XSIZE_STN/32];
//Gray
extern UINT32T (*frameBuffer2Bit)[SCR_XSIZE_STN/16];
extern UINT32T (*frameBuffer4Bit)[SCR_XSIZE_STN/8];
//Color STN
extern UINT32T (*frameBuffer8Bit)[SCR_XSIZE_CSTN/4];
extern UINT32T (*frameBuffer12Bit)[SCR_XSIZE_CSTN*3/8];             // The least common multiple (between 12 and 32) is 96
//TFT 240320
extern UINT32T (*frameBuffer8BitTft240320)[SCR_XSIZE_TFT_240320/4];
extern UINT32T (*frameBuffer16BitTft240320)[SCR_XSIZE_TFT_240320/2];
//TFT 640480
extern UINT32T (*frameBuffer1BitTft640480)[SCR_XSIZE_TFT_640480/32];
extern UINT32T (*frameBuffer8BitTft640480)[SCR_XSIZE_TFT_640480/4];
extern UINT32T (*frameBuffer16BitTft640480)[SCR_XSIZE_TFT_640480/2];
extern UINT32T (*frameBuffer24BitTft640480)[SCR_XSIZE_TFT_640480];  // Unpacked 24bit 
//TFT 800600
extern UINT32T (*frameBuffer1BitTft800600)[SCR_XSIZE_TFT_800600/32];
extern UINT32T (*frameBuffer8BitTft800600)[SCR_XSIZE_TFT_800600/4];
extern UINT32T (*frameBuffer16BitTft800600)[SCR_XSIZE_TFT_800600/2];

/*------------------------------------------------------------------------------------------*/
/*	 								function declare                                        */
/*------------------------------------------------------------------------------------------*/
void Lcd_Init(int type);
void MoveViewPort(int);
void Lcd_CstnOnOff(int onoff);
void Lcd_EnvidOnOff(int onoff);
void Lcd_PowerEnable(int invpwren,int pwren);
void Lcd_MoveViewPort(int vx,int vy,int type);
void Lcd_Lpc3600Enable(void);


#endif                                                          //__LCDLIB_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -