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

📄 lcd_driver_tft8899uctdfw_g_f_led_sp100.c

📁 可以学习
💻 C
字号:

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

#define LCDPOWER_GPIO 	GPIO_8

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

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

/*-----------------------------------------------------------------------------
* 函数:	Hyc_drvLcd_InitLcdModuleInstructs()
* 功能:	LCD初始化指令
* 参数:
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_InitLcdModuleInstructs(void)
{
	Hyc_drvLcd_WriteInstruct(0x9600);//vdd on ,other commands cannot be entered for 10ms after entering the command
	Hyc_drvLcd_WriteInstruct(0x9200);//start oscillation
  	Hyc_drvLcd_WriteInstruct(0x9900);//soft reset
	Hyc_drvLcd_WriteInstruct(0xAE00);//display off

  	Hyc_drvLcd_WriteInstruct(0xCA00);//set display
	Hyc_drvLcd_WriteData(0x3200);
	Hyc_drvLcd_WriteData(0x0000);
	Hyc_drvLcd_WriteData(0x0100);
	Hyc_drvLcd_WriteData(0x3F00);
	Hyc_drvLcd_WriteData(0x0200);
	Hyc_drvLcd_WriteData(0x0000);
	Hyc_drvLcd_WriteData(0x0100);

 	Hyc_drvLcd_WriteInstruct(0xA100);//set display timing
	Hyc_drvLcd_WriteData(0x0100);
	Hyc_drvLcd_WriteData(0x2F00);
	Hyc_drvLcd_WriteData(0x0300);
	Hyc_drvLcd_WriteData(0x2D00);
	Hyc_drvLcd_WriteData(0x2300);
	Hyc_drvLcd_WriteData(0x3000);
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0xA900); //cancels partial display
	Hyc_drvLcd_WriteInstruct(0x8C00); //set AC operation drive
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0xAB00);//set display start line
	Hyc_drvLcd_WriteData(0x0000);
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x3100);//set display data interface
	Hyc_drvLcd_WriteData(0x0000);
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x8B00); //set display color mode
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x6F00);//set gate line scan mode
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0xBC00);//set data
	Hyc_drvLcd_WriteData(0x0900);

	Hyc_drvLcd_WriteInstruct(0x2000);//set electronic control
	Hyc_drvLcd_WriteData(0x1000);//VDDHS=4.0V
	Hyc_drvLcd_WriteData(0x1800);//VCOMH=2.7v
	Hyc_drvLcd_WriteData(0x1A00);//VCA=2.8V
	Hyc_drvLcd_WriteData(0x1100);//Vonreg=4.1v
	Hyc_drvLcd_WriteData(0x1100);//Vforeg=4.1v
	Hyc_drvLcd_WriteData(0x1000);//VDDRH=4.0V
	Hyc_drvLcd_WriteData(0x0700);

	Hyc_drvLcd_WriteInstruct(0x2200);//set positive r correction characteristics
	Hyc_drvLcd_WriteData(0x1400);
	Hyc_drvLcd_WriteData(0xC100);
	Hyc_drvLcd_WriteData(0x2600);
	Hyc_drvLcd_WriteData(0x2A00);
	Hyc_drvLcd_WriteData(0x2300);
	Hyc_drvLcd_WriteData(0x0400);

	Hyc_drvLcd_WriteInstruct(0x2500);//set negative r correction characteristics
	Hyc_drvLcd_WriteData(0x1400);
	Hyc_drvLcd_WriteData(0xC100);
	Hyc_drvLcd_WriteData(0x2600);
	Hyc_drvLcd_WriteData(0x2A00);
	Hyc_drvLcd_WriteData(0x2300);
	Hyc_drvLcd_WriteData(0x0400);

	Hyc_drvLcd_WriteInstruct(0x2100);//set power control
	Hyc_drvLcd_WriteData(0x0100);
	Hyc_drvLcd_WriteData(0x2400);
	Hyc_drvLcd_WriteData(0x0F00);
	Hyc_drvLcd_WriteData(0xFE00);
	Hyc_drvLcd_WriteData(0x3300);
	Hyc_drvLcd_WriteData(0x3100);
	Hyc_drvLcd_WriteData(0xFF00);
	Hyc_drvLcd_WriteData(0x0000);
	Hyc_drvLcd_WriteData(0x0000);
	Hyc_drvLcd_WriteData(0x2200);
	Hyc_drvLcd_WriteData(0x3300);
	Hyc_drvLcd_WriteData(0x1100);
	Hyc_drvLcd_WriteData(0x4400);
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x2300);//set partial power control
	Hyc_drvLcd_WriteData(0x3300);
	Hyc_drvLcd_WriteData(0xFF00);
	Hyc_drvLcd_WriteData(0x0000);
	Hyc_drvLcd_WriteData(0x0000);
	Hyc_drvLcd_WriteData(0x4400);
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x9400);//sleep out

	Hyc_drvLcd_WriteInstruct(0x1500);//set start address
	Hyc_drvLcd_WriteData(0x0000);
	Hyc_drvLcd_WriteData(0x0000);
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x7500);// set end  row and column
	Hyc_drvLcd_WriteData(0xEF00);    // end  row
	Hyc_drvLcd_WriteData(0x0100);    // end  column
	Hyc_drvLcd_WriteData(0x3F00);    // end  column
	
	return;
}


/*-----------------------------------------------------------------------------
* 函数:	Hyc_drvLcd_InitLCDModule()
* 功能:	LCD初始化
* 参数:
* 返回:	none
*----------------------------------------------------------------------------*/
//使用此驱动IC的显示屏有:TFT8899UCTDFW_G_F_LED
void Hyc_drvLcd_InitLCDModule(void)
{
	LcdModulePowerOnOff(0);
	Hyc_drvLcd_InitLcdModuleInstructs();
	Hyc_drvLcd_ClearLcdRAM();

	Hyc_drvLcd_WriteInstruct(0xAF00); //display on
}


