Tianma 2.0QVGA ILI9335 initial code 2009-06-11 //===================================================== void ILI9335_TS20_Initial(void) { // VCI=2.8V //************* Reset LCD Driver ****************// LCD_nRESET = 1; delayms(1); // Delay 1ms LCD_nRESET = 0; delayms(10); // Delay 10ms // This delay time is necessary LCD_nRESET = 1; delayms(50); // Delay 50 ms //************* Start Initial Sequence **********// WriteLCDReg(0x0001, 0x0100); // driver output control WriteLCDReg(0x0002, 0x0200); // set inverion WriteLCDReg(0x0003, 0x1030); // set entry mode WriteLCDReg(0x0008, 0x0202); // set back & front porch WriteLCDReg(0x0009, 0x0000); // set scan interval WriteLCDReg(0x000a, 0x0000); // set display control1 WriteLCDReg(0x000c, 0x0000); // set RGB I/F display control WriteLCDReg(0x000d, 0x0000); // set frame mark position WriteLCDReg(0x0060, 0x2700); // set gate scan control WriteLCDReg(0x0061, 0x0001); // Normally White WriteLCDReg(0x006a, 0x0000); // set gate scan control Delayms(10); // delay 10ms WriteLCDReg(0x0010, 0x1190); // set BT, STB & SLP WriteLCDReg(0x0011, 0x0227); // set VCi1 & step up circuits Delayms(80); // delay 80ms WriteLCDReg(0x0012, 0x008c); // set VREGOUT1 Delayms(10); // delay 10ms WriteLCDReg(0x0013, 0x1900); // set VCOMAC WriteLCDReg(0x0029, 0x0024); // set VCOMH WriteLCDReg(0x002b, 0x000C); // set frame rate 80Hz Delayms(10); // delay 10ms WriteLCDReg(0x0020, 0x0000); // set Gram horizontal address WriteLCDReg(0x0021, 0x0000); // set Gram vertical address //============Gamma============ WriteLCDReg(0x0030, 0x0400); //gamma 2.2 WriteLCDReg(0x0031, 0x0306); WriteLCDReg(0x0032, 0x0002); WriteLCDReg(0x0035, 0x0302); WriteLCDReg(0x0036, 0x0004); WriteLCDReg(0x0037, 0x0507); WriteLCDReg(0x0038, 0x0003); WriteLCDReg(0x0039, 0x0703); WriteLCDReg(0x003c, 0x0203); WriteLCDReg(0x003d, 0x0004); //============================= WriteLCDReg(0x0050, 0x0000); // set RAM address WriteLCDReg(0x0051, 0x00ef); WriteLCDReg(0x0052, 0x0000); WriteLCDReg(0x0053, 0x013f); Delayms(10); //delay 10ms WriteLCDReg(0x0007, 0x0133); // display on } //========================================================== void LCD_ExitSleep_ILI9335(void) { //*************Power On sequence ******************// WriteLCDReg(0x0010, 0x0080); // SAP, BT[3:0], AP, DSTB, SLP delayms(50); // Dis-charge capacitor power voltage WriteLCDReg(0x0010, 0x1190); // SAP, BT[3:0], AP, DSTB, SLP, STB WriteLCDReg(0x0011, 0x0227); // DC1[2:0], DC0[2:0], VC[2:0] delayms(80); // Delay 50ms WriteLCDReg(0x0012, 0x008c); //Inernal reference voltage =Vci; delayms(10); // Delay 50ms WriteLCDReg(0x0013, 0x1900); // VDV[4:0] for VCOM amplitude WriteLCDReg(0x0029, 0x0020); // VCM[5:0] for VCOMH delayms(10); // Delay 50ms WriteLCDReg(0x0007, 0x0133); // 262K color and display ON } void LCD_EnterSleep_ILI9335(void) { WriteLCDReg(0x0007, 0x0131); // Set D1=0, D0=1 delayms(10); WriteLCDReg(0x0007, 0x0130); // Set D1=0, D0=0 delayms(10); WriteLCDReg(0x0007, 0x0000); // display OFF //************* Power OFF sequence **************// WriteLCDReg(0x0010, 0x0080); // SAP, BT[3:0], APE, AP, DSTB, SLP WriteLCDReg(0x0011, 0x0000); // DC1[2:0], DC0[2:0], VC[2:0] WriteLCDReg(0x0012, 0x0000); // VREG1OUT voltage WriteLCDReg(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude delayms(50); // Dis-charge capacitor power voltage WriteLCDReg(0x0010, 0x0082); // SAP, BT[3:0], APE, AP, DSTB, SLP }