http://forum.easyelectronics.ru/downloa ... &mode=view
http://forum.easyelectronics.ru/viewtop ... 4&start=25
EDIT: я конечно имел ввиду часть "1" рисунка, управление усилением и сдвиг луча.
Код: Выделить всё
void SendData(uint16_t SendData)
{
GPIO_SetBits(GPIOB, LCD_RS); // data
GPIOC->ODR = SendData;
GPIO_ResetBits(GPIOB, LCD_WR);
GPIO_SetBits(GPIOB, LCD_WR);
}
void SendCMD(uint16_t SendData)
{
GPIO_ResetBits(GPIOB, LCD_RS); // comand
GPIOC->ODR = SendData;
GPIO_ResetBits(GPIOB, LCD_WR);
GPIO_SetBits(GPIOB, LCD_WR);
}
void LCDclr(void)
{
SendCMD(0x36);
SendData(0x0A);
SendCMD(0x2A);
SendData(0x00);
SendData(0x00);
SendData(0x01);
SendData(0x3F);
SendCMD(0x2B);
SendData(0x00);
SendData(0x00);
SendData(0x01);
SendData(0xE0);
SendCMD(0x2C);
GPIO_SetBits(GPIOB, LCD_RS); // data
GPIOC->ODR = 0x0000;
for (unsigned int i = 0; i < 320*480*2; i++)
{
GPIO_ResetBits(GPIOB, LCD_WR);
GPIO_SetBits(GPIOB, LCD_WR);
}
}
void LCDinit(void)
{
GPIO_ResetBits(GPIOB, LCD_RST);
Delay(20000);
GPIO_SetBits(GPIOB, LCD_RST);
Delay(20000);
SendCMD(0x11);
Delay(20000);
SendCMD(0xD0);
SendData(0x07);
SendData(0x42);
SendData(0x18);
SendCMD(0xD1);
SendData(0x00);
SendData(0x07);
SendData(0x10);
SendCMD(0xD2);
SendData(0x01);
SendData(0x02);
SendCMD(0xC0);
SendData(0x10);
SendData(0x3B);
SendData(0x00);
SendData(0x02);
SendData(0x11);
SendCMD(0xC5);
SendData(0x03);
SendCMD(0xC8);
SendData(0x00);
SendData(0x32);
SendData(0x36);
SendData(0x45);
SendData(0x06);
SendData(0x16);
SendData(0x37);
SendData(0x75);
SendData(0x77);
SendData(0x54);
SendData(0x0C);
SendData(0x00);
SendCMD(0x36);
SendData(0x0A);
SendCMD(0x3A);
SendData(0x55);
SendCMD(0x2A);
SendData(0x00);
SendData(0x00);
SendData(0x01);
SendData(0x3F);
SendCMD(0x2B);
SendData(0x00);
SendData(0x00);
SendData(0x01);
SendData(0xE0);
Delay(120000);
SendCMD(0x29);
}Код: Выделить всё
void LCD_init(void)
{
GPIO_SetBits(GPIOB, LCD_RD);
GPIO_SetBits(GPIOB, LCD_WR);
GPIO_SetBits(GPIOB, LCD_RS);
GPIO_ResetBits(GPIOB, LCD_RST);
Delay(10000);
GPIO_SetBits(GPIOB, LCD_RST);
Delay(10000);
SendCMD(0xE0);
SendDAT(0x00);
SendDAT(0x07);
SendDAT(0x10);
SendDAT(0x09);
SendDAT(0x17);
SendDAT(0x0B);
SendDAT(0x40);
SendDAT(0x8A);
SendDAT(0x4B);
SendDAT(0x0A);
SendDAT(0x0D);
SendDAT(0x0F);
SendDAT(0x15);
SendDAT(0x16);
SendDAT(0x0F);
SendCMD(0xE1);
SendDAT(0x00);
SendDAT(0x1A);
SendDAT(0x1B);
SendDAT(0x02);
SendDAT(0x0D);
SendDAT(0x05);
SendDAT(0x30);
SendDAT(0x35);
SendDAT(0x43);
SendDAT(0x02);
SendDAT(0x0A);
SendDAT(0x09);
SendDAT(0x32);
SendDAT(0x36);
SendDAT(0x0F);
SendCMD(0xB1);
SendDAT(0xA0);
SendCMD(0xB4);
SendDAT(0x02);
SendCMD(0xC0);
SendDAT(0x17);
SendDAT(0x15);
SendCMD(0xC1);
SendDAT(0x41);
SendCMD(0xC5);
SendDAT(0x00);
SendDAT(0x0A);
SendDAT(0x80);
SendCMD(0xB6);
SendDAT(0x02);
SendDAT(0x60);
SendCMD(0x36);
SendDAT(0x48);
SendCMD(0x3a);
SendDAT(0x55);
SendCMD(0xE9);
SendDAT(0x00);
SendCMD(0XF7);
SendDAT(0xA9);
SendDAT(0x51);
SendDAT(0x2C);
SendDAT(0x82);
SendCMD(0x11);
Delay(12000);
SendCMD(0x29);
Lcd_CLR();
//=================
}
void Lcd_CLR(void)
{
SendCMD(ILI9341_MAC);
SendDAT(0x28);
SendCMD(ILI9341_COLUMN_ADDR);
SendDAT(0x00);
SendDAT(0x00);
SendDAT(0x01);
SendDAT(0xDF);
SendCMD(ILI9341_PAGE_ADDR);
SendDAT(0x00);
SendDAT(0x00);
SendDAT(0x01);
SendDAT(0x3F);
SendCMD(0x2C);
GPIO_SetBits(GPIOB, LCD_RS); // data
GPIOC->ODR = 0;
for (unsigned int i = 0; i < 480*320*2; i++)
{
GPIO_ResetBits(GPIOB, LCD_WR);
GPIO_SetBits(GPIOB, LCD_WR);
}
}