ST7735和ST7789驱动

 

/* 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
  
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值