📄 lcd.c
字号:
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x0007 >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x0007 & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA, (0x0037 >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA, (0x0037 & 0x00FF));
LCD_SEND_DMA_CMD(4);
LCD_Delay(40);
*/
//abc end
#elif (defined(LCD_9BIT_MODE))
#elif (defined(LCD_16BIT_MODE))
//ananzwp modified 080123 for zm24D
//ananzwp modified 080125 for zm24D
//*************Power On sequence ****************//
command(0x10, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
command(0x11, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
command(0x12, 0x0000); // VREG1OUT voltage
command(0x13, 0x0000); // VDV[4:0] for VCOM amplitude
delay(10); // Dis-charge capacitor power voltage
command(0x10, 0x1490); // SAP, BT[3:0], AP, DSTB, SLP, STB
command(0x11, 0x0227); // DC1[2:0], DC0[2:0], VC[2:0]0037
delay(5); // Delay 50ms
command(0x12, 0x009C); // VREG1OUT voltage//013a
delay(5); // Delay 50ms
command(0x13, 0x0A00); // VDV[4:0] for VCOM amplitude CPT2.8 0x16-->CPT2.4 0x1a00//1600
command(0x2b, 0x000d);//////
delay(5);
command(0x29, 0x0001); // VCM[4:0] for VCOMH
//delay(10);
command(0x07, 0x0133); // 262K color and display ON
//return;
#if 0
//ananzwp start
#if 0
//LCD_CtrlWrite_ST7787(0x10); // SLPIN
// Delay(100);
LCD_CtrlWrite_ST7787(0x11); // SLPOUT:Sleep out & booster on
Delay(100);
Delay(100);
LCD_CtrlWrite_ST7787(0xB1); // FRMCTR1:
LCD_DataWrite_ST7787(0x20);
LCD_DataWrite_ST7787(0x02);
LCD_DataWrite_ST7787(0x02);
//LCD_CtrlWrite_ST7787(0xBC); // ???
Delay(80);
LCD_CtrlWrite_ST7787(0xC2); // PWCTR3:( in normal)
LCD_DataWrite_ST7787(0x01);
LCD_DataWrite_ST7787(0xD4);
LCD_DataWrite_ST7787(0x85);
LCD_DataWrite_ST7787(0x00);
LCD_DataWrite_ST7787(0x00);
Delay(100);
LCD_CtrlWrite_ST7787(0xC3); // PWCTR4:(in Idle mode )
LCD_DataWrite_ST7787(0x01); // Amount of Current in Operational Amplifier = [APB(2:0)=1]
LCD_DataWrite_ST7787(0x22); // [STEP1B_SEL(4:0)=0,-,STEP2B_SEL(3:0)=0]
LCD_DataWrite_ST7787(0x01); // [-,-,-,-,-,STEP4B_SEL(3:0)=0]
LCD_DataWrite_ST7787(0x00); // [-,STEP1BP_SEL(3:0)=0,-,STEP2BP_SEL(3:0)=0]
LCD_DataWrite_ST7787(0x00); // [-,-,-,-,-,STEP4BP_SEL(3:0)=0]
Delay(120);
//LCD_CtrlWrite_ST7787(0xF2); //
//LCD_DataWrite_ST7787(0x80);
//Delay(50);
LCD_CtrlWrite_ST7787(0xF4); // Setting ARBIT_2
LCD_DataWrite_ST7787(0xFF); // [arb2_wr_sel(3:0)or men_scrd_sel(2:0),arb2_rd_sel(3:0)or men_wr_sel(2:0)]
LCD_DataWrite_ST7787(0x3F); // [ramwrn_sel,arb0_sel,arb2_st_sel(1:0),arb2_wrgap_sel(3:0)]
LCD_CtrlWrite_ST7787(0xF5); // PARAtin DISP
LCD_DataWrite_ST7787(0x10); // [PDM1,PDM0,oe_del_sel1,oe_del_sel0,eqpw1,eqpw0,-,-]
LCD_CtrlWrite_ST7787(0xFB); // Vcom & Source EQ setting (1 PARAMETER)
LCD_DataWrite_ST7787(0x7F); // Vcom_porsel,Vcom_mul_mode,SV_mode,Vcom_mid2_sel(1:0),Vcom_mid1_sel(1:0)]
Delay(50);
LCD_CtrlWrite_ST7787(0xC5); // VMCTR1: Setting VcomH(MTP block)
LCD_DataWrite_ST7787(0x28); // VMH_R: VCOMH(6:0) ,default:28); ,
LCD_DataWrite_ST7787(0x28); // VMH_COLOR8M(6:0): VCOMH ,default:28H
Delay(150);
LCD_CtrlWrite_ST7787(0xC6); // VMCTR2: Setting VcomAC
LCD_DataWrite_ST7787(0x20); // VCOMAC voltage control 14H=5V , 06H=4.3V
LCD_DataWrite_ST7787(0x00); // VCOMAC voltage control in idle mode :default: 0
Delay(120);
Delay(200);
LCD_CtrlWrite_ST7787(0xC0); // PWCTR1: Setting GVDD & Vci1
LCD_DataWrite_ST7787(0x00); // VRH[4:0]==>GVDD
Delay(120);
LCD_CtrlWrite_ST7787(0xB6); // DISSET5: DISPLAY FUNCTION SET
LCD_DataWrite_ST7787(0x02);
LCD_DataWrite_ST7787(0x04);
Delay(50);
LCD_CtrlWrite_ST7787(0xBC); // INVON:DISPLAY INVERSE
Delay(60);
LCD_CtrlWrite_ST7787(0x2A); // COLMOD
LCD_DataWrite_ST7787(0x00); // 65K
LCD_DataWrite_ST7787(0x00);
LCD_DataWrite_ST7787(0x00);
LCD_DataWrite_ST7787(0xEF);
Delay(60);
//LCD_CtrlWrite_ST7787(0x20); // INVON:DISPLAY INVERSE
LCD_CtrlWrite_ST7787(0x3A); // Memory data access control
LCD_DataWrite_ST7787(0x05);
Delay(80);
LCD_CtrlWrite_ST7787(0x2B); // COLMOD
LCD_DataWrite_ST7787(0x00); // 65K
LCD_DataWrite_ST7787(0x00);
LCD_DataWrite_ST7787(0x01);
LCD_DataWrite_ST7787(0x3F);
Delay(200);
//LCD_CtrlWrite_ST7787(0x36); // Memory data access control
// LCD_DataWrite_ST7787(0x00);
LCD_CtrlWrite_ST7787(0x29); // DISPLAY ON
Delay(20);
LCD_CtrlWrite_ST7787(0xB4); // COLMOD
LCD_DataWrite_ST7787(0x04); // 65K
//LCD_DataWrite_ST7787(0x00);
//LCD_DataWrite_ST7787(0x00);
//LCD_DataWrite_ST7787(0xEF);
Delay(100);
//LCD_CtrlWrite_ST7787(0x29); // DISPLAY ON
// Delay(80);
// LCD_ClearAll_ST7787(0x0000);
#else
#if (defined(daonuo))
//Delay(200);
LCD_CtrlWrite_ST7787(0x0010);
LCD_DataWrite_ST7787(0x0000); // SAP, BT[3:0], AP, DSTB, SLP
LCD_CtrlWrite_ST7787(0x0011);
LCD_DataWrite_ST7787(0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_CtrlWrite_ST7787(0x0012);
LCD_DataWrite_ST7787(0x0000); // VREG1OUT voltage
LCD_CtrlWrite_ST7787(0x0013);
LCD_DataWrite_ST7787(0x0000); // VDV[4:0] for VCOM amplitude
Delay(200); // Dis-charge capacitor power voltage
LCD_CtrlWrite_ST7787(0x0010);
LCD_DataWrite_ST7787(0x17B0);
Delay(20);
LCD_CtrlWrite_ST7787(0x0011);
LCD_DataWrite_ST7787(0x0037);
LCD_CtrlWrite_ST7787(0x0012);
LCD_DataWrite_ST7787(0x0137);
Delay(60);
LCD_CtrlWrite_ST7787(0x0013);
LCD_DataWrite_ST7787(0x1C00);
Delay(50);
LCD_CtrlWrite_ST7787(0x0029);
LCD_DataWrite_ST7787(0x000E); // R29h=0x0008 at VCI=3.3V VCM[4:0] for VCOMH
Delay(50);
LCD_CtrlWrite_ST7787(0x0007);
LCD_DataWrite_ST7787(0x0137); // 262K color and display ON
#elif (defined(ili9320))
LCD_CtrlWrite_ST7787(0x0010);
LCD_DataWrite_ST7787(0x0000); // SAP, BT[3:0], AP, DSTB, SLP
LCD_CtrlWrite_ST7787(0x0011);
LCD_DataWrite_ST7787(0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_CtrlWrite_ST7787(0x0012);
LCD_DataWrite_ST7787(0x0000); // VREG1OUT voltage
LCD_CtrlWrite_ST7787(0x0013);
LCD_DataWrite_ST7787(0x0000); // VDV[4:0] for VCOM amplitude
Delay(200); // Dis-charge capacitor power voltage
LCD_CtrlWrite_ST7787(0x0010);
LCD_DataWrite_ST7787(0x17B0);
Delay(20);
LCD_CtrlWrite_ST7787(0x0011);
LCD_DataWrite_ST7787(0x0037);
LCD_CtrlWrite_ST7787(0x0012);
LCD_DataWrite_ST7787(0x0137);
Delay(60);
LCD_CtrlWrite_ST7787(0x0013);
LCD_DataWrite_ST7787(0x1C00);
Delay(50);
LCD_CtrlWrite_ST7787(0x0029);
LCD_DataWrite_ST7787(0x000E); // R29h=0x0008 at VCI=3.3V VCM[4:0] for VCOMH
Delay(50);
LCD_CtrlWrite_ST7787(0x0007);
LCD_DataWrite_ST7787(0x0137); //
#elif (defined(tianma))||(defined(yaxin))||(defined(cpt28))||(defined(linda))
LCD_Init_ST7787(0, 0);
#elif defined(HX8347)
//return ;
LCD_CtrlWrite_ST7787(0x0019);
LCD_DataWrite_ST7787(0x0049);
Delay(50);
LCD_CtrlWrite_ST7787(0x001B);
LCD_DataWrite_ST7787(0x0008);
LCD_CtrlWrite_ST7787(0x0020);
LCD_DataWrite_ST7787(0x0040);
LCD_CtrlWrite_ST7787(0x001D);
LCD_DataWrite_ST7787(0x0007);
LCD_CtrlWrite_ST7787(0x001E);
LCD_DataWrite_ST7787(0x0000);
LCD_CtrlWrite_ST7787(0x001F);
LCD_DataWrite_ST7787(0x0004);
LCD_CtrlWrite_ST7787(0x0044);
LCD_DataWrite_ST7787(0x004D);
LCD_CtrlWrite_ST7787(0x0045);
LCD_DataWrite_ST7787(0x0011);
Delay(50);
LCD_CtrlWrite_ST7787(0x001C);
LCD_DataWrite_ST7787(0x0004);
Delay(80);
LCD_CtrlWrite_ST7787(0x001B);
LCD_DataWrite_ST7787(0x0018);
Delay(80);
LCD_CtrlWrite_ST7787(0x001B);
LCD_DataWrite_ST7787(0x0010);
Delay(60);
LCD_CtrlWrite_ST7787(0x0043);
LCD_DataWrite_ST7787(0x0080);
Delay(80);
LCD_CtrlWrite_ST7787(0x0090);
LCD_DataWrite_ST7787(0x007F);
Delay(50);
LCD_CtrlWrite_ST7787(0x0026);
LCD_DataWrite_ST7787(0x0004);
Delay(50);
LCD_CtrlWrite_ST7787(0x0026);
LCD_DataWrite_ST7787(0x0024);
LCD_CtrlWrite_ST7787(0x0026);
LCD_DataWrite_ST7787(0x002C);
Delay(50);
LCD_CtrlWrite_ST7787(0x0026);
LCD_DataWrite_ST7787(0x003C);
#endif
// LCD_Init_ST7787(0, 0);
//Delay(200);
#endif
#endif
#elif (defined(LCD_18BIT_MODE))
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0012&0xFF00)<<2)|((0x0012&0xFF)<<1));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((lcd_power_ctrl_shadow3&0xFF00)<<2)|((lcd_power_ctrl_shadow3&0xFF)<<1));
SET_LCD_CMD_PARAMETER(2,LCD_CMD,((0x0013&0xFF00)<<2)|((0x0013&0xFF)<<1));
SET_LCD_CMD_PARAMETER(3,LCD_DATA,((lcd_power_ctrl_shadow4&0xFF00)<<2)|((lcd_power_ctrl_shadow4&0xFF)<<1));
SET_LCD_CMD_PARAMETER(4,LCD_CMD,((0x0010&0xFF00)<<2)|((0x0010&0xFF)<<1));
SET_LCD_CMD_PARAMETER(5,LCD_DATA,((lcd_power_ctrl_shadow1&0xFF00)<<2)|((lcd_power_ctrl_shadow1&0xFF)<<1));
LCD_SEND_DMA_CMD(6);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0007&0xFF00)<<2)|((0x0007&0xFF)<<1));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((0x0005&0xFF00)<<2)|((0x0005&0xFF)<<1));
LCD_SEND_DMA_CMD(2);
LCD_Delay(0x1000);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0007&0xFF00)<<2)|((0x0007&0xFF)<<1));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((0x0025&0xFF00)<<2)|((0x0025&0xFF)<<1));
LCD_SEND_DMA_CMD(2);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0007&0xFF00)<<2)|((0x0007&0xFF)<<1));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((0x0027&0xFF00)<<2)|((0x0027&0xFF)<<1));
LCD_SEND_DMA_CMD(2);
LCD_Delay(0x1000);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0007&0xFF00)<<2)|((0x0007&0xFF)<<1));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((0x0037&0xFF00)<<2)|((0x0037&0xFF)<<1));
LCD_SEND_DMA_CMD(2);
LCD_Delay(0x1000);
#endif
#else
LCD_CtrlWrite_ST7787(0x0010);
LCD_DataWrite_ST7787(lcd_power_ctrl_shadow1);
LCD_CtrlWrite_ST7787(0x0012);
LCD_DataWrite_ST7787(lcd_power_ctrl_shadow3);
LCD_CtrlWrite_ST7787(0x0013);
LCD_DataWrite_ST7787(lcd_power_ctrl_shadow4);
LCD_CtrlWrite_ST7787(0x0007);
LCD_DataWrite_ST7787(0x0005);
LCD_Delay(0x1000);
LCD_CtrlWrite_ST7787(0x0007);
LCD_DataWrite_ST7787(0x0025);
LCD_CtrlWrite_ST7787(0x0007);
LCD_DataWrite_ST7787(0x0027);
LCD_Delay(0x1000);
LCD_CtrlWrite_ST7787(0x0007);
LCD_DataWrite_ST7787(0x0037);
LCD_Delay(0x1000);
#endif
}
void LCD_Partial_On_ST7787(kal_uint16 start_page,kal_uint16 end_page)
{
return; //abc
#if (defined(LCD_CMD_DMA_MODE))
#if (defined(LCD_8BIT_MODE))
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x0007 >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x0007 & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA, (0x003F & 0x00FF));
SET_LCD_CMD_PARAMETER(3,LCD_DATA, (0x003F & 0x00FF));
SET_LCD_CMD_PARAMETER(4,LCD_CMD, (0x0042 >> 8));
SET_LCD_CMD_PARAMETER(5,LCD_CMD, (0x0042 & 0x00FF));
SET_LCD_CMD_PARAMETER(6,LCD_DATA, (end_page & 0x00FF));
SET_LCD_CMD_PARAMETER(7,LCD_DATA, (start_page & 0x00FF));
LCD_SEND_DMA_CMD(8);
#elif (defined(LCD_9BIT_MODE))
#elif (defined(LCD_16BIT_MODE))
LCD_set_reg(0x0007, 0x003f);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,(0x0042&0xFF00) | (0x0042&0xFF));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((end_page&0xFF)<<8)|(start_page&0xFF));
LCD_SEND_DMA_CMD(2);
#elif (defined(LCD_18BIT_MODE))
LCD_CtrlWrite_ST7787(0x0007);
LCD_DataWrite_ST7787(0x003f);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0042&0xFF00)<<2)|((0x0042&0xFF)<<1));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((end_page&0xFF)<<10)|((start_page&0xFF)<<1));
LCD_SEND_DMA_CMD(2);
#endif
#else
LCD_set_reg(0x0007, 0x003f);
LCD_set_reg(0x0042, (start_page & 0xFF) | ((end_page & 0xFF) << 8));
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -