Example #1
0
void LCD_Initial(void)
{
 LCD_InitPort();  
 Delay_us(45000);
 //LCD_PSB(1);   //并口方式
 LCD_RST(1);
 Delay_us(100);
 LCD_RST(0);   //液晶复位	低电平有效
 Delay_us(60000);                  
 LCD_RST(1);  	//置高电平等待复位
// Delay_us(10000);   
   
 Delay_us(60000);
 WriteCommandLCD(0x30); //显示模式设置,开始要求每次检测忙信号
 Delay_us(1000);
 WriteCommandLCD(0x30); //显示模式设置,开始要求每次检测忙信号
 Delay_us(1000);
// WriteCommandLCD(0x02); //显示清屏
 WriteCommandLCD(0x01); // 显示开及光标设置
 Delay_us(15000);
 WriteCommandLCD(0x06); // 显示光标移动设置
 Delay_us(10000);
 WriteCommandLCD(0x0C); // 显示开及光标设置
 Delay_us(1000);
 //WriteCommandLCD(0x80); // 显示开及光标设置
}
Example #2
0
static void ili9325sim_init(void)
{
	pr_info("%s +++\n", __func__);

	LCD_CS(1);
	LCD_SCL(1);
	LCD_SI(1);
	LCD_RST(1);
	
	mdelay(1);
	// Reset LCD
	LCD_RST(0);
	mdelay(10);
	LCD_RST(1);
	mdelay(100);

	//************* Start Initial Sequence **********//
	LCD_ILI9481_CMD(0x11);

	LCD_ILI9481_CMD(0xD0);
	LCD_ILI9481_INDEX(0x07);
	LCD_ILI9481_INDEX(0x41);
	LCD_ILI9481_INDEX(0x15);

	LCD_ILI9481_CMD(0xD1);
	LCD_ILI9481_INDEX(0x00);
	LCD_ILI9481_INDEX(0x13);
	LCD_ILI9481_INDEX(0x11);

	LCD_ILI9481_CMD(0xD2);
	LCD_ILI9481_INDEX(0x01);
	LCD_ILI9481_INDEX(0x11);

	LCD_ILI9481_CMD(0xC0);
	LCD_ILI9481_INDEX(0x10);
	LCD_ILI9481_INDEX(0x3B);
	LCD_ILI9481_INDEX(0x00);
	LCD_ILI9481_INDEX(0x02);
	LCD_ILI9481_INDEX(0x11);
	LCD_ILI9481_INDEX(0x00);
	
	LCD_ILI9481_CMD(0xC5);
	LCD_ILI9481_INDEX(0x03);
	
	LCD_ILI9481_CMD(0xB4);
	LCD_ILI9481_INDEX(0x10);//rgb interface

	LCD_ILI9481_CMD(0xB3);
	LCD_ILI9481_INDEX(0x02);
	LCD_ILI9481_INDEX(0x00);
	LCD_ILI9481_INDEX(0x00);
	LCD_ILI9481_INDEX(0x20);

//	LCD_ILI9481_CMD(0xC6);
//	LCD_ILI9481_INDEX(0x80);


	LCD_ILI9481_CMD(0x3A);
	LCD_ILI9481_INDEX(0x66);


	LCD_ILI9481_CMD(0xC8);
	LCD_ILI9481_INDEX(0x00);
	LCD_ILI9481_INDEX(0x66);
	LCD_ILI9481_INDEX(0x15);
	LCD_ILI9481_INDEX(0x24);
	LCD_ILI9481_INDEX(0x00);
	LCD_ILI9481_INDEX(0x08);
	LCD_ILI9481_INDEX(0x26);
	LCD_ILI9481_INDEX(0x11);
	LCD_ILI9481_INDEX(0x77);
	LCD_ILI9481_INDEX(0x42);
	LCD_ILI9481_INDEX(0x08);
	LCD_ILI9481_INDEX(0x00);

	LCD_ILI9481_CMD(0x0B);
	LCD_ILI9481_INDEX(0x00);
	LCD_ILI9481_INDEX(0x80);

	

	LCD_ILI9481_CMD(0xF0);
	LCD_ILI9481_INDEX(0x08);

	LCD_ILI9481_CMD(0xF6);
	LCD_ILI9481_INDEX(0x84);
	
	LCD_ILI9481_CMD(0xF3);
	LCD_ILI9481_INDEX(0x00);
	LCD_ILI9481_INDEX(0x2A);
	

	LCD_ILI9481_CMD(0x36);
	LCD_ILI9481_INDEX(0x0A);

	mdelay(10);

	LCD_ILI9481_CMD(0x29);
	LCD_ILI9481_CMD(0x2C);

	pr_info("%s ---\n", __func__);
}
Example #3
0
// LCD Reset Sequence is copied from
// internet sources. There are a number of
// command registers needed to be set, some of
// which I wonder what they are being used for?
void LCD_Reset()
{
    //int i;
    LCD_CS(1);        // cs high
    LCD_DC(1);        // dc high
    LCD_RST(0);       // display reset

    // wait_us(50);
    Delay(1);         // Delay 1 ms
    LCD_RST(1);       // end hardware reset
    Delay(5);

    LCD_Cmd(0x01);    // SW reset
    Delay(5);
    LCD_Cmd(0x28);    // display off

    /* Start Initial Sequence */
    LCD_Cmd(0xCF);
    SSP0_Write(0x00);
    SSP0_Write(0x83);
    SSP0_Write(0x30);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0xED);
    SSP0_Write(0x64);
    SSP0_Write(0x03);
    SSP0_Write(0x12);
    SSP0_Write(0x81);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0xE8);
    SSP0_Write(0x85);
    SSP0_Write(0x01);
    SSP0_Write(0x79);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0xCB);
    SSP0_Write(0x39);
    SSP0_Write(0x2C);
    SSP0_Write(0x00);
    SSP0_Write(0x34);
    SSP0_Write(0x02);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0xF7);
    SSP0_Write(0x20);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0xEA);
    SSP0_Write(0x00);
    SSP0_Write(0x00);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0xC0);          // POWER_CONTROL_1
    SSP0_Write(0x26);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0xC1);          // POWER_CONTROL_2
    SSP0_Write(0x11);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0xC5);          // VCOM_CONTROL_1
    SSP0_Write(0x35);
    SSP0_Write(0x3E);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0xC7);          // VCOM_CONTROL_2
    SSP0_Write(0xBE);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0x36);          // MEMORY_ACCESS_CONTROL
    SSP0_Write(0x48);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0x3A);          // COLMOD_PIXEL_FORMAT_SET
    SSP0_Write(0x55);        // 16 bit pixel
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0xB1);          // Frame Rate
    SSP0_Write(0x00);
    SSP0_Write(0x1B);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0xF2);          // Gamma Function Disable
    SSP0_Write(0x08);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0x26);
    SSP0_Write(0x01);        // gamma set for curve 01/2/04/08
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0xE0);          // positive gamma correction
    SSP0_Write(0x1F);
    SSP0_Write(0x1A);
    SSP0_Write(0x18);
    SSP0_Write(0x0A);
    SSP0_Write(0x0F);
    SSP0_Write(0x06);
    SSP0_Write(0x45);
    SSP0_Write(0x87);
    SSP0_Write(0x32);
    SSP0_Write(0x0A);
    SSP0_Write(0x07);
    SSP0_Write(0x02);
    SSP0_Write(0x07);
    SSP0_Write(0x05);
    SSP0_Write(0x00);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0xE1);          // negativ gamma correction
    SSP0_Write(0x00);
    SSP0_Write(0x25);
    SSP0_Write(0x27);
    SSP0_Write(0x05);
    SSP0_Write(0x10);
    SSP0_Write(0x09);
    SSP0_Write(0x3A);
    SSP0_Write(0x78);
    SSP0_Write(0x4D);
    SSP0_Write(0x05);
    SSP0_Write(0x18);
    SSP0_Write(0x0D);
    SSP0_Write(0x38);
    SSP0_Write(0x3A);
    SSP0_Write(0x1F);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_WindowMax();

    //LCD_Cmd(0x34);        // tearing effect off
    //LCD_CS(1);

    //LCD_Cmd(0x35);        // tearing effect on
    //LCD_CS(1);

    LCD_Cmd(0xB7);          // entry mode
    SSP0_Write(0x07);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0xB6);          // display function control
    SSP0_Write(0x0A);
    SSP0_Write(0x82);
    SSP0_Write(0x27);
    SSP0_Write(0x00);
    SSP0_WaitBusy();
    LCD_CS(1);

    LCD_Cmd(0x11);          // sleep out
    SSP0_WaitBusy();
    LCD_CS(1);

    // wait_ms(100);
    Delay(100);

    LCD_Cmd(0x29);          // display on
    SSP0_WaitBusy();
    LCD_CS(1);

    // wait_ms(100);
    Delay(100);


}