#ifndef __DRIVER_ST7735S_H__ #define __DRIVER_ST7735S_H__ #include #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 //������ɫ #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��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__ */