#ifndef __ST7789_H__ #define __ST7789_H__ #include #include "driver/gpio.h" #include "driver/spi_master.h" // some predefine colors Red Green Blue const uint16_t RGB565_BLACK = 0x0000; // 0, 0, 0 const uint16_t RGB565_LIGHTGREY = 0x18C6; // 192, 192, 192 const uint16_t RGB565_DARKGREY = 0xEF7B; // 128, 128, 128 const uint16_t RGB565_WHITE = 0xFFFF; // 255, 255, 255 const uint16_t RGB565_NAVY = 0x0F00; // 0, 0, 128 const uint16_t RGB565_BLUE = 0x1F00; // 0, 0, 255 const uint16_t RGB565_LIGHTBLUE = 0xFF7B; // 127, 127, 255 // const uint16_t RGB565_DARKGREEN = 0x0004; // 0, 128, 0 const uint16_t RGB565_DARKGREEN = 0x0006; // 0, 192, 0 const uint16_t RGB565_GREEN = 0xE007; // 0, 255, 0 const uint16_t RGB565_DARKCYAN = 0xEF03; // 0, 128, 128 const uint16_t RGB565_CYAN = 0xFF07; // 0, 255, 255 const uint16_t RGB565_MAROON = 0x0078; // 128, 0, 0 const uint16_t RGB565_RED = 0x00F8; // 255, 0, 0 const uint16_t RGB565_LIGHTRED = 0xEFFB; // 255, 127, 127 const uint16_t RGB565_PURPLE = 0x0F78; // 128, 0, 128 const uint16_t RGB565_MAGENTA = 0x1FF8; // 255, 0, 255 const uint16_t RGB565_OLIVE = 0xE07B; // 128, 128, 0 ? // const uint16_t RGB565_DARKYELLOW = 0x0084; // 128, 128, 0 const uint16_t RGB565_DARKYELLOW = 0x00C6; // 192, 192, 0 const uint16_t RGB565_YELLOW = 0xE0FF; // 255, 255, 0 const uint16_t RGB565_ORANGE = 0xA0FD; // 255, 180, 0 const uint16_t RGB565_DARKORANGE = 0xC082; // 128, 90, 0 const uint16_t RGB565_GREENYELLOW = 0xE0B7; // 180, 255, 0 const uint16_t RGB565_DARKGREENYELLOW = 0x005C; // 90, 128, 0 const uint16_t RGB565_PINK = 0x9FFC; // python formula: "%04X" % ( ((Red>>3)<<11) | ((Green>>2)<<5) | (Blue>>3) ) // and then swap the MSB and LSB bytes uint16_t RGB565(uint8_t Red, uint8_t Green, uint8_t Blue); // create RGB565 from RGB888 inline uint16_t RGB565(const uint8_t *RGB) { return RGB565(RGB[0], RGB[1], RGB[2]); } // Embedded fonts extern uint8_t tft_SmallFont[]; extern uint8_t tft_DefaultFont[]; extern uint8_t tft_Dejavu18[]; extern uint8_t tft_Dejavu24[]; extern uint8_t tft_Ubuntu16[]; extern uint8_t tft_Comic24[]; extern uint8_t tft_minya24[]; extern uint8_t tft_tooney32[]; extern uint8_t tft_def_small[]; // pins specific for this LCD extern gpio_num_t LCD_PIN_CS; // connected to ground: constantly active extern gpio_num_t LCD_PIN_DC; // D/C: Command = 0, Data = 1 extern gpio_num_t LCD_PIN_RST; // actually connected to system RESET extern gpio_num_t LCD_PIN_BCKL; // back-light: HIGH active extern int LCD_TYPE; // 0 = ST7789 extern int LCD_WIDTH; // [pixels] extern int LCD_HEIGHT; // [pixels] const int LCD_BUFF_SIZE = 12*320; void LCD_Init(spi_host_device_t LCD_SPI_HOST, uint8_t LCD_SPI_MODE, int LCD_SPI_SPEED=10000000 /*, int LCD_TYPE=0 */ ); void LCD_Start(void); void LCD_ClearDisplay(uint16_t RGB565); void LCD_SetBacklightLevel(uint8_t Level); inline void LCD_SetBacklightON(void) { LCD_SetBacklightLevel(8); } inline void LCD_SetBacklightOFF(void) { LCD_SetBacklightLevel(0); } void LCD_DrawBox(int xpos, int ypos, int xsize, int ysize, uint16_t RGB565); void LCD_DrawLine(int x0, int y0, int x1, int y1, uint16_t RGB565); inline void LCD_DrawPixel(int xpos, int ypos, uint16_t RGB565) { LCD_DrawBox(xpos, ypos, 1, 1, RGB565); } inline void LCD_DrawHorLine(int xpos, int ypos, int xsize, uint16_t RGB565) { LCD_DrawBox(xpos, ypos, xsize, 1, RGB565); } inline void LCD_DrawVerLine(int xpos, int ypos, int ysize, uint16_t RGB565) { LCD_DrawBox(xpos, ypos, 1, ysize, RGB565); } void LCD_DrawCircle(int x, int y, int radius, uint16_t RGB565); void LCD_DrawJPEG(const uint8_t *JPEG, int JPEGsize, int xpos=0, int ypos=0, int Scale=0); int LCD_DrawTranspChar(char Char, int xpos, int ypos, uint16_t RGB565, const uint8_t *propFont = tft_Dejavu24); int LCD_DrawTranspString(const char *String, int xpos, int ypos, uint16_t RGB565, const uint8_t *propFont = tft_Dejavu24); int LCD_DrawChar(char Char, int xpos, int ypos, uint16_t Fore, uint16_t Back, const uint8_t *propFont = tft_Dejavu24); int LCD_DrawString(const char *String, int xpos, int ypos, uint16_t Fore, uint16_t Back, const uint8_t *propFont = tft_Dejavu24); int LCD_UpdateString(const char *String, const char *RefString, int xpos, int ypos, uint16_t Fore, uint16_t Back, const uint8_t *propFont = tft_Dejavu24); int LCD_CharWidth(char Char, const uint8_t *propFont = tft_Dejavu24); int LCD_StringWidth(const char *String, const uint8_t *propFont = tft_Dejavu24); int LCD_FontHeight(const uint8_t *propFont = tft_Dejavu24); #endif // __ST7789_H__