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

📄 lcdlib.c

📁 一个基于三星S3C2413的全部驱动程序
💻 C
📖 第 1 页 / 共 4 页
字号:
	WriteLDI_LTS222(0x00,0x0a);	 // CONTROL REGISTER 1
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x01,0x10);	 // CONTROL REGISTER 2
	delayLoop(5);  // delay about 300ns
//	WriteLDI_LTS222(0x02,0x00);	 // RGB INTERFACE REGISTER
	WriteLDI_LTS222(0x02,0x06);	 // RGB INTERFACE REGISTER
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x05,0x00);	 // DATA ACCESS CONTROL REGISTER
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x0D,0x00);	 // 

	// delay about 40ms
	delayLoop(700000);					


	///////////////////////////////////////////////////////////////////
	// Initializing Function 2
	///////////////////////////////////////////////////////////////////
	WriteLDI_LTS222(0x0E,0x00);	 //
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x0F,0x00);	 // 
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x10,0x00);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x11,0x00);  //
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x12,0x00);  //
	delayLoop(5);  // delay about 300ns 
	WriteLDI_LTS222(0x13,0x00);  // DISPLAY SIZE CONTROL REGISTER
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x14,0x00);  // PARTIAL-OFF AREA COLOR REGISTER 1
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x15,0x00);  // PARTIAL-OFF AREA COLOR REGISTER 2
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x16,0x00);  // PARTIAL 1 DISPLAY AREA STARTING REGISTER 1
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x17,0x00);  // PARTIAL 1 DISPLAY AREA STARTING REGISTER 2
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x34,0x01);  // POWER SUPPLY SYSTEM CONTROL REGISTER 14
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x35,0x00);  // POWER SUPPLY SYSTEM CONTROL REGISTER 7

	// delay about 30ms
	delayLoop(500000);


	////////////////////////////////////////////////////////////////////
	// Initializing Function 3
	////////////////////////////////////////////////////////////////////
	WriteLDI_LTS222(0x8D,0x01);	 //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x8B,0x28);	 //
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x4B,0x00);	 //
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x4C,0x00);	 //
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x4D,0x00);	 //
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x4E,0x00);	 //
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x4F,0x00);	 //
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x50,0x00);	 //  ID CODE REGISTER 2 						Check it out

	// delay about 50 us
	delayLoop(900);

	WriteLDI_LTS222(0x86,0x00);	 //
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x87,0x26);	 //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x88,0x02);	 //
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x89,0x05);	 //
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x33,0x01);	 //  POWER SUPPLY SYSTEM CONTROL REGISTER 13
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x37,0x06);	 //  POWER SUPPLY SYSTEM CONTROL REGISTER 12		Check it out

	// delay about 50 us
	delayLoop(900);

	WriteLDI_LTS222(0x76,0x00);	 //  SCROLL AREA START REGISTER 2

	// delay about 30ms
	delayLoop(500000);


	/////////////////////////////////////////////////////////////////////
	// Initializing Function 4
	/////////////////////////////////////////////////////////////////////
	WriteLDI_LTS222(0x42,0x00);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x43,0x00);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x44,0x00);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x45,0x00);  //  CALIBRATION REGISTER
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x46,0xef);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x47,0x00);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x48,0x00);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x49,0x01);  //  ID CODE REGISTER 1							check it out

	// delay about 50 us
	delayLoop(900);

	WriteLDI_LTS222(0x4A,0x3f);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x3C,0x00);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x3D,0x00);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x3E,0x01);  //
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x3F,0x3f);  //
	delayLoop(5);  // delay about 300ns
//	WriteLDI_LTS222(0x40,0x03);  //	horizontal back porch	
	WriteLDI_LTS222(0x40,0x01);  //	horizontal back porch	 //050105 Boaz.Kim
	delayLoop(5);  // delay about 300ns
//	WriteLDI_LTS222(0x41,0x04);  //	vertical back porch
	WriteLDI_LTS222(0x41,0x0a);  //	horizontal back porch	//050105 Boaz.Kim
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x8F,0x05);  //

	// delay about 30ms
	delayLoop(500000);

	/////////////////////////////////////////////////////////////////////
	// Initializing Function 5
	/////////////////////////////////////////////////////////////////////
	WriteLDI_LTS222(0x90,0x05);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x91,0x44);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x92,0x44);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x93,0x44);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x94,0x33);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x95,0x05);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x96,0x05);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x97,0x44);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x98,0x44);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x99,0x44);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x9A,0x33);  //  
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x9B,0x33);  //
	delayLoop(5);  // delay about 300ns
	WriteLDI_LTS222(0x9C,0x33);  //
	delayLoop(5);  // delay about 300ns