/*-----------------------------------------------------------------------------
* 函数:	Hyc_drvLcd_LCDModuleSleepOut()
* 功能:	LCD退出睡眠状态,并送屏一次
* 参数:
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_LCDModuleSleepOut(void)
{
	Hyc_drvLcd_InitLcdModuleInstructs();//sleep out = reInitialize
	Hyc_RefreshScreen();
}


/*-----------------------------------------------------------------------------
* 函数:	Hyc_drvLcd_LCDModulePowerOn()
* 功能:	退出LCD屏保状态,打开LCD模块电源
* 参数:
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_LCDModulePowerOn(void)
{
	Hyc_drvLcd_LCDModuleSleepOut();
	Hyc_drvLcd_WriteInstruct(0xAF00); //display on

	LcdModulePowerOnOff(1);
}



/*-----------------------------------------------------------------------------
* 函数:	Hyc_drvLcd_LCDModulePowerOff()
* 功能:	进入LCD屏保状态,关闭LCD模块电源
* 参数:
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_LCDModulePowerOff(void)
{
	Hyc_drvLcd_WriteInstruct(0xAE00);//display off

	LcdModulePowerOnOff(0);
	Hyc_drvLcd_WriteInstruct(0x9500);//sleep in

}

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



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


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

/*-----------------------------------------------------------------------------
* 函数:	Hyc_drvLcd_SetRowColumn
* 功能:	设置彩色显示屏的显示起始地址,
*	地址为行序号和列序号row和Column,以及高度和宽度
* 参数:	kRow 		- 行序号 , 起始行:0
*	kColumn 	- 列序号 ,起始列:0
*	U16 kHeight 	- 高度
*	U16 kWidth 	- 宽度
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_SetRowColumn_Lcd(RECT *rect)
{
  	Hyc_drvLcd_WriteInstruct(0x1500); // set start address
	Hyc_drvLcd_WriteData((U16)((rect->y&0x00FF)<<8));
	Hyc_drvLcd_WriteData((U16)(rect->x&0x0100));
	Hyc_drvLcd_WriteData((U16)((rect->x&0x00FF)<<8));

 	rect->y=(U16)(rect->y+rect->h-1);
 	rect->x=(U16)(rect->x+rect->w-1);

  	Hyc_drvLcd_WriteInstruct(0x7500); // set end address
	Hyc_drvLcd_WriteData((U16)((rect->y&0x00FF)<<8));
	Hyc_drvLcd_WriteData((U16)(rect->x&0x0100));
	Hyc_drvLcd_WriteData((U16)((rect->x&0x00FF)<<8));

	Hyc_drvLcd_WriteInstruct(0x5C00); //RAM write
}

⌨️ 快捷键说明

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