Пример #1
0
void lcd_copy_RGB565_frameBuffer( uint32_t *buffer )
{
	int i, j;
	uint8_t *p_byte = (uint8_t*) buffer;

	for(i=0; i<240; i++) {
		for(j=0; j<320; j++) {
			ili9341_WriteData(*p_byte++);
			ili9341_WriteData(*p_byte++);
		}
	}

	return;
}
Пример #2
0
void lcd_init_Gram( uint8_t r, uint8_t g, uint8_t b ) {
	int i=0, j=0;

#ifdef LCD_RGB_565    // 16bits color depth
	uint8_t val1, val2;
	val1  =  (r << 3);
	val1 |= ((g >> 3) & 0x7);

	val2  =  (g << 5);
	val2 |=  (b & 0x1F);

	/* Set WRX to send data */
	//LCD_WRX_HIGH();

	/* Reset LCD control line(/CS) and Send data */  
	//LCD_CS_LOW();

	for(i=0; i<240; i++) {
		for(j=0; j<320; j++) {
			ili9341_WriteData(val1);
			ili9341_WriteData(val2);
			//SPIx_Write((uint16_t) val1);
			//SPIx_Write((uint16_t) val2);
		}
	}

	/* Deselect: Chip Select high */
	//LCD_CS_HIGH();
#else	// 18bits color depth
	for(i=0; i<240; i++) {
		for(j=0; j<320; j++) {
			ili9341_WriteData(r<<2);
			ili9341_WriteData(g<<2);
			ili9341_WriteData(b<<2);
		}
	}
#endif

	return;
}
Пример #3
0
/**
 * @brief  Power on the LCD.
 * @param  None
 * @retval None
 */
void ili9341_Init(void)
{
	if (Is_ili9341_Initialized == 0)
	{
		Is_ili9341_Initialized = 1;
		/* Initialise ILI9341 low level bus layer --------------------------------*/
		LCD_IO_Init();

		/*Configure LCD*/
		ili9341_WriteReg(0xCA);
		ili9341_WriteData(0xC3);
		ili9341_WriteData(0x08);
		ili9341_WriteData(0x50);
		ili9341_WriteReg(LCD_POWERB);
		ili9341_WriteData(0x00);
		ili9341_WriteData(0xC1);
		ili9341_WriteData(0x30);
		ili9341_WriteReg(LCD_POWER_SEQ);
		ili9341_WriteData(0x64);
		ili9341_WriteData(0x03);
		ili9341_WriteData(0x12);
		ili9341_WriteData(0x81);
		ili9341_WriteReg(LCD_DTCA);
		ili9341_WriteData(0x85);
		ili9341_WriteData(0x00);
		ili9341_WriteData(0x78);
		ili9341_WriteReg(LCD_POWERA);
		ili9341_WriteData(0x39);
		ili9341_WriteData(0x2C);
		ili9341_WriteData(0x00);
		ili9341_WriteData(0x34);
		ili9341_WriteData(0x02);
		ili9341_WriteReg(LCD_PRC);
		ili9341_WriteData(0x20);
		ili9341_WriteReg(LCD_DTCB);
		ili9341_WriteData(0x00);
		ili9341_WriteData(0x00);
		ili9341_WriteReg(LCD_FRMCTR1);
		ili9341_WriteData(0x00);
		ili9341_WriteData(0x1B);
		ili9341_WriteReg(LCD_DFC);
		ili9341_WriteData(0x0A);
		ili9341_WriteData(0xA2);
		ili9341_WriteReg(LCD_POWER1);
		ili9341_WriteData(0x10);
		ili9341_WriteReg(LCD_POWER2);
		ili9341_WriteData(0x10);
		ili9341_WriteReg(LCD_VCOM1);
		ili9341_WriteData(0x45);
		ili9341_WriteData(0x15);
		ili9341_WriteReg(LCD_VCOM2);
		ili9341_WriteData(0x90);
		ili9341_WriteReg(LCD_MAC);
		ili9341_WriteData(0xC8);
		ili9341_WriteReg(LCD_3GAMMA_EN);
		ili9341_WriteData(0x00);
		ili9341_WriteReg(LCD_RGB_INTERFACE);
		ili9341_WriteData(0xC2);
		ili9341_WriteReg(LCD_DFC);
		ili9341_WriteData(0x0A);
		ili9341_WriteData(0xA7);
		ili9341_WriteData(0x27);
		ili9341_WriteData(0x04);

		/* colomn address set */
		ili9341_WriteReg(LCD_COLUMN_ADDR);
		ili9341_WriteData(0x00);
		ili9341_WriteData(0x00);
		ili9341_WriteData(0x00);
		ili9341_WriteData(0xEF);
		/* Page Address Set */
		ili9341_WriteReg(LCD_PAGE_ADDR);
		ili9341_WriteData(0x00);
		ili9341_WriteData(0x00);
		ili9341_WriteData(0x01);
		ili9341_WriteData(0x3F);
		ili9341_WriteReg(LCD_INTERFACE);
		ili9341_WriteData(0x01);
		ili9341_WriteData(0x00);
		ili9341_WriteData(0x06);

		ili9341_WriteReg(LCD_GRAM);
		LCD_Delay(200);

		ili9341_WriteReg(LCD_GAMMA);
		ili9341_WriteData(0x01);

		ili9341_WriteReg(LCD_PGAMMA);
		ili9341_WriteData(0x0F);
		ili9341_WriteData(0x29);
		ili9341_WriteData(0x24);
		ili9341_WriteData(0x0C);
		ili9341_WriteData(0x0E);
		ili9341_WriteData(0x09);
		ili9341_WriteData(0x4E);
		ili9341_WriteData(0x78);
		ili9341_WriteData(0x3C);
		ili9341_WriteData(0x09);
		ili9341_WriteData(0x13);
		ili9341_WriteData(0x05);
		ili9341_WriteData(0x17);
		ili9341_WriteData(0x11);
		ili9341_WriteData(0x00);
		ili9341_WriteReg(LCD_NGAMMA);
		ili9341_WriteData(0x00);
		ili9341_WriteData(0x16);
		ili9341_WriteData(0x1B);
		ili9341_WriteData(0x04);
		ili9341_WriteData(0x11);
		ili9341_WriteData(0x07);
		ili9341_WriteData(0x31);
		ili9341_WriteData(0x33);
		ili9341_WriteData(0x42);
		ili9341_WriteData(0x05);
		ili9341_WriteData(0x0C);
		ili9341_WriteData(0x0A);
		ili9341_WriteData(0x28);
		ili9341_WriteData(0x2F);
		ili9341_WriteData(0x0F);

		ili9341_WriteReg(LCD_SLEEP_OUT);
		LCD_Delay(200);
		ili9341_WriteReg(LCD_DISPLAY_ON);
		/* GRAM start writing */
		ili9341_WriteReg(LCD_GRAM);

	}
}
Пример #4
0
/**
  * @brief  Power on the LCD.
  * @param  None
  * @retval None
  */
bool ili9341_Init(void* pDisplay)
{
	tDisplay* _pDisplay = (tDisplay *) pDisplay;
	ILI9341_t *structure = (ILI9341_t *)_pDisplay->UserData;
	gpio.out(structure->CS, 0);
	gpio.out(structure->CS, 1);
	gpio.out(structure->RW, 1);
	gpio.out(structure->RD, 1);
	ili9341_WriteReg(_pDisplay, 0xCA);
	ili9341_WriteData(_pDisplay, 0xC3);
	ili9341_WriteData(_pDisplay, 0x08);
	ili9341_WriteData(_pDisplay, 0x50);
	ili9341_WriteReg(_pDisplay, LCD_POWERB);
	ili9341_WriteData(_pDisplay, 0x00);
	ili9341_WriteData(_pDisplay, 0xC1);
	ili9341_WriteData(_pDisplay, 0x30);
	ili9341_WriteReg(_pDisplay, LCD_POWER_SEQ);
	ili9341_WriteData(_pDisplay, 0x64);
	ili9341_WriteData(_pDisplay, 0x03);
	ili9341_WriteData(_pDisplay, 0x12);
	ili9341_WriteData(_pDisplay, 0x81);
	ili9341_WriteReg(_pDisplay, LCD_DTCA);
	ili9341_WriteData(_pDisplay, 0x85);
	ili9341_WriteData(_pDisplay, 0x00);
	ili9341_WriteData(_pDisplay, 0x78);
	ili9341_WriteReg(_pDisplay, LCD_POWERA);
	ili9341_WriteData(_pDisplay, 0x39);
	ili9341_WriteData(_pDisplay, 0x2C);
	ili9341_WriteData(_pDisplay, 0x00);
	ili9341_WriteData(_pDisplay, 0x34);
	ili9341_WriteData(_pDisplay, 0x02);
	ili9341_WriteReg(_pDisplay, LCD_PRC);
	ili9341_WriteData(_pDisplay, 0x20);
	ili9341_WriteReg(_pDisplay, LCD_DTCB);
	ili9341_WriteData(_pDisplay, 0x00);
	ili9341_WriteData(_pDisplay, 0x00);
	ili9341_WriteReg(_pDisplay, LCD_FRMCTR1);
	ili9341_WriteData(_pDisplay, 0x00);
	ili9341_WriteData(_pDisplay, 0x1B);
	ili9341_WriteReg(_pDisplay, LCD_DFC);
	ili9341_WriteData(_pDisplay, 0x0A);
	ili9341_WriteData(_pDisplay, 0xA2);
	ili9341_WriteReg(_pDisplay, LCD_POWER1);
	ili9341_WriteData(_pDisplay, 0x10);
	ili9341_WriteReg(_pDisplay, LCD_POWER2);
	ili9341_WriteData(_pDisplay, 0x10);
	ili9341_WriteReg(_pDisplay, LCD_VCOM1);
	ili9341_WriteData(_pDisplay, 0x45);
	ili9341_WriteData(_pDisplay, 0x15);
	ili9341_WriteReg(_pDisplay, LCD_VCOM2);
	ili9341_WriteData(_pDisplay, 0x90);
	ili9341_WriteReg(_pDisplay, LCD_MAC);
	ili9341_WriteData(_pDisplay, 0xC8);
	ili9341_WriteReg(_pDisplay, LCD_3GAMMA_EN);
	ili9341_WriteData(_pDisplay, 0x00);
	ili9341_WriteReg(_pDisplay, LCD_RGB_INTERFACE);
	ili9341_WriteData(_pDisplay, 0xC2);
	ili9341_WriteReg(_pDisplay, LCD_DFC);
	ili9341_WriteData(_pDisplay, 0x0A);
	ili9341_WriteData(_pDisplay, 0xA7);
	ili9341_WriteData(_pDisplay, 0x27);
	ili9341_WriteData(_pDisplay, 0x04);

	/* Colomn address set */
	ili9341_WriteReg(_pDisplay, LCD_COLUMN_ADDR);
	ili9341_WriteData(_pDisplay, 0x00);
	ili9341_WriteData(_pDisplay, 0x00);
	ili9341_WriteData(_pDisplay, 0x00);
	ili9341_WriteData(_pDisplay, 0xEF);
	/* Page address set */
	ili9341_WriteReg(_pDisplay, LCD_PAGE_ADDR);
	ili9341_WriteData(_pDisplay, 0x00);
	ili9341_WriteData(_pDisplay, 0x00);
	ili9341_WriteData(_pDisplay, 0x01);
	ili9341_WriteData(_pDisplay, 0x3F);
	ili9341_WriteReg(_pDisplay, LCD_INTERFACE);
	ili9341_WriteData(_pDisplay, 0x01);
	ili9341_WriteData(_pDisplay, 0x00);
	ili9341_WriteData(_pDisplay, 0x06);

	ili9341_WriteReg(_pDisplay, LCD_GRAM);
	sys_delay(200);

	ili9341_WriteReg(_pDisplay, LCD_GAMMA);
	ili9341_WriteData(_pDisplay, 0x01);

	ili9341_WriteReg(_pDisplay, LCD_PGAMMA);
	ili9341_WriteData(_pDisplay, 0x0F);
	ili9341_WriteData(_pDisplay, 0x29);
	ili9341_WriteData(_pDisplay, 0x24);
	ili9341_WriteData(_pDisplay, 0x0C);
	ili9341_WriteData(_pDisplay, 0x0E);
	ili9341_WriteData(_pDisplay, 0x09);
	ili9341_WriteData(_pDisplay, 0x4E);
	ili9341_WriteData(_pDisplay, 0x78);
	ili9341_WriteData(_pDisplay, 0x3C);
	ili9341_WriteData(_pDisplay, 0x09);
	ili9341_WriteData(_pDisplay, 0x13);
	ili9341_WriteData(_pDisplay, 0x05);
	ili9341_WriteData(_pDisplay, 0x17);
	ili9341_WriteData(_pDisplay, 0x11);
	ili9341_WriteData(_pDisplay, 0x00);
	ili9341_WriteReg(_pDisplay, LCD_NGAMMA);
	ili9341_WriteData(_pDisplay, 0x00);
	ili9341_WriteData(_pDisplay, 0x16);
	ili9341_WriteData(_pDisplay, 0x1B);
	ili9341_WriteData(_pDisplay, 0x04);
	ili9341_WriteData(_pDisplay, 0x11);
	ili9341_WriteData(_pDisplay, 0x07);
	ili9341_WriteData(_pDisplay, 0x31);
	ili9341_WriteData(_pDisplay, 0x33);
	ili9341_WriteData(_pDisplay, 0x42);
	ili9341_WriteData(_pDisplay, 0x05);
	ili9341_WriteData(_pDisplay, 0x0C);
	ili9341_WriteData(_pDisplay, 0x0A);
	ili9341_WriteData(_pDisplay, 0x28);
	ili9341_WriteData(_pDisplay, 0x2F);
	ili9341_WriteData(_pDisplay, 0x0F);

	ili9341_WriteReg(_pDisplay, LCD_SLEEP_OUT);
	sys_delay(200);
	ili9341_WriteReg(_pDisplay, LCD_DISPLAY_ON);
	/* GRAM start writing */
	ili9341_WriteReg(_pDisplay, LCD_GRAM);
	return true;
}
Пример #5
0
/**
  * @brief  Power on the LCD.
  * @param  None
  * @retval None
  */
void ili9341_Init(void)
{
  /* Initialize ILI9341 low level bus layer ----------------------------------*/
  LCD_IO_Init();
  
  /* Configure LCD */
  ili9341_WriteReg(0xCA);
  ili9341_WriteData(0xC3);
  ili9341_WriteData(0x08);
  ili9341_WriteData(0x50);
  ili9341_WriteReg(LCD_POWERB);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0xC1);
  ili9341_WriteData(0x30);
  ili9341_WriteReg(LCD_POWER_SEQ);
  ili9341_WriteData(0x64);
  ili9341_WriteData(0x03);
  ili9341_WriteData(0x12);
  ili9341_WriteData(0x81);
  ili9341_WriteReg(LCD_DTCA);
  ili9341_WriteData(0x85);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0x78);
  ili9341_WriteReg(LCD_POWERA);
  ili9341_WriteData(0x39);
  ili9341_WriteData(0x2C);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0x34);
  ili9341_WriteData(0x02);
  ili9341_WriteReg(LCD_PRC);
  ili9341_WriteData(0x20);
  ili9341_WriteReg(LCD_DTCB);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0x00);
  ili9341_WriteReg(LCD_FRMCTR1);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0x1B);
  ili9341_WriteReg(LCD_DFC);
  ili9341_WriteData(0x0A);
  ili9341_WriteData(0xA2);
  ili9341_WriteReg(LCD_POWER1);
  ili9341_WriteData(0x10);
  ili9341_WriteReg(LCD_POWER2);
  ili9341_WriteData(0x10);
  ili9341_WriteReg(LCD_VCOM1);
  ili9341_WriteData(0x45);
  ili9341_WriteData(0x15);
  ili9341_WriteReg(LCD_VCOM2);
  ili9341_WriteData(0x90);
  ili9341_WriteReg(LCD_MAC);
#if 1	// test
  ili9341_WriteData(0x28);
#else
  ili9341_WriteData(0xC8);
#endif
  ili9341_WriteReg(LCD_3GAMMA_EN);
  ili9341_WriteData(0x00);
#ifndef LCD_IF_MCU_ONLY
  ili9341_WriteReg(LCD_RGB_INTERFACE);
  ili9341_WriteData(0xC2);
#endif
  ili9341_WriteReg(LCD_DFC);
  ili9341_WriteData(0x0A);
  ili9341_WriteData(0xA7);
  ili9341_WriteData(0x27);
  ili9341_WriteData(0x04);
 
#if 1	// test
  /* Colomn address set */
  ili9341_WriteReg(LCD_COLUMN_ADDR);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0x01);
  ili9341_WriteData(0x3F);
  /* Page address set */
  ili9341_WriteReg(LCD_PAGE_ADDR);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0xEF);
#else
  /* Colomn address set */
  ili9341_WriteReg(LCD_COLUMN_ADDR);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0xEF);
  /* Page address set */
  ili9341_WriteReg(LCD_PAGE_ADDR);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0x01);
  ili9341_WriteData(0x3F);
#endif

#ifdef LCD_IF_MCU_ONLY
  ili9341_WriteReg(LCD_INTERFACE);
  ili9341_WriteData(0x01);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0x00);
#ifdef LCD_RGB_565
  ili9341_WriteReg(LCD_PIXEL_FORMAT);
  ili9341_WriteData(0x55);
#endif
#else
  ili9341_WriteReg(LCD_INTERFACE);
  ili9341_WriteData(0x01);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0x06);
#endif
  
  ili9341_WriteReg(LCD_GRAM);
  LCD_Delay(200);
  
  ili9341_WriteReg(LCD_GAMMA);
  ili9341_WriteData(0x01);
  
  ili9341_WriteReg(LCD_PGAMMA);
  ili9341_WriteData(0x0F);
  ili9341_WriteData(0x29);
  ili9341_WriteData(0x24);
  ili9341_WriteData(0x0C);
  ili9341_WriteData(0x0E);
  ili9341_WriteData(0x09);
  ili9341_WriteData(0x4E);
  ili9341_WriteData(0x78);
  ili9341_WriteData(0x3C);
  ili9341_WriteData(0x09);
  ili9341_WriteData(0x13);
  ili9341_WriteData(0x05);
  ili9341_WriteData(0x17);
  ili9341_WriteData(0x11);
  ili9341_WriteData(0x00);
  ili9341_WriteReg(LCD_NGAMMA);
  ili9341_WriteData(0x00);
  ili9341_WriteData(0x16);
  ili9341_WriteData(0x1B);
  ili9341_WriteData(0x04);
  ili9341_WriteData(0x11);
  ili9341_WriteData(0x07);
  ili9341_WriteData(0x31);
  ili9341_WriteData(0x33);
  ili9341_WriteData(0x42);
  ili9341_WriteData(0x05);
  ili9341_WriteData(0x0C);
  ili9341_WriteData(0x0A);
  ili9341_WriteData(0x28);
  ili9341_WriteData(0x2F);
  ili9341_WriteData(0x0F);
  
  ili9341_WriteReg(LCD_SLEEP_OUT);
  LCD_Delay(200);
  ili9341_WriteReg(LCD_DISPLAY_ON);
  /* GRAM start writing */
  ili9341_WriteReg(LCD_GRAM);
}