#define LCD_W 240 #define LCD_H 198 void LCD_RESET(void) { LCD_RST_SET; delay_ms(20); LCD_RST_CLR; delay_ms(20); LCD_RST_SET; delay_ms(20); } void LCD_direction(uint8_t direction) { lcddev.setxcmd=0x2A; lcddev.setycmd=0x2B; lcddev.wramcmd=0x2C; lcddev.dir = direction%4; switch(lcddev.dir){ case 0: lcddev.width=LCD_W; lcddev.height=LCD_H; lcddev.xoffset=0; lcddev.yoffset=0; LCD_WriteReg(0x36,0);//BGR==1,MY==0,MX==0,MV==0 break; case 1: lcddev.width=LCD_H; lcddev.height=LCD_W; lcddev.xoffset=0; lcddev.yoffset=0; LCD_WriteReg(0x36,(1<<6)|(1<<5));//BGR==1,MY==1,MX==0,MV==1 break; case 2: lcddev.width=LCD_W; lcddev.height=LCD_H; lcddev.xoffset=0; lcddev.yoffset=122; LCD_WriteReg(0x36,(1<<6)|(1<<7));//BGR==1,MY==0,MX==0,MV==0 break; case 3: lcddev.width=LCD_H; lcddev.height=LCD_W; lcddev.xoffset=122; lcddev.yoffset=0; LCD_WriteReg(0x36,(1<<7)|(1<<5));//BGR==1,MY==1,MX==0,MV==1 break; default:break; } } void LCD_SetWindows(uint16_t xStar, uint16_t yStar,uint16_t xEnd,uint16_t yEnd) { LCD_WR_REG(lcddev.setxcmd); LCD_WR_DATA((xStar+lcddev.xoffset)>>8); LCD_WR_DATA(xStar+lcddev.xoffset); LCD_WR_DATA((xEnd+lcddev.xoffset)>>8); LCD_WR_DATA(xEnd+lcddev.xoffset); LCD_WR_REG(lcddev.setycmd); LCD_WR_DATA((yStar+lcddev.yoffset)>>8); LCD_WR_DATA(yStar+lcddev.yoffset); LCD_WR_DATA((yEnd+lcddev.yoffset)>>8); LCD_WR_DATA(yEnd+lcddev.yoffset); LCD_WR_REG(lcddev.wramcmd); //开始写入GRAM } void LCD_Init(void) { LCD_RESET(); //LCD 复位 //************* ST7789 IPS初始化**********// LCD_WR_REG(0x36); LCD_WR_DATA(0x00); LCD_WR_REG(0x3A); LCD_WR_DATA(0x05); LCD_WR_REG(0xB2); LCD_WR_DATA(0x0C); LCD_WR_DATA(0x0C); LCD_WR_DATA(0x00); LCD_WR_DATA(0x33); LCD_WR_DATA(0x33); LCD_WR_REG(0xB7); LCD_WR_DATA(0x35); LCD_WR_REG(0xBB); LCD_WR_DATA(0x17); LCD_WR_REG(0xC0); LCD_WR_DATA(0x2C); LCD_WR_REG(0xC2); LCD_WR_DATA(0x01); LCD_WR_REG(0xC3); LCD_WR_DATA(0x12); LCD_WR_REG(0xC4); LCD_WR_DATA(0x20); LCD_WR_REG(0xC6); LCD_WR_DATA(0x0F); LCD_WR_REG(0xD0); LCD_WR_DATA(0xA4); LCD_WR_DATA(0xA1); LCD_WR_REG(0xE0); LCD_WR_DATA(0xD0); LCD_WR_DATA(0x04); LCD_WR_DATA(0x0D); LCD_WR_DATA(0x11); LCD_WR_DATA(0x13); LCD_WR_DATA(0x2B); LCD_WR_DATA(0x3F); LCD_WR_DATA(0x54); LCD_WR_DATA(0x4C); LCD_WR_DATA(0x18); LCD_WR_DATA(0x0D); LCD_WR_DATA(0x0B); LCD_WR_DATA(0x1F); LCD_WR_DATA(0x23); LCD_WR_REG(0xE1); LCD_WR_DATA(0xD0); LCD_WR_DATA(0x04); LCD_WR_DATA(0x0C); LCD_WR_DATA(0x11); LCD_WR_DATA(0x13); LCD_WR_DATA(0x2C); LCD_WR_DATA(0x3F); LCD_WR_DATA(0x44); LCD_WR_DATA(0x51); LCD_WR_DATA(0x2F); LCD_WR_DATA(0x1F); LCD_WR_DATA(0x1F); LCD_WR_DATA(0x20); LCD_WR_DATA(0x23); LCD_WR_REG(0x21); LCD_WR_REG(0x11); //Delay (120); LCD_WR_REG(0x29); LCD_direction(0);//设置LCD显示方向 }