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;
}
Пример #2
0
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//  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();

}
Пример #3
0
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();

}
Пример #4
0
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;
}