#if 1	
	WriteLDI_LTS222(0x9D,0x80);  //	16 or 18bit RGB
#else
	WriteLDI_LTS222(0x9D,0x81);  //	6bit RGB
#endif

	// delay about 30ms
	delayLoop(500000);


	/////////////////////////////////////////////////////////////////////
	// Power Setting 2
	/////////////////////////////////////////////////////////////////////
	WriteLDI_LTS222(0x1D,0x08);  //

	// delay about 30ms
	delayLoop(500000);
	  
	WriteLDI_LTS222(0x23,0x00);  //  PARTIAL 2 DISPLAY AREA RASTER-ROW NUMBER REGISTER 2
	// delay about 50 us
	delayLoop(900);
	WriteLDI_LTS222(0x24,0x94);  //  POWER SUPPLY SYSTEM CONTROL REGISTER 1
	// delay about 50 us
	delayLoop(900);
	WriteLDI_LTS222(0x25,0x6f);  //  POWER SUPPLY SYSTEM CONTROL REGISTER 2

	// delay about 40ms
	delayLoop(700000);					


	/////////////////////////////////////////////////////////////////////
	// Power Setting 3
	/////////////////////////////////////////////////////////////////////
	WriteLDI_LTS222(0x28,0x1e);  // 
	WriteLDI_LTS222(0x1A,0x00);  // 
	WriteLDI_LTS222(0x21,0x10);  //  PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 2 
	WriteLDI_LTS222(0x18,0x25);  //  PARTIAL 2 DISPLAY AREA STARTING REGISTER 1

	// delay about 40ms
	delayLoop(700000);					

	WriteLDI_LTS222(0x19,0x48);  //  PARTIAL 2 DISPLAY AREA STARTING REGISTER 2
	WriteLDI_LTS222(0x18,0xe5);  //  PARTIAL 2 DISPLAY AREA STARTING REGISTER 1

	// delay about 10ms
	delayLoop(200000);					

	WriteLDI_LTS222(0x18,0xF7);  //  PARTIAL 2 DISPLAY AREA STARTING REGISTER 1 

	// delay about 40ms
	delayLoop(700000);					

	WriteLDI_LTS222(0x1B,0x07);  // org
//	WriteLDI_LTS222(0x1B,0x01);  // 90 rotate
//	WriteLDI_LTS222(0x1B,0x02);  // 90 rotate
//	WriteLDI_LTS222(0x1B,0x03);  // 90 rotate


	// delay about 80ms
	delayLoop(1400000); 				

	WriteLDI_LTS222(0x1F,0x6b);  // org
//	WriteLDI_LTS222(0x1F,0x5E);  // 90 rotate

	WriteLDI_LTS222(0x20,0x51);  //  org, PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 1
//	WriteLDI_LTS222(0x20,0x5F);  //  90 rotate, PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 1

	WriteLDI_LTS222(0x1E,0xc1);  // 

	// delay about 10ms
	delayLoop(200000);					

	WriteLDI_LTS222(0x21,0x00);  //  PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 2 
	WriteLDI_LTS222(0x3B,0x01);  // 

	// delay about 20ms
	delayLoop(400000);					

	WriteLDI_LTS222(0x00,0x20);  //  CONTROL REGISTER 1
	WriteLDI_LTS222(0x02,0x01);  //  RGB INTERFACE REGISTER



	// delay about 10ms
	delayLoop(200000);					
	
//	Reg16_OPCLK_DIV = 0x0201;	 			// 6.4

}


void LutSetting(U32 mode)
{
	if(mode==MODE_CSTN_8BIT){
//		rREDLUT0 = 0x01820200;
//		rREDLUT1 = 0x203860A1;
		rREDLUT0 = 0x678B0E00;
		rREDLUT1 = 0x20F9B2B4;
		rREDLUT2 = 0xA3058A12;
		rREDLUT3 = 0x224078E1;
		rREDLUT4 = 0x62A50992;
		rREDLUT5 = 0x9A3260B9;
		rREDLUT6 = 0xF9E3A70D;

//		rGREENLUT0 = 0x80C10100;
//		rGREENLUT1 = 0x101C3050;
		rGREENLUT0 = 0xE7CB8F00;
		rGREENLUT1 = 0x10FABAF4;
		rGREENLUT2 = 0xD182C509;
		rGREENLUT3 = 0x11203C70;
		rGREENLUT4 = 0xB15284C9;
		rGREENLUT5 = 0xCD19305C;
		rGREENLUT6 = 0x7CF1D386;
		rGREENLUT7 = 0x88D12140;
		rGREENLUT8 = 0x509D3254;
		rGREENLUT9 = 0xD58AD529;
		rGREENLUT10 = 0x3160BD72;
		rGREENLUT11 = 0xB3568CD9;
		rGREENLUT12 = 0xDD3970DD;
		rGREENLUT13 = 0xFDF3D78E;

//		rBLUELUT0 = 0x01820200;
		rBLUELUT0 = 0x0F971E00;
		rBLUELUT1 = 0x203860A1;
		rBLUELUT2 = 0xA3058A12;
		rBLUELUT3 = 0x224078E1;
		rBLUELUT4 = 0x62A50992;
		rBLUELUT5 = 0x9A3260B9;
		rBLUELUT6 = 0xF9E3A70D;
	}
	else if(mode==MODE_CSTN_12BIT){
//		rREDLUT0 = 0x01820200;
//		rREDLUT1 = 0x203860A1;
//		rREDLUT2 = 0xA3058A12;
//		rREDLUT3 = 0x224078E1;
		rREDLUT0 = 0x43850600;
		rREDLUT1 = 0x4478D162;
		rREDLUT2 = 0x664B9526;
		rREDLUT3 = 0x2240F9D3;
		rREDLUT4 = 0x62A50992;
		rREDLUT5 = 0x9A3260B9;
		rREDLUT6 = 0xF9E3A70D;

//		rGREENLUT0 = 0x80C10100;
//		rGREENLUT1 = 0x101C3050;
//		rGREENLUT2 = 0xD182C509;
//		rGREENLUT3 = 0x11203C70;
		rGREENLUT0 = 0x63C58700;
		rGREENLUT1 = 0x467CD972;
		rGREENLUT2 = 0x766BD5A7;
		rGREENLUT3 = 0x1120FDDB;
		rGREENLUT4 = 0xB15284C9;
		rGREENLUT5 = 0xCD19305C;
		rGREENLUT6 = 0x7CF1D386;
		rGREENLUT7 = 0x88D12140;
		rGREENLUT8 = 0x509D3254;
		rGREENLUT9 = 0xD58AD529;
		rGREENLUT10 = 0x3160BD72;
		rGREENLUT11 = 0xB3568CD9;
		rGREENLUT12 = 0xDD3970DD;
		rGREENLUT13 = 0xFDF3D78E;

//		rBLUELUT0 = 0x01820200;
//		rBLUELUT1 = 0x203860A1;
//		rBLUELUT2 = 0xA3058A12;
//		rBLUELUT3 = 0x224078E1;
		rBLUELUT0 = 0x43850600;
		rBLUELUT1 = 0x4478D162;
		rBLUELUT2 = 0x664B9526;
		rBLUELUT3 = 0x2240F9D3;
		rBLUELUT4 = 0x62A50992;
		rBLUELUT5 = 0x9A3260B9;
		rBLUELUT6 = 0xF9E3A70D;
	}
	else{
		rREDLUT0 = 0x01820200;
		rREDLUT1 = 0x203860A1;
		rREDLUT2 = 0xA3058A12;
		rREDLUT3 = 0x224078E1;
		rREDLUT4 = 0x62A50992;
		rREDLUT5 = 0x9A3260B9;
		rREDLUT6 = 0xF9E3A70D;

		rGREENLUT0 = 0x80C10100;
		rGREENLUT1 = 0x101C3050;
		rGREENLUT2 = 0xD182C509;
		rGREENLUT3 = 0x11203C70;
		rGREENLUT4 = 0xB15284C9;
		rGREENLUT5 = 0xCD19305C;
		rGREENLUT6 = 0x7CF1D386;
		rGREENLUT7 = 0x88D12140;
		rGREENLUT8 = 0x509D3254;
		rGREENLUT9 = 0xD58AD529;
		rGREENLUT10 = 0x3160BD72;
		rGREENLUT11 = 0xB3568CD9;
		rGREENLUT12 = 0xDD3970DD;
		rGREENLUT13 = 0xFDF3D78E;

		rBLUELUT0 = 0x01820200;
		rBLUELUT1 = 0x203860A1;
		rBLUELUT2 = 0xA3058A12;
		rBLUELUT3 = 0x224078E1;
		rBLUELUT4 = 0x62A50992;
		rBLUELUT5 = 0x9A3260B9;
		rBLUELUT6 = 0xF9E3A70D;
	}
}


