///// OTM3225 Initial Code ////// /* Note: To reverse image in the X direction: change : LCD_CtrlWrite(0x0001, 0x0100); // set SS and SM bit to: LCD_CtrlWrite(0x0001, 0x0000); // set SS and SM bit To reverse image in the Y direction: change : LCD_CtrlWrite(0x0060, 0xA700); // Gate Scan Line to: LCD_CtrlWrite(0x0060, 0x2700); // Gate Scan Line */ void Display_Init(void) { // VCI=2.8V //************* Reset LCD Driver ****************// LCD_nRESET = 1; delayms(1); //Delay 1ms LCD_nRESET = 0; delayms(10); // This delay time is necessary LCD_nRESET = 1; delayms(50); //Delay 50 ms //************* Start Initial Sequence **********// LCD_CtrlWrite(0x00E3, 0x3008); // Set internal timing LCD_CtrlWrite(0x00E7, 0x0012); // Set internal timing LCD_CtrlWrite(0x00EF, 0x1231); // Set internal timing LCD_CtrlWrite(0x0001, 0x0100); // set SS and SM bit LCD_CtrlWrite(0x0002, 0x0700); // set 1 line inversion LCD_CtrlWrite(0x0003, 0x1030); // set GRAM write direction and BGR=1. LCD_CtrlWrite(0x0004, 0x0000); // Resize register LCD_CtrlWrite(0x0008, 0x0207); // set the back porch and front porch LCD_CtrlWrite(0x0009, 0x0000); // set non-display area refresh cycle ISC[3:0] LCD_CtrlWrite(0x000A, 0x0000); // FMARK function LCD_CtrlWrite(0x000C, 0x0000); // RGB interface setting LCD_CtrlWrite(0x000D, 0x0000); // Frame marker Position LCD_CtrlWrite(0x000F, 0x0000); // RGB interface polarity //*************Power On sequence ****************// LCD_CtrlWrite(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB LCD_CtrlWrite(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0] LCD_CtrlWrite(0x0012, 0x0000); // VREG1OUT voltage LCD_CtrlWrite(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude delayms(200); // Dis-charge capacitor power voltage LCD_CtrlWrite(0x0010, 0x14b0); // SAP, BT[3:0], AP, DSTB, SLP, STB LCD_CtrlWrite(0x0011, 0x0227); // Set DC1[2:0], DC0[2:0], VC[2:0] delayms(50); // Delay 50ms LCD_CtrlWrite(0x0012, 0x001A); // External reference voltage= Vci; delayms(50); // Delay 50ms LCD_CtrlWrite(0x0013, 0x0A00); // VDV[4:0] for COM amplitude LCD_CtrlWrite(0x0029, 0x0011); // VCM[5:0] for VCOMH LCD_CtrlWrite(0x002B, 0x000F); // Set Frame Rate delayms(50); // Delay 50ms LCD_CtrlWrite(0x0020, 0x0000); // GRAM horizontal Address LCD_CtrlWrite(0x0021, 0x0000); // GRAM Vertical Address // ----------- Adjust the Gamma Curve ----------// LCD_CtrlWrite(0x0030, 0x0000); LCD_CtrlWrite(0x0031, 0x0607); LCD_CtrlWrite(0x0032, 0x0305); LCD_CtrlWrite(0x0035, 0x0000); LCD_CtrlWrite(0x0036, 0x0F04); LCD_CtrlWrite(0x0037, 0x0204); LCD_CtrlWrite(0x0038, 0x0001); LCD_CtrlWrite(0x0039, 0x0707); LCD_CtrlWrite(0x003C, 0x0000); LCD_CtrlWrite(0x003D, 0x000F); //------------------ Set GRAM area ---------------// LCD_CtrlWrite(0x0050, 0x0000); // Horizontal GRAM Start Address LCD_CtrlWrite(0x0051, 0x00EF); // Horizontal GRAM End Address LCD_CtrlWrite(0x0052, 0x0000); // Vertical GRAM Start Address LCD_CtrlWrite(0x0053, 0x013F); // Vertical GRAM Start Address LCD_CtrlWrite(0x0060, 0xA700); // Gate Scan Line LCD_CtrlWrite(0x0061, 0x0001); // NDL,VLE, REV LCD_CtrlWrite(0x006A, 0x0000); // set scrolling line //-------------- Partial Display Control ---------// LCD_CtrlWrite(0x0080, 0x0000); LCD_CtrlWrite(0x0081, 0x0000); LCD_CtrlWrite(0x0082, 0x0000); LCD_CtrlWrite(0x0083, 0x0000); LCD_CtrlWrite(0x0084, 0x0000); LCD_CtrlWrite(0x0085, 0x0000); //-------------- Panel Control -------------------// LCD_CtrlWrite(0x0090, 0x0011); LCD_CtrlWrite(0x0092, 0x0600); LCD_CtrlWrite(0x0007, 0x0133); // 262K color and display = ON } void LCD_EnterSleep(void) { LCD_CtrlWrite(0x0007, 0x0131); // Set D1=0, D0=1 delayms(10); LCD_CtrlWrite(0x0007, 0x0130); // Set D1=0, D0=0 delayms(10); LCD_CtrlWrite(0x0007, 0x0000); // display OFF //************* Power OFF sequence **************// LCD_CtrlWrite(0x0010, 0x0080); // SAP, BT[3:0], APE, AP, DSTB, SLP LCD_CtrlWrite(0x0011, 0x0000); // DC1[2:0], DC0[2:0], VC[2:0] LCD_CtrlWrite(0x0012, 0x0000); // VREG1OUT voltage LCD_CtrlWrite(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude delayms(200); // Dis-charge capacitor power voltage LCD_CtrlWrite(0x0010, 0x0082); // SAP, BT[3:0], APE, AP, DSTB, } void LCD_ExitSleep(void) { //*************Power On sequence ******************// LCD_CtrlWrite(0x0010, 0x0080); // SAP, BT[3:0], AP, DSTB, SLP LCD_CtrlWrite(0x0011, 0x0000); // DC1[2:0], DC0[2:0], VC[2:0] LCD_CtrlWrite(0x0012, 0x0000); // VREG1OUT voltage LCD_CtrlWrite(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude LCD_CtrlWrite(0x0007, 0x0001); delayms(200); // Dis-charge capacitor power voltage LCD_CtrlWrite(0x0010, 0x1490); // SAP, BT[3:0], AP, DSTB, SLP, STB LCD_CtrlWrite(0x0011, 0x0227); // DC1[2:0], DC0[2:0], VC[2:0] delayms(50); // Delay 50ms LCD_CtrlWrite(0x0012, 0x001A); // External reference voltage =Vci; delayms(50); LCD_CtrlWrite(0x0013, 0x1400); // VDV[4:0] for VCOM amplitude LCD_CtrlWrite(0x0029, 0x0020); // VCM[5:0] for VCOMH delayms(50); // Delay 50ms LCD_CtrlWrite(0x0007, 0x0133); // 262K color and display ON } void BlockWrite(unsinged int startx,unsinged int starty,unsinged int endx,unsinged int endy) { LCD_CtrlWrite(0x0050,startx); LCD_CtrlWrite(0x0051,endx); LCD_CtrlWrite(0x0052,starty); LCD_CtrlWrite(0x0053,endy); LCD_CtrlWrite(0x0020,startx); LCD_CtrlWrite(0x0021,starty); LCD_Index(0x0022); }