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

📄 lcd.c

📁 这个是MTK手机平台上面的LCD
💻 C
📖 第 1 页 / 共 5 页
字号:
		
	#endif
#endif
	}

	
	void LCD_EnterSleep_HX8309(void)
	{ 
	
		Write_REG_HX8309(0x0010,0x4142);
	 	Delay_us(30000);
	}

	void LCD_ExitSleep_HX8309(void)
	{
#if 1
 		Write_REG_HX8309(0x0001,0x011B);
		Write_REG_HX8309(0x0002,0x0700);
		Write_REG_HX8309(0x0003,0x7030);
		Write_REG_HX8309(0x0004,0x0000);
		Write_REG_HX8309(0x0005,0x0000);
	 	Delay_us(30000);
		Write_REG_HX8309(0x0007,0x0003);
		Delay_us(30000);
		Write_REG_HX8309(0x0008,0x0202);
		Write_REG_HX8309(0x0009,0x0000);
		Write_REG_HX8309(0x000B,0x0000);
		Write_REG_HX8309(0x000C,0x0003);
		
		Write_REG_HX8309(0x0040,0x0000);
		Write_REG_HX8309(0x0041,0x00EF);
		Write_REG_HX8309(0x0042,0xDB00);
		Write_REG_HX8309(0x0043,0xDB00);
		Write_REG_HX8309(0x0044,0xB001);
		Write_REG_HX8309(0x0045,0xDB00);
		Write_REG_HX8309(0x0021,0x00AF);
	 	Delay_us(10000);

		Write_REG_HX8309(0x0000,0x0001);
		Write_REG_HX8309(0x0010,0x0000);
		Write_REG_HX8309(0x0011,0x0000);
		Write_REG_HX8309(0x0012,0x0000);
		Write_REG_HX8309(0x0013,0x0000);
		Write_REG_HX8309(0x0011,0x0000);
		Write_REG_HX8309(0x0013,0x1517);
	 	Delay_us(30000);
		Write_REG_HX8309(0x0012,0x0008);
	 	Delay_us(30000);
		Write_REG_HX8309(0x0010,0x4040);
	 	Delay_us(30000);
		Write_REG_HX8309(0x0011,0x0000);
	 	Delay_us(30000);
		Write_REG_HX8309(0x0010,0x0054);
	 	Delay_us(30000);
		Write_REG_HX8309(0x0012,0x0011);
	 	Delay_us(30000);
		Write_REG_HX8309(0x0010,0x4140);
	 	Delay_us(30000);
		Write_REG_HX8309(0x0013,0x3208);
	 	Delay_us(30000);
		

		Write_REG_HX8309(0x0030,0x0100);
		Write_REG_HX8309(0x0031,0x0505);
		Write_REG_HX8309(0x0032,0x0002);
		Write_REG_HX8309(0x0033,0x0300);
		Write_REG_HX8309(0x0034,0x0707);
		Write_REG_HX8309(0x0035,0x0017);
		Write_REG_HX8309(0x0036,0x0707);
		Write_REG_HX8309(0x0037,0x0002);
		Write_REG_HX8309(0x0038,0x0200);
		Write_REG_HX8309(0x0039,0x0000);
	 	Delay_us(30000);

		
		Write_REG_HX8309(0x0007,0x0045);
	 	Delay_us(30000);
		Write_REG_HX8309(0x0007,0x0065);
	 	Delay_us(30000);
		Write_REG_HX8309(0x0007,0x0077);
#else
		Write_REG_HX8309(0x0012,0x0011);
	 	Delay_us(30000);
	 	Delay_us(30000);
	 	Delay_us(30000);
		Write_REG_HX8309(0x0010,0x4140);
	 	Delay_us(30000);
	 	Delay_us(30000);
	 	Delay_us(30000);
		Write_REG_HX8309(0x0013,0x3208);
	 	Delay_us(30000);
	 	Delay_us(30000);
	 	Delay_us(30000);
#endif
	}
	void LCD_Size_HX8309(kal_uint16 *out_LCD_width,kal_uint16 *out_LCD_height)
	{
	   	*out_LCD_width = LCD_WIDTH;
	   	*out_LCD_height =LCD_HEIGHT;
	}
	void LCD_PWRON_HX8309(kal_bool on)
	{
		if(on)	
		{
			LCD_ExitSleep_HX8309();
		}
		else
		{
			LCD_EnterSleep_HX8309();
		}
	}

	void LCD_ON_HX8309(kal_bool on)
	{
	  
	}

	
	void LCD_SetContrast_HX8309(kal_uint8 level)
	{
	
	}
	void LCD_Partial_On_HX8309(kal_uint16 start_page,kal_uint16 end_page)
	{
		
	}

	void LCD_Partial_Off_HX8309(void)
	{
		
	}
	
	kal_uint8 LCD_Partial_line_HX8309(void)
	{
		return 1;		
	}

	//Engineering mode

	kal_uint8 LCD_GetParm_HX8309(lcd_func_type type)
	{
	   switch(type)
	   {
	      case lcd_Bais_func:
	         return 1;
	      case lcd_Contrast_func:
	         return 1;
	      case lcd_LineRate_func:
	         return 4;
	      case lcd_Temperature_Compensation_func:
	         return 4;
	      default:
	         ASSERT(0);
	         return 100;
	   }
	}

	void LCD_SetBias_HX8309(kal_uint8 *bias)
	{
		
	}

	void LCD_Contrast_HX8309(kal_uint8 *contrast)
	{
		
	}
	void LCD_LineRate_HX8309(kal_uint8 *linerate)
	{

	}

	void LCD_Temp_Compensate_HX8309(kal_uint8 *compensate)
	{
	
	}

	LCD_Funcs LCD_func_HX8309 = {
	   LCD_Init_HX8309,
	   LCD_PWRON_HX8309,
	   LCD_SetContrast_HX8309,
	   LCD_ON_HX8309,
	   LCD_BlockWrite_HX8309,
	   LCD_Size_HX8309,
	   LCD_EnterSleep_HX8309,
	   LCD_ExitSleep_HX8309,
	   LCD_Partial_On_HX8309,
	   LCD_Partial_Off_HX8309,
	   LCD_Partial_line_HX8309,
	   // Engineering mode
	   LCD_GetParm_HX8309,
	   LCD_SetBias_HX8309,
	   LCD_Contrast_HX8309,
	   LCD_LineRate_HX8309,
	   LCD_Temp_Compensate_HX8309
	};

