📄 lcd.c
字号:
LCD_Delay(100);
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x0010 >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x0010 & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA, (lcd_power_ctrl_shadow1 >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA, (lcd_power_ctrl_shadow1 & 0x00FF));
LCD_SEND_DMA_CMD(4);
LCD_Delay(800);
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x0012 >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x0012 & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA, (lcd_power_ctrl_shadow3 >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA, (lcd_power_ctrl_shadow3 & 0x00FF));
SET_LCD_CMD_PARAMETER(4,LCD_CMD, (0x0013 >> 8));
SET_LCD_CMD_PARAMETER(5,LCD_CMD, (0x0013 & 0x00FF));
SET_LCD_CMD_PARAMETER(6,LCD_DATA, (lcd_power_ctrl_shadow4 >> 8));
SET_LCD_CMD_PARAMETER(7,LCD_DATA, (lcd_power_ctrl_shadow4 & 0x00FF));
LCD_SEND_DMA_CMD(8);
LCD_Delay(100);
*/
//abc start
LCD_set_reg(0x0007,0x0000);
LCD_Delay(25);
LCD_set_reg(0x000E,0x101C);
LCD_Delay(25);
LCD_set_reg(0x000D,0x0000);
LCD_Delay(25);
LCD_set_reg(0x0009,0x0008);
LCD_Delay(25);
LCD_set_reg(0x0003,0x0000);
LCD_Delay(25);
LCD_set_reg(0x0003,0x0002);
LCD_Delay(25);
//lcd_power_ctrl_shadow1 0x03
//lcd_power_ctrl_shadow3 0x0C
//lcd_power_ctrl_shadow4 0x0D
/*
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, (0x0000 >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA, (0x0000 & 0x00FF));
LCD_SEND_DMA_CMD(4);
LCD_Delay(40);
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x000E >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x000E & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA, (0x101C >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA, (0x101C & 0x00FF));
LCD_SEND_DMA_CMD(4);
LCD_Delay(40);
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x000D >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x000D & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA,(0x0000 >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA,(0x0000 & 0x00FF));
LCD_SEND_DMA_CMD(4);
LCD_Delay(40);
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x0009 >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x0009 & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA,(0x0008 >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA,(0x0008 & 0x00FF));
LCD_SEND_DMA_CMD(4);
LCD_Delay(40);
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x0003 >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x0003 & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA,(0x0000 >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA,(0x0000 & 0x00FF));
LCD_SEND_DMA_CMD(4);
LCD_Delay(40);
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x0003 >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x0003 & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA,(0x0002 >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA,(0x0002 & 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
command(0x0007, 0x0000); // display OFF
command(0x0007, 0x0131);
command(0x0007, 0x0130);
command(0x0007, 0x0000);
//************* Power OFF sequence **************//
command(0x0010, 0x0000); // SAP, BT[3:0], APE, AP, DSTB, SLP
command(0x0011, 0x0000); // DC1[2:0], DC0[2:0], VC[2:0]
command(0x0012, 0x0000); // VREG1OUT voltage
command(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude
delayms(10); // Dis-charge capacitor power voltage
command(0x0010, 0x0002); // SAP, BT[3:0], APE, AP, DSTB, SLP
return;
#if 0
#if 0
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0007&0xFF00))|((0x0007&0xFF)));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((0x0036&0xFF00))|((0x0036&0xFF)));
LCD_SEND_DMA_CMD(2);
LCD_Delay(0x1000);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0007&0xFF00))|((0x0007&0xFF)));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((0x0026&0xFF00))|((0x0026&0xFF)));
LCD_SEND_DMA_CMD(2);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0007&0xFF00))|((0x0007&0xFF)));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((0x0004&0xFF00))|((0x0004&0xFF)));
LCD_SEND_DMA_CMD(2);
LCD_Delay(0x1000);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0010&0xFF00))|((0x0010&0xFF)));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((lcd_power_ctrl_shadow1&0xFF00))|((lcd_power_ctrl_shadow1&0xFF)));
LCD_SEND_DMA_CMD(2);
LCD_Delay(0x8000);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0012&0xFF00))|((0x0012&0xFF)));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((lcd_power_ctrl_shadow3&0xFF00))|((lcd_power_ctrl_shadow3&0xFF)));
SET_LCD_CMD_PARAMETER(2,LCD_CMD,((0x0013&0xFF00))|((0x0013&0xFF)));
SET_LCD_CMD_PARAMETER(3,LCD_DATA,((lcd_power_ctrl_shadow4&0xFF00))|((lcd_power_ctrl_shadow4&0xFF)));
LCD_SEND_DMA_CMD(4);
LCD_Delay(0x1000);
#endif
//ananzwp start
#if (defined(tianma))||(defined(yaxin))
LCD_CtrlWrite_ST7787(0x28);
//LCD_DataWrite_HX8306A(0x10);
Delay(50);
LCD_CtrlWrite_ST7787(0x10);
#elif (defined(daonuo))
//ananzwp start 070928
LCD_CtrlWrite_ST7787(0x0007);
LCD_DataWrite_ST7787(0x0000); // display OFF
//************* Power OFF sequence **************//
LCD_CtrlWrite_ST7787(0x0010);
LCD_DataWrite_ST7787(0x0000); // SAP, BT[3:0], APE, AP, DSTB, SLP
LCD_CtrlWrite_ST7787(0x0011);
LCD_DataWrite_ST7787(0x0000); // 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(50); // Dis-charge capacitor power voltage
LCD_CtrlWrite_ST7787(0x0010);
LCD_DataWrite_ST7787(0x0002); // SAP,
#elif (defined(ili9320))
LCD_CtrlWrite_ST7787(0x0007);
LCD_DataWrite_ST7787(0x0000); // display OFF
//************* Power OFF sequence **************//
LCD_CtrlWrite_ST7787(0x0010);
LCD_DataWrite_ST7787(0x0000); // SAP, BT[3:0], APE, AP, DSTB, SLP
LCD_CtrlWrite_ST7787(0x0011);
LCD_DataWrite_ST7787(0x0000); // 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(50); // Dis-charge capacitor power voltage
LCD_CtrlWrite_ST7787(0x0010);
LCD_DataWrite_ST7787(0x0002); // SAP, BT[3:0], APE, AP, DSTB, SLP
#elif (defined(cpt28))||(defined(linda))
LCD_CtrlWrite_ST7787(0x0010);
LCD_DataWrite_ST7787(0x0002);
Delay(100);
#elif defined(HX8347)
//return;
LCD_CtrlWrite_ST7787(0x0026);
LCD_DataWrite_ST7787(0x0038);
Delay(80);
LCD_CtrlWrite_ST7787(0x0026);
LCD_DataWrite_ST7787(0x0028);
Delay(80);
LCD_CtrlWrite_ST7787(0x0026);
LCD_DataWrite_ST7787(0x0000);
LCD_CtrlWrite_ST7787(0x0043);
LCD_DataWrite_ST7787(0x0000);
Delay(60);
LCD_CtrlWrite_ST7787(0x001B);
LCD_DataWrite_ST7787(0x0000);
Delay(40);
LCD_CtrlWrite_ST7787(0x0010);
LCD_DataWrite_ST7787(0x0008);
Delay(40);
LCD_CtrlWrite_ST7787(0x001C);
LCD_DataWrite_ST7787(0x0000);
Delay(40);
LCD_CtrlWrite_ST7787(0x0090);
LCD_DataWrite_ST7787(0x0000);
Delay(40);
LCD_CtrlWrite_ST7787(0x001B);
LCD_DataWrite_ST7787(0x0009);
Delay(40);
LCD_CtrlWrite_ST7787(0x0019);
LCD_DataWrite_ST7787(0x0048);
#endif
#if 0
//ananzwp start 070928
LCD_CtrlWrite_ST7787(0x0007);
LCD_DataWrite_ST7787(0x0000); // display OFF
//************* Power OFF sequence **************//
LCD_CtrlWrite_ST7787(0x0010);
LCD_DataWrite_ST7787(0x0000); // SAP, BT[3:0], APE, AP, DSTB, SLP
LCD_CtrlWrite_ST7787(0x0011);
LCD_DataWrite_ST7787(0x0000); // 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(50); // Dis-charge capacitor power voltage
LCD_CtrlWrite_ST7787(0x0010);
LCD_DataWrite_ST7787(0x0002); // SAP,
#endif
#endif
#if 0
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
#endif
#elif (defined(LCD_18BIT_MODE))
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0007&0xFF00)<<2)|((0x0007&0xFF)<<1));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((0x0036&0xFF00)<<2)|((0x0036&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,((0x0026&0xFF00)<<2)|((0x0026&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,((0x0004&0xFF00)<<2)|((0x0004&0xFF)<<1));
LCD_SEND_DMA_CMD(2);
LCD_Delay(0x1000);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0010&0xFF00)<<2)|((0x0010&0xFF)<<1));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((lcd_power_ctrl_shadow1&0xFF00)<<2)|((lcd_power_ctrl_shadow1&0xFF)<<1));
LCD_SEND_DMA_CMD(2);
LCD_Delay(0x8000);
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));
LCD_SEND_DMA_CMD(4);
LCD_Delay(0x1000);
#endif
#else
LCD_CtrlWrite_ST7787(0x0007);
LCD_DataWrite_ST7787(0x0036);
LCD_Delay(0x1000);
LCD_CtrlWrite_ST7787(0x0007);
LCD_DataWrite_ST7787(0x0026);
LCD_CtrlWrite_ST7787(0x0007);
LCD_DataWrite_ST7787(0x0004);
LCD_Delay(0x1000);
LCD_CtrlWrite_ST7787(0x0010);
LCD_DataWrite_ST7787(lcd_power_ctrl_shadow1);
LCD_Delay(0x8000);
LCD_CtrlWrite_ST7787(0x0012);
LCD_DataWrite_ST7787(lcd_power_ctrl_shadow3);
LCD_CtrlWrite_ST7787(0x0013);
LCD_DataWrite_ST7787(lcd_power_ctrl_shadow4);
LCD_Delay(0x1000);
#endif
}
void LCD_ExitSleep_ST7787(void)
{
//ananzwp start
#if 0
return; //abc
lcd_power_ctrl_shadow1 &= ~0x2;
lcd_power_ctrl_shadow3 |= 0x10;
lcd_power_ctrl_shadow4 |= 0x2000;
#endif
#if 0
//ananzwp start end
CLEAR_LCD_CTRL_RESET_PIN;
LCD_Delay(0x1000);
LCD_Delay(0x1000);
SET_LCD_CTRL_RESET_PIN;
LCD_Delay(0x1000);
LCD_Delay(0x1000);
#endif
#if (defined(LCD_CMD_DMA_MODE))
#if (defined(LCD_8BIT_MODE))
/*
LCD_Init_ST7787(0, 0);
*/
//abc start
LCD_set_reg(0x0003,0x0000);
LCD_Delay(25);
LCD_set_reg(0x0003,0x0110);
LCD_Delay(10);
LCD_set_reg(0x0009,0x0006);
LCD_Delay(10);
LCD_set_reg(0x000D,0x0014);
LCD_Delay(50);
LCD_set_reg(0x000E,0x101C);
LCD_Delay(50);
LCD_set_reg(0x000E,0x301C);
LCD_Delay(50);
LCD_set_reg(0x0007,0x0037);
LCD_Delay(50);
/*
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x0003 >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x0003 & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA, (0x0000 >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA, (0x0000 & 0x00FF));
LCD_SEND_DMA_CMD(4);
LCD_Delay(40);
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x0003 >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x0003 & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA, (0x0110 >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA, (0x0110 & 0x00FF));
LCD_SEND_DMA_CMD(4);
LCD_Delay(40);
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x0009 >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x0009 & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA, (0x0006 >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA, (0x0006 & 0x00FF));
LCD_SEND_DMA_CMD(4);
LCD_Delay(40);
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x000D >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x000D & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA, (0x0014 >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA, (0x0014 & 0x00FF));
LCD_SEND_DMA_CMD(4);
LCD_Delay(40);
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x000E >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x000E & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA, (0x101C >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA, (0x101C & 0x00FF));
LCD_SEND_DMA_CMD(4);
LCD_Delay(40);
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x000E >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x000E & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA, (0x101C >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA, (0x101C & 0x00FF));
LCD_SEND_DMA_CMD(4);
LCD_Delay(40);
SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x000E >> 8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x000E & 0x00FF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA, (0x301C >> 8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA, (0x301C & 0x00FF));
LCD_SEND_DMA_CMD(4);
LCD_Delay(40);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -