Спойлер
Код: Выделить всё
void SendCMD(u8 data) {
GPIO_ResetBits(GPIOB, LCD_RS); // comand
GPIOC->ODR = data;
GPIO_ResetBits(GPIOB, LCD_WR);
GPIO_SetBits(GPIOB, LCD_WR);
}
void SendDAT(u8 data) {
GPIO_SetBits(GPIOB, LCD_RS); // data
GPIOC->ODR = data;
GPIO_ResetBits(GPIOB, LCD_WR);
GPIO_SetBits(GPIOB, LCD_WR);
}
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(10); // 10mS
GPIO_SetBits(GPIOB, LCD_RST);
Delay(10); // 10mS
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(12);
SendCMD(0x29);
}
void Lcd_CLR(void) {
SendCMD(0x36);
SendDAT(0x28);
SendCMD(0x2A);
SendDAT(0x00);
SendDAT(0x00);
SendDAT(0x01);
SendDAT(0xDF);
SendCMD(0x2B);
SendDAT(0x00);
SendDAT(0x00);
SendDAT(0x01);
SendDAT(0x3F);
SendCMD(0x2C);
GPIO_SetBits(GPIOB, LCD_RS); // data
GPIOC->ODR = 0;
for (u32 i = 0; i < 480*320*2; i++) {
GPIO_ResetBits(GPIOB, LCD_WR);
GPIO_SetBits(GPIOB, LCD_WR);
}
}


