void writeData(uint8_t c) { SET_DC(); CLR_CS(); spiWrite(c); SET_CS(); }
void ssd1306_data(uint8_t c) { // wait until tx empty flag is set while(!(SPI0_S & SPI_S_SPTEF_MASK)); // d/c pin high for data mode. SET_DC(); // write the command SPI0_D = c; }
void drawPixel(int16_t x, int16_t y, uint16_t color) { if(x < 0 || x >= _width || y < 0 || y >= _height) return; setAddrWindow(x,y,x+1,y+1); SET_DC(); CLR_CS(); spiWrite(color >> 8); spiWrite(color); SET_CS(); }
void initLcd(void) { CLR_RST(); SET_CS(); SET_DC(); delay_ms(5); SET_RST(); delay_ms(5); CLR_RST(); delay_ms(20); SET_RST(); delay_ms(150); _width = ILI9341_TFTWIDTH; _height = ILI9341_TFTHEIGHT; writeCommand(0xEF); writeData(0x03); writeData(0x80); writeData(0x02); writeCommand(0xCF); writeData(0x00); writeData(0XC1); writeData(0X30); writeCommand(0xED); writeData(0x64); writeData(0x03); writeData(0X12); writeData(0X81); writeCommand(0xE8); writeData(0x85); writeData(0x00); writeData(0x78); writeCommand(0xCB); writeData(0x39); writeData(0x2C); writeData(0x00); writeData(0x34); writeData(0x02); writeCommand(0xF7); writeData(0x20); writeCommand(0xEA); writeData(0x00); writeData(0x00); writeCommand(ILI9341_PWCTR1); //Power control writeData(0x23); //VRH[5:0] writeCommand(ILI9341_PWCTR2); //Power control writeData(0x10); //SAP[2:0];BT[3:0] writeCommand(ILI9341_VMCTR1); //VCM control writeData(0x3e); writeData(0x28); writeCommand(ILI9341_VMCTR2); //VCM control2 writeData(0x86); //-- writeCommand(ILI9341_MADCTL); // Memory Access Control writeData(ILI9341_MADCTL_MX | ILI9341_MADCTL_BGR); writeCommand(ILI9341_PIXFMT); writeData(0x55); writeCommand(ILI9341_FRMCTR1); writeData(0x00); writeData(0x18); writeCommand(ILI9341_DFUNCTR); // Display Function Control writeData(0x08); writeData(0x82); writeData(0x27); writeCommand(0xF2); // 3Gamma Function Disable writeData(0x00); writeCommand(ILI9341_GAMMASET); //Gamma curve selected writeData(0x01); writeCommand(ILI9341_GMCTRP1); //Set Gamma 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(ILI9341_GMCTRN1); //Set Gamma 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(ILI9341_SLPOUT); //Exit Sleep delay_ms(120); writeCommand(ILI9341_DISPON); //Display on }