/* * LCD.h * * Created on: Aug 6, 2021 * Author: wuwenfeng */ #ifndef LCD_H_ #define LCD_H_ #include "main.h" #define LCD_BL(x) HAL_GPIO_WritePin(LCD_BL_GPIO_Port,LCD_BL_Pin,x) //LCD重要参数集 typedef struct { uint16_t width; //LCD 宽度 uint16_t height; //LCD 高度 uint16_t id; //LCD ID uint8_t dir; //横屏还是竖屏控制:0,竖屏;1,横屏。 uint8_t wramcmd; //开始写gram指令 uint8_t setxcmd; //设置x坐标指令 uint8_t setycmd; //设置y坐标指令 }_lcd_dev; extern _lcd_dev lcddev; //管理LCD重要参数 #define LCD_REG_ADDRESS *(__IO uint16_t *)(0x6C000000) #define LCD_DATA_ADDRESS *(__IO uint16_t *)(0x6C000800) //扫描方向定义 #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 //从下到上,从右到左 #define DFT_SCAN_DIR L2R_U2D //默认的扫描方向 #define COLOR_16 unsigned int #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 //灰色 //GUI颜色 #define DARKBLUE 0X01CF //深蓝色 #define LIGHTBLUE 0X7D7C //浅蓝色 #define GRAYBLUE 0X5458 //灰蓝色 //以上三色为PANEL的颜色 #define LIGHTGREEN 0X841F //浅绿色 //#define LIGHTGRAY 0XEF5B //浅灰色(PANNEL) #define LGRAY 0XC618 //浅灰色(PANNEL),窗体背景色 #define LGRAYBLUE 0XA651 //浅灰蓝色(中间层颜色) #define LBBLUE 0X2B12 //浅棕蓝色(选择条目的反色) //9320/9325 LCD寄存器 #define R0 0x00 #define R1 0x01 #define R2 0x02 #define R3 0x03 #define R4 0x04 #define R5 0x05 #define R6 0x06 #define R7 0x07 #define R8 0x08 #define R9 0x09 #define R10 0x0A #define R12 0x0C #define R13 0x0D #define R14 0x0E #define R15 0x0F #define R16 0x10 #define R17 0x11 #define R18 0x12 #define R19 0x13 #define R20 0x14 #define R21 0x15 #define R22 0x16 #define R23 0x17 #define R24 0x18 #define R25 0x19 #define R26 0x1A #define R27 0x1B #define R28 0x1C #define R29 0x1D #define R30 0x1E #define R31 0x1F #define R32 0x20 #define R33 0x21 #define R34 0x22 #define R36 0x24 #define R37 0x25 #define R40 0x28 #define R41 0x29 #define R43 0x2B #define R45 0x2D #define R48 0x30 #define R49 0x31 #define R50 0x32 #define R51 0x33 #define R52 0x34 #define R53 0x35 #define R54 0x36 #define R55 0x37 #define R56 0x38 #define R57 0x39 #define R59 0x3B #define R60 0x3C #define R61 0x3D #define R62 0x3E #define R63 0x3F #define R64 0x40 #define R65 0x41 #define R66 0x42 #define R67 0x43 #define R68 0x44 #define R69 0x45 #define R70 0x46 #define R71 0x47 #define R72 0x48 #define R73 0x49 #define R74 0x4A #define R75 0x4B #define R76 0x4C #define R77 0x4D #define R78 0x4E #define R79 0x4F #define R80 0x50 #define R81 0x51 #define R82 0x52 #define R83 0x53 #define R96 0x60 #define R97 0x61 #define R106 0x6A #define R118 0x76 #define R128 0x80 #define R129 0x81 #define R130 0x82 #define R131 0x83 #define R132 0x84 #define R133 0x85 #define R134 0x86 #define R135 0x87 #define R136 0x88 #define R137 0x89 #define R139 0x8B #define R140 0x8C #define R141 0x8D #define R143 0x8F #define R144 0x90 #define R145 0x91 #define R146 0x92 #define R147 0x93 #define R148 0x94 #define R149 0x95 #define R150 0x96 #define R151 0x97 #define R152 0x98 #define R153 0x99 #define R154 0x9A #define R157 0x9D #define R192 0xC0 #define R193 0xC1 #define R229 0xE5 //*************************************************** //**************************************************几种快速接口 //写寄存器函数 //regval:寄存器值 void LCD_WR_REG(uint16_t regval); //写LCD数据 //data:要写入的值 void LCD_WR_DATA(uint16_t data); //读LCD数据 //返回值:读到的值 uint16_t LCD_RD_DATA(void); //写寄存器 //LCD_Reg:寄存器地址 //LCD_RegValue:要写入的数据 void LCD_WriteReg(uint16_t LCD_Reg, uint16_t LCD_RegValue); //读寄存器 //LCD_Reg:寄存器地址 //返回值:读到的数据 uint16_t LCD_ReadReg(uint16_t LCD_Reg); //初始化lcd //该初始化函数可以初始化各种液晶! void LCDx_Init(void); //LCD开启显示 void LCD_DisplayOn(void); //LCD关闭显示 void LCD_DisplayOff(void); //设置光标位置 //Xpos:横坐标 //Ypos:纵坐标 void LCD_SetCursor(uint16_t Xpos, uint16_t Ypos); //快速画点 //x,y:坐标 //color:颜色 void LCD_Fast_DrawPoint(uint16_t x,uint16_t y,uint16_t color); //画点 //x,y:坐标 //POINT_COLOR:此点的颜色 void LCD_set_dot(uint16_t x,uint16_t y,uint16_t color); //清屏函数 //color:要清屏的填充色 void LCD_Clear(uint16_t color); //在指定区域内填充单个颜色 //(sx,sy),(ex,ey):填充矩形对角坐标,区域大小为:(ex-sx+1)*(ey-sy+1) //color:要填充的颜色 void LCD_Fill(uint16_t sx,uint16_t sy,uint16_t ex,uint16_t ey,uint16_t color); //在指定区域内填充指定颜色块 //(sx,sy),(ex,ey):填充矩形对角坐标,区域大小为:(ex-sx+1)*(ey-sy+1) //color:要填充的颜色 void LCD_Color_Fill(uint16_t sx,uint16_t sy,uint16_t ex,uint16_t ey,const uint16_t *color); //从ILI93xx读出的数据为GBR格式,而我们写入的时候为RGB格式。 //通过该函数转换 //c:GBR格式的颜色值 //返回值:RGB格式的颜色值 uint16_t LCD_BGR2RGB(uint16_t c); //读取个某点的颜色值 //x,y:坐标 //返回值:此点的颜色 uint16_t LCD_ReadPoint(uint16_t x,uint16_t y); //显示字符串 //x,y:起点坐标 //width,height:区域大小 //size:字体大小 //*p:字符串起始地址 //***********************************2D void LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2,uint16_t color); //在指定位置画一个指定大小的圆 //(x,y):中心点 //r :半径 void Draw_Circle(uint16_t x0,uint16_t y0,uint16_t r,uint16_t color); void LCD_ShowString(uint16_t x,uint16_t y,uint8_t *p,uint8_t size,uint16_t bg,uint16_t color); #endif /* LCD_H_ */