void LCD_Init(void)
{
// Configure the LCD Control pins --------------------------------------------
LCD_CtrlLinesConfig();
// Configure the Parallel interface ------------------------------------------
LCD_PrllConfig();
delay_ms(50); // Delay 50 ms
LCD_ID = LCD_ReadReg(0x00);
if(LCD_ID == 0x9325)
{
LCD_Type = NEW_LCD_9325;
// Start Initial Sequence
LCD_WriteReg(R0, 0x0001); // Start internal OSC.
LCD_WriteReg(R1, 0x0100); // set SS and SM bit
LCD_WriteReg(R2, 0x0700); // set 1 line inversion
LCD_WriteReg(R3, 0x1018); // set GRAM write direction and BGR=1.
LCD_WriteReg(R4, 0x0000); // Resize register
LCD_WriteReg(R8, 0x0202); // set the back porch and front porch
LCD_WriteReg(R9, 0x0000); // set non-display area refresh cycle ISC[3:0]
LCD_WriteReg(R10, 0x0000); // FMARK function
LCD_WriteReg(R12, 0x0000); // RGB interface setting
LCD_WriteReg(R13, 0x0000); // Frame marker Position
LCD_WriteReg(R15, 0x0000); // RGB interface polarity
// Power On sequence -------------------------------------------------------
LCD_WriteReg(R16, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_WriteReg(R17, 0x0000); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_WriteReg(R18, 0x0000); // VREG1OUT voltage
LCD_WriteReg(R19, 0x0000); // VDV[4:0] for VCOM amplitude
delay_ms(200); // Dis-charge capacitor power voltage (200ms)
LCD_WriteReg(R16, 0x17B0); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_WriteReg(R17, 0x0137); // DC1[2:0], DC0[2:0], VC[2:0]
delay_ms(50); // Delay 50 ms
LCD_WriteReg(R18, 0x0139); // VREG1OUT voltage
delay_ms(50); // Delay 50 ms
LCD_WriteReg(R19, 0x1d00); // VDV[4:0] for VCOM amplitude
LCD_WriteReg(R41, 0x0013); // VCM[4:0] for VCOMH
delay_ms(50); // Delay 50 ms
LCD_WriteReg(R32, 0x0000); // GRAM horizontal Address
LCD_WriteReg(R33, 0x0000); // GRAM Vertical Address
// set GRAM write direction and BGR=1
// I/D=00 (Horizontal : increment, Vertical : decrement)
// AM=1 (address is updated in vertical writing direction)
LCD_WriteReg(R3, 0x1018);
LCD_WriteReg(R7, 0x0133); // 262K color and display ON
return;
}
// Start Initial Sequence (ILI9320)-------------------------------------------
LCD_WriteReg(R229, 0x8000); // Set the internal vcore voltage
LCD_WriteReg(R0, 0x0001); // Start internal OSC.
LCD_WriteReg(R1, 0x0100); // set SS and SM bit
LCD_WriteReg(R2, 0x0700); // set 1 line inversion
LCD_WriteReg(R3, 0x1030); // set GRAM write direction and BGR=1.
LCD_WriteReg(R4, 0x0000); // Resize register
LCD_WriteReg(R8, 0x0202); // set the back porch and front porch
LCD_WriteReg(R9, 0x0000); // set non-display area refresh cycle ISC[3:0]
LCD_WriteReg(R10, 0x0000); // FMARK function
LCD_WriteReg(R12, 0x0000); // RGB interface setting
LCD_WriteReg(R13, 0x0000); // Frame marker Position
LCD_WriteReg(R15, 0x0000); // RGB interface polarity
// Power On sequence ---------------------------------------------------------
LCD_WriteReg(R16, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_WriteReg(R17, 0x0000); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_WriteReg(R18, 0x0000); // VREG1OUT voltage
LCD_WriteReg(R19, 0x0000); // VDV[4:0] for VCOM amplitude
delay_ms(200); // Dis-charge capacitor power voltage (200ms)
LCD_WriteReg(R16, 0x17B0); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_WriteReg(R17, 0x0137); // DC1[2:0], DC0[2:0], VC[2:0]
delay_ms(50); // Delay 50 ms
LCD_WriteReg(R18, 0x0139); // VREG1OUT voltage
delay_ms(50); // Delay 50 ms
LCD_WriteReg(R19, 0x1d00); // VDV[4:0] for VCOM amplitude
LCD_WriteReg(R41, 0x0013); // VCM[4:0] for VCOMH
delay_ms(50); // Delay 50 ms
LCD_WriteReg(R32, 0x0000); // GRAM horizontal Address
LCD_WriteReg(R33, 0x0000); // GRAM Vertical Address