www.pudn.com > armzhiwenshibie.rar > lcddrive.h


/**************************************************************************************** 
* 文件名:LCDDRIVE.H 
* 功能:TFT6758液晶模块驱动。(头文件) 
*       驱动芯片为HD66781 (片内224640字节GRAM,即240*(96+320)*18/8), 
*       门驱动(Gate driver)芯片为HD66783。 
* 
*    液晶模块的管脚连接设置如下: 
*    IM3、IM0  ----------  GND   (使用16位8080系统接口) 
*    DB0       ----------  GND 
*    DB1-DB8   ----------  D0-D7  
*    DB9       ----------  GND 
*    DB10-DB17 ----------  D8-D15 
*    CS        ----------  LCM_nCS0  (使用Bank3) 
*    RS        ----------  A1 
*    WR        ----------  nWE 
*    RD        ----------  nRE 
*    RESET     ----------  P0.22 
* 
*    VDD       ----------  3.3V 
*    LAMP+     ----------  10.5V(串接限流电阻) 
*     
*  操作说明(写IR + CR/WDR [ + WDR...] ): 
*  R/W            RS             操作 
*  0              0              写IR(索引,即选择CR) 
*  1              0              读芯片状态 
*  0              1              写命令(CR)/数据(WDR) 
*  1              1              读数据(RDR) 
****************************************************************************************/ 
#ifndef  LCDDRIVE_H 
#define  LCDDRIVE_H 
 
 
// 定义颜色数据类型(可以是数据结构) 
#define  TCOLOR				uint16 
    
// 定义LCM像素数宏                  
#define  GUI_LCM_XMAX		240							/* 定义液晶x轴的点数 */ 
#define  GUI_LCM_YMAX		320							/* 定义液晶y轴的点数 */ 
 
// 设置颜色宏定义 
#define   BLACK		0x0000      /* 黑色:    0,   0,   0 */ 
#define   NAVY		0x000F      /* 深蓝色:  0,   0, 128 */ 
#define   DGREEN	0x03E0		/* 深绿色:  0, 128,   0 */ 
#define   DCYAN		0x03EF		/* 深青色:  0, 128, 128 */ 
#define   MAROON	0x7800		/* 深红色:128,   0,   0 */ 
#define   PURPLE	0x780F		/* 紫色:  128,   0, 128 */ 
#define   OLIVE		0x7BE0 	    /* 橄榄绿:128, 128,   0 */ 
#define   LGRAY		0xC618	    /* 灰白色:192, 192, 192 */ 
#define   DGRAY		0x7BEF		/* 深灰色:128, 128, 128 */ 
#define   BLUE		0x001F		/* 蓝色:    0,   0, 255 */ 
#define   GREEN		0x07E0		/* 绿色:    0, 255,   0 */ 
#define   CYAN	    0x07FF 		/* 青色:    0, 255, 255 */ 
#define   RED		0xF800		/* 红色:  255,   0,   0 */ 
#define   MAGENTA	0xF81F		/* 品红:  255,   0, 255 */ 
#define   YELLOW	0xFFE0		/* 黄色:  255, 255, 0   */ 
#define   WHITE		0xFFFF      /* 白色:  255, 255, 255 */ 
 
// 定义清屏色 
#define  GUI_CCOLOR         WHITE 
 
 
// TFT液晶模块硬件操作宏 
#define  HD66781_IR    	(*((volatile unsigned short *) 0x83200000))  
#define  HD66781_DR    	(*((volatile unsigned short *) 0x83200002)) 
#define  HD66781_RST	(1<<22) 
 
 
// 定义HD66781的部份寄存器 
#define  SET_ADDR_X		0x0200		/* GRAM地址设置(R201H,R200H) */ 
#define  SET_ADDR_Y		0x0201 
#define  WR_RD_DATA		0x0202		/* 写/读GRAM数据 (R202H) */ 
#define  GATEIC_CON		0x0110		/* 门驱动(Gate driver)IC控制1(R110H),控制/状态 */ 
#define  GATEIC_DAT		0x0111		/* 门驱动(Gate driver)IC控制2(R111H),数据 */ 
 
#define  SET_WINDOW_SX	0x0210		/* window地址设置--x0 (R210H) */ 
#define  SET_WINDOW_SY	0x0212		/* window地址设置--y0 (R212H) */ 
#define  SET_WINDOW_EX	0x0211		/* window地址设置--x1 (R211H) */ 
#define  SET_WINDOW_EY	0x0213		/* window地址设置--y1 (R213H) */ 
 
 
// 初始化数据结构定义 
#define		HD66783_COM		783 
#define		HD66781_COM		781 
#define     DATA_END		0 
 
// 定义初始化数据的结构 
typedef  struct 
{  uint16  type;			// 命令类型(如HD66781_COM) 
   uint16  com;				// 命令字 
   uint16  dat;				// 数据 
   uint16  dly;				// 命令延时控制(如50) 
 
}  STCOM_INI; 
 
 
/******************************************************* 
* 名称: TftSendDat 
* 功能: 向TFT液晶模块发送数据。 
* 入口参数: dat   待发送的数据(uint16) 
* 出口参数: 无 
*******************************************************/ 
extern void  TftSendDat(uint16 dat); 
 
