|
|
|
|
|
#ifndef __DRIVER_ST7735S_H__
|
|
|
#define __DRIVER_ST7735S_H__
|
|
|
|
|
|
#include <stdint.h>
|
|
|
#include "main.h"
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
extern "C"
|
|
|
{
|
|
|
#endif
|
|
|
|
|
|
#define LCD_CS_1() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET)
|
|
|
#define LCD_CS_0() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET)
|
|
|
|
|
|
#define LCD_RESET_0() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_RESET)
|
|
|
#define LCD_RESET_1() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_SET)
|
|
|
|
|
|
#define LCD_RS_0() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET)
|
|
|
#define LCD_RS_1() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET)
|
|
|
|
|
|
//#define LCD_ENABLE_BACKLIGHT() gpio_write_pin(GPIO_A, GPIO_PIN_5, GPIO_PIN_CLEAR)
|
|
|
//#define LCD_DISABLE_BACKLIGHT() gpio_write_pin(GPIO_A, GPIO_PIN_5, GPIO_PIN_SET)
|
|
|
|
|
|
#define LCD_W 80
|
|
|
#define LCD_H 160
|
|
|
|
|
|
#define LCD_Maker_A 0 //量产LCD屏 上海华尔升
|
|
|
#define LCD_Maker_B 1 //第二供应商 力美拖
|
|
|
|
|
|
#define LCD_Maker LCD_Maker_B
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|
|
#define WHITE 0xFFFF
|
|
|
#define BLACK 0x0000
|
|
|
#define BLUE 0x001F
|
|
|
#define BRED 0xF81F
|
|
|
#define GRED 0xFFE0
|
|
|
#define GBLUE 0x07FF
|
|
|
#define RED 0xF800
|
|
|
#define MAGENTA 0xF81F
|
|
|
#define GREEN 0x07E0
|
|
|
#define CYAN 0x7FFF
|
|
|
#define YELLOW 0xFFE0
|
|
|
#define BROWN 0xBC40
|
|
|
#define BRRED 0xFC07
|
|
|
#define GRAY 0x8430
|
|
|
#define DARK_GRAY 0x6B4D
|
|
|
|
|
|
|
|
|
// 5x7 ASCII字体 (95个可打印字符)
|
|
|
static const uint8_t Font5x7_Data[] = {
|
|
|
// 空格(32)
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
// !(33)
|
|
|
0x00, 0x00, 0x5F, 0x00, 0x00,
|
|
|
// "(34)
|
|
|
0x00, 0x07, 0x00, 0x07, 0x00,
|
|
|
// #(35)
|
|
|
0x14, 0x7F, 0x14, 0x7F, 0x14,
|
|
|
// $(36)
|
|
|
0x24, 0x2A, 0x7F, 0x2A, 0x12,
|
|
|
// %(37)
|
|
|
0x23, 0x13, 0x08, 0x64, 0x62,
|
|
|
// &(38)
|
|
|
0x36, 0x49, 0x55, 0x22, 0x50,
|
|
|
// '(39)
|
|
|
0x00, 0x05, 0x03, 0x00, 0x00,
|
|
|
// ((40)
|
|
|
0x00, 0x1C, 0x22, 0x41, 0x00,
|
|
|
// )(41)
|
|
|
0x00, 0x41, 0x22, 0x1C, 0x00,
|
|
|
// *(42)
|
|
|
0x08, 0x2A, 0x1C, 0x2A, 0x08,
|
|
|
// +(43)
|
|
|
0x08, 0x08, 0x3E, 0x08, 0x08,
|
|
|
// ,(44)
|
|
|
0x00, 0x50, 0x30, 0x00, 0x00,
|
|
|
// -(45)
|
|
|
0x08, 0x08, 0x08, 0x08, 0x08,
|
|
|
// .(46)
|
|
|
0x00, 0x60, 0x60, 0x00, 0x00,
|
|
|
// /(47)
|
|
|
0x20, 0x10, 0x08, 0x04, 0x02,
|
|
|
|
|
|
// 数字0-9(48-57)
|
|
|
0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
|
|
|
0x00, 0x42, 0x7F, 0x40, 0x00, // 1
|
|
|
0x42, 0x61, 0x51, 0x49, 0x46, // 2
|
|
|
0x21, 0x41, 0x45, 0x4B, 0x31, // 3
|
|
|
0x18, 0x14, 0x12, 0x7F, 0x10, // 4
|
|
|
0x27, 0x45, 0x45, 0x45, 0x39, // 5
|
|
|
0x3C, 0x4A, 0x49, 0x49, 0x30, // 6
|
|
|
0x01, 0x71, 0x09, 0x05, 0x03, // 7
|
|
|
0x36, 0x49, 0x49, 0x49, 0x36, // 8
|
|
|
0x06, 0x49, 0x49, 0x29, 0x1E, // 9
|
|
|
|
|
|
// :(58)
|
|
|
0x00, 0x36, 0x36, 0x00, 0x00,
|
|
|
// ;(59)
|
|
|
0x00, 0x56, 0x36, 0x00, 0x00,
|
|
|
// <(60)
|
|
|
0x00, 0x08, 0x14, 0x22, 0x41,
|
|
|
// =(61)
|
|
|
0x14, 0x14, 0x14, 0x14, 0x14,
|
|
|
// >(62)
|
|
|
0x41, 0x22, 0x14, 0x08, 0x00,
|
|
|
// ?(63)
|
|
|
0x02, 0x01, 0x51, 0x09, 0x06,
|
|
|
// @(64)
|
|
|
0x32, 0x49, 0x79, 0x41, 0x3E,
|
|
|
|
|
|
// 大写字母A-Z(65-90)
|
|
|
0x7C, 0x12, 0x11, 0x12, 0x7C, // A
|
|
|
0x7F, 0x49, 0x49, 0x49, 0x36, // B
|
|
|
0x3E, 0x41, 0x41, 0x41, 0x22, // C
|
|
|
0x7F, 0x41, 0x41, 0x22, 0x1C, // D
|
|
|
0x7F, 0x49, 0x49, 0x49, 0x41, // E
|
|
|
0x7F, 0x09, 0x09, 0x09, 0x01, // F
|
|
|
0x3E, 0x41, 0x49, 0x49, 0x7A, // G
|
|
|
0x7F, 0x08, 0x08, 0x08, 0x7F, // H
|
|
|
0x00, 0x41, 0x7F, 0x41, 0x00, // I
|
|
|
0x20, 0x40, 0x41, 0x3F, 0x01, // J
|
|
|
0x7F, 0x08, 0x14, 0x22, 0x41, // K
|
|
|
0x7F, 0x40, 0x40, 0x40, 0x40, // L
|
|
|
0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
|
|
|
0x7F, 0x04, 0x08, 0x10, 0x7F, // N
|
|
|
0x3E, 0x41, 0x41, 0x41, 0x3E, // O
|
|
|
0x7F, 0x09, 0x09, 0x09, 0x06, // P
|
|
|
0x3E, 0x41, 0x51, 0x21, 0x5E, // Q
|
|
|
0x7F, 0x09, 0x19, 0x29, 0x46, // R
|
|
|
0x46, 0x49, 0x49, 0x49, 0x31, // S
|
|
|
0x01, 0x01, 0x7F, 0x01, 0x01, // T
|
|
|
0x3F, 0x40, 0x40, 0x40, 0x3F, // U
|
|
|
0x1F, 0x20, 0x40, 0x20, 0x1F, // V
|
|
|
0x3F, 0x40, 0x38, 0x40, 0x3F, // W
|
|
|
0x63, 0x14, 0x08, 0x14, 0x63, // X
|
|
|
0x07, 0x08, 0x70, 0x08, 0x07, // Y
|
|
|
0x61, 0x51, 0x49, 0x45, 0x43, // Z
|
|
|
|
|
|
// [(91)
|
|
|
0x00, 0x7F, 0x41, 0x41, 0x00,
|
|
|
// \(92)
|
|
|
0x02, 0x04, 0x08, 0x10, 0x20,
|
|
|
// ](93)
|
|
|
0x00, 0x41, 0x41, 0x7F, 0x00,
|
|
|
// ^(94)
|
|
|
0x04, 0x02, 0x01, 0x02, 0x04,
|
|
|
// _(95)
|
|
|
0x40, 0x40, 0x40, 0x40, 0x40,
|
|
|
// `(96)
|
|
|
0x00, 0x01, 0x02, 0x04, 0x00,
|
|
|
|
|
|
// 小写字母a-z(97-122)
|
|
|
0x20, 0x54, 0x54, 0x54, 0x78, // a
|
|
|
0x7F, 0x48, 0x44, 0x44, 0x38, // b
|
|
|
0x38, 0x44, 0x44, 0x44, 0x20, // c
|
|
|
0x38, 0x44, 0x44, 0x48, 0x7F, // d
|
|
|
0x38, 0x54, 0x54, 0x54, 0x18, // e
|
|
|
0x08, 0x7E, 0x09, 0x01, 0x02, // f
|
|
|
0x08, 0x14, 0x54, 0x54, 0x3C, // g
|
|
|
0x7F, 0x08, 0x04, 0x04, 0x78, // h
|
|
|
0x00, 0x44, 0x7D, 0x40, 0x00, // i
|
|
|
0x20, 0x40, 0x44, 0x3D, 0x00, // j
|
|
|
0x7F, 0x10, 0x28, 0x44, 0x00, // k
|
|
|
0x00, 0x41, 0x7F, 0x40, 0x00, // l
|
|
|
0x7C, 0x04, 0x18, 0x04, 0x78, // m
|
|
|
0x7C, 0x08, 0x04, 0x04, 0x78, // n
|
|
|
0x38, 0x44, 0x44, 0x44, 0x38, // o
|
|
|
0x7C, 0x14, 0x14, 0x14, 0x08, // p
|
|
|
0x08, 0x14, 0x14, 0x18, 0x7C, // q
|
|
|
0x7C, 0x08, 0x04, 0x04, 0x08, // r
|
|
|
0x48, 0x54, 0x54, 0x54, 0x20, // s
|
|
|
0x04, 0x3F, 0x44, 0x40, 0x20, // t
|
|
|
0x3C, 0x40, 0x40, 0x20, 0x7C, // u
|
|
|
0x1C, 0x20, 0x40, 0x20, 0x1C, // v
|
|
|
0x3C, 0x40, 0x30, 0x40, 0x3C, // w
|
|
|
0x44, 0x28, 0x10, 0x28, 0x44, // x
|
|
|
0x0C, 0x50, 0x50, 0x50, 0x3C, // y
|
|
|
0x44, 0x64, 0x54, 0x4C, 0x44, // z
|
|
|
|
|
|
// {(123)
|
|
|
0x00, 0x08, 0x36, 0x41, 0x00,
|
|
|
// |(124)
|
|
|
0x00, 0x00, 0x7F, 0x00, 0x00,
|
|
|
// }(125)
|
|
|
0x00, 0x41, 0x36, 0x08, 0x00,
|
|
|
// ~(126)
|
|
|
0x08, 0x08, 0x2A, 0x1C, 0x08
|
|
|
};
|
|
|
|
|
|
void LCD_Fill(uint16_t x_s, uint16_t x_e, uint16_t y_s, uint16_t y_e,uint16_t *color);
|
|
|
void LCD_Clear(uint16_t Color);
|
|
|
void LCD_WR_DATA(uint8_t dat);
|
|
|
void LCD_WR_DATAHalfWord(uint16_t dat);
|
|
|
void LCD_WR_DATA2(uint16_t dat);
|
|
|
void st7745s_display_on(void);
|
|
|
void st7745s_display_off(void);
|
|
|
void LCDDrawImage(uint8_t *p);
|
|
|
void LCD_PutStr(uint8_t x, uint8_t y, const char *str, uint16_t color);
|
|
|
void LCD_Show16BYTE(uint16_t *In,uint32_t len);
|
|
|
void LCDSetPointColor(uint8_t XPoint,uint8_t YPoint,uint16_t Color);
|
|
|
//*****************************************************************************
|
|
|
//
|
|
|
// External function definitions
|
|
|
//
|
|
|
//*****************************************************************************
|
|
|
void LCD_DrawPoint(uint16_t x,uint16_t y,uint16_t color);
|
|
|
/************************************************************************************
|
|
|
* @fn st7735s_init
|
|
|
*
|
|
|
* @brief Initial SPI, GPIO and DMA used by gc9c01, and init gc9c01 registers.
|
|
|
*/
|
|
|
void st7735s_init(void);
|
|
|
|
|
|
/************************************************************************************
|
|
|
* @fn st7735s_set_window
|
|
|
*
|
|
|
* @brief used to define area of frame memory where MCU can access.
|
|
|
*
|
|
|
* @param x_s: SC.
|
|
|
* x_e: EC.
|
|
|
* y_s: SP.
|
|
|
* y_e: EP.
|
|
|
*/
|
|
|
void st7735s_set_window(uint16_t x_s, uint16_t x_e, uint16_t y_s, uint16_t y_e);
|
|
|
|
|
|
/************************************************************************************
|
|
|
* @fn st7735s_display_wait_transfer_done
|
|
|
*
|
|
|
* @brief Used to wait for all data have been sent to gc9c01 when DMA is used.
|
|
|
*/
|
|
|
void st7735s_display_wait_transfer_done(void);
|
|
|
|
|
|
/************************************************************************************
|
|
|
* @fn st7735s_display
|
|
|
*
|
|
|
* @brief Receive an amount of data in blocking mode.(Dual<61><6C>Quad mode)
|
|
|
*
|
|
|
* @param pixel_count: total pixels count to be sent.
|
|
|
* data: pointer to data buffer
|
|
|
* callback: used to notify caller after DMA transfer is done.
|
|
|
*/
|
|
|
void st7735s_display(uint32_t pixel_count, uint16_t *data, void(*callback)(void));
|
|
|
|
|
|
/************************************************************************************
|
|
|
* @fn st7735s_display_gather
|
|
|
*
|
|
|
* @brief used to send left or right part of frame with DMA gather mode
|
|
|
*
|
|
|
* @param pixel_count: total pixels count to be sent.
|
|
|
* data: address of first pixel to be sent
|
|
|
* interval: lcd width
|
|
|
* count: data to be sent in a single line
|
|
|
*/
|
|
|
void st7735s_display_gather(uint32_t pixel_count, uint16_t *data, uint16_t interval, uint16_t count);
|
|
|
|
|
|
/************************************************************************************
|
|
|
* @fn st7735s_dma_isr
|
|
|
*
|
|
|
* @brief DMA isr handler for gc9c01.
|
|
|
*/
|
|
|
void st7735s_dma_isr(void);
|
|
|
|
|
|
void LCD_ENABLE_BACKLIGHT(void);
|
|
|
void LCD_DISABLE_BACKLIGHT(void);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
#endif /* __DRIVER_GC9C01_H__ */
|
|
|
|