⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.c

📁 手机开发 MTK平台 LCD屏幕驱动源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
			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 + -