📄 lcd_driver_cmt024cpt87_36v2_st7787.c
字号:
/*
使用此驱动IC的显示屏有:TFT320240_KGM281E0
*/
/*--------------------------------------------------------------------------
Standard include files:
--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------
*INCLUDES
--------------------------------------------------------------------------*/
#include "Interface.h"
#define LCDPOWER_GPIO GPIO_8
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);
}
}
//使用此驱动IC的显示屏有:TFT320240_KGM281E0
/*-----------------------------------------------------------------------------
* 函数: drvLcd_InitLcdModuleInstructs
* 功能: LCD模块初始化
* 参数: none
* 返回: none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_InitLcdModuleInstructs( void)
{
int i,j;
Hyc_drvLcd_WriteInstruct(0x10); //Sleep in &booster off
i=1200000;
while(i--);
Hyc_drvLcd_WriteInstruct(0x11); //Sleep out &booster on
i=1200000;
while(i--);
Hyc_drvLcd_WriteInstruct(0xb1); // ;frame
Hyc_drvLcd_WriteData(0x26); //26
Hyc_drvLcd_WriteData(0x04); //02
Hyc_drvLcd_WriteData(0x04); //02
Hyc_drvLcd_WriteInstruct(0xbc);
Hyc_drvLcd_WriteInstruct(0xc2); //Power Control 3 ( in normal)
Hyc_drvLcd_WriteData(0x01); //03
Hyc_drvLcd_WriteData(0xd6);
Hyc_drvLcd_WriteData(0x86); //0x83
Hyc_drvLcd_WriteData(0x00);
Hyc_drvLcd_WriteData(0x00);
i=12000;
while(i--);
Hyc_drvLcd_WriteInstruct(0xc3); //;Power Control 4 (in Idle mode )
Hyc_drvLcd_WriteData(0x01); //02;Amount of Current in Operational Amplifier = [APB(2:0)=1]
Hyc_drvLcd_WriteData(0x66);//44 //;[STEP1B_SEL(4:0)=0,-,STEP2B_SEL(3:0)=0]
Hyc_drvLcd_WriteData(0x03);//01 //;[-,-,-,-,-,STEP4B_SEL(3:0)=0]
Hyc_drvLcd_WriteData(0x00); //;[-,STEP1BP_SEL(3:0)=0,-,STEP2BP_SEL(3:0)=0]
Hyc_drvLcd_WriteData(0x00); //;[-,-,-,-,-,STEP4BP_SEL(3:0)=0]
i=12000;
while(i--);
Hyc_drvLcd_WriteInstruct(0xf4); //;Setting ARBIT_2
Hyc_drvLcd_WriteData(0xff); //;[arb2_wr_sel(3:0)or men_scrd_sel(2:0),arb2_rd_sel(3:0)or men_wr_sel(2:0)]
Hyc_drvLcd_WriteData(0x3f); //;[ramwrn_sel,arb0_sel,arb2_st_sel(1:0),arb2_wrgap_sel(3:0)]
Hyc_drvLcd_WriteInstruct(0xf5); //;PARAtin DISP
Hyc_drvLcd_WriteData(0x10); //;[PDM1,PDM0,oe_del_sel1,oe_del_sel0,eqpw1,eqpw0,-,-]
Hyc_drvLcd_WriteInstruct(0xfb); //Vcom & Source EQ setting (1 PARAMETER)
Hyc_drvLcd_WriteData(0x7f); //;Vcom_porsel,Vcom_mul_mode,SV_mode,Vcom_mid2_sel(1:0),Vcom_mid1_sel(1:0)]
Hyc_drvLcd_WriteInstruct(0xc5); //;Setting VcomH(MTP block)
Hyc_drvLcd_WriteData(0xc2); //;VMH_R: VCOMH(6:0) ,default:28H
Hyc_drvLcd_WriteData(0x1a); //;VMH_COLOR8M(6:0): VCOMH ,default:28H
Hyc_drvLcd_WriteInstruct(0xc6); //Setting VcomAC
Hyc_drvLcd_WriteData(0x26); //24 //VCOMAC voltage control 14h=5V , 06h=4.3V
Hyc_drvLcd_WriteData(0x00); //VCOMAC voltage control in idle mode :default: 0
i=12000;
while(i--);
Hyc_drvLcd_WriteInstruct(0xc0); //Power control 1 : Setting GVDD & Vci1
Hyc_drvLcd_WriteData(0x00); //VRH[4:0]==>GVDD
Hyc_drvLcd_WriteInstruct(0xb6); // DISPLAY FUNCTION SET
Hyc_drvLcd_WriteData(0x02);
Hyc_drvLcd_WriteData(0x04);
Hyc_drvLcd_WriteInstruct(0x36); // DISPLAY FUNCTION SET
Hyc_drvLcd_WriteData(0xA0); //0x60
Hyc_drvLcd_WriteInstruct(0x20); //DISPLAY INVERSE
Hyc_drvLcd_WriteInstruct(0x3a);
Hyc_drvLcd_WriteData(0x05); //65K
Hyc_drvLcd_WriteInstruct(0x29); //DISPLAY ON
}
/*-----------------------------------------------------------------------------
* 函数: drvLcd_DisplayOn
* 功能: 打开显示
* 参数: none
* 返回: none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_DisplayOn(void)
{
Hyc_drvLcd_WriteInstruct(0x29); //display on
// delay(40);
// Hyc_drvLcd_WriteData(0x0020);
}
/*-----------------------------------------------------------------------------
* 函数: drvLcd_DisplayOff
* 功能: 关闭显示
* 参数: none
* 返回: none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_DisplayOff(void)
{
Hyc_drvLcd_WriteInstruct(0x28); //display off
// delay(40);
// Hyc_drvLcd_WriteData(0x3B00); //0x0001
}
/*-----------------------------------------------------------------------------
* 函数: drvLcd_LCDModulePowerOn
* 功能: 打开LCD模块电源
* 参数: none
* 返回: none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_LCDModulePowerOn(void)
{
Hyc_drvLcd_InitLcdModuleInstructs(); //sleep out = reInitialize
Hyc_drvLcd_DisplayOn();
Hyc_RefreshScreen_Lcd();
Hyc_LcdModulePowerOnOff(1);
}
/*-----------------------------------------------------------------------------
* 函数: drvLcd_LCDModulePowerOff
* 功能: 关闭LCD模块电源
* 参数: none
* 返回: none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_LCDModulePowerOff(void)
{
Hyc_drvLcd_DisplayOff();
Hyc_LcdModulePowerOnOff(0);
Hyc_drvLcd_WriteInstruct(0x28); //display off
Hyc_drvLcd_WriteInstruct(0x10);
}
/*-----------------------------------------------------------------------------
* 函数: drvLcd_InitLCDModule
* 功能:
* 参数: none
* 返回: none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_InitLCDModule(void)
{
Hyc_LcdModulePowerOnOff(0);
Hyc_drvLcd_InitLcdModuleInstructs();
Hyc_drvLcd_ClearLcdRAM();
Hyc_drvLcd_DisplayOn();
Hyc_LcdModulePowerOnOff(1);
}
/*-----------------------------------------------------------------------------
* 函数: drvLcd_ContrastAdjust
* 功能: 调整对比度
* 参数: none
* 返回: none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_ContrastAdjust (U8 u8Contrast)
{
//待实现
}
/*-----------------------------------------------------------------------------
* 函数: Hyc_drvLcd_SetRowColumn_Lcd
* 功能: 设置彩色显示屏的显示起始地址,地址为行序号和列序号row和Column,以及高度
* 和宽度
* 参数: rect
* 返回: none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_SetRowColumn_Lcd(RECT *rect)
{
U16 tempData;
/*
tempData=(0x00FF&rect->y);
Hyc_drvLcd_WriteInstruct(0x0020); //Specify the x address in RAM
Hyc_drvLcd_WriteData(tempData);
tempData=(0x01FF&rect->x);
Hyc_drvLcd_WriteInstruct(0x0021); //Specify the y address in RAM
Hyc_drvLcd_WriteData(tempData);
tempData=(0x00FF&rect->y);
Hyc_drvLcd_WriteInstruct(0x0050); //Specify the horizontal start positions
Hyc_drvLcd_WriteData(tempData);
tempData=(0x00FF&(rect->y+rect->h-1)); //Specify the horizontal end positions
Hyc_drvLcd_WriteInstruct(0x0051);
Hyc_drvLcd_WriteData(tempData);
tempData=(0x01FF&rect->x);
Hyc_drvLcd_WriteInstruct(0x0052); //Specify the Vertical start positions
Hyc_drvLcd_WriteData(tempData);
tempData=(0x01FF&(rect->x+rect->w-1));
Hyc_drvLcd_WriteInstruct(0x0053); //Specify the Vertical end positions
Hyc_drvLcd_WriteData(tempData);
Hyc_drvLcd_WriteInstruct(0x0022); //RAM write
*/
Hyc_drvLcd_WriteInstruct(0x2a);
Hyc_drvLcd_WriteData(0x0001&(rect->x>>8));
Hyc_drvLcd_WriteData(0x00FF&rect->x);
tempData=rect->x+rect->w-1;
Hyc_drvLcd_WriteData(0x0001&(tempData>>8));
Hyc_drvLcd_WriteData(0x00FF&tempData);
Hyc_drvLcd_WriteInstruct(0x2b); //Specify the y address in RAM
Hyc_drvLcd_WriteData(0x0001&(rect->y>>8));
Hyc_drvLcd_WriteData(0x00FF&rect->y);
tempData=rect->y+rect->h-1;
Hyc_drvLcd_WriteData(0x0001&(tempData>>8));
Hyc_drvLcd_WriteData(0x00FF&tempData);
Hyc_drvLcd_WriteInstruct(0x2c);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -