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

📄 lcdlib.c

📁 一个基于三星S3C2413的全部驱动程序
💻 C
📖 第 1 页 / 共 4 页
字号:

	delayLoop(DELAY);
	for (j = 7; j >= 0; j--)
	{

		if ((0x74>> j) & 0x0001)	// DATA HIGH or LOW
			LCD_DSERI_Hi;
		else
			LCD_DSERI_Lo;

		delayLoop(DELAY);

		LCD_DCLK_Hi;			// CLOCK = High
		delayLoop(DELAY);

		if(j != 0)
		{
			LCD_DCLK_Lo;
			delayLoop(DELAY);			// CLOCK = Low
		}
	}
	LCD_DCLK_Lo;

	for (j = 15; j >= 0; j--)
	{

		if ((address >> j) & 0x0001)	// DATA HIGH or LOW
			LCD_DSERI_Hi;
		else
			LCD_DSERI_Lo;

		delayLoop(DELAY);

		LCD_DCLK_Hi;			// CLOCK = High
		delayLoop(DELAY);

		if(j != 0)
		{
			LCD_DCLK_Lo;
			delayLoop(DELAY);			// CLOCK = Low
		}
	}

	
	LCD_DSERI_Hi;							// Data Low
	delayLoop(DELAY);

	LCD_DCLK_Hi;							//	SCL Low
	delayLoop(DELAY);

	LCD_DEN_Hi; 		//	EN = High
	delayLoop(DELAY);

	LCD_DEN_Lo; 		//	EN = Low
	delayLoop(DELAY);

	LCD_DCLK_Lo;							//	SCL Low
	delayLoop(DELAY);

	for (j = 7; j >= 0; j--)
	{

		if ((0x76 >> j) & 0x0001)	// DATA HIGH or LOW
			LCD_DSERI_Hi;
		else
			LCD_DSERI_Lo;

		delayLoop(DELAY);

		LCD_DCLK_Hi;			// CLOCK = High
		delayLoop(DELAY);

		if(j != 0)
		{
			LCD_DCLK_Lo;
			delayLoop(DELAY);			// CLOCK = Low
		}
	}
	LCD_DCLK_Lo;
	
	for (j = 15; j >= 0; j--)
	{

		if ((data >> j) & 0x0001)	// DATA HIGH or LOW
			LCD_DSERI_Hi;
		else
			LCD_DSERI_Lo;

		delayLoop(DELAY);

		LCD_DCLK_Hi;			// CLOCK = High
		delayLoop(DELAY);

		if(j != 0)
		{
			LCD_DCLK_Lo;
			delayLoop(DELAY);			// CLOCK = Low
		}
	}

	LCD_DSERI_Hi;							// Data Low
	delayLoop(DELAY);

	LCD_DCLK_Hi;							//	SCL Low
	delayLoop(DELAY);

	LCD_DEN_Hi; 		//	EN = High
	delayLoop(DELAY);


}    
#endif

void WriteLDI_LTS350(int address, int data)
{
 	unsigned char	dev_id_code=0x1D;
    int     j;
	unsigned char DELAY=50;
		
	
	LCD_DEN_Hi; 		//	EN = High					CS high
	LCD_DCLK_Hi;							//	SCL High
	LCD_DSERI_Hi;							//	Data Low

	delayLoop(DELAY);

	LCD_DEN_Lo; 		//	EN = Low				CS Low
	delayLoop(DELAY);
	
	for (j = 5; j >= 0; j--)
	{	
		LCD_DCLK_Lo;							//	SCL Low

		if ((dev_id_code >> j) & 0x0001)	// DATA HIGH or LOW
		{
			LCD_DSERI_Hi;		
		}
		else
		{
			LCD_DSERI_Lo;
		}

		delayLoop(DELAY);

		LCD_DCLK_Hi;			// CLOCK = High
		delayLoop(DELAY);

	}
	
	// RS = "0" : index data
	LCD_DCLK_Lo;			// CLOCK = Low
	LCD_DSERI_Lo;
	delayLoop(DELAY);
	LCD_DCLK_Hi;			// CLOCK = High
	delayLoop(DELAY);

	// Write
	LCD_DCLK_Lo;			// CLOCK = Low
	LCD_DSERI_Lo;
	delayLoop(DELAY);
	LCD_DCLK_Hi;			// CLOCK = High
	delayLoop(DELAY);

	for (j = 15; j >= 0; j--)
	{
		LCD_DCLK_Lo;							//	SCL Low

		if ((address >> j) & 0x0001)	// DATA HIGH or LOW
		{
			LCD_DSERI_Hi;		
		}
		else
		{
			LCD_DSERI_Lo;
		}

		delayLoop(DELAY);

		LCD_DCLK_Hi;			// CLOCK = High
		delayLoop(DELAY);

	}
	LCD_DSERI_Hi;
	delayLoop(DELAY);
	
	LCD_DEN_Hi; 				// EN = High
	delayLoop(DELAY*10);

	LCD_DEN_Lo; 		//	EN = Low				CS Low
	delayLoop(DELAY);
	
	for (j = 5; j >= 0; j--)
	{	
		LCD_DCLK_Lo;							//	SCL Low

		if ((dev_id_code >> j) & 0x0001)	// DATA HIGH or LOW
		{
			LCD_DSERI_Hi;		
		}
		else
		{
			LCD_DSERI_Lo;
		}

		delayLoop(DELAY);

		LCD_DCLK_Hi;			// CLOCK = High
		delayLoop(DELAY);

	}
	
	// RS = "1" instruction data
	LCD_DCLK_Lo;			// CLOCK = Low
	LCD_DSERI_Hi;
	delayLoop(DELAY);
	LCD_DCLK_Hi;			// CLOCK = High
	delayLoop(DELAY);

	// Write
	LCD_DCLK_Lo;			// CLOCK = Low
	LCD_DSERI_Lo;
	delayLoop(DELAY);
	LCD_DCLK_Hi;			// CLOCK = High
	delayLoop(DELAY);

	for (j = 15; j >= 0; j--)
	{
		LCD_DCLK_Lo;							//	SCL Low

		if ((data >> j) & 0x0001)	// DATA HIGH or LOW
		{
			LCD_DSERI_Hi;		
		}
		else
		{
			LCD_DSERI_Lo;
		}

		delayLoop(DELAY);

		LCD_DCLK_Hi;			// CLOCK = High
		delayLoop(DELAY);

	}
	
	LCD_DEN_Hi; 				// EN = High
	delayLoop(DELAY);

}



void WriteLDI_LTS222(int address, int data)
{
    	int     j;
	//unsigned char DELAY=100;
	unsigned char DELAY=10;

	LCD_DEN_Hi; 		//	EN = High					CS high
//	LCD_DCLK_Lo;					
	LCD_DCLK_Hi;							//	SCL High
	LCD_DSERI_Lo;							//	Data Low


	delayLoop(DELAY);

	LCD_DEN_Lo; 		//	EN = Low				CS Low
	delayLoop(DELAY);

	LCD_DCLK_Lo;							//	SCL Low

	delayLoop(DELAY);

	for (j = 7; j >= 0; j--)
	{

		if ((address >> j) & 0x0001)	// DATA HIGH or LOW
			LCD_DSERI_Hi;
		else
			LCD_DSERI_Lo;

		delayLoop(DELAY);

		LCD_DCLK_Hi;			// CLOCK = High
		delayLoop(DELAY);

		if(j != 0)
		{
			LCD_DCLK_Lo;
			delayLoop(DELAY);			// CLOCK = Low
		}
	}

	LCD_DSERI_Lo;							// Data Low
	delayLoop(DELAY);

	LCD_DEN_Hi; 		//	EN = High
	delayLoop(DELAY);

	LCD_DEN_Lo; 		//	EN = Low
	delayLoop(DELAY);

	
	LCD_DCLK_Lo;
	delayLoop(DELAY);			// CLOCK = Low
	
	for (j = 7; j >= 0; j--)
	{

		if ((data >> j) & 0x0001)	// DATA HIGH or LOW
			LCD_DSERI_Hi;
		else
			LCD_DSERI_Lo;

		delayLoop(DELAY);

		LCD_DCLK_Hi;			// CLOCK = High
		delayLoop(DELAY);

		if(j != 0)
		{
			LCD_DCLK_Lo;
			delayLoop(DELAY);			// CLOCK = Low
		}
	}

	LCD_DEN_Hi; 				// EN = High
	delayLoop(DELAY);

}


void InitLDI_LTV350(void)
{

	SetGPIOforLDI();	
	
	
	LCD_DEN_Hi;
	LCD_DCLK_Hi;
	LCD_DSERI_Hi;
	LCD_RESET_Hi;

	LCD_RESET_Hi;	  
	//Delay(200);
	delayLoop(1800000);

	///////////////////////////////////////////////////////////////////
	// Init_Lcd_Function
	//////////////////////////////////////////////////////////////////
	WriteLDI_LTS350(0x01,0x001d);	
    WriteLDI_LTS350(0x02,0x0000);    
    WriteLDI_LTS350(0x03,0x0000);    
    WriteLDI_LTS350(0x04,0x0000);
    WriteLDI_LTS350(0x05,0x50a3);
    WriteLDI_LTS350(0x06,0x0000);
    WriteLDI_LTS350(0x07,0x0000);
    WriteLDI_LTS350(0x08,0x0000);
   	WriteLDI_LTS350(0x09,0x0000);
   	WriteLDI_LTS350(0x0a,0x0000);
   	WriteLDI_LTS350(0x10,0x0000);
   	WriteLDI_LTS350(0x11,0x0000);
   	WriteLDI_LTS350(0x12,0x0000);
   	WriteLDI_LTS350(0x13,0x0000);
   	WriteLDI_LTS350(0x14,0x0000);
   	WriteLDI_LTS350(0x15,0x0000);
   	WriteLDI_LTS350(0x16,0x0000);
   	WriteLDI_LTS350(0x17,0x0000);
   	WriteLDI_LTS350(0x18,0x0000);
   	WriteLDI_LTS350(0x19,0x0000);
   	//Delay(800);
   	delayLoop(1800000);	
 	///////////////////////////////////////////////////////////////////
	//  Set_PwrOn_Function1
	//////////////////////////////////////////////////////////////////  	
    
    WriteLDI_LTS350(0x09,0x4055);
    WriteLDI_LTS350(0x0a,0x0000);    
    //Delay(1000);
    delayLoop(1800000);	
	///////////////////////////////////////////////////////////////////
	//  Set_PwrOn_Function2
	//////////////////////////////////////////////////////////////////  	
    
	WriteLDI_LTS350(0x0a,0x2000);
	delayLoop(50*180000);	
	///////////////////////////////////////////////////////////////////
	//  Set_Disp_Function
	//////////////////////////////////////////////////////////////////  	
    
	WriteLDI_LTS350(0x01,0x409d); // note 1
    WriteLDI_LTS350(0x02,0x0204); // note 2    
    WriteLDI_LTS350(0x03,0x2100);
    WriteLDI_LTS350(0x04,0x1000);
    WriteLDI_LTS350(0x05,0x5003);
    WriteLDI_LTS350(0x06,0x0009); // note 3
    WriteLDI_LTS350(0x07,0x000f); // note 3
    WriteLDI_LTS350(0x08,0x0800);
    WriteLDI_LTS350(0x10,0x0000);
    WriteLDI_LTS350(0x11,0x0000);
    WriteLDI_LTS350(0x12,0x000f);
    WriteLDI_LTS350(0x13,0x1f00);
    WriteLDI_LTS350(0x14,0x0000);
    WriteLDI_LTS350(0x15,0x0000);
    WriteLDI_LTS350(0x16,0x0000);
    WriteLDI_LTS350(0x17,0x0000);
    WriteLDI_LTS350(0x18,0x0000);
    WriteLDI_LTS350(0x19,0x0000);
	
	delayLoop(50*180000);	
	///////////////////////////////////////////////////////////////////
	//  	 On_Disp_Function
	//////////////////////////////////////////////////////////////////  	 

    WriteLDI_LTS350(0x09,0x4a55);
    WriteLDI_LTS350(0x0a,0x2000);
}



void InitLDI_LTS222(void)
{

	SetGPIOforLDI();
	
	LCD_DEN_Hi;
	LCD_DCLK_Hi;
	LCD_DSERI_Hi;
	LCD_RESET_Hi;

	//LCD CLK is about 4.05Mhz
	//rDIRGBIFR1=(18<<0);  //LCLK=HCLK/(CDR+2)=81/(18+2)=4.05Mhz	
	//rDIRGBIFR0|=(1<<12); //LCD panel on


	// LCD Reset high
	LCD_RESET_Hi;	  
//	delayLoop(50000);

	///////////////////////////////////////////////////////////////////
	// Power Setting Function 1
	//////////////////////////////////////////////////////////////////
	WriteLDI_LTS222(0x22,0x01);	 // PARTIAL 2 DISPLAY AREA RASTER-ROW NUMBER REGISTER 1
	WriteLDI_LTS222(0x03,0x01);	 // RESET REGISTER


	///////////////////////////////////////////////////////////////////
	// Initializing Function 1
	///////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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