/* * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2021-12-28 unknow copy by STemwin */ #ifndef __DRV_LCD_H #define __DRV_LCD_H #include #include "rtdevice.h" #include #ifdef PKG_USING_QRCODE #include #endif #define LCD_BASE ((uint32_t)(0x68000000 | 0x0003FFFE)) // A18 link to DCX #define LCD ((LCD_CONTROLLER_TypeDef *)LCD_BASE) #define LCD_W 240 #define LCD_H 240 //LCD重要参数集 typedef struct { uint16_t width; //LCD 宽度 uint16_t height; //LCD 高度 uint16_t id; //LCD ID uint8_t dir; //横屏还是竖屏控制:0,竖屏;1,横屏。 uint16_t wramcmd; //开始写gram指令 uint16_t setxcmd; //设置x坐标指令 uint16_t setycmd; //设置y坐标指令 }_lcd_dev; //LCD参数 extern _lcd_dev lcddev; //管理LCD重要参数 typedef struct { volatile uint8_t _u8_REG; volatile uint8_t RESERVED; volatile uint8_t _u8_RAM; volatile uint16_t _u16_RAM; }LCD_CONTROLLER_TypeDef; //POINT_COLOR #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 GRAY175 0XAD75 #define GRAY151 0X94B2 #define GRAY187 0XBDD7 #define GRAY240 0XF79E //扫描方向定义 #define L2R_U2D 0 //从左到右,从上到下 #define L2R_D2U 1 //从左到右,从下到上 #define R2L_U2D 2 //从右到左,从上到下 #define R2L_D2U 3 //从右到左,从下到上 #define U2D_L2R 4 //从上到下,从左到右 #define U2D_R2L 5 //从上到下,从右到左 #define D2U_L2R 6 //从下到上,从左到右 #define D2U_R2L 7 //从下到上,从右到左 int drv_lcd_init(void); void lcd_clear(rt_uint16_t color); void lcd_address_set(rt_uint16_t x1, rt_uint16_t y1, rt_uint16_t x2, rt_uint16_t y2); void lcd_set_color(rt_uint16_t back, rt_uint16_t fore); rt_uint16_t change_byte_order(rt_uint16_t word); void lcd_draw_point(rt_uint16_t x, rt_uint16_t y); void lcd_draw_circle(rt_uint16_t x0, rt_uint16_t y0, rt_uint8_t r); void lcd_draw_line(rt_uint16_t x1, rt_uint16_t y1, rt_uint16_t x2, rt_uint16_t y2); void lcd_draw_rectangle(rt_uint16_t x1, rt_uint16_t y1, rt_uint16_t x2, rt_uint16_t y2); void lcd_fill(rt_uint16_t x_start, rt_uint16_t y_start, rt_uint16_t x_end, rt_uint16_t y_end, rt_uint16_t color); void lcd_address_set(rt_uint16_t x1, rt_uint16_t y1, rt_uint16_t x2, rt_uint16_t y2); rt_err_t lcd_write_half_word(const rt_uint16_t da); rt_err_t lcd_write_data_buffer(const void *send_buf, rt_size_t length); void lcd_show_num(rt_uint16_t x, rt_uint16_t y, rt_uint32_t num, rt_uint8_t len, rt_uint32_t size); rt_err_t lcd_show_string(rt_uint16_t x, rt_uint16_t y, rt_uint32_t size, const char *fmt, ...); rt_err_t lcd_show_image(rt_uint16_t x, rt_uint16_t y, rt_uint16_t length, rt_uint16_t wide, const rt_uint8_t *p); #ifdef PKG_USING_QRCODE rt_err_t lcd_show_qrcode(rt_uint16_t x, rt_uint16_t y, rt_uint8_t version, rt_uint8_t ecc, const char *data, rt_uint8_t enlargement); #endif void lcd_enter_sleep(void); void lcd_exit_sleep(void); void lcd_display_on(void); void lcd_display_off(void); void lcd_fill_array(rt_uint16_t x_start, rt_uint16_t y_start, rt_uint16_t x_end, rt_uint16_t y_end, void *pcolor); #endif