#endif   //#ifdef __SM264_MIKI_DRV_LCD_TRULY_GG3800__


#ifdef __SM264_MIKI_DRV_LCD_TRULY_GG3558__

#if (defined(MT6218B)||defined(MT6219)||defined(MT6217)||defined(MT6226)|| defined(MT6226M))
void init_lcd_interface(void)
{
	REG_LCD_ROI_CTRL=0;
	CLEAR_LCD_CTRL_RESET_PIN;
	Delay_ms(10);
	#if (defined(MT6219)||defined(MT6226)||defined(MT6227)|| defined(MT6226M))
	SET_LCD_PARALLEL_CE2WR_SETUP_TIME((kal_uint32)2);
	SET_LCD_PARALLEL_CE2WR_HOLD_TIME(2);
	SET_LCD_PARALLEL_CE2RD_SETUP_TIME(2);
	SET_LCD_PARALLEL_WRITE_WAIT_STATE(10);
	SET_LCD_PARALLEL_READ_LATENCY_TIME(10);
	SET_LCD_ROI_CTRL_CMD_LATENCY(10);

	#if (defined(MT6226)||defined(MT6227)|| defined(MT6226M))
	#ifdef LCD_18BIT_MODE
	GPIO_ModeSetup(55, 1);
	*((volatile unsigned short *) 0x801201B0) |= 0x4000;
	*((volatile unsigned short *) 0x801201D0) |= 0x0001;
	#endif
	SET_LCD_PARALLEL_DATA_BUS_WIDTH;
	SET_LCD_PARALLEL_GAMMA_R_TABLE(LCD_PARALLEL_GAMMA_DISABLE);
	SET_LCD_PARALLEL_GAMMA_G_TABLE(LCD_PARALLEL_GAMMA_DISABLE);
	SET_LCD_PARALLEL_GAMMA_B_TABLE(LCD_PARALLEL_GAMMA_DISABLE);
	#endif

	#if (defined(MT6219))
	DISABLE_LCD_PARALLEL_SYNC;
	#endif
	#endif
	SET_LCD_CTRL_RESET_PIN;
   	Delay_ms(10);
}
#endif // MT6217, MT6218B, MT6219

	void LCD_blockClear_S1D19105(kal_uint16 x1, kal_uint16 y1, kal_uint16 x2, kal_uint16 y2, kal_uint16 data)
	{
		kal_uint16 LCD_x;
		kal_uint16 LCD_y;

		LCD_CtrlWrite_S1D19105(0x15);
		LCD_DataWrite_S1D19105(x1);
		LCD_DataWrite_S1D19105(y1);

		LCD_CtrlWrite_S1D19105(0x75);
		LCD_DataWrite_S1D19105(x2);
		LCD_DataWrite_S1D19105(y2);

		LCD_CtrlWrite_S1D19105(0x5c);

		for(LCD_y=y1; LCD_y<=y2; LCD_y++)
		{
			for(LCD_x=x1; LCD_x<=x2; LCD_x++)
			{

			 *(volatile kal_uint8 *)LCD_S1D19105_DATA_ADDR = (data&0xFF00)>>8;
			 Delay_us(1);
			 *(volatile kal_uint8 *)LCD_S1D19105_DATA_ADDR= data&0xFF;
			
			}
		}
	}
	
	void LCD_Init_S1D19105(kal_uint32 bkground, void **buf_addr)
	{
		LCD_CtrlWrite_S1D19105(0x99);
		Delay_us(30000);
		LCD_CtrlWrite_S1D19105(0x96);
		
		LCD_CtrlWrite_S1D19105(0x6F);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0xDB);

		LCD_CtrlWrite_S1D19105(0xCA);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x49);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x33);
		LCD_DataWrite_S1D19105(0xDB);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x02);
		LCD_DataWrite_S1D19105(0x01);
		LCD_DataWrite_S1D19105(0x00);		

		LCD_CtrlWrite_S1D19105(0xA1);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x46);
		LCD_DataWrite_S1D19105(0x04);
		LCD_DataWrite_S1D19105(0x44);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x13);
		LCD_DataWrite_S1D19105(0x09);

		LCD_CtrlWrite_S1D19105(0xBC);
		LCD_DataWrite_S1D19105(0x00);

		LCD_CtrlWrite_S1D19105(0xAB);
		LCD_DataWrite_S1D19105(0x00);

		LCD_CtrlWrite_S1D19105(0x31);
		LCD_DataWrite_S1D19105(0x10);
		LCD_DataWrite_S1D19105(0x00);

		LCD_CtrlWrite_S1D19105(0x8B);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x44);
		LCD_DataWrite_S1D19105(0x77);
		LCD_DataWrite_S1D19105(0x74);

		LCD_CtrlWrite_S1D19105(0x20);
		LCD_DataWrite_S1D19105(0x0B);
		LCD_DataWrite_S1D19105(0x0A);
		LCD_DataWrite_S1D19105(0x0F);
		LCD_DataWrite_S1D19105(0x12);
		LCD_DataWrite_S1D19105(0x0D);
		LCD_DataWrite_S1D19105(0x0A);
		LCD_DataWrite_S1D19105(0x04);
		LCD_DataWrite_S1D19105(0x00);
		Delay_us(30000);

		LCD_CtrlWrite_S1D19105(0x22);
		LCD_DataWrite_S1D19105(0x08);
		LCD_DataWrite_S1D19105(0x81);
		LCD_DataWrite_S1D19105(0x44);
		LCD_DataWrite_S1D19105(0x85);
		LCD_DataWrite_S1D19105(0x62);
		LCD_DataWrite_S1D19105(0x62);
		Delay_us(30000);

		LCD_CtrlWrite_S1D19105(0x21);
		LCD_DataWrite_S1D19105(0x10);
		LCD_DataWrite_S1D19105(0x11);
		LCD_DataWrite_S1D19105(0x0E);
		LCD_DataWrite_S1D19105(0x1F);
		LCD_DataWrite_S1D19105(0xAD);
		LCD_DataWrite_S1D19105(0xA0);
		LCD_DataWrite_S1D19105(0x44);
		LCD_DataWrite_S1D19105(0xFF);
		LCD_DataWrite_S1D19105(0x03);
		LCD_DataWrite_S1D19105(0xFF);
		LCD_DataWrite_S1D19105(0x03);
		LCD_DataWrite_S1D19105(0x11);
		LCD_DataWrite_S1D19105(0x44);
		Delay_us(50000);

		LCD_CtrlWrite_S1D19105(0x23);
		LCD_DataWrite_S1D19105(0x01);
		LCD_DataWrite_S1D19105(0x44);
		LCD_DataWrite_S1D19105(0x1F);
		LCD_DataWrite_S1D19105(0xAD);
		LCD_DataWrite_S1D19105(0xA0);
		LCD_DataWrite_S1D19105(0x11);
		LCD_DataWrite_S1D19105(0x44);
		Delay_us(50000);

		LCD_CtrlWrite_S1D19105(0x94);
		Delay_us(50000);

		LCD_CtrlWrite_S1D19105(0x8C);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x00);

		LCD_CtrlWrite_S1D19105(0x92);

		LCD_CtrlWrite_S1D19105(0x15);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x00);

		LCD_CtrlWrite_S1D19105(0x75);
		LCD_DataWrite_S1D19105(0xAF);
		LCD_DataWrite_S1D19105(0xDB);

		LCD_CtrlWrite_S1D19105(0xAF);
		Delay_us(50000);

  		LCD_blockClear_S1D19105(0,0, LCD_WIDTH-1,LCD_HEIGHT-1,bkground);

	}

	void LCD_BlockWrite_S1D19105(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy)
	{
	     
	#ifdef LCD_CMD_DMA_MODE

		SET_LCD_CMD_PARAMETER(0, LCD_CMD, 0x15);
		SET_LCD_CMD_PARAMETER(1, LCD_DATA, startx);
		SET_LCD_CMD_PARAMETER(2, LCD_DATA, starty);
			
		SET_LCD_CMD_PARAMETER(3, LCD_CMD, 0x75);
		SET_LCD_CMD_PARAMETER(4, LCD_DATA, endx);
		SET_LCD_CMD_PARAMETER(5, LCD_DATA, endy);

		SET_LCD_CMD_PARAMETER(6, LCD_CMD, 0x5C);
			
		ENABLE_LCD_TRANSFER_COMPLETE_INT;
		SET_LCD_ROI_CTRL_NUMBER_OF_CMD(7 );
		ENABLE_LCD_ROI_CTRL_CMD_FIRST;
		while (LCD_IS_RUNNING) {};
		START_LCD_TRANSFER;
		
	#endif
	  
	}

	
	void LCD_EnterSleep_S1D19105(void)
	{ 
	
		LCD_CtrlWrite_S1D19105(0x95);
		Delay_us(30000);

	}

	void LCD_ExitSleep_S1D19105(void)
	{
		LCD_CtrlWrite_S1D19105(0x96);
		
		LCD_CtrlWrite_S1D19105(0x6F);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0xDB);

		LCD_CtrlWrite_S1D19105(0xCA);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x49);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x33);
		LCD_DataWrite_S1D19105(0xDB);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x02);
		LCD_DataWrite_S1D19105(0x01);
		LCD_DataWrite_S1D19105(0x00);		

		LCD_CtrlWrite_S1D19105(0xA1);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x46);
		LCD_DataWrite_S1D19105(0x04);
		LCD_DataWrite_S1D19105(0x44);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x13);
		LCD_DataWrite_S1D19105(0x09);

		LCD_CtrlWrite_S1D19105(0xBC);
		LCD_DataWrite_S1D19105(0x00);

		LCD_CtrlWrite_S1D19105(0xAB);
		LCD_DataWrite_S1D19105(0x00);

		LCD_CtrlWrite_S1D19105(0x31);
		LCD_DataWrite_S1D19105(0x10);
		LCD_DataWrite_S1D19105(0x00);

		LCD_CtrlWrite_S1D19105(0x8B);
		LCD_DataWrite_S1D19105(0x00);
		LCD_DataWrite_S1D19105(0x44);
		LCD_DataWrite_S1D19105(0x77);
		LCD_DataWrite_S1D19105(0x74);

		LCD_CtrlWrite_S1D19105(0x20);
		LCD_DataWrite_S1D19105(0x0B);
		LCD_DataWrite_S1D19105(0x0A);
		LCD_DataWrite_S1D19105(0x0F);
		LCD_DataWrite_S1D19105(0x12);
		LCD_DataWrite_S1D19105(0x0D);
		LCD_DataWrite_S1D19105(0x0A);
		LCD_DataWrite_S1D19105(0x04);
		LCD_DataWrite_S1D19105(0x00);
		Delay_us(30000);

		LCD_CtrlWrite_S1D19105(0x22);
		LCD_DataWrite_S1D19105(0x08);
		LCD_DataWrite_S1D19105(0x81);
		LCD_DataWrite_S1D19105(0x44);
		LCD_DataWrite_S1D19105(0x85);
		LCD_DataWrite_S1D19105(0x62);
		LCD_DataWrite_S1D19105(0x62);
		Delay_us(30000);

		LCD_CtrlWrite_S1D19105(0x21);
		LCD_DataWrite_S1D19105(0x10);
		LCD_DataWrite_S1D19105(0x11);
		LCD_DataWrite_S1D19105(0x0E);
		LCD_DataWrite_S1D19105(0x1F);
		LCD_DataWrite_S1D19105(0xAD);
		LCD_DataWrite_S1D19105(0xA0);
		LCD_DataWrite_S1D19105(0x44);
		L

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -