📄 lcd_driver_cmt024hsi20_36av1_ili9320_0623.c
字号:
/*
使用此驱动IC的显示屏有:TFT320240_KGM281E0
*/
/*--------------------------------------------------------------------------
Standard include files:
--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------
*INCLUDES
--------------------------------------------------------------------------*/
#include "Interface.h"
#define LCDPOWER_GPIO GPIO_8
/*-----------------------------------------------------------------------------
* 函数: 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;
Hyc_drvLcd_WriteInstruct(0x00E5); // Start internal OSC.
Hyc_drvLcd_WriteData(0x8000);
Hyc_drvLcd_WriteInstruct(0x0000); // Start internal OSC.
Hyc_drvLcd_WriteData(0x0001);
Hyc_drvLcd_WriteInstruct(0x0001); // set SS and SM bit
Hyc_drvLcd_WriteData(0x0100);
Hyc_drvLcd_WriteInstruct(0x0002);
Hyc_drvLcd_WriteData(0x0700);
Hyc_drvLcd_WriteInstruct(0x0003); //vertical scan--
Hyc_drvLcd_WriteData(0x1008); // 0x10B0 0x1018 0x1038
Hyc_drvLcd_WriteInstruct(0x0004); // Resize register
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x0008); // set the back porch and front porch
Hyc_drvLcd_WriteData(0x0202);
Hyc_drvLcd_WriteInstruct(0x0009); // set non-display area refresh cycle ISC[3:0]
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x000A); // FMARK function
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x000C); // RGB interface setting
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x000D); // Frame marker Position
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x000F); // RGB interface polarity
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x0010); // SAP, BT[3:0], AP, DSTB, SLP, STB
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x0011); // DC1[2:0], DC0[2:0], VC[2:0]
Hyc_drvLcd_WriteData(0x0007);
Hyc_drvLcd_WriteInstruct(0x0012); // VREG1OUT voltage
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x0013); // VDV[4:0] for VCOM amplitude
Hyc_drvLcd_WriteData(0x0000);
i=25000;
while(i--); // Dis-charge capacitor power voltage
Hyc_drvLcd_WriteInstruct(0x0010); // SAP, BT[3:0], AP, DSTB, SLP, STB
Hyc_drvLcd_WriteData(0x17B0); //0X1690,0x17B0
Hyc_drvLcd_WriteInstruct(0x0011); // DC1[2:0], DC0[2:0], VC[2:0]
Hyc_drvLcd_WriteData(0x0137); //0x0001
i=25000;
while(i--); // Delay 50ms
Hyc_drvLcd_WriteInstruct(0x0012); // VREG1OUT voltage此参数如调得过小,会出现屏闪
Hyc_drvLcd_WriteData(0x013e); //0X013e,0x013C
i=25000;
while(i--); // Delay 50ms
Hyc_drvLcd_WriteInstruct(0x0013); // VDV[4:0] for VCOM amplitude调大后会出现明显色阶,且变暗
Hyc_drvLcd_WriteData(0x1c00); //0X1a00,0x1300 0x1800
Hyc_drvLcd_WriteInstruct(0x0029); // VCM[4:0] for VCOMH
Hyc_drvLcd_WriteData(0x0017); //0X0000,0x0004 0x0012
i=25000;
while(i--); // Delay 50ms
Hyc_drvLcd_WriteInstruct(0x0020); // GRAM horizontal Address
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x0021); // GRAM Vertical Address
Hyc_drvLcd_WriteData(0x0000);
//Hyc_drvLcd_WriteInstruct(0x002B); // Frame Rate and Color Control-----16M_EN, Dither, FR_SEL[1:0]
//Hyc_drvLcd_WriteData(0x0010);
// ---------- Gamma Control ---------- //
//V3.0
Hyc_drvLcd_WriteInstruct(0x0030);
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x0031);
Hyc_drvLcd_WriteData(0x0403); //0x0306
Hyc_drvLcd_WriteInstruct(0x0032);
Hyc_drvLcd_WriteData(0x0400); //0x0200
Hyc_drvLcd_WriteInstruct(0x0035);
Hyc_drvLcd_WriteData(0x0005); //0x0107
Hyc_drvLcd_WriteInstruct(0x0036);
Hyc_drvLcd_WriteData(0x0006); //0x0404
Hyc_drvLcd_WriteInstruct(0x0037);
Hyc_drvLcd_WriteData(0x0606); //0x0606
Hyc_drvLcd_WriteInstruct(0x0038);
Hyc_drvLcd_WriteData(0x0106); //0x0105
Hyc_drvLcd_WriteInstruct(0x0039);
Hyc_drvLcd_WriteData(0x0007);
Hyc_drvLcd_WriteInstruct(0x003C);
Hyc_drvLcd_WriteData(0x0700); //0x0600
Hyc_drvLcd_WriteInstruct(0x003D);
Hyc_drvLcd_WriteData(0x0707);
// ---------- Window Address Area ---------- //
Hyc_drvLcd_WriteInstruct(0x0050); // Horizontal GRAM Start Address-----HSA[7:0]
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x0051); // Horizontal GRAM End Address-----HEA[7:0]
Hyc_drvLcd_WriteData(0x00EF);
Hyc_drvLcd_WriteInstruct(0x0052); // Vertical GRAM Start Address-----VSA[8:0]
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x0053); // Vertical GRAM Start Address-----VEA[8:0]
Hyc_drvLcd_WriteData(0x013F);
// ---------- Gate Scan Control ---------- //
//Hyc_drvLcd_WriteInstruct(0x0060); // GS, NL[5:0], SCN[5:0]--
//Hyc_drvLcd_WriteData(0x2700);
Hyc_drvLcd_WriteInstruct(0x0060); //vertical scan
Hyc_drvLcd_WriteData(0xA700); //0xA700
Hyc_drvLcd_WriteInstruct(0x0061); // NDL,VLE, REV
Hyc_drvLcd_WriteData(0x0001);
Hyc_drvLcd_WriteInstruct(0x006A); // VL[8:0]
Hyc_drvLcd_WriteData(0x0000);
// ---------- Partial Display Control ---------- //
Hyc_drvLcd_WriteInstruct(0x0080); // Partial Image 1 Display Position-----PTDP0[8:0]
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x0081); // Partial Image 1 Start Address-----PTSA0[8:0]
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x0082); // Partial Image 1 End Address-----PTEA0[8:0]
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x0083); // Partial Image 2 Display Position-----PTDP1[8:0]
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x0084); // Partial Image 2 Start Address-----PTSA1[8:0]
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x0085); // Partial Image 2 Start Address-----PTEA1[8:0]
Hyc_drvLcd_WriteData(0x0000);
// ---------- Panel Interface Control ---------- //
Hyc_drvLcd_WriteInstruct(0x0090); // Panel Interface Control 1-----DIVI[1:0], RTNI[4:0]
Hyc_drvLcd_WriteData(0x0010); //0x0013
Hyc_drvLcd_WriteInstruct(0x0092); // Panel Interface Control 2-----NOWI[2:0]
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x0093); // Panel Interface Control 3-----MCPI[2:0]
Hyc_drvLcd_WriteData(0x0003);
Hyc_drvLcd_WriteInstruct(0x0095); // Panel Interface Control 4-----DIVE[1:0], RTNE[5:0]
Hyc_drvLcd_WriteData(0x0110);
Hyc_drvLcd_WriteInstruct(0x0097); // Panel Interface Control 5-----NOWE[3:0]
Hyc_drvLcd_WriteData(0x0000);
Hyc_drvLcd_WriteInstruct(0x0098); // Panel Interface Control 6-----MCPE[2:0]
Hyc_drvLcd_WriteData(0x0000);
//Hyc_drvLcd_WriteInstruct(0x0007); // Display Control 1
//Hyc_drvLcd_WriteData(0x0001);
//i=25000;
//while(i--);
//Hyc_drvLcd_WriteInstruct(0x0007); // Display Control 1
//Hyc_drvLcd_WriteData(0x0021);
//Hyc_drvLcd_WriteInstruct(0x0007); // Display Control 1
//Hyc_drvLcd_WriteData(0x0023);
//i=25000;
//while(i--);
Hyc_drvLcd_WriteInstruct(0x0007); // Display Control 1-----262K color and display ON
Hyc_drvLcd_WriteData(0x0173);
}
/*-----------------------------------------------------------------------------
* 函数: drvLcd_DisplayOn
* 功能: 打开显示
* 参数: none
* 返回: none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_DisplayOn(void)
{
Hyc_drvLcd_WriteInstruct(0x0007); //display on
Hyc_drvLcd_WriteData(0x0173);
}
/*-----------------------------------------------------------------------------
* 函数: 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(0x0173);
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(0x0010); //sleep in
Hyc_drvLcd_WriteData(0x17B2); //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)
{
//待实现
}
/*-----------------------------------------------------------------------------
* 函数: Hyc_drvLcd_SetRowColumn_Lcd
* 功能: 设置彩色显示屏的显示起始地址,地址为行序号和列序号row和Column,以及高度
* 和宽度
* 参数: rect
* 返回: none
*----------------------------------------------------------------------------*/
void Hyc_drvLcd_SetRowColumn_Lcd(RECT *rect)
{
U16 tempData;
tempData=(0x00FF&(239-rect->y));
Hyc_drvLcd_WriteInstruct(0x0020); //Specify the x address in RAM
Hyc_drvLcd_WriteData(tempData);
tempData=(0x01FF&(319-rect->x));
Hyc_drvLcd_WriteInstruct(0x0021); //Specify the y address in RAM
Hyc_drvLcd_WriteData(tempData);
tempData=(0x00FF&(239-(rect->y+rect->h-1))); //Specify the horizontal end positions
Hyc_drvLcd_WriteInstruct(0x0050); //Specify the horizontal start positions
Hyc_drvLcd_WriteData(tempData);
tempData=(0x00FF&(239-rect->y));
Hyc_drvLcd_WriteInstruct(0x0051);
Hyc_drvLcd_WriteData(tempData);
tempData=(0x01FF&(319-(rect->x+rect->w-1)));
Hyc_drvLcd_WriteInstruct(0x0052); //Specify the Vertical start positions
Hyc_drvLcd_WriteData(tempData);
tempData=(0x01FF&(319-rect->x));
Hyc_drvLcd_WriteInstruct(0x0053); //Specify the Vertical end positions
Hyc_drvLcd_WriteData(tempData);
Hyc_drvLcd_WriteInstruct(0x0022); //RAM write
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -