BOOL HD66773R_Driver::Initialize() { NATIVE_PROFILE_HAL_DRIVERS_DISPLAY(); BOOL bRet = TRUE; //reset the cursor pos to the begining g_HD66773R_Driver.m_cursor = 0; // Power_Setting(); Delay_MS (1); Reg_Write (OSCILLATION_REG, 0x0001); Delay_MS (10); Reg_Write (PWR1_CTRL_REG, 0x0000); Reg_Write (PWR2_CTRL_REG, 0x0000); Reg_Write (PWR3_CTRL_REG, 0x0000); Reg_Write (PWR4_CTRL_REG, 0x0F00); /* Pon = 0 */ Reg_Write (PWR5_CTRL_REG, 0x0E0F); /* VCOMG=0 */ Reg_Write (PWR1_CTRL_REG, 0x0004); /* SLP="0",STB="0" */ Delay_MS (40); Reg_Write (PWR4_CTRL_REG, 0x0F13); /* Pon=1 */ Delay_MS (40); Reg_Write (PWR5_CTRL_REG, 0x2E0F); /* VCOMG=1 */ Delay_MS (100); // Set_Display_Control(); Reg_Write (DRVR_OUTPUT_CTRL_REG, 0x0515); Reg_Write (LCD_DRV_CTRL_REG, 0x0500); Reg_Write (ENTRY_MODE_REG, 0x1030); Reg_Write (COMPARE_REG, 0x0000); Reg_Write (DISP_CTRL_REG, 0x0000); // GON="0",DTE="0",D1-0="00" / Reg_Write (FRAME_CYC_CTRL_REG, 0x0000); Reg_Write (GATE_SCAN_POS_REG, 0x0001); Reg_Write (V_SCROLL_CTRL_REG, 0x0000); Reg_Write (DISPLAY1_DRV_POS_REG, 0xA000); Reg_Write( DISPLAY2_DRV_POS_REG, 0xAFAF); Reg_Write (H_RAM_ADDR_POS_REG, 0x8300); Reg_Write (V_RAM_ADDR_POS_REG, 0xAF00); Reg_Write (RAM_WR_DATA_MASK_REG, 0x0000); Reg_Write (RAM_ADDR_SET_REG, 0x0000); // Set_Gamma(); Reg_Write (G_CTRL1_REG, 0x0100); Reg_Write (G_CTRL2_REG, 0x0707); Reg_Write (G_CTRL3_REG, 0x0102); Reg_Write (G_CTRL4_REG, 0x0502); Reg_Write (G_CTRL5_REG, 0x0506); Reg_Write (G_CTRL6_REG, 0x0000); Reg_Write (G_CTRL7_REG, 0x0706); Reg_Write (G_CTRL8_REG, 0x0205); Reg_Write (G_CTRL9_REG, 0x0000); Reg_Write (G_CTRL10_REG, 0x000F); volatile UINT16 dummyData; dummyData = Reg_Read (RAM_WR_DATA_REG); // DisplayConfig(); //Clear(); Full_Write ((UINT16*)GetScreenBuffer(), WHITE); Data_Trans ((UINT16*)GetScreenBuffer()); Set_Display_On(); return bRet; }
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= // Initialization //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= void oled_init(void) { /* Set the data/command pin to be a GPIO */ gpio_set_mode(PIN_MAP[LCD_DC_GPIO].gpio_device, PIN_MAP[LCD_DC_GPIO].gpio_bit, GPIO_OUTPUT_PP); gpio_write_bit(PIN_MAP[LCD_DC_GPIO].gpio_device, PIN_MAP[LCD_DC_GPIO].gpio_bit, 0); /* Set chip-select to be a GPIO */ gpio_set_mode(PIN_MAP[LCD_CS_GPIO].gpio_device, PIN_MAP[LCD_CS_GPIO].gpio_bit, GPIO_OUTPUT_PP); gpio_write_bit(PIN_MAP[LCD_CS_GPIO].gpio_device, PIN_MAP[LCD_CS_GPIO].gpio_bit, 0); /* Turn the display on */ gpio_set_mode(PIN_MAP[LCD_PWR_GPIO].gpio_device, PIN_MAP[LCD_PWR_GPIO].gpio_bit, GPIO_OUTPUT_PP); gpio_write_bit(PIN_MAP[LCD_PWR_GPIO].gpio_device, PIN_MAP[LCD_PWR_GPIO].gpio_bit, 1); delay_us(2000); /* Documentation says at least 1ms */ /* Reset the display */ gpio_set_mode(PIN_MAP[LCD_RES_GPIO].gpio_device, PIN_MAP[LCD_RES_GPIO].gpio_bit, GPIO_OUTPUT_PP); gpio_write_bit(PIN_MAP[LCD_RES_GPIO].gpio_device, PIN_MAP[LCD_RES_GPIO].gpio_bit, 0); delay_us(20); /* Documentation says at least 2us */ gpio_write_bit(PIN_MAP[LCD_RES_GPIO].gpio_device, PIN_MAP[LCD_RES_GPIO].gpio_bit, 1); //============================== Set_Command_Lock(0x12); // Unlock Driver IC (0x12/0x16/0xB0/0xB1) Set_Command_Lock(0xB1); // Unlock All Commands (0x12/0x16/0xB0/0xB1) Set_Display_Off(); Set_Display_Clock(0xF1); // Set Clock as 90 Frames/Sec Set_Multiplex_Ratio(0x7F); // 1/128 Duty (0x0F~0x7F)// 7F Set_Display_Offset(0x00); // Shift Mapping RAM Counter (0x00~0x7F) Set_Start_Line(0x00); // Set Mapping RAM Display Start Line (0x00~0x7F) Set_Remap_Format(0x74); // Set Horizontal Address Increment // Column Address 0 Mapped to SEG0 // Color Sequence D[15:0]=[RRRRR:GGGGGG:BBBBB] // Scan from COM127 to COM0 // Enable COM Split Odd Even // 65,536 Colors Mode (0x74) // * 262,144 Colors Mode (0xB4) Set_GPIO(0x00); // Disable GPIO Pins Input Set_Function_Selection(0x01); // Disable Internal VDD Regulator // Select 8-bit Parallel Interface Set_VSL(0x01); // Enable External VSL //Set_Contrast_Color(0x80,0x80,0x80); // Set Contrast of Color A (Red) Set_Contrast_Color(0xC8,0x80,0xC8); // Set Contrast of Color A (Red) // Set Contrast of Color B (Green) // Set Contrast of Color C (Blue) Set_Master_Current(Brightness); // Set Scale Factor of Segment Output Current Control Set_Gray_Scale_Table(); // Set Pulse Width for Gray Scale Table Set_Phase_Length(0x32); // Set Phase 1 as 5 Clocks & Phase 2 as 3 Clocks Set_Display_Enhancement(0xA4); // Enhance Display Performance Set_Precharge_Voltage(0x17); // Set Pre-Charge Voltage Level as 0.50*VCC Set_Precharge_Period(0x08); // Set Second Pre-Charge Period as 1 Clock Set_Master_Current(Brightness); // Set Scale Factor of Segment Output Current Control Set_Gray_Scale_Table(); // Set Pulse Width for Gray Scale Table Set_Phase_Length(0x32); // Set Phase 1 as 5 Clocks & Phase 2 as 3 Clocks Set_Display_Enhancement(0xA4); // Enhance Display Performance Set_Precharge_Voltage(0x17); // Set Pre-Charge Voltage Level as 0.50*VCC Set_Precharge_Period(0x08); // Set Second Pre-Charge Period as 1 Clock Set_VCOMH(0x05); // Set Common Pins Deselect Voltage Level as 0.82*VCC Set_Display_Mode(0x02); // Normal Display Mode (0x00/0x01/0x02/0x03) CLS(0); // Clear Screen delay_us(1000); Set_Display_On(); }
void oled_reinit(uint8_t clock,uint8_t multiplex,uint8_t functionselect,uint8_t vsl,uint8_t phaselen,uint8_t prechargevolt,uint8_t prechargeperiod,uint8_t vcomh) { Set_Display_Off(); // cuts power to the display gpio_write_bit(PIN_MAP[LCD_PWR_GPIO].gpio_device, PIN_MAP[LCD_PWR_GPIO].gpio_bit, 0); delay_us(250000); // give it 250ms to discharge, hard wait; prevent issues with switch bounce /* Set the data/command pin to be a GPIO */ gpio_set_mode(PIN_MAP[LCD_DC_GPIO].gpio_device, PIN_MAP[LCD_DC_GPIO].gpio_bit, GPIO_OUTPUT_PP); gpio_write_bit(PIN_MAP[LCD_DC_GPIO].gpio_device, PIN_MAP[LCD_DC_GPIO].gpio_bit, 0); /* Set chip-select to be a GPIO */ gpio_set_mode(PIN_MAP[LCD_CS_GPIO].gpio_device, PIN_MAP[LCD_CS_GPIO].gpio_bit, GPIO_OUTPUT_PP); gpio_write_bit(PIN_MAP[LCD_CS_GPIO].gpio_device, PIN_MAP[LCD_CS_GPIO].gpio_bit, 0); /* Turn the display on */ gpio_set_mode(PIN_MAP[LCD_PWR_GPIO].gpio_device, PIN_MAP[LCD_PWR_GPIO].gpio_bit, GPIO_OUTPUT_PP); gpio_write_bit(PIN_MAP[LCD_PWR_GPIO].gpio_device, PIN_MAP[LCD_PWR_GPIO].gpio_bit, 1); delay_us(2000); /* Documentation says at least 1ms */ /* Reset the display */ gpio_set_mode(PIN_MAP[LCD_RES_GPIO].gpio_device, PIN_MAP[LCD_RES_GPIO].gpio_bit, GPIO_OUTPUT_PP); gpio_write_bit(PIN_MAP[LCD_RES_GPIO].gpio_device, PIN_MAP[LCD_RES_GPIO].gpio_bit, 0); delay_us(20); /* Documentation says at least 2us */ gpio_write_bit(PIN_MAP[LCD_RES_GPIO].gpio_device, PIN_MAP[LCD_RES_GPIO].gpio_bit, 1); //============================== Set_Command_Lock(0x12); // Unlock Driver IC (0x12/0x16/0xB0/0xB1) Set_Command_Lock(0xB1); // Unlock All Commands (0x12/0x16/0xB0/0xB1) Set_Display_Off(); Set_Display_Clock(clock); // Set Clock as 90 Frames/Sec Set_Multiplex_Ratio(multiplex); // 1/128 Duty (0x0F~0x7F)// 7F Set_Display_Offset(0x00); // Shift Mapping RAM Counter (0x00~0x7F) Set_Start_Line(0x00); // Set Mapping RAM Display Start Line (0x00~0x7F) Set_Remap_Format(0x74); // Set Horizontal Address Increment // Column Address 0 Mapped to SEG0 // Color Sequence D[15:0]=[RRRRR:GGGGGG:BBBBB] // Scan from COM127 to COM0 // Enable COM Split Odd Even // 65,536 Colors Mode (0x74) // * 262,144 Colors Mode (0xB4) Set_GPIO(0x00); // Disable GPIO Pins Input Set_Function_Selection(functionselect); // Disable Internal VDD Regulator // Select 8-bit Parallel Interface Set_VSL(vsl); // Enable External VSL Set_Gray_Scale_Table(); // Set Pulse Width for Gray Scale Table Set_Phase_Length(0x32); // Set Phase 1 as 5 Clocks & Phase 2 as 3 Clocks Set_Display_Enhancement(0xA4); // Enhance Display Performance Set_Precharge_Voltage(prechargevolt); // Set Pre-Charge Voltage Level as 0.50*VCC, 1c in 4D Set_Precharge_Period(prechargeperiod); // Set Second Pre-Charge Period as 1 Clock, Set_VCOMH(vcomh); // Set Common Pins Deselect Voltage Level as 0.82*VCC. 1F in 4D Set_Display_Mode(0x02); // Normal Display Mode (0x00/0x01/0x02/0x03) CLS(0); // Clear Screen delay_us(1000); Set_Display_On(); }
BOOL ILI9328_Driver::Initialize() { NATIVE_PROFILE_HAL_DRIVERS_DISPLAY(); BOOL bRet = TRUE; //reset the cursor pos to the begining g_ILI9328_Driver.m_cursor = 0; // g_LPC22XX_GPIO_Driver.EnableOutputPin(LPC22XX_GPIO::c_P0_21, FALSE); // g_LPC22XX_GPIO_Driver.EnableOutputPin(g_ILI9328_Config.LcdConfig.Backlight.Pin, FALSE); // LPC22XX_GPIO::c_P0_30, FALSE); #if 0 /* * 0010 0000 0000 0000 0000 1100 0100 0000 * | | | | | | | | | * WST2 WST1 IDLE * |00xx|RWP0|----|----|wwww|wBww|www-|iiii| * | |||| | * | |||+-- BUSERR +-- RBLE * | ||+--- WPERR * | |+---- WRITE PROTECT * | +----- Burst-ROM * +-------- 00 - 8 / 01 - 16 / 10 - 32 bits */ LPC22XX::EMC().BCFG3 = 0x20000c40; #endif #if 1 Reg_Write(0x00E3, 0x3008); //set the internal timing Reg_Write(0x00E7, 0x0012); //set the internal timing Reg_Write(0x00EF, 0x1231); //set the internal timing Reg_Write(ILI932X_START_OSC, 0x0001); //start oscillator Delay_MS(50); Reg_Write(ILI932X_DRIV_OUT_CTRL, 0x0100); //set SS, SM Reg_Write(ILI932X_DRIV_WAV_CTRL, 0x0700); //set 1 line inversion Reg_Write(ILI932X_ENTRY_MOD, GLCD_VAL_ENTRY_MOD); //set GRAM write direction, BGR=0 Reg_Write(ILI932X_RESIZE_CTRL, 0x0000); //no resizing Reg_Write(ILI932X_DRIV_OUT_CTRL, 0x0100); //front & back porch periods = 2 Reg_Write(ILI932X_DISP_CTRL3, 0x0000); Reg_Write(ILI932X_DISP_CTRL4, 0x0000); Reg_Write(ILI932X_RGB_DISP_IF_CTRL1, 0x0000); //select system interface Reg_Write(ILI932X_FRM_MARKER_POS, 0x0000); Reg_Write(ILI932X_RGB_DISP_IF_CTRL2, 0x0000); Reg_Write(ILI932X_POW_CTRL1, 0x0000); Reg_Write(ILI932X_POW_CTRL2, 0x0007); Reg_Write(ILI932X_POW_CTRL3, 0x0000); Reg_Write(ILI932X_POW_CTRL4, 0x0000); Delay_MS(200); Reg_Write(ILI932X_POW_CTRL1, 0x1690); Reg_Write(ILI932X_POW_CTRL2, 0x0227); // 0x137 Delay_MS(50); Reg_Write(ILI932X_POW_CTRL3, 0x001A); // 0x13c Delay_MS(50); Reg_Write(ILI932X_POW_CTRL4, 0x1800); // 0x1400 Reg_Write(ILI932X_POW_CTRL7, 0x002A); // 0x0007 Delay_MS(50); Reg_Write(ILI932X_GRAM_HOR_AD, 0x0000); Reg_Write(ILI932X_GRAM_VER_AD, 0x0000); Reg_Write(ILI932X_GAMMA_CTRL1, 0x0007); Reg_Write(ILI932X_GAMMA_CTRL2, 0x0605); Reg_Write(ILI932X_GAMMA_CTRL3, 0x0106); Reg_Write(ILI932X_GAMMA_CTRL4, 0x0206); Reg_Write(ILI932X_GAMMA_CTRL5, 0x0808); Reg_Write(ILI932X_GAMMA_CTRL6, 0x0007); Reg_Write(ILI932X_GAMMA_CTRL7, 0x0201); Reg_Write(ILI932X_GAMMA_CTRL8, 0x0007); Reg_Write(ILI932X_GAMMA_CTRL9, 0x0602); Reg_Write(ILI932X_GAMMA_CTRL10, 0x0808); Reg_Write(ILI932X_HOR_START_AD, 0x0000); Reg_Write(ILI932X_HOR_END_AD, 0x00EF); Reg_Write(ILI932X_VER_START_AD, 0x0000); Reg_Write(ILI932X_VER_END_AD, 0x013F); Reg_Write(ILI932X_GATE_SCAN_CTRL1, 0xA700); Reg_Write(ILI932X_GATE_SCAN_CTRL2, 0x0001); Reg_Write(ILI932X_GATE_SCAN_CTRL3, 0x0000); Reg_Write(ILI932X_PART_IMG1_DISP_POS, 0x0000); Reg_Write(ILI932X_PART_IMG1_START_AD, 0x0000); Reg_Write(ILI932X_PART_IMG1_END_AD, 0x0000); Reg_Write(ILI932X_PART_IMG2_DISP_POS, 0x0000); Reg_Write(ILI932X_PART_IMG2_START_AD, 0x0000); Reg_Write(ILI932X_PART_IMG2_END_AD, 0x0000); Reg_Write(ILI932X_PANEL_IF_CTRL1, 0x0010); Reg_Write(ILI932X_PANEL_IF_CTRL2, 0x0000); Reg_Write(ILI932X_PANEL_IF_CTRL3, 0x0003); Reg_Write(ILI932X_PANEL_IF_CTRL4, 0x0110); Reg_Write(ILI932X_PANEL_IF_CTRL5, 0x0000); Reg_Write(ILI932X_PANEL_IF_CTRL6, 0x0000); Reg_Write(ILI932X_DISP_CTRL1, 0x0133); #else Reg_Write(0x00E5,0x8000);// Set the Vcore voltage and this setting is must. Reg_Write(ILI932X_START_OSC,0x0001);// Start internal OSC. Reg_Write(ILI932X_DRIV_OUT_CTRL,0x0100);// set SS and SM bit Reg_Write(0x0002,0x0700);// set 1 line inversion Reg_Write(0x0003,0x1030);//0x92b0);// TRI=0, DFM=0, set GRAM write direction and BGR=1. Reg_Write(0x0004,0x0000);// Resize register Reg_Write(0x0008,0x0202);// set the back porch and front porch Reg_Write(0x0009,0000);// set non-display area refresh cycle ISC[3:0] Reg_Write(0x000A,0000);// FMARK function Reg_Write(0x000C,0x0000);// RGB interface setting Reg_Write(0x000D,0x0000);// Frame marker Position Reg_Write(0x000F,0x0000);// RGB interface polarity Reg_Write(0x0010,0x0000);// Power On sequence //SAP, BT[3:0], AP, DSTB, SLP, STB Reg_Write(0x0011,0x0007);// DC1[2:0], DC0[2:0], VC[2:0] Reg_Write(0x0012,0x0000);// VREG1OUT voltage Reg_Write(0x0013,0x0000);// VDV[4:0] for VCOM amplitude Delay_MS(200); Reg_Write(0x0010,0x17B0);// SAP, BT[3:0], AP, DSTB, SLP, STB Reg_Write(0x0011,0x0007);// R11h=0x0001 at VCI=3.3V DC1[2:0], DC0[2: Delay_MS(50); Reg_Write(0x0012,0x013E);// R11h=0x0138 at VCI=3.3V VREG1OUT voltage Delay_MS(50); Reg_Write(0x0013,0x1F00);// R11h=0x1800 at VCI=2.8V VDV[4:0] for VCO Reg_Write(0x0029,0x0013);// setting VCM for VCOMH 0018-0012 Delay_MS(50); Reg_Write(0x0020,0x0000);// GRAM horizontal Address Reg_Write(0x0021,0x0000);// GRAM Vertical Address Reg_Write(0x0030,0x0000);// - Adjust the Gamma Curve -// Reg_Write(0x0031,0x0404); Reg_Write(0x0032,0x0404); Reg_Write(0x0035,0x0004); Reg_Write(0x0036,0x0404); Reg_Write(0x0037,0x0404); Reg_Write(0x0038,0x0404); Reg_Write(0x0039,0x0707); Reg_Write(0x003C,0x0500); Reg_Write(0x003D,0x0607);// - Adjust the Gamma Curve -// //DelayMs(15); Reg_Write(0x0050,0x0000);// Horizontal GRAM Start Address Reg_Write(0x0051,0x00EF);// Horizontal GRAM End Address Reg_Write(0x0052,0x0000);// Vertical GRAM Start Address Reg_Write(0x0053,0x013F);// Vertical GRAM Start Address Reg_Write(0x0060,0x2700);// Gate Scan Line Reg_Write(0x0061,0x0001);// NDL,VLE, REV Reg_Write(0x006A,0x0000);// set scrolling line Reg_Write(0x0080,0x0000);//- Partial Display Control -// Reg_Write(0x0081,0x0000); Reg_Write(0x0082,0x0000); Reg_Write(0x0083,0x0000); Reg_Write(0x0084,0x0000); Reg_Write(0x0085,0x0000); Reg_Write(0x0090,0x0010);//- Panel Control -// Reg_Write(0x0092,0x0000); Reg_Write(0x0093,0x0003); Reg_Write(0x0095,0x0110); Reg_Write(0x0097,0x0000); Reg_Write(0x0098,0x0000);//- Panel Control -// Reg_Write(0x0007,0x173);//0x0133);//Display Control and display ON int aux = Reg_Read(ILI932X_START_OSC); #endif Clear(); Set_Display_On(); // g_LPC22XX_GPIO_Driver.SetPinState(LPC22XX_GPIO::c_P0_21, TRUE); // g_LPC22XX_GPIO_Driver.EnableOutputPin(g_ILI9328_Config.LcdConfig.Backlight.Pin, TRUE); return bRet; }