void LCD_Init(void) { LCD_GPIO_Config(); printf("GPIO Initaled.\r\n"); LCD_FSMC_Config(); printf("FSMC Configed.\r\n"); LCD_Rst(); printf("LCD Reseted.\r\n"); //printf("Invalid LCD ID:%08X\r\n",LCD_ReadReg(0x00)); LCD_WriteCmd(0xe2);//system reset Delay(5); LCD_WriteCmd(0xae); LCD_WriteCmd(0xf8); LCD_WriteCmd(0x00); LCD_WriteCmd(0xa2); LCD_WriteCmd(0xa0); LCD_WriteCmd(0xc0); LCD_WriteCmd(0xa6); LCD_WriteCmd(0xa4); LCD_WriteCmd(0xe0); LCD_WriteCmd(0xac); LCD_WriteCmd(0x00); LCD_WriteCmd(0x21); LCD_WriteCmd(0x81); LCD_WriteCmd(0x1e); LCD_WriteCmd(0x2f); LCD_WriteCmd(0x40); Delay(5); LCD_WriteCmd(0xaf); }
//初始化函数 void LCD_Init(void) { unsigned long colori=0; LCD_GPIO_Init(); FSMC_LCD_Init(); LCD_Rst(); LCD_WR_CMD(0x00E3, 0x3008); // Set internal timing LCD_WR_CMD(0x00E7, 0x0012); // Set internal timing LCD_WR_CMD(0x00EF, 0x1231); // Set internal timing LCD_WR_CMD(0x0000, 0x0001); // Start Oscillation LCD_WR_CMD(0x0001, 0x0100); // set SS and SM bit LCD_WR_CMD(0x0002, 0x0700); // set 1 line inversion LCD_WR_CMD(0x0003, 0x1030); // set GRAM write direction and BGR=0,262K colors,1 transfers/pixel. LCD_WR_CMD(0x0004, 0x0000); // Resize register LCD_WR_CMD(0x0008, 0x0202); // set the back porch and front porch LCD_WR_CMD(0x0009, 0x0000); // set non-display area refresh cycle ISC[3:0] LCD_WR_CMD(0x000A, 0x0000); // FMARK function LCD_WR_CMD(0x000C, 0x0000); // RGB interface setting LCD_WR_CMD(0x000D, 0x0000); // Frame marker Position LCD_WR_CMD(0x000F, 0x0000); // RGB interface polarity //Power On sequence LCD_WR_CMD(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB LCD_WR_CMD(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0] LCD_WR_CMD(0x0012, 0x0000); // VREG1OUT voltage LCD_WR_CMD(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude Lcd_Delay(200); // Dis-charge capacitor power voltage LCD_WR_CMD(0x0010, 0x1690); // SAP, BT[3:0], AP, DSTB, SLP, STB LCD_WR_CMD(0x0011, 0x0227); // R11h=0x0221 at VCI=3.3V, DC1[2:0], DC0[2:0], VC[2:0] Lcd_Delay(50); // Delay 50ms LCD_WR_CMD(0x0012, 0x001C); // External reference voltage= Vci; Lcd_Delay(50); // Delay 50ms LCD_WR_CMD(0x0013, 0x1800); // R13=1200 when R12=009D;VDV[4:0] for VCOM amplitude LCD_WR_CMD(0x0029, 0x001C); // R29=000C when R12=009D;VCM[5:0] for VCOMH LCD_WR_CMD(0x002B, 0x000D); // Frame Rate = 91Hz Lcd_Delay(50); // Delay 50ms LCD_WR_CMD(0x0020, 0x0000); // GRAM horizontal Address LCD_WR_CMD(0x0021, 0x0000); // GRAM Vertical Address // ----------- Adjust the Gamma Curve ----------// LCD_WR_CMD(0x0030, 0x0007); LCD_WR_CMD(0x0031, 0x0302); LCD_WR_CMD(0x0032, 0x0105); LCD_WR_CMD(0x0035, 0x0206); LCD_WR_CMD(0x0036, 0x0808); LCD_WR_CMD(0x0037, 0x0206); LCD_WR_CMD(0x0038, 0x0504); LCD_WR_CMD(0x0039, 0x0007); LCD_WR_CMD(0x003C, 0x0105); LCD_WR_CMD(0x003D, 0x0808); //------------------ Set GRAM area ---------------// LCD_WR_CMD(0x0050, 0x0000); // Horizontal GRAM Start Address LCD_WR_CMD(0x0051, 0x00EF); // Horizontal GRAM End Address LCD_WR_CMD(0x0052, 0x0000); // Vertical GRAM Start Address LCD_WR_CMD(0x0053, 0x013F); // Vertical GRAM Start Address LCD_WR_CMD(0x0060, 0xA700); // Gate Scan Line LCD_WR_CMD(0x0061, 0x0001); // NDL,VLE, REV LCD_WR_CMD(0x006A, 0x0000); // set scrolling line //-------------- Partial Display Control ---------// LCD_WR_CMD(0x0080, 0x0000); LCD_WR_CMD(0x0081, 0x0000); LCD_WR_CMD(0x0082, 0x0000); LCD_WR_CMD(0x0083, 0x0000); LCD_WR_CMD(0x0084, 0x0000); LCD_WR_CMD(0x0085, 0x0000); //-------------- Panel Control -------------------// LCD_WR_CMD(0x0090, 0x0010); LCD_WR_CMD(0x0092, 0x0000); LCD_WR_CMD(0x0093, 0x0003); LCD_WR_CMD(0x0095, 0x0110); LCD_WR_CMD(0x0097, 0x0000); LCD_WR_CMD(0x0098, 0x0000); LCD_WR_CMD(0x0007, 0x0133); // 262K color and display ON LCD_WR_CMD(32, 0); LCD_WR_CMD(33, 0x013F); *(__IO uint16_t *) (Bank1_LCD_C)= 34; for(colori=0;colori<76800;colori++) { LCD_WR_Data(BACK_COLOR); } }
/********************************************** Lcd初始化函数 ***********************************************/ void Lcd_Initialize(void) { LCD_GPIO_Config(); LCD_FSMC_Config(); LCD_Rst(); //************* Start Initial Sequence **********// WriteComm(0xFF); // EXTC Command Set enable register WriteData(0xFF); WriteData(0x98); WriteData(0x06); WriteComm(0xBA); // SPI Interface Setting WriteData(0xE0); WriteComm(0xBC); // GIP 1 WriteData(0x03); WriteData(0x0F); WriteData(0x63); WriteData(0x69); WriteData(0x01); WriteData(0x01); WriteData(0x1B); WriteData(0x11); WriteData(0x70); WriteData(0x73); WriteData(0xFF); WriteData(0xFF); WriteData(0x08); WriteData(0x09); WriteData(0x05); WriteData(0x00); WriteData(0xEE); WriteData(0xE2); WriteData(0x01); WriteData(0x00); WriteData(0xC1); WriteComm(0xBD); // GIP 2 WriteData(0x01); WriteData(0x23); WriteData(0x45); WriteData(0x67); WriteData(0x01); WriteData(0x23); WriteData(0x45); WriteData(0x67); WriteComm(0xBE); // GIP 3 WriteData(0x00); WriteData(0x22); WriteData(0x27); WriteData(0x6A); WriteData(0xBC); WriteData(0xD8); WriteData(0x92); WriteData(0x22); WriteData(0x22); WriteComm(0xC7); // Vcom WriteData(0x1E); WriteComm(0xED); // EN_volt_reg WriteData(0x7F); WriteData(0x0F); WriteData(0x00); WriteComm(0xC0); // Power Control 1 WriteData(0xE3); WriteData(0x0B); WriteData(0x00); WriteComm(0xFC); WriteData(0x08); WriteComm(0xDF); // Engineering Setting WriteData(0x00); WriteData(0x00); WriteData(0x00); WriteData(0x00); WriteData(0x00); WriteData(0x02); WriteComm(0xF3); // DVDD Voltage Setting WriteData(0x74); WriteComm(0xB4); // Display Inversion Control WriteData(0x00); WriteData(0x00); WriteData(0x00); WriteComm(0xF7); // 480x854 WriteData(0x81); WriteComm(0xB1); // Frame Rate WriteData(0x00); WriteData(0x10); WriteData(0x14); WriteComm(0xF1); // Panel Timing Control WriteData(0x29); WriteData(0x8A); WriteData(0x07); WriteComm(0xF2); //Panel Timing Control WriteData(0x40); WriteData(0xD2); WriteData(0x50); WriteData(0x28); WriteComm(0xC1); // Power Control 2 WriteData(0x17); WriteData(0X85); WriteData(0x85); WriteData(0x20); WriteComm(0xE0); WriteData(0x00); //P1 WriteData(0x0C); //P2 WriteData(0x15); //P3 WriteData(0x0D); //P4 WriteData(0x0F); //P5 WriteData(0x0C); //P6 WriteData(0x07); //P7 WriteData(0x05); //P8 WriteData(0x07); //P9 WriteData(0x0B); //P10 WriteData(0x10); //P11 WriteData(0x10); //P12 WriteData(0x0D); //P13 WriteData(0x17); //P14 WriteData(0x0F); //P15 WriteData(0x00); //P16 WriteComm(0xE1); WriteData(0x00); //P1 WriteData(0x0D); //P2 WriteData(0x15); //P3 WriteData(0x0E); //P4 WriteData(0x10); //P5 WriteData(0x0D); //P6 WriteData(0x08); //P7 WriteData(0x06); //P8 WriteData(0x07); //P9 WriteData(0x0C); //P10 WriteData(0x11); //P11 WriteData(0x11); //P12 WriteData(0x0E); //P13 WriteData(0x17); //P14 WriteData(0x0F); //P15 WriteData(0x00); //P16 WriteComm(0x35); //Tearing Effect ON WriteData(0x00); WriteComm(0x36); WriteData(0x60); WriteComm(0x3A); WriteData(0x55); WriteComm(0x11); //Exit Sleep LCD_delay(120); WriteComm(0x29); // Display On LCD_delay(10); Lcd_Light_ON; WriteComm(0x3A); WriteData(0x55); WriteComm(0x36); WriteData(0xA8); Lcd_ColorBox(0,0,800,480,YELLOW); // LCD_Fill_Pic(80,160,320,480, gImage_MM_T035); // BlockWrite(0,0,799,479); }