// These are various test setups and are not used by the library! // This is the command sequence that initialises the ????? driver // // This setup information uses simple 8 bit SPI writecommand() and writedata() functions { #if defined (TINYLCD) //ILI9486 wave share 3.5 A B is ILI9340? writecommand(0x01); writedata(0x00); delay(50); writecommand(0x28); writedata(0x00); //writecommand(0xB0); // Power Control 1 //writedata(0x00); //writecommand(0x11); // Sleep OUT //delay(50); /* writecommand(0xC5); // VCOM Control writedata(0x00); writedata(0x00); writedata(0x00); writedata(0x00); //writedata(0x48); was 00 48 */ /* writecommand(0xF2); // ????? writedata(0x1C); writedata(0xA3); writedata(0x32); writedata(0x02); writedata(0xb2); writedata(0x12); writedata(0xFF); writedata(0x12); writedata(0x00); writecommand(0xF1); // ????? writedata(0x36); writedata(0xA4); writecommand(0xF8); // ????? writedata(0x21); writedata(0x04); writecommand(0xF9); // ????? writedata(0x00); writedata(0x08); */ writecommand(0xC0); // Power Control 1 writedata(0x0d); writedata(0x0d); writecommand(0xC1); // Power Control 2 writedata(0x43); writedata(0x00); writecommand(0xC2); // Power Control 3 writedata(0x00); // was 0x44 writecommand(0xC5); // VCOM Control writedata(0x00); writedata(0x48); writecommand(0xB6); // Display Function Control writedata(0x00); writedata(0x22); // 0x42 = Rotate display 180 deg. writedata(0x3B); writecommand(0xE0); // PGAMCTRL (Positive Gamma Control) writedata(0x0f); writedata(0x24); writedata(0x1c); writedata(0x0a); writedata(0x0f); writedata(0x08); writedata(0x43); writedata(0x88); writedata(0x32); writedata(0x0f); writedata(0x10); writedata(0x06); writedata(0x0f); writedata(0x07); writedata(0x00); writecommand(0xE1); // NGAMCTRL (Negative Gamma Control) writedata(0x0F); writedata(0x38); writedata(0x30); writedata(0x09); writedata(0x0f); writedata(0x0f); writedata(0x4e); writedata(0x77); writedata(0x3c); writedata(0x07); writedata(0x10); writedata(0x05); writedata(0x23); writedata(0x1b); writedata(0x00); /* writecommand(0xE2); // NGAMCTRL (Negative Gamma Control) writedata(0x0F); writedata(0x38); writedata(0x30); writedata(0x09); writedata(0x0f); writedata(0x0f); writedata(0x4e); writedata(0x77); writedata(0x3c); writedata(0x07); writedata(0x10); writedata(0x05); writedata(0x23); writedata(0x1b); writedata(0x00); */ writecommand(0x20); // Display Inversion OFF, 0x21 = ON writecommand(0x3A); // Interface Pixel Format writedata(0x55); writecommand(0x36); // Memory Access Control writedata(0x0A); writecommand(0x11); // Sleep OUT delay(50); writecommand(0x29); // Display ON delay(25); #elif defined ILI9486 // from https://developer.mbed.org/teams/GraphicsDisplay/code/UniGraphic/file/12ba0ecc2c1f/Inits/ILI9486.cpp /* writecommand(0xF1); writedata(0x36); writedata(0x04); writedata(0x00); writedata(0x3C); writedata(0x0F); writedata(0x8F); writecommand(0xF2); writedata(0x18); writedata(0xA3); writedata(0x12); writedata(0x02); writedata(0xb2); writedata(0x12); writedata(0xFF); writedata(0x10); writedata(0x00); writecommand(0xF8); writedata(0x21); writedata(0x04); writecommand(0xF9); writedata(0x00); writedata(0x08); */ writecommand(0xC0); writedata(0x0f); //13 writedata(0x0f); //10 writecommand(0xC1); writedata(0x42); //43 writecommand(0xC2); writedata(0x22); writecommand(0xC5); writedata(0x01); //00 writedata(0x29); //4D writedata(0x80); writecommand(0xB6); writedata(0x00); writedata(0x02); //42 writedata(0x3b); writecommand(0xB1); writedata(0xB0); //C0 writedata(0x11); writecommand(0xB4); writedata(0x02); //01 writecommand(0xE0); writedata(0x0F); writedata(0x18); writedata(0x15); writedata(0x09); writedata(0x0B); writedata(0x04); writedata(0x49); writedata(0x64); writedata(0x3D); writedata(0x08); writedata(0x15); writedata(0x06); writedata(0x12); writedata(0x07); writedata(0x00); writecommand(0xE1); writedata(0x0F); writedata(0x38); writedata(0x35); writedata(0x0a); writedata(0x0c); writedata(0x03); writedata(0x4A); writedata(0x42); writedata(0x36); writedata(0x04); writedata(0x0F); writedata(0x03); writedata(0x1F); writedata(0x1B); writedata(0x00); writecommand(0x20); // display inversion OFF writecommand(0x36); // MEMORY_ACCESS_CONTROL (orientation stuff) writedata(0x48); writecommand(0x3A); // COLMOD_PIXEL_FORMAT_SET writedata(0x55); // 16 bit pixel writecommand(0x13); // Nomal Displaymode writecommand(0x11); // sleep out delay(150); writecommand(0x29); // display on delay(150); #elif defined (ILI9486_2) // From https://github.com/notro/fbtft/blob/master/fb_ili9486.c //writecommand(0x01); // SW reset //delay(120); writecommand(0x11); // Sleep out, also SW reset delay(120); writecommand(0x3A); writedata(0x55); writecommand(0xC2); writedata(0x44); writecommand(0xC5); writedata(0x00); writedata(0x00); writedata(0x00); writedata(0x00); writecommand(0xE0); writedata(0x0F); writedata(0x1F); writedata(0x1C); writedata(0x0C); writedata(0x0F); writedata(0x08); writedata(0x48); writedata(0x98); writedata(0x37); writedata(0x0A); writedata(0x13); writedata(0x04); writedata(0x11); writedata(0x0D); writedata(0x00); writecommand(0xE1); writedata(0x0F); writedata(0x32); writedata(0x2E); writedata(0x0B); writedata(0x0D); writedata(0x05); writedata(0x47); writedata(0x75); writedata(0x37); writedata(0x06); writedata(0x10); writedata(0x03); writedata(0x24); writedata(0x20); writedata(0x00); writecommand(0x20); // display inversion OFF writecommand(0x36); writedata(0x0A); writecommand(0x29); // display on delay(150); #elif defined (R61581) // R61581: writecommand(0xB0); writedata(0x1E); writecommand(0xB0); writedata(0x00); writecommand(0xB3); writedata(0x02); writedata(0x00); writedata(0x00); writedata(0x10); writecommand(0xB4); writedata(0x00);//0X10 // writecommand(0xB9); //PWM Settings for Brightness Control // writedata(0x01);// Disabled by default. // writedata(0xFF); //0xFF = Max brightness // writedata(0xFF); // writedata(0x18); writecommand(0xC0); writedata(0x03); writedata(0x3B);// writedata(0x00); writedata(0x00); writedata(0x00); writedata(0x01); writedata(0x00);//NW writedata(0x43); writecommand(0xC1); writedata(0x08); writedata(0x15);//CLOCK writedata(0x08); writedata(0x08); writecommand(0xC4); writedata(0x15); writedata(0x03); writedata(0x03); writedata(0x01); writecommand(0xC6); writedata(0x02); writecommand(0xC8); writedata(0x0c); writedata(0x05); writedata(0x0A);//0X12 writedata(0x6B);//0x7D writedata(0x04); writedata(0x06);//0x08 writedata(0x15);//0x0A writedata(0x10); writedata(0x00); writedata(0x60);//0x23 writecommand(0x36); writedata(0x0A); writecommand(0x0C); writedata(0x55); writecommand(0x3A); writedata(0x55); writecommand(0x38); writecommand(0xD0); writedata(0x07); writedata(0x07);//VCI1 writedata(0x14);//VRH 0x1D writedata(0xA2);//BT 0x06 writecommand(0xD1); writedata(0x03); writedata(0x5A);//VCM 0x5A writedata(0x10);//VDV writecommand(0xD2); writedata(0x03); writedata(0x04);//0x24 writedata(0x04); writecommand(0x11); delay(150); writecommand(0x2A); writedata(0x00); writedata(0x00); writedata(0x01); writedata(0xDF);//320 writecommand(0x2B); writedata(0x00); writedata(0x00); writedata(0x01); writedata(0x3F);//480 delay(100); writecommand(0x29); delay(30); writecommand(0x2C); delay(30); #elif defined (HX8357B) //Serial.println("linux HX8357B"); // seqpower writecommand(HX8357B_SETPOWER); writedata(0x44); writedata(0x41); writedata(0x06); // seq_vcom writecommand(HX8357B_SETVCOM); writedata(0x40); writedata(0x10); // seq_power_normal writecommand(HX8357B_SETPWRNORMAL); writedata(0x05); writedata(0x12); // seq_panel_driving writecommand(HX8357B_SET_PANEL_DRIVING); writedata(0x14); writedata(0x3b); writedata(0x00); writedata(0x02); writedata(0x11); // seq_display_frame writecommand(HX8357B_SETDISPLAYFRAME); writedata(0x0c); // 6.8mhz // seq_panel_related writecommand(HX8357B_SETPANELRELATED); writedata(0x01); // BGR // seq_undefined1 writecommand(0xEA); writedata(0x03); writedata(0x00); writedata(0x00); // undef2 writecommand(0xEB); writedata(0x40); writedata(0x54); writedata(0x26); writedata(0xdb); // seq_gamma writecommand(HX8357B_SETGAMMA); // 0xC8 writedata(0x00); writedata(0x15); writedata(0x00); writedata(0x22); writedata(0x00); writedata(0x08); writedata(0x77); writedata(0x26); writedata(0x66); writedata(0x22); writedata(0x04); writedata(0x00); // seq_addr mode writecommand(HX8357_MADCTL); writedata(0xC0); // pixel format writecommand(HX8357_COLMOD); writedata(0x55); // set up whole address box // paddr writecommand(HX8357_PASET); writedata(0x00); writedata(0x00); writedata(0x01); writedata(0xDF); // caddr writecommand(HX8357_CASET); writedata(0x00); writedata(0x00); writedata(0x01); writedata(0x3F); // display mode writecommand(HX8357B_SETDISPMODE); writedata(0x00); // CPU (DBI) and internal oscillation ?? // exit sleep writecommand(HX8357_SLPOUT); delay(120); // main screen turn on writecommand(HX8357_DISPON); delay(10); #elif defined (HX8257D) writecommand(HX8357_SWRESET); delay(10); // setextc writecommand(HX8357D_SETC); writedata(0xFF); writedata(0x83); writedata(0x57); delay(300); // setRGB which also enables SDO writecommand(HX8357_SETRGB); writedata(0x80); //enable SDO pin! // writedata(0x00); //disable SDO pin! writedata(0x0); writedata(0x06); writedata(0x06); writecommand(HX8357D_SETCOM); writedata(0x25); // -1.52V writecommand(HX8357_SETOSC); writedata(0x68); // Normal mode 70Hz, Idle mode 55 Hz writecommand(HX8357_SETPANEL); //Set Panel writedata(0x05); // BGR, Gate direction swapped writecommand(HX8357_SETPWR1); writedata(0x00); // Not deep standby writedata(0x15); //BT writedata(0x1C); //VSPR writedata(0x1C); //VSNR writedata(0x83); //AP writedata(0xAA); //FS writecommand(HX8357D_SETSTBA); writedata(0x50); //OPON normal writedata(0x50); //OPON idle writedata(0x01); //STBA writedata(0x3C); //STBA writedata(0x1E); //STBA writedata(0x08); //GEN writecommand(HX8357D_SETCYC); writedata(0x02); //NW 0x02 writedata(0x40); //RTN writedata(0x00); //DIV writedata(0x2A); //DUM writedata(0x2A); //DUM writedata(0x0D); //GDON writedata(0x78); //GDOFF writecommand(HX8357D_SETGAMMA); writedata(0x02); writedata(0x0A); writedata(0x11); writedata(0x1d); writedata(0x23); writedata(0x35); writedata(0x41); writedata(0x4b); writedata(0x4b); writedata(0x42); writedata(0x3A); writedata(0x27); writedata(0x1B); writedata(0x08); writedata(0x09); writedata(0x03); writedata(0x02); writedata(0x0A); writedata(0x11); writedata(0x1d); writedata(0x23); writedata(0x35); writedata(0x41); writedata(0x4b); writedata(0x4b); writedata(0x42); writedata(0x3A); writedata(0x27); writedata(0x1B); writedata(0x08); writedata(0x09); writedata(0x03); writedata(0x00); writedata(0x01); writecommand(HX8357_COLMOD); writedata(0x55); // 16 bit writecommand(HX8357_MADCTL); writedata(0xC0); writecommand(HX8357_TEON); // TE off writedata(0x00); writecommand(HX8357_TEARLINE); // tear line writedata(0x00); writedata(0x02); writecommand(HX8357_SLPOUT); //Exit Sleep delay(150); writecommand(HX8357_DISPON); // display on delay(50); #elif defined(WAVESHARE32B) // Waveshare32b writecommand(0xCB); writedata(0x39); writedata(0x2C); writedata(0x00); writedata(0x34); writedata(0x02); writecommand(0xCF); writedata(0x00); writedata(0xC1); writedata(0x30); writecommand(0xE8); writedata(0x85); writedata(0x00); writedata(0x78); writecommand(0xEA); writedata(0x00); writedata(0x00); writecommand(0xED); writedata(0x64); writedata(0x03); writedata(0x12); writedata(0x81); writecommand(0xF7); writedata(0x20); writecommand(0xC0); writedata(0x23); writecommand(0xC1); writedata(0x10); writecommand(0xC5); writedata(0x3E); writedata(0x28); writecommand(0xC7); writedata(0x86); writecommand(0x36); writedata(0x28); writecommand(0x3A); writedata(0x55); writecommand(0xB1); writedata(0x00); writedata(0x18); writecommand(0xB6); writedata(0x08); writedata(0x82); writedata(0x27); writecommand(0xF2); writedata(0x00); writecommand(0x26); writedata(0x01); writecommand(0xE0); writedata(0x0F); writedata(0x31); writedata(0x2B); writedata(0x0C); writedata(0x0E); writedata(0x08); writedata(0x4E); writedata(0xF1); writedata(0x37); writedata(0x07); writedata(0x10); writedata(0x03); writedata(0x0E); writedata(0x09); writedata(0x00); writecommand(0xE1); writedata(0x00); writedata(0x0E); writedata(0x14); writedata(0x03); writedata(0x11); writedata(0x07); writedata(0x31); writedata(0xC1); writedata(0x48); writedata(0x08); writedata(0x0F); writedata(0x0C); writedata(0x31); writedata(0x36); writedata(0x0F); writecommand(0x11); delay(120); writecommand(0x29); //writecommand(0x2C); delay(25); #elif defined (TINYLCD2) // Configure TINYLCD display writecommand(0x11); delay(20); writecommand(0xB0); writedata(0x80); writecommand(0xC0); writedata(0x0A); writedata(0x0A); writecommand(0xC1); writedata(0x45); writedata(0x07); writecommand(0xC2); writedata(0x33); writecommand(0xC5); writedata(0x00); writedata(0x42); writedata(0x80); writecommand(0xB1); writedata(0xD0); writedata(0x11); writecommand(0xB4); writedata(0x02); writecommand(0xB6); writedata(0x00); writedata(0x22); writedata(0x3B); writecommand(0xB7); writedata(0x07); writecommand(0x36); writedata(0x58); writecommand(0xF0); writedata(0x36); writedata(0xA5); writedata(0xD3); writecommand(0xE5); writedata(0x80); writecommand(0xE5); writedata(0x01); writecommand(0xB3); writedata(0x00); writecommand(0xE5); writedata(0x00); writecommand(0xF0); writedata(0x36); writedata(0xA5); writedata(0x53); writecommand(0xE0); writedata(0x00); writedata(0x35); writedata(0x33); writedata(0x00); writedata(0x00); writedata(0x00); writedata(0x00); writedata(0x35); writedata(0x33); writedata(0x00); writedata(0x00); writedata(0x00); writecommand(0x3A); writedata(0x55); delay(120); writecommand(0x29); delay(25); // End of TINYLCD display configuration #elif defined (HX8357C) // HX8357-C display initialisation writecommand(0xB9); // Enable extension command writedata(0xFF); writedata(0x83); writedata(0x57); delay(50); writecommand(0xB6); //Set VCOM voltage writedata(0x2C); //0x52 for HSD 3.0" writecommand(0x11); // Sleep off delay(200); writecommand(0x35); // Tearing effect on writedata(0x00); // Added parameter writecommand(0x3A); // Interface pixel format writedata(0x55); // 16 bits per pixel //writecommand(0xCC); // Set panel characteristic //writedata(0x09); // S960>S1, G1>G480, R-G-B, normally black //writecommand(0xB3); // RGB interface //writedata(0x43); //writedata(0x00); //writedata(0x06); //writedata(0x06); writecommand(0xB1); // Power control writedata(0x00); writedata(0x15); writedata(0x0D); writedata(0x0D); writedata(0x83); writedata(0x48); writecommand(0xC0); // Does this do anything? writedata(0x24); writedata(0x24); writedata(0x01); writedata(0x3C); writedata(0xC8); writedata(0x08); writecommand(0xB4); // Display cycle writedata(0x02); writedata(0x40); writedata(0x00); writedata(0x2A); writedata(0x2A); writedata(0x0D); writedata(0x4F); writecommand(0xE0); // Gamma curve writedata(0x00); writedata(0x15); writedata(0x1D); writedata(0x2A); writedata(0x31); writedata(0x42); writedata(0x4C); writedata(0x53); writedata(0x45); writedata(0x40); writedata(0x3B); writedata(0x32); writedata(0x2E); writedata(0x28); writedata(0x24); writedata(0x03); writedata(0x00); writedata(0x15); writedata(0x1D); writedata(0x2A); writedata(0x31); writedata(0x42); writedata(0x4C); writedata(0x53); writedata(0x45); writedata(0x40); writedata(0x3B); writedata(0x32); writedata(0x2E); writedata(0x28); writedata(0x24); writedata(0x03); writedata(0x00); writedata(0x01); writecommand(0x36); // MADCTL Memory access control writedata(0x48); delay(20); writecommand(0x21); //Display inversion on delay(20); writecommand(0x29); // Display on delay(120); #elif defined (ILI9481) // Must be an ILI9481 // Configure ILI9481 display writecommand(0x11); delay(20); writecommand(0xD0); writedata(0x07); writedata(0x42); writedata(0x18); writecommand(0xD1); writedata(0x00); writedata(0x07); writedata(0x10); writecommand(0xD2); writedata(0x01); writedata(0x02); writecommand(0xC0); writedata(0x10); writedata(0x3B); writedata(0x00); writedata(0x02); writedata(0x11); writecommand(0xC5); writedata(0x03); writecommand(0xC8); writedata(0x00); writedata(0x32); writedata(0x36); writedata(0x45); writedata(0x06); writedata(0x16); writedata(0x37); writedata(0x75); writedata(0x77); writedata(0x54); writedata(0x0C); writedata(0x00); writecommand(0x36); writedata(0x0A); writecommand(0x3A); writedata(0x55); writecommand(0x2A); writedata(0x00); writedata(0x00); writedata(0x01); writedata(0x3F); writecommand(0x2B); writedata(0x00); writedata(0x00); writedata(0x01); writedata(0xDF); delay(120); writecommand(0x29); delay(25); // End of ILI9481 display configuration #endif }