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

📄 lcd_driver_kgm281b0_sp100.c

📁 可以学习
💻 C
字号:
/*
	使用此驱动IC的显示屏有:TFT320240_KGM281B0
*/

/*--------------------------------------------------------------------------
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);
	}
}

/*-----------------------------------------------------------------------------
* 函数:	drvLcd_InitLcdModuleInstructs
* 功能:	LCD模块初始化
* 参数:	none
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_InitLcdModuleInstructs( void)
{
	int i;
	Hyc_drvLcd_WriteInstruct(0x0000);
	Hyc_drvLcd_WriteData(0x0001);

	i=10000;
	while(i--);

	Hyc_drvLcd_WriteInstruct(0x0003);
	Hyc_drvLcd_WriteData(0xE8EE);

	i=5000;
	while(i--);
	Hyc_drvLcd_WriteInstruct(0x000C);
	Hyc_drvLcd_WriteData(0x0007);

	i=5000;
	while(i--);
	Hyc_drvLcd_WriteInstruct(0x000D);
	Hyc_drvLcd_WriteData(0x0308);

	i=5000;
	while(i--);
	Hyc_drvLcd_WriteInstruct(0x000E);
	Hyc_drvLcd_WriteData(0x3A00);

    i=5000;
	while(i--);
	Hyc_drvLcd_WriteInstruct(0x001E);
	Hyc_drvLcd_WriteData(0x00B3);

	i=5000;
	while(i--);  
	Hyc_drvLcd_WriteInstruct(0x0001);
	Hyc_drvLcd_WriteData(0x693F);		//0X693F	//0x6B3F

	Hyc_drvLcd_WriteInstruct(0x0002);	//与闪烁有关,可以设置成闪烁模式
	Hyc_drvLcd_WriteData(0x0600);		//0200 	0x0600

	Hyc_drvLcd_WriteInstruct(0x0010);
	Hyc_drvLcd_WriteData(0x0000);

	//Entry Scan Mode
	Hyc_drvLcd_WriteInstruct(0x0011);
	
	//Hyc_drvLcd_WriteData(0x6818);      //横向  0x6818  纵向0x6800
	Hyc_drvLcd_WriteData(0x6828);

	Hyc_drvLcd_WriteInstruct(0x0005);
	Hyc_drvLcd_WriteData(0x0000);


	Hyc_drvLcd_WriteInstruct(0x0006);
	Hyc_drvLcd_WriteData(0x0000);


	Hyc_drvLcd_WriteInstruct(0x0016);
	Hyc_drvLcd_WriteData(0xEF1C);


	Hyc_drvLcd_WriteInstruct(0x0017);
	Hyc_drvLcd_WriteData(0x0003);

	Hyc_drvLcd_WriteInstruct(0x000B);
	Hyc_drvLcd_WriteData(0x5138);            //0x0000		0x5138    0xD308

	Hyc_drvLcd_WriteInstruct(0x000F);
	Hyc_drvLcd_WriteData(0x0000);            //0x0000   scanning starting position

	Hyc_drvLcd_WriteInstruct(0x0041);
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x0042);
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x0048);
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x0049);
	Hyc_drvLcd_WriteData(0x013F);

	Hyc_drvLcd_WriteInstruct(0x004A);
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x004B);
	Hyc_drvLcd_WriteData(0x0000);

	Hyc_drvLcd_WriteInstruct(0x0023);
	Hyc_drvLcd_WriteData(0x0000);

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

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

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

/*-----------------------------------------------------------------------------
* 函数:	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(0x0033);

	//Hyc_RefreshScreen();
	Hyc_LcdModulePowerOnOff(1);
}

/*-----------------------------------------------------------------------------
* 函数:	drvLcd_LCDModulePowerOff
* 功能:	关闭LCD模块电源
* 参数:	none
* 返回:	none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_LCDModulePowerOff(void)
{
	//Hyc_drvLcd_DisplayOff();
	Hyc_LcdModulePowerOnOff(0);
	
	//Hyc_drvLcd_WriteInstruct(0x0010);	//sleep in
	//Hyc_drvLcd_WriteData(0x0001);		//0x0001
}

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

/*-----------------------------------------------------------------------------
* 函数:	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;

	tempData=(((239-rect->y)<<8)|(239-(rect->y+rect->h-1)));
	Hyc_drvLcd_WriteInstruct(0x0044);                              //Specify the horizontal start/end positions
	Hyc_drvLcd_WriteData(tempData);   
				
	tempData=(0x01FF&(rect->x));                 			//Specify the Vertical start positions
	Hyc_drvLcd_WriteInstruct(0x0045); 
	Hyc_drvLcd_WriteData(tempData); 
				
	tempData=(0x01FF&((rect->x+rect->w-1)));
	Hyc_drvLcd_WriteInstruct(0x0046);                              //Specify the Vertical end positions
	Hyc_drvLcd_WriteData(tempData); 
				
	tempData=(0x00FF&(239-rect->y));
	Hyc_drvLcd_WriteInstruct(0x004E);                              //Specify the x address in RAM
	Hyc_drvLcd_WriteData(tempData); 
			    
	tempData=(0x01FF&(rect->x));
	Hyc_drvLcd_WriteInstruct(0x004F);                              //Specify the y address in RAM
	Hyc_drvLcd_WriteData(tempData);

	Hyc_drvLcd_WriteInstruct(0x0022);                                  //RAM write	
}	

⌨️ 快捷键说明

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