/* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __LCD_H #define __LCD_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include <stdint.h> /** @addtogroup BSP * @{ */ /** @addtogroup Components * @{ */ /** @addtogroup LCD * @{ */ /** @defgroup LCD_Exported_Types * @{ */ /** @defgroup LCD_Driver_structure LCD Driver structure * @{ */ typedef struct { void (*Init)(void); uint16_t (*ReadID)(void); void (*DisplayOn)(void); void (*DisplayOff)(void); void (*SetCursor)(uint16_t, uint16_t); void (*WritePixel)(uint16_t, uint16_t, uint16_t); uint16_t (*ReadPixel)(uint16_t, uint16_t); /* Optimized operation */ void (*SetDisplayWindow)(uint16_t, uint16_t, uint16_t, uint16_t); void (*DrawHLine)(uint16_t, uint16_t, uint16_t, uint16_t); void (*DrawVLine)(uint16_t, uint16_t, uint16_t, uint16_t); uint16_t (*GetLcdPixelWidth)(void); uint16_t (*GetLcdPixelHeight)(void); void (*DrawBitmap)(uint16_t, uint16_t, uint8_t*); void (*DrawRGBImage)(uint16_t, uint16_t, uint16_t, uint16_t, uint8_t*); }LCD_DrvTypeDef; /** * @} */ /** * @} */ /** * @} */ /** * @} */ /** * @} */ #ifdef __cplusplus } #endif #endif /* __LCD_H */
/* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __st7789v_H #define __st7789v_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "lcd.h" /** @addtogroup BSP * @{ */ /** @addtogroup Components * @{ */ /** @addtogroup st7789v * @{ */ /** @defgroup st7789v_Exported_Types * @{ */ /** * @} */ /** @defgroup st7789v_Exported_Constants * @{ */ /** * @brief st7789v Size */ #define st7789v_LCD_PIXEL_WIDTH ((uint16_t)128) #define st7789v_LCD_PIXEL_HEIGHT ((uint16_t)160) /** * @brief LCD Lines depending on the chosen fonts. */ #define LCD_LINE_0 LINE(0) #define LCD_LINE_1 LINE(1) #define LCD_LINE_2 LINE(2) #define LCD_LINE_3 LINE(3) #define LCD_LINE_4 LINE(4) #define LCD_LINE_5 LINE(5) #define LCD_LINE_6 LINE(6) #define LCD_LINE_7 LINE(7) #define LCD_LINE_8 LINE(8) #define LCD_LINE_9 LINE(9) #define LCD_LINE_10 LINE(10) #define LCD_LINE_11 LINE(11) #define LCD_LINE_12 LINE(12) #define LCD_LINE_13 LINE(13) #define LCD_LINE_14 LINE(14) #define LCD_LINE_15 LINE(15) #define LCD_LINE_16 LINE(16) #define LCD_LINE_17 LINE(17) #define LCD_LINE_18 LINE(18) #define LCD_LINE_19 LINE(19) /** * @} */ /** @defgroup ADAFRUIT_SPI_LCD_Exported_Functions * @{ */ void st7789v_Init(void); uint16_t st7789v_ReadID(void); void st7789v_DisplayOn(void); void st7789v_DisplayOff(void); void st7789v_SetCursor(uint16_t Xpos, uint16_t Ypos); void st7789v_WritePixel(uint16_t Xpos, uint16_t Ypos, uint16_t RGBCode); void st7789v_WriteReg(uint8_t LCDReg, uint8_t LCDRegValue); uint8_t st7789v_ReadReg(uint8_t LCDReg); void st7789v_SetDisplayWindow(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height); void st7789v_DrawHLine(uint16_t RGBCode, uint16_t Xpos, uint16_t Ypos, uint16_t Length); void st7789v_DrawVLine(uint16_t RGBCode, uint16_t Xpos, uint16_t Ypos, uint16_t Length); uint16_t st7789v_GetLcdPixelWidth(void); uint16_t st7789v_GetLcdPixelHeight(void); void st7789v_DrawBitmap(uint16_t Xpos, uint16_t Ypos, uint8_t *pbmp); /* LCD driver structure */ extern LCD_DrvTypeDef st7789v_drv; /* LCD IO functions */ void LCD_IO_Init(void); void LCD_IO_WriteMultipleData(uint8_t *pData, uint32_t Size); void LCD_IO_WriteReg(uint8_t Reg); void LCD_Delay(uint32_t delay); /** * @} */ #ifdef __cplusplus } #endif #endif /* __st7789v_H */ /** * @} */ /** * @} */ /** * @} */
/* Includes ------------------------------------------------------------------*/ #include "st7789v.h" /** @addtogroup BSP * @{ */ /** @addtogroup Components * @{ */ /** @addtogroup st7789v * @brief This file provides a set of functions needed to drive the * st7789v LCD. * @{ */ /** @defgroup st7789v_Private_TypesDefinitions * @{ */ /** * @} */ /** @defgroup st7789v_Private_Defines * @{ */ /** * @} */ /** @defgroup st7789v_Private_Macros * @{ */ /** * @} */ /** @defgroup st7789v_Private_Variables * @{ */ LCD_DrvTypeDef st7789v_drv = { st7789v_Init, 0, st7789v_DisplayOn, st7789v_DisplayOff, st7789v_SetCursor, st7789v_WritePixel, 0, st7789v_SetDisplayWindow, st7789v_DrawHLine, st7789v_DrawVLine, st7789v_GetLcdPixelWidth, st7789v_GetLcdPixelHeight, st7789v_DrawBitmap, }; static uint16_t ArrayRGB[320] = { 0}; /** * @} */ /** @defgroup st7789v_Private_FunctionPrototypes * @{ */ /** * @} */ /** @defgroup st7789v_Private_Functions * @{ */ /** * @brief Writes to the selected LCD register. * @param LCDReg: Address of the selected register. * @param LCDRegValue: value to write to the selected register. * @retval None