void SRAM_Init(void) { SRAM_GPIO_Init(); SRAM_FSMCConfig(); LCD_FSMCConfig(); NandFlash_FSMCConfig(); Dm9000a_FSMCConfig(); }
/* * Reset and Initialize Display. */ void Init_LCD(void) { LCD_CtrlLinesConfig(); Delay(3000); LCD_FSMCConfig(); Delay(3000); TIM_Config(); LCD_BackLight(100); LCD_WriteReg(0x0007,0x0021); Delay(50); LCD_WriteReg(0x0000,0x0001); Delay(50); LCD_WriteReg(0x0007,0x0023); Delay(50); LCD_WriteReg(0x0010,0x0000); Delay(90); LCD_WriteReg(0x0007,0x0033); Delay(50); LCD_WriteReg(0x0011,0x6830); Delay(50); LCD_WriteReg(0x0002,0x0600); Delay(50); LCD_WriteReg(0x0012,0x6CEB); Delay(50); LCD_WriteReg(0x0003,0xA8A4); Delay(50); LCD_WriteReg(0x000C,0x0000); Delay(50); LCD_WriteReg(0x000D,0x080C); Delay(50); LCD_WriteReg(0x000E,0x2B00); Delay(50); LCD_WriteReg(0x001E,0x00B0); Delay(50); LCD_WriteReg(0x0001,0x2b3F); Delay(50); //RGB LCD_WriteReg(0x0005,0x0000); Delay(50); LCD_WriteReg(0x0006,0x0000); Delay(50); LCD_WriteReg(0x0016,0xEF1C); Delay(50); LCD_WriteReg(0x0017,0x0103); Delay(50); LCD_WriteReg(0x000B,0x0000); Delay(50); LCD_WriteReg(0x000F,0x0000); Delay(50); LCD_WriteReg(0x0041,0x0000); Delay(50); LCD_WriteReg(0x0042,0x0000); Delay(50); LCD_WriteReg(0x0048,0x0000); Delay(50); LCD_WriteReg(0x0049,0x013F); Delay(50); LCD_WriteReg(0x004A,0x0000); Delay(50); LCD_WriteReg(0x004B,0x0000); Delay(50); LCD_WriteReg(0x0044,0xEF00); Delay(50); LCD_WriteReg(0x0045,0x0000); Delay(50); LCD_WriteReg(0x0046,0x013F); Delay(50); LCD_WriteReg(0x0030,0x0707); Delay(50); LCD_WriteReg(0x0031,0x0204); Delay(50); LCD_WriteReg(0x0032,0x0204); Delay(50); LCD_WriteReg(0x0033,0x0502); Delay(50); LCD_WriteReg(0x0034,0x0507); Delay(50); LCD_WriteReg(0x0035,0x0204); Delay(50); LCD_WriteReg(0x0036,0x0204); Delay(50); LCD_WriteReg(0x0037,0x0502); Delay(50); LCD_WriteReg(0x003A,0x0302); Delay(50); LCD_WriteReg(0x002F,0x12BE); Delay(50); LCD_WriteReg(0x003B,0x0302); Delay(50); LCD_WriteReg(0x0023,0x0000); Delay(50); LCD_WriteReg(0x0024,0x0000); Delay(50); LCD_WriteReg(0x0025,0x8000); Delay(50); LCD_WriteReg(0x004f,0x0000); Delay(50); LCD_WriteReg(0x004e,0x0000); Delay(50); }
/******************************************************************************* * Function Name : STM3210E_LCD_Init * Description : Initializes the LCD. * Input : None * Output : None * Return : None *******************************************************************************/ void STM3210E_LCD_Init(void) { #ifndef NO_LCD /* Configure the LCD Control pins --------------------------------------------*/ LCD_CtrlLinesConfig(); /* Configure the FSMC Parallel interface -------------------------------------*/ LCD_FSMCConfig(); LCD_Command = Display_Off; // delay(); LCD_Command = LCD_Reset; // reset_delay(); LCD_Command = Set_LCD_Bias_9; delay(); LCD_Command = Set_ADC_Normal; delay(); LCD_Command = COM_Scan_Dir_Reverse; delay(); LCD_Command = Set_Start_Line_X|0x0; delay(); LCD_Command = 0x2c; power_delay(); // 50ms requried LCD_Command = 0x2e; power_delay(); // 50ms LCD_Command = 0x2f; power_delay(); // 50ms LCD_Command = Set_Ref_Vol_Reg|0x05; delay(); LCD_Command = Set_Ref_Vol_Mode; delay(); LCD_Command = Set_Ref_Vol_Reg; delay(); LCD_Clear(); delay(); LCD_Command = Set_Page_Addr_X|0x0; delay(); LCD_Command = Set_ColH_Addr_X|0x0; delay(); LCD_Command = Set_ColL_Addr_X|0x0; delay(); LCD_Command = Display_On; // delay(); #endif }
//***************************************************************************** // //***************************************************************************** void hx8347_Init(void) { volatile uint32_t lcdid = 0; volatile uint16_t clrColor, red, green, blue, regValue; regValue = 0xE8; LCD_CtrlLinesConfig(); LCD_FSMCConfig(); Set_Rst(); delay_ms(10); Clr_Rst(); delay_ms(10); Set_Rst(); delay_ms(250); }
/******************************************************************************* * Function Name : STM3210E_LCD_Init * Description : Initializes the LCD. * Input : None * Output : None * Return : None *******************************************************************************/ void STM3210E_LCD_Init(void) { /* Configure the LCD Control pins --------------------------------------------*/ LCD_CtrlLinesConfig(); /* Configure the FSMC Parallel interface -------------------------------------*/ LCD_FSMCConfig(); Delay(5); /* delay 50 ms */ /* Start Initial Sequence ----------------------------------------------------*/ 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(20); /* 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(5); /* Delay 50 ms */ LCD_WriteReg(R18, 0x0139); /* VREG1OUT voltage */ Delay(5); /* Delay 50 ms */ LCD_WriteReg(R19, 0x1d00); /* VDV[4:0] for VCOM amplitude */ LCD_WriteReg(R41, 0x0013); /* VCM[4:0] for VCOMH */ Delay(5); /* Delay 50 ms */ LCD_WriteReg(R32, 0x0000); /* GRAM horizontal Address */ LCD_WriteReg(R33, 0x0000); /* GRAM Vertical Address */ /* Adjust the Gamma Curve ----------------------------------------------------*/ LCD_WriteReg(R48, 0x0006); LCD_WriteReg(R49, 0x0101); LCD_WriteReg(R50, 0x0003); LCD_WriteReg(R53, 0x0106); LCD_WriteReg(R54, 0x0b02); LCD_WriteReg(R55, 0x0302); LCD_WriteReg(R56, 0x0707); LCD_WriteReg(R57, 0x0007); LCD_WriteReg(R60, 0x0600); LCD_WriteReg(R61, 0x020b); /* Set GRAM area -------------------------------------------------------------*/ LCD_WriteReg(R80, 0x0000); /* Horizontal GRAM Start Address */ LCD_WriteReg(R81, 0x00EF); /* Horizontal GRAM End Address */ LCD_WriteReg(R82, 0x0000); /* Vertical GRAM Start Address */ LCD_WriteReg(R83, 0x013F); /* Vertical GRAM End Address */ LCD_WriteReg(R96, 0x2700); /* Gate Scan Line */ LCD_WriteReg(R97, 0x0001); /* NDL,VLE, REV */ LCD_WriteReg(R106, 0x0000); /* set scrolling line */ /* Partial Display Control ---------------------------------------------------*/ LCD_WriteReg(R128, 0x0000); LCD_WriteReg(R129, 0x0000); LCD_WriteReg(R130, 0x0000); LCD_WriteReg(R131, 0x0000); LCD_WriteReg(R132, 0x0000); LCD_WriteReg(R133, 0x0000); /* Panel Control -------------------------------------------------------------*/ LCD_WriteReg(R144, 0x0010); LCD_WriteReg(R146, 0x0000); LCD_WriteReg(R147, 0x0003); LCD_WriteReg(R149, 0x0110); LCD_WriteReg(R151, 0x0000); LCD_WriteReg(R152, 0x0000); /* Set GRAM write direction and BGR = 1 */ /* I/D=01 (Horizontal : increment, Vertical : decrement) */ /* AM=1 (address is updated in vertical writing direction) */ LCD_WriteReg(R3, 0x1018); LCD_WriteReg(R7, 0x0173); /* 262K color and display ON */ }
//****************************************************************************** // Universal Init void LCD_Init(void) { uint16_t lcdid = 0; // pointers = 0; fpLCD_SetWindow = 0; fpLCD_PutPixel = 0; fpLCD_DrawChar = 0; fpLCD_DrawFillRect = 0; fpLCD_DrawMonoPict = 0; fpLCD_WriteBMP = 0; // color config LCD_SetColorMode(colorIndex); // config gpio and fsmc LCD_CtrlLinesConfig(); LCD_FSMCConfig(); // displey reset LCD_Reset_Off(); guiDelay_ms(10); LCD_Reset_On(); guiDelay_ms(10); LCD_Reset_Off(); guiDelay_ms(250); // read display type lcdid = readTypeLCD(); if (lcdid == 0x9320) // ILI9320 { fpLCD_SetWindow = &LCD_SetWindow_ILI9320; fpLCD_PutPixel = &LCD_PutPixel_ILI9320; fpLCD_DrawChar = &LCD_DrawChar_ILI9320; fpLCD_DrawFillRect = &LCD_DrawFillRect_ILI9320; fpLCD_DrawMonoPict = &LCD_DrawMonoPict_ILI9320; fpLCD_WriteBMP = &LCD_WriteBMP_ILI9320; LCD_SetColorGRAM(lcdColorRGB_565); LCD_Init_ILI9320(); } if (lcdid == 0x9325) // ILI9325 { } if (lcdid == 0x1289) // SSD1289 { } if (lcdid == 0x0047) // HX8347-A { fpLCD_SetWindow = &LCD_SetWindow_HX8347A; fpLCD_PutPixel = &LCD_PutPixel_HX8347A; fpLCD_DrawChar = &LCD_DrawChar_HX8347A; fpLCD_DrawFillRect = &LCD_DrawFillRect_HX8347A; fpLCD_DrawMonoPict = &LCD_DrawMonoPict_HX8347A; fpLCD_WriteBMP = &LCD_WriteBMP_HX8347A; LCD_SetColorGRAM(lcdColorRGB_666); LCD_Init_HX8347A(); } if (lcdid == 0x8999) // SSD1298 { fpLCD_SetWindow = &LCD_SetWindow_SSD1298; fpLCD_PutPixel = &LCD_PutPixel_SSD1298; fpLCD_DrawChar = &LCD_DrawChar_SSD1298; fpLCD_DrawFillRect = &LCD_DrawFillRect_SSD1298; fpLCD_DrawMonoPict = &LCD_DrawMonoPict_SSD1298; fpLCD_WriteBMP = &LCD_WriteBMP_SSD1298; LCD_SetColorGRAM(lcdColorRGB_565); LCD_Init_SSD1298(); } // displwy clear LCD_Clear(LCD_COLOR_GREYL); LCD_SetFont(&LCD_DEFAULT_FONT); }
/** * @brief LCD Init. * @retval None */ uint8_t BSP_LCD_Init(void) { unsigned long ulCount; /* Configure the LCD Control pins */ LCD_CtrlLinesConfig(); /* Configure the FSMC Parallel interface */ LCD_FSMCConfig(); HAL_Delay(5); /* Reset LCD */ HAL_GPIO_WritePin(LCD_RST_PORT, LCD_RST_PIN, GPIO_PIN_RESET); HAL_Delay(10); HAL_GPIO_WritePin(LCD_RST_PORT, LCD_RST_PIN, GPIO_PIN_SET); /* SSD2119Init(void) */ /* Enter sleep mode (if we are not already there).*/ LCD_WriteReg(SSD2119_SLEEP_MODE_1_REG, 0x0001); /* Set initial power parameters. */ LCD_WriteReg(SSD2119_PWR_CTRL_5_REG, 0x00B2); LCD_WriteReg(SSD2119_VCOM_OTP_1_REG, 0x0006); /* Start the oscillator.*/ LCD_WriteReg(SSD2119_OSC_START_REG, 0x0001); /* Set pixel format and basic display orientation (scanning direction).*/ LCD_WriteReg(SSD2119_OUTPUT_CTRL_REG, 0x30EF); //RGB // LCD_WriteReg(SSD2119_OUTPUT_CTRL_REG, 0x38EF); //BGR LCD_WriteReg(SSD2119_LCD_DRIVE_AC_CTRL_REG, 0x0600); /* Exit sleep mode.*/ LCD_WriteReg(SSD2119_SLEEP_MODE_1_REG, 0x0000); HAL_Delay(5); /* Configure pixel color format and MCU interface parameters.*/ LCD_WriteReg(SSD2119_ENTRY_MODE_REG, ENTRY_MODE_DEFAULT); /* Set analog parameters */ LCD_WriteReg(SSD2119_SLEEP_MODE_2_REG, 0x0999); LCD_WriteReg(SSD2119_ANALOG_SET_REG, 0x3800); /* Enable the display */ LCD_WriteReg(SSD2119_DISPLAY_CTRL_REG, 0x0033); /* Set VCIX2 voltage to 6.1V.*/ LCD_WriteReg(SSD2119_PWR_CTRL_2_REG, 0x0005); /* Configure gamma correction.*/ LCD_WriteReg(SSD2119_GAMMA_CTRL_1_REG, 0x0000); LCD_WriteReg(SSD2119_GAMMA_CTRL_2_REG, 0x0303); LCD_WriteReg(SSD2119_GAMMA_CTRL_3_REG, 0x0407); LCD_WriteReg(SSD2119_GAMMA_CTRL_4_REG, 0x0301); LCD_WriteReg(SSD2119_GAMMA_CTRL_5_REG, 0x0301); LCD_WriteReg(SSD2119_GAMMA_CTRL_6_REG, 0x0403); LCD_WriteReg(SSD2119_GAMMA_CTRL_7_REG, 0x0707); LCD_WriteReg(SSD2119_GAMMA_CTRL_8_REG, 0x0400); LCD_WriteReg(SSD2119_GAMMA_CTRL_9_REG, 0x0a00); LCD_WriteReg(SSD2119_GAMMA_CTRL_10_REG, 0x1000); /* Configure Vlcd63 and VCOMl */ LCD_WriteReg(SSD2119_PWR_CTRL_3_REG, 0x000A); LCD_WriteReg(SSD2119_PWR_CTRL_4_REG, 0x2E00); /* Set the display size and ensure that the GRAM window is set to allow access to the full display buffer.*/ LCD_WriteReg(SSD2119_V_RAM_POS_REG, (LCD_PIXEL_HEIGHT-1) << 8); LCD_WriteReg(SSD2119_H_RAM_START_REG, 0x0000); LCD_WriteReg(SSD2119_H_RAM_END_REG, LCD_PIXEL_WIDTH-1); LCD_WriteReg(SSD2119_X_RAM_ADDR_REG, 0x00); LCD_WriteReg(SSD2119_Y_RAM_ADDR_REG, 0x00); /* clear the lcd */ LCD_WriteReg(SSD2119_RAM_DATA_REG, 0x0000); for(ulCount = 0; ulCount < (LCD_PIXEL_WIDTH * LCD_PIXEL_HEIGHT); ulCount++) { LCD_WriteRAM(0x0000); } /* Default value for draw propriety */ DrawProp.BackColor = 0xFFFF; DrawProp.pFont = &Font24; DrawProp.TextColor = 0x0000; BSP_LCD_SetFont(&LCD_DEFAULT_FONT); return 0; }
static void lcd_port_init(void) { LCD_FSMCConfig(); }
/** * @brief Initializes the LCD. * @param None * @retval None */ void STM3210E_LCD_Init(void) { /* Configure the LCD Control pins */ LCD_CtrlLinesConfig(); /* Configure the FSMC Parallel interface */ LCD_FSMCConfig(); /* delay 50 ms */ _delay_(5); /* Read the LCD ID */ LCD_ID = LCD_ReadReg(0x00); /* Check if the LCD is HX8347D Controller */ if (LCD_ID == LCD_HX8347D) { /* Driving ability setting */ LCD_WriteReg(LCD_REG_234, 0x00); LCD_WriteReg(LCD_REG_235, 0x20); LCD_WriteReg(LCD_REG_236, 0x0C); LCD_WriteReg(LCD_REG_237, 0xC4); LCD_WriteReg(LCD_REG_232, 0x40); LCD_WriteReg(LCD_REG_233, 0x38); LCD_WriteReg(LCD_REG_241, 0x01); /* RGB 18-bit interface ;0x0110 */ LCD_WriteReg(LCD_REG_242, 0x10); LCD_WriteReg(LCD_REG_39, 0xA3); /* Adjust the Gamma Curve */ LCD_WriteReg(LCD_REG_64, 0x01); LCD_WriteReg(LCD_REG_65, 0x00); LCD_WriteReg(LCD_REG_66, 0x00); LCD_WriteReg(LCD_REG_67, 0x10); LCD_WriteReg(LCD_REG_68, 0x0E); LCD_WriteReg(LCD_REG_69, 0x24); LCD_WriteReg(LCD_REG_70, 0x04); LCD_WriteReg(LCD_REG_71, 0x50); LCD_WriteReg(LCD_REG_72, 0x02); LCD_WriteReg(LCD_REG_73, 0x13); LCD_WriteReg(LCD_REG_74, 0x19); LCD_WriteReg(LCD_REG_75, 0x19); LCD_WriteReg(LCD_REG_76, 0x16); LCD_WriteReg(LCD_REG_80, 0x1B); LCD_WriteReg(LCD_REG_81, 0x31); LCD_WriteReg(LCD_REG_82, 0x2F); LCD_WriteReg(LCD_REG_83, 0x3F); LCD_WriteReg(LCD_REG_84, 0x3F); LCD_WriteReg(LCD_REG_85, 0x3E); LCD_WriteReg(LCD_REG_86, 0x2F); LCD_WriteReg(LCD_REG_87, 0x7B); LCD_WriteReg(LCD_REG_88, 0x09); LCD_WriteReg(LCD_REG_89, 0x06); LCD_WriteReg(LCD_REG_90, 0x06); LCD_WriteReg(LCD_REG_91, 0x0C); LCD_WriteReg(LCD_REG_92, 0x1D); LCD_WriteReg(LCD_REG_93, 0xCC); /* Power voltage setting */ LCD_WriteReg(LCD_REG_27, 0x1B); LCD_WriteReg(LCD_REG_26, 0x01); LCD_WriteReg(LCD_REG_36, 0x2F); LCD_WriteReg(LCD_REG_37, 0x57); /*****VCOM offset ****/ LCD_WriteReg(LCD_REG_35, 0x86); /* Power on setting */ LCD_WriteReg(LCD_REG_24, 0x36); /* Display frame rate:75Hz(2.85MHz X 117%) */ LCD_WriteReg(LCD_REG_25, 0x01); /* Internal oscillator start to oscillate */ LCD_WriteReg(LCD_REG_1, 0x00); LCD_WriteReg(LCD_REG_31, 0x88); /* Step-up Circuit 1 on,open abnormal power-off monitor */ _delay_(6); LCD_WriteReg(LCD_REG_31, 0x80); /* Step-up Circuit 1 off */ _delay_(6); LCD_WriteReg(LCD_REG_31, 0x90); /* VCOML voltage can output to negative voltage, (1.0V ~ VCL+0.5V) */ _delay_(6); LCD_WriteReg(LCD_REG_31, 0xD0); /* Step-up Circuit 2 on */ _delay_(6); LCD_WriteReg(LCD_REG_23, 0x05); /* COLMOD control */ /* Set GRAM Area - Partial Display Control */ LCD_WriteReg(LCD_REG_1, 0x00); /* Scroll off */ LCD_WriteReg(LCD_REG_2, 0x00); LCD_WriteReg(LCD_REG_3, 0x00); LCD_WriteReg(LCD_REG_4, 0x01); /* X,Y swap */ LCD_WriteReg(LCD_REG_5, 0x3F); /* X,Y swap */ LCD_WriteReg(LCD_REG_6, 0x00); LCD_WriteReg(LCD_REG_7, 0x00); LCD_WriteReg(LCD_REG_8, 0x00); /* X,Y swap */ LCD_WriteReg(LCD_REG_9, 0xEF); /* X,Y swap */ /* Memory access control */ /* bit7 controls left,right swap(X) */ /* bit6 controls up,down swap(Y) */ /* bit5 controls X,Y swap */ LCD_WriteReg(LCD_REG_22, 0x28); /* SET PANEL */ LCD_WriteReg(LCD_REG_54, 0x00); /* Panel characteristic control */ LCD_WriteReg(LCD_REG_54, 0x04); /* Panel characteristic control: gate driver shift reverse[work] */ LCD_WriteReg(LCD_REG_40, 0x38); /* Display control3: source output->PT(0,0) */ _delay_(20); LCD_WriteReg(LCD_REG_40, 0x3C); /* Display control3: source output->Display */ } else { /* Check if the LCD is SPFD5408B Controller */ if (LCD_ReadReg(0x00) == 0x5408) { /* Start Initial Sequence ------------------------------------------------ */ LCD_WriteReg(LCD_REG_1, 0x0100); /* Set SS bit */ LCD_WriteReg(LCD_REG_2, 0x0700); /* Set 1 line inversion */ LCD_WriteReg(LCD_REG_3, 0x1030); /* Set GRAM write direction and BGR=1. */ LCD_WriteReg(LCD_REG_4, 0x0000); /* Resize register */ LCD_WriteReg(LCD_REG_8, 0x0202); /* Set the back porch and front porch */ LCD_WriteReg(LCD_REG_9, 0x0000); /* Set non-display area refresh cycle ISC[3:0] */ LCD_WriteReg(LCD_REG_10, 0x0000); /* FMARK function */ LCD_WriteReg(LCD_REG_12, 0x0000); /* RGB 18-bit System interface setting */ LCD_WriteReg(LCD_REG_13, 0x0000); /* Frame marker Position */ LCD_WriteReg(LCD_REG_15, 0x0000); /* RGB interface polarity, no impact */ /* Power On sequence ----------------------------------------------------- */ LCD_WriteReg(LCD_REG_16, 0x0000); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ LCD_WriteReg(LCD_REG_17, 0x0000); /* DC1[2:0], DC0[2:0], VC[2:0] */ LCD_WriteReg(LCD_REG_18, 0x0000); /* VREG1OUT voltage */ LCD_WriteReg(LCD_REG_19, 0x0000); /* VDV[4:0] for VCOM amplitude */ _delay_(60); /* Dis-charge capacitor power voltage (200ms) */ LCD_WriteReg(LCD_REG_17, 0x0007); /* DC1[2:0], DC0[2:0], VC[2:0] */ _delay_(20); /* Delay 50 ms */ LCD_WriteReg(LCD_REG_16, 0x12B0); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ _delay_(20); /* Delay 50 ms */ LCD_WriteReg(LCD_REG_18, 0x01BD); /* External reference voltage= Vci */ _delay_(20); LCD_WriteReg(LCD_REG_19, 0x1400); /* VDV[4:0] for VCOM amplitude */ LCD_WriteReg(LCD_REG_41, 0x000E); /* VCM[4:0] for VCOMH */ _delay_(20); /* Delay 50 ms */ LCD_WriteReg(LCD_REG_32, 0x0000); /* GRAM horizontal Address */ LCD_WriteReg(LCD_REG_33, 0x013F); /* GRAM Vertical Address */ /* Adjust the Gamma Curve (SPFD5408B)------------------------------------- */ LCD_WriteReg(LCD_REG_48, 0x0b0d); LCD_WriteReg(LCD_REG_49, 0x1923); LCD_WriteReg(LCD_REG_50, 0x1c26); LCD_WriteReg(LCD_REG_51, 0x261c); LCD_WriteReg(LCD_REG_52, 0x2419); LCD_WriteReg(LCD_REG_53, 0x0d0b); LCD_WriteReg(LCD_REG_54, 0x1006); LCD_WriteReg(LCD_REG_55, 0x0610); LCD_WriteReg(LCD_REG_56, 0x0706); LCD_WriteReg(LCD_REG_57, 0x0304); LCD_WriteReg(LCD_REG_58, 0x0e05); LCD_WriteReg(LCD_REG_59, 0x0e01); LCD_WriteReg(LCD_REG_60, 0x010e); LCD_WriteReg(LCD_REG_61, 0x050e); LCD_WriteReg(LCD_REG_62, 0x0403); LCD_WriteReg(LCD_REG_63, 0x0607); /* Set GRAM area --------------------------------------------------------- */ LCD_WriteReg(LCD_REG_80, 0x0000); /* Horizontal GRAM Start Address */ LCD_WriteReg(LCD_REG_81, 0x00EF); /* Horizontal GRAM End Address */ LCD_WriteReg(LCD_REG_82, 0x0000); /* Vertical GRAM Start Address */ LCD_WriteReg(LCD_REG_83, 0x013F); /* Vertical GRAM End Address */ LCD_WriteReg(LCD_REG_96, 0xA700); /* Gate Scan Line */ LCD_WriteReg(LCD_REG_97, 0x0001); /* NDL, VLE, REV */ LCD_WriteReg(LCD_REG_106, 0x0000); /* set scrolling line */ /* Partial Display Control ----------------------------------------------- */ LCD_WriteReg(LCD_REG_128, 0x0000); LCD_WriteReg(LCD_REG_129, 0x0000); LCD_WriteReg(LCD_REG_130, 0x0000); LCD_WriteReg(LCD_REG_131, 0x0000); LCD_WriteReg(LCD_REG_132, 0x0000); LCD_WriteReg(LCD_REG_133, 0x0000); /* Panel Control --------------------------------------------------------- */ LCD_WriteReg(LCD_REG_144, 0x0010); LCD_WriteReg(LCD_REG_146, 0x0000); LCD_WriteReg(LCD_REG_147, 0x0003); LCD_WriteReg(LCD_REG_149, 0x0110); LCD_WriteReg(LCD_REG_151, 0x0000); LCD_WriteReg(LCD_REG_152, 0x0000); /* Set GRAM write direction and BGR=1 I/D=01 (Horizontal : increment, Vertical : decrement) AM=1 (address is updated in vertical writing direction) */ LCD_WriteReg(LCD_REG_3, 0x1018); LCD_WriteReg(LCD_REG_7, 0x0112); /* 262K color and display ON */ LCD_SetFont(&LCD_DEFAULT_FONT); return; } /* Start Initial Sequence ---------------------------------------------------- */ LCD_WriteReg(LCD_REG_229, 0x8000); /* Set the internal vcore voltage */ LCD_WriteReg(LCD_REG_0, 0x0001); /* Start internal OSC. */ LCD_WriteReg(LCD_REG_1, 0x0100); /* set SS and SM bit */ LCD_WriteReg(LCD_REG_2, 0x0700); /* set 1 line inversion */ LCD_WriteReg(LCD_REG_3, 0x1030); /* set GRAM write direction and BGR=1. */ LCD_WriteReg(LCD_REG_4, 0x0000); /* Resize register */ LCD_WriteReg(LCD_REG_8, 0x0202); /* set the back porch and front porch */ LCD_WriteReg(LCD_REG_9, 0x0000); /* set non-display area refresh cycle ISC[3:0] */ LCD_WriteReg(LCD_REG_10, 0x0000); /* FMARK function */ LCD_WriteReg(LCD_REG_12, 0x0000); /* RGB interface setting */ LCD_WriteReg(LCD_REG_13, 0x0000); /* Frame marker Position */ LCD_WriteReg(LCD_REG_15, 0x0000); /* RGB interface polarity */ /* Power On sequence --------------------------------------------------------- */ LCD_WriteReg(LCD_REG_16, 0x0000); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ LCD_WriteReg(LCD_REG_17, 0x0000); /* DC1[2:0], DC0[2:0], VC[2:0] */ LCD_WriteReg(LCD_REG_18, 0x0000); /* VREG1OUT voltage */ LCD_WriteReg(LCD_REG_19, 0x0000); /* VDV[4:0] for VCOM amplitude */ _delay_(20); /* Dis-charge capacitor power voltage (200ms) */ LCD_WriteReg(LCD_REG_16, 0x17B0); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ LCD_WriteReg(LCD_REG_17, 0x0137); /* DC1[2:0], DC0[2:0], VC[2:0] */ _delay_(20); /* Delay 50 ms */ LCD_WriteReg(LCD_REG_18, 0x0139); /* VREG1OUT voltage */ _delay_(20); /* Delay 50 ms */ LCD_WriteReg(LCD_REG_19, 0x1d00); /* VDV[4:0] for VCOM amplitude */ LCD_WriteReg(LCD_REG_41, 0x0013); /* VCM[4:0] for VCOMH */ _delay_(20); /* Delay 50 ms */ LCD_WriteReg(LCD_REG_32, 0x0000); /* GRAM horizontal Address */ LCD_WriteReg(LCD_REG_33, 0x0000); /* GRAM Vertical Address */ /* Adjust the Gamma Curve ---------------------------------------------------- */ LCD_WriteReg(LCD_REG_48, 0x0006); LCD_WriteReg(LCD_REG_49, 0x0101); LCD_WriteReg(LCD_REG_50, 0x0003); LCD_WriteReg(LCD_REG_53, 0x0106); LCD_WriteReg(LCD_REG_54, 0x0b02); LCD_WriteReg(LCD_REG_55, 0x0302); LCD_WriteReg(LCD_REG_56, 0x0707); LCD_WriteReg(LCD_REG_57, 0x0007); LCD_WriteReg(LCD_REG_60, 0x0600); LCD_WriteReg(LCD_REG_61, 0x020b); /* Set GRAM area ------------------------------------------------------------- */ LCD_WriteReg(LCD_REG_80, 0x0000); /* Horizontal GRAM Start Address */ LCD_WriteReg(LCD_REG_81, 0x00EF); /* Horizontal GRAM End Address */ LCD_WriteReg(LCD_REG_82, 0x0000); /* Vertical GRAM Start Address */ LCD_WriteReg(LCD_REG_83, 0x013F); /* Vertical GRAM End Address */ LCD_WriteReg(LCD_REG_96, 0x2700); /* Gate Scan Line */ LCD_WriteReg(LCD_REG_97, 0x0001); /* NDL,VLE, REV */ LCD_WriteReg(LCD_REG_106, 0x0000); /* set scrolling line */ /* Partial Display Control --------------------------------------------------- */ LCD_WriteReg(LCD_REG_128, 0x0000); LCD_WriteReg(LCD_REG_129, 0x0000); LCD_WriteReg(LCD_REG_130, 0x0000); LCD_WriteReg(LCD_REG_131, 0x0000); LCD_WriteReg(LCD_REG_132, 0x0000); LCD_WriteReg(LCD_REG_133, 0x0000); /* Panel Control ------------------------------------------------------------- */ LCD_WriteReg(LCD_REG_144, 0x0010); LCD_WriteReg(LCD_REG_146, 0x0000); LCD_WriteReg(LCD_REG_147, 0x0003); LCD_WriteReg(LCD_REG_149, 0x0110); LCD_WriteReg(LCD_REG_151, 0x0000); LCD_WriteReg(LCD_REG_152, 0x0000); /* Set GRAM write direction and BGR = 1 */ /* I/D=01 (Horizontal : increment, Vertical : decrement) */ /* AM=1 (address is updated in vertical writing direction) */ LCD_WriteReg(LCD_REG_3, 0x1018); LCD_WriteReg(LCD_REG_7, 0x0173); /* 262K color and display ON */ } LCD_SetFont(&LCD_DEFAULT_FONT); }