//VCI=3.3V,根据IM的选择用对应的数据线位数. //*********************16BIT********************************* void write_command(unsigned int i) { cs=0; rd=1; rs=0; P2=i>>8; P0=i; rw=0; rw=1; cs=1; } void write_data(unsigned int i) { cs=0; rd=1; rs=1; P2=i>>8; P0=i; rw=0;; rw=1; cs=1; } //********************8BIT**************************************** void write_command(unsigned int i) { cs=0; rd=1; rs=0; P2=i; rw=0; rw=1; cs=1; } void write_data(unsigned int i) { cs=0; rd=1; rs=1; P2=i>>8; P2=i; rw=0;; rw=1; cs=1; } /*************************************************/ void initi(void) { res=1; delay(1); res=0; delay(10); res=1; delay(120); //************************************************ write_command(0x11); delay(120); //Delay 120ms write_command(0x36); // Memory Access Control write_data(0x00); write_command(0x3A); write_data(0x05); //-------------ST7789V Frame rate setting-----------// write_command(0xb2); write_data(0x08); write_data(0x08); write_data(0x00); write_data(0X22); write_data(0X22); write_command(0xb7); write_data(0x35); //--------------ST7789V Power setting---------------// write_command(0xBB);//VCOM write_data(0x3E); write_command(0xC0); //Power control write_data(0x2c); write_command(0xC2); write_data(0X01); write_command(0xC3); write_data(0X09);//0D gvdd write_command(0xC4); write_data(0X20); write_command(0xC6); write_data(0X0F);//0x0F write_command(0xd0); write_data(0Xa4); write_data(0Xa1); //---------------ST7789V gamma setting-------------// write_command(0xE0); //Set Gamma write_data(0xF0); write_data(0x03); write_data(0x05); write_data(0x08); write_data(0x08); write_data(0x05); write_data(0x1F); write_data(0X44); write_data(0x2F); write_data(0x14); write_data(0x0B); write_data(0x0A); write_data(0x06); write_data(0x0D); write_command(0XE1); //Set Gamma write_data(0xF0); write_data(0x03); write_data(0x06); write_data(0x05); write_data(0x04); write_data(0x12); write_data(0x1F); write_data(0x53); write_data(0x2F); write_data(0x27); write_data(0x0A); write_data(0x0A); write_data(0x05); write_data(0x0D); write_command(0x21); //反显 write_command(0x2A); //Frame rate control write_data(0x00); write_data(0x00); write_data(0x00); write_data(0xEF); write_command(0x2B); //Display function control write_data(0x00); write_data(0x00); write_data(0x01); write_data(0x3F); write_command(0x29); //display on write_command(0x2c); } //********************************************************************************************* void EnterSleep (void) { write_command(0x28); delay(20); write_command(0x10); } //********************************************************* void ExitSleep (void) { write_command(0x11); delay(120); write_command(0x29); } //************ST7789读red ID如下(MT6260)******************// kal_bool LCM_ID_check_ST7789S() { kal_uint8 dummy, ST7789S_1, ST7789S_2, ST7789S_3; MAIN_LCD_CtrlWrite(0x04); //LCM ID dummy = MAIN_LCD_DataRead; ST7789S_1 = MAIN_LCD_DataRead; ST7789S_2 = MAIN_LCD_DataRead; ST7789S_3 = MAIN_LCD_DataRead; if ((0x85== ST7789S_2) && (0x52 == ST7789S_3)) { #ifdef __FACTORY_GET_DRIVERS_INF__ LCM_INF="ST7789S ID=8552"; #endif return KAL_TRUE; } else return KAL_FALSE; }