lcdmodule_tl1763_f026.c

来自「可以学习」· C语言 代码 · 共 364 行

C
364
字号
//驱动IC:TL1763		显示屏型号:DMTT240TT001S

/*--------------------------------------------------------------------------
Standard include files:
--------------------------------------------------------------------------*/
#include "Interface.h"

/*--------------------------------------------------------------------------
*DEFINES
--------------------------------------------------------------------------*/
#define LCDPOWER_GPIO		GPIO_6

/*--------------------------------------------------------------------------
*TYPEDEFS
--------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------
*STRUCTURE
--------------------------------------------------------------------------*/
const struct StaticMemoryControl stMemoryCtrlCfg_Lcd = 
{
		0,	//SMT:1;
		0,	//BL:2;
		0,	//BCM:1;
		0,	//NFE:1;
		0,	//CE:1;
		1,	//BW;
	1,	//TAS:3;	//setup time//一般设置为 0
		0,	//6800Mode:1;
	1,	//TAH:3;	//hold time//一般设置为 0
		0,	//Dummy1:1;
	2,	//TBP:4;	//write time//固定为 3
		1,	//TAW:4;
		2,	//STRV:4;
		0	//Dummy0:4;
};

/*--------------------------------------------------------------------------
* Variable ,constant or function
--------------------------------------------------------------------------*/