void FrcSetting(void)
{
	rFRCPAT0 = 0x00000000;
	rFRCPAT1 = 0x80000000;
	rFRCPAT2 = 0x80000000;
	rFRCPAT3 = 0x80000000;
	rFRCPAT4 = 0x00080000;
	rFRCPAT5 = 0x80000200;
	rFRCPAT6 = 0x80008000;
	rFRCPAT7 = 0x80008000;
	rFRCPAT8 = 0x00000000;
	rFRCPAT9 = 0x80000000;
	rFRCPAT10 = 0x00000000;
	rFRCPAT11 = 0x80000000;
	rFRCPAT12 = 0x00000000;
	rFRCPAT13 = 0x80000000;
	rFRCPAT14 = 0x80808080;
	rFRCPAT15 = 0x80808080;
	rFRCPAT16 = 0x00000000;
	rFRCPAT17 = 0x81000000;
	rFRCPAT18 = 0x00000000;
	rFRCPAT19 = 0x82000000;
	rFRCPAT20 = 0x00000000;
	rFRCPAT21 = 0x82000000;
	rFRCPAT22 = 0x84208420;
	rFRCPAT23 = 0x84208420;
	rFRCPAT24 = 0x00000000;
	rFRCPAT25 = 0x84000000;
	rFRCPAT26 = 0x00000000;
	rFRCPAT27 = 0x88000000;
	rFRCPAT28 = 0x00000000;
	rFRCPAT29 = 0x88800000;
	rFRCPAT30 = 0x88888888;
	rFRCPAT31 = 0x88888888;
	rFRCPAT32 = 0x00000000;
	rFRCPAT33 = 0x88880000;
	rFRCPAT34 = 0x00000000;
	rFRCPAT35 = 0x91200000;
	rFRCPAT36 = 0x00000000;
	rFRCPAT37 = 0x92000000;
	rFRCPAT38 = 0xA248A248;
	rFRCPAT39 = 0xA248A248;
	rFRCPAT40 = 0x00000000;
	rFRCPAT41 = 0x92000000;
	rFRCPAT42 = 0x00000000;
	rFRCPAT43 = 0x92928000;
	rFRCPAT44 = 0x00000000;
	rFRCPAT45 = 0x92480000;
	rFRCPAT46 = 0xA8A8A8A8;
	rFRCPAT47 = 0xA8A8A8A8;
	rFRCPAT48 = 0x00000000;
	rFRCPAT49 = 0x94A00000;
	rFRCPAT50 = 0x00000000;
	rFRCPAT51 = 0xA5000000;
	rFRCPAT52 = 0x00000000;
	rFRCPAT53 = 0xA5200000;
	rFRCPAT54 = 0xAA54AA54;
	rFRCPAT55 = 0xAA54AA54;
	rFRCPAT56 = 0x00000000;
	rFRCPAT57 = 0xAA800000;
	rFRCPAT58 = 0x00000000;
	rFRCPAT59 = 0xAAA80000;
	rFRCPAT60 = 0x00000000;
	rFRCPAT61 = 0xAAAA8000;
	rFRCPAT62 = 0xAAAAAAAA;
	rFRCPAT63 = 0xAAAAAAAA;
}

void CstnCommonSetting(void)
{
	rLCDCON2=(0)|(LINEVAL_CSTN<<14);
    rLCDCON3=(WDLY_CSTN<<19)|(HOZVAL_CSTN<<8)|(LINEBLANK_CSTN<<0);
    rLCDCON4=(16<<0)|(MVAL<<8)|(WLH_CSTN<<0); //platform
    rLCDCON6=(0x10<<24)|(0x50<<16)|(0x30<<8)|(0); //platform
    rLCDTEST=0;
    rLCDCON8=(0<<31)|(1<<30)|(1<<28)|(0<<27)|(1<<26)|(0<<25)|(0<<18)|(0<<17)|(0<<10)|(0<<9)|(0<<2)|(0<<1);
}

⌨️ 快捷键说明

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