/******************************************************* 
* 名称: TftSetWindow 
* 功能: 设置数据填充窗口大小。 
* 入口参数: x0,y0		窗口左上角从标 
*           x1,y1	    窗口右上角从标 
* 出口参数: 设置正确返回TRUE,参数错误返回FALSE 
*******************************************************/ 
extern uint8  TftSetWindow(uint16 x0, uint16 y0, uint16 x1, uint16 y1) ; 
 
/******************************************************* 
* 名称: TftSetWrite 
* 功能: 设置数据地址指针(坐标值),并发送写数据命令。 
*       接着不断的写入数据即可,GRAM地址会自动增加。 
* 入口参数: x		横坐标的值 (0-239) 
*           y       纵坐标的值 (0-319) 
* 出口参数: 设置正确返回TRUE,参数超出范围返回FALSE 
*******************************************************/ 
extern uint8  TftSetWrite(uint16 x, uint16 y); 
 
 
 
/**************************************************************************** 
* 名称:GUI_Initialize() 
* 功能:初始化GUI,包括初始化显示缓冲区,初始化LCM并清屏。 
* 入口参数:无 
* 出口参数:无 
* 说明:用户根据LCM的实际情况编写此函数。 
****************************************************************************/ 
extern void  GUI_Initialize(void); 
 
 
/**************************************************************************** 
* 名称:GUI_FillSCR() 
* 功能:全屏填充。直接使用数据填充显示缓冲区。 
* 入口参数:dat		填充的数据 
* 出口参数:无 
* 说明:用户根据LCM的实际情况编写此函数。 
****************************************************************************/ 
extern void  GUI_FillSCR(TCOLOR dat); 
 
 
/**************************************************************************** 
* 名称:GUI_ClearSCR() 
* 功能:清屏。 
* 入口参数:无 
* 出口参数:无 
* 说明:用户根据LCM的实际情况编写此函数。 
****************************************************************************/ 
extern void  GUI_ClearSCR(void); 
 
 
/**************************************************************************** 
* 名称:GUI_Point() 
* 功能:在指定位置上画点。 
* 入口参数: x		指定点所在列的位置 
*            y		指定点所在行的位置 
*            color	显示颜色(对于黑白色LCM,为0时灭,为1时显示) 
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。(操作失败原因是指定地址超出有 
*          效范围) 
* 说明:用户根据LCM的实际情况编写此函数。 
****************************************************************************/ 
extern uint8  GUI_Point(uint16 x, uint16 y, TCOLOR color); 
 
 
/**************************************************************************** 
* 名称:GUI_ReadPoint() 
* 功能:读取指定点的颜色。 
* 入口参数:x		指定点所在列的位置 
*           y		指定点所在行的位置 
*           ret     保存颜色值的指针 
* 出口参数:返回0表示指定地址超出缓冲区范围 
* 说明:对于单色,设置ret的d0位为1或0,4级灰度则为d0、d1有效,8位RGB则d0--d7有效, 
*      RGB结构则R、G、B变量有效。 
****************************************************************************/ 
extern uint8  GUI_ReadPoint(uint16 x, uint16 y, TCOLOR *ret); 
 
 
 
/**************************************************************************** 
* 名称:GUI_HLine() 
* 功能:画水平线。 
* 入口参数: x0		水平线起点所在列的位置 
*           y0		水平线起点所在行的位置 
*           x1      水平线终点所在列的位置 
*           color	显示颜色(对于黑白色LCM,为0时灭,为1时显示) 
* 出口参数:无 
* 说明:对于单色、4级灰度的液晶,可通过修改此函数作图提高速度,如单色LCM,可以一次更 
*      新8个点,而不需要一个点一个点的写到LCM中。 
****************************************************************************/ 
extern void  GUI_HLine(uint16 x0, uint16 y0, uint16 x1, TCOLOR color); 
 
 
 
/**************************************************************************** 
* 名称:GUI_RLine() 
* 功能:画垂直线。 
* 入口参数: x0		垂直线起点所在列的位置 
*           y0		垂直线起点所在行的位置 
*           y1      垂直线终点所在行的位置 
*           color	显示颜色 
* 出口参数:无 
* 说明:对于单色、4级灰度的液晶,可通过修改此函数作图提高速度,如单色LCM,可以一次更 
*      新8个点,而不需要一个点一个点的写到LCM中。 
****************************************************************************/ 
extern void  GUI_RLine(uint16 x0, uint16 y0, uint16 y1, TCOLOR color); 
 
 
 
 
/**************************************************************************** 
* 名称:GUI_CmpColor() 
* 功能:判断颜色值是否一致。 
* 入口参数:color1		颜色值1 
*		   color2		颜色值2 
* 出口参数:返回1表示相同,返回0表示不相同。 
* 说明:由于颜色类型TCOLOR可以是结构类型,所以需要用户编写比较函数。 
****************************************************************************/ 
//extern int  GUI_CmpColor(TCOLOR color1, TCOLOR color2); 
#define  GUI_CmpColor(color1, color2)	(color1 == color2) 
 
 
/**************************************************************************** 
* 名称:GUI_CopyColor() 
* 功能:颜色值复制。 
* 入口参数:color1		目标颜色变量 
*		   color2		源颜色变量 
* 出口参数:无 
* 说明:由于颜色类型TCOLOR可以是结构类型,所以需要用户编写复制函数。 
****************************************************************************/ 
//extern void  GUI_CopyColor(TCOLOR *color1, TCOLOR color2); 
#define  GUI_CopyColor(color1, color2) 	*color1 = color2 
 
 
 
#endif