/*-----------------------------------------------------------------------------
* 函数:	LcdModulePowerOnOff
* 功能:	LCD模块电源控制
* 参数:	u8Value----0:关闭;1:开启 
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_LcdModulePowerOnOff(U8 u8Value)
{
	if (u8Value != 0)
	{//点亮背光
		eGpio_SetHigh(LCDPOWER_GPIO);
	}
	else
	{//关闭背光
		eGpio_SetLow (LCDPOWER_GPIO);
	}
}

/*-----------------------------------------------------------------------------
* 函数:	drvLcd_InitLcdModuleInstructs
* 功能:	LCD模块初始化
* 参数:	none
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_InitLcdModuleInstructs( void) 
{

    Hyc_drvLcd_WriteInstruct(0x11);  
	Hyc_drvLcd_WriteData(0x0112);

	Hyc_drvLcd_WriteInstruct(0x12);  
	Hyc_drvLcd_WriteData(0x100d);

	Hyc_drvLcd_WriteInstruct(0x13);  
	Hyc_drvLcd_WriteData(0x1434);

	Hyc_drvLcd_WriteInstruct(0x10);  
	Hyc_drvLcd_WriteData(0x1530);
	delay(500);

	Hyc_drvLcd_WriteInstruct(0x12);  
	Hyc_drvLcd_WriteData(0x101d);

	Hyc_drvLcd_WriteInstruct(0x13);  
	Hyc_drvLcd_WriteData(0x3030);// 3232
	delay(200);

	Hyc_drvLcd_WriteInstruct(0x01);  
	Hyc_drvLcd_WriteData(0x0000);// 0x0000);//0x0100);
	
	Hyc_drvLcd_WriteInstruct(0x02);  
	Hyc_drvLcd_WriteData(0x0700);


    Hyc_drvLcd_WriteInstruct(0x03);  
	Hyc_drvLcd_WriteData(0x1038);//0x1008;  0x1038
	
	Hyc_drvLcd_WriteInstruct(0x04);  
	Hyc_drvLcd_WriteData(0x0141);

	Hyc_drvLcd_WriteInstruct(0x07);  
	Hyc_drvLcd_WriteData(0x0005);

	Hyc_drvLcd_WriteInstruct(0x08);  
	Hyc_drvLcd_WriteData(0x0202);

	Hyc_drvLcd_WriteInstruct(0x0b);  
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x0c);  
	Hyc_drvLcd_WriteData(0x0001);

	Hyc_drvLcd_WriteInstruct(0x0e);  
	Hyc_drvLcd_WriteData(0x0015);

	Hyc_drvLcd_WriteInstruct(0xa1);  
	Hyc_drvLcd_WriteData(0x1000);

	Hyc_drvLcd_WriteInstruct(0xa4);  
	Hyc_drvLcd_WriteData(0x7300);

	Hyc_drvLcd_WriteInstruct(0xa2);  
	Hyc_drvLcd_WriteData(0x000a);//0x5

	
    Hyc_drvLcd_WriteInstruct(0x30);  
	Hyc_drvLcd_WriteData(0x0202);

	Hyc_drvLcd_WriteInstruct(0x31);  
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x32);  
	Hyc_drvLcd_WriteData(0x0404);

	Hyc_drvLcd_WriteInstruct(0x33);  
	Hyc_drvLcd_WriteData(0x0203);
	
	Hyc_drvLcd_WriteInstruct(0x34);  
	Hyc_drvLcd_WriteData(0x0207);

	Hyc_drvLcd_WriteInstruct(0x35);  
	Hyc_drvLcd_WriteData(0x0202);

	Hyc_drvLcd_WriteInstruct(0x36);  
	Hyc_drvLcd_WriteData(0x0707);

	Hyc_drvLcd_WriteInstruct(0x37);  
	Hyc_drvLcd_WriteData(0x0002);

	Hyc_drvLcd_WriteInstruct(0x38);  
	Hyc_drvLcd_WriteData(0x0f00);

	Hyc_drvLcd_WriteInstruct(0x39);  
	Hyc_drvLcd_WriteData(0x0002);

	Hyc_drvLcd_WriteInstruct(0x40);  
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x41);  
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x42);  
	Hyc_drvLcd_WriteData(0x0140);

	Hyc_drvLcd_WriteInstruct(0x43);  
	Hyc_drvLcd_WriteData(0x0000);


	Hyc_drvLcd_WriteInstruct(0x44);  
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x45);  
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x46);  
	Hyc_drvLcd_WriteData(0xef00);

	Hyc_drvLcd_WriteInstruct(0x47);  
	Hyc_drvLcd_WriteData(0x013f);

	Hyc_drvLcd_WriteInstruct(0x48);  
	Hyc_drvLcd_WriteData(0x0000);
	delay(300);

	Hyc_drvLcd_WriteInstruct(0x07);  
	Hyc_drvLcd_WriteData(0x0021);
	delay(400);

	Hyc_drvLcd_WriteInstruct(0x07);  
	Hyc_drvLcd_WriteData(0x0023);
	delay(400);

	Hyc_drvLcd_WriteInstruct(0x07);  
	Hyc_drvLcd_WriteData(0x0037);
	delay(400);

	Hyc_drvLcd_WriteInstruct(0x20);  
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x21);  
	Hyc_drvLcd_WriteData(0x0000);
}


/*-----------------------------------------------------------------------------
* 函数:	drvLcd_InitLCDModule
* 功能:	
* 参数:	none
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_InitLCDModule(void)
{
	Hyc_LcdModulePowerOnOff(0);
	Hyc_drvLcd_InitLcdModuleInstructs();	
	Hyc_drvLcd_ClearLcdRAM();

	Hyc_drvLcd_WriteInstruct(0x0007);//display on
	Hyc_drvLcd_WriteData(0x0037);
}

/*-----------------------------------------------------------------------------
* 函数:	drvLcd_LCDModulePowerOn
* 功能:	打开LCD模块电源
* 参数:	none
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_LCDModulePowerOn(void)
{
	Hyc_drvLcd_InitLcdModuleInstructs();	//sleep out = reInitialize

	Hyc_drvLcd_WriteInstruct(0x0007);		//display on
	Hyc_drvLcd_WriteData(0x0037);
	
	Hyc_RefreshScreen_Lcd();
	Hyc_LcdModulePowerOnOff(1);
}

/*-----------------------------------------------------------------------------
* 函数:	drvLcd_LCDModulePowerOff
* 功能:	关闭LCD模块电源
* 参数:	none
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_LCDModulePowerOff(void)
{
	Hyc_drvLcd_WriteInstruct(0x0007);	//display off
	Hyc_drvLcd_WriteData(0x0000);		//0x0001

	Hyc_LcdModulePowerOnOff(0);
	
	Hyc_drvLcd_WriteInstruct(0x0010);	//sleep in
	Hyc_drvLcd_WriteData(0x0001);		//0x0001
}

/*-----------------------------------------------------------------------------
* 函数:	drvLcd_DisplayOn
* 功能:	打开显示
* 参数:	none
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_DisplayOn(void)
{
   Hyc_drvLcd_WriteInstruct(0x0007);//display on
   Hyc_drvLcd_WriteData(0x0037);
}

/*-----------------------------------------------------------------------------
* 函数:	drvLcd_DisplayOff
* 功能:	关闭显示
* 参数:	none
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_DisplayOff(void)
{
	Hyc_drvLcd_WriteInstruct(0x0007);	//display off
	Hyc_drvLcd_WriteData(0x0000);		//0x0001
}



/*-----------------------------------------------------------------------------
* 函数:	drvLcd_ContrastAdjust
* 功能:	调整对比度
* 参数:	none
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_ContrastAdjust (U8 u8Contrast)
{
	//待实现
}



/*-----------------------------------------------------------------------------
* 函数:	drvLcd_SetRowColumn
* 功能:	设置彩色显示屏的显示起始地址,地址为行序号和列序号row和Column,以及高度
*		和宽度
* 参数:	kRow 			- 行序号 , 起始行:0
*		kColumn 		- 列序号 ,起始列:0
*		U16 kHeight 	- 高度
*		U16 kWidth 		- 宽度
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_SetRowColumn_Lcd(RECT *rect)
{
	U16 tempData;
	U16 kRow;
	U16 kColumn;
	U16 kHeight;
	U16 kWidth;

	kRow=rect->y;
	kColumn=rect->x;
	kHeight=rect->h;
	kWidth=rect->w;
	
	tempData=(0x01FF&kColumn); 
	Hyc_drvLcd_WriteInstruct(0x0048);                             //Specify the Vertical start positions
	Hyc_drvLcd_WriteData(tempData); 
				
    tempData=(0x01FF&(kColumn+kWidth-1));
	Hyc_drvLcd_WriteInstruct(0x0047);                               //Specify the Vertical end positions
	Hyc_drvLcd_WriteData(tempData); 
		
	tempData=(((kRow+kHeight-1)<<8)|kRow);
	Hyc_drvLcd_WriteInstruct(0x0046);                              //Specify the horizontal start/end positions
	Hyc_drvLcd_WriteData(tempData);  
	
	tempData=(0x00FF&kRow);
    Hyc_drvLcd_WriteInstruct(0x0020);                               //Specify the x address in RAM
	Hyc_drvLcd_WriteData(tempData); 
	
    tempData=(0x01FF&kColumn);
	Hyc_drvLcd_WriteInstruct(0x0021);                               //Specify the y address in RAM
	Hyc_drvLcd_WriteData(tempData); 

	Hyc_drvLcd_WriteInstruct(0x0022);                                  //RAM write

/*						
	tempData=(0x01FF&(319-(kColumn+kWidth-1))); 
	Hyc_drvLcd_WriteInstruct(0x0048);                             //Specify the Vertical start positions
	Hyc_drvLcd_WriteData(tempData); 
				
    tempData=(0x01FF&(319-kColumn));
	Hyc_drvLcd_WriteInstruct(0x0047);                               //Specify the Vertical end positions
	Hyc_drvLcd_WriteData(tempData); 
		
	tempData=(((239-kRow)<<8)|(239-(kRow+kHeight-1)));
	Hyc_drvLcd_WriteInstruct(0x0046);                              //Specify the horizontal start/end positions
	Hyc_drvLcd_WriteData(tempData);  
	
	tempData=(0x00FF&(239-kRow));
    Hyc_drvLcd_WriteInstruct(0x0020);                               //Specify the x address in RAM
	Hyc_drvLcd_WriteData(tempData); 
	
    tempData=(0x01FF&(319-kColumn));
	Hyc_drvLcd_WriteInstruct(0x0021);                               //Specify the y address in RAM
	Hyc_drvLcd_WriteData(tempData); 

	Hyc_drvLcd_WriteInstruct(0x0022);                                  //RAM write
*/	
}	

⌨️ 快捷键说明

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