📄 lcd_driver_kgm281b0_sp100.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 + -