267 lines
8.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __LCD_H
#define __LCD_H
///////////////////////////加入项目的关联头文件////////////////////////////////////
#include "sys.h"
#include "stdlib.h"
#include "delay.h"
#include "spi.h"
extern uint16_t D_Color; //点阵颜色
extern uint16_t B_Color; //背景颜色
//////////////////////////////////////////////////////////////////////////////////
//LCD液晶屏驱动程序
//DevEBox 大越创新
//淘宝店铺mcudev.taobao.com
//淘宝店铺shop389957290.taobao.com
//********************************************************************************//
//数据类型定义
/* exact-width signed integer types */
typedef signed char int8_t;
typedef signed short int int16_t;
typedef signed int int32_t;
typedef signed long long int64_t;
/* exact-width unsigned integer types */
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
/******************************************************************************
接口定义请根据接线修改并修改相应IO初始化--驱动板子和IO要对应
// #define LCD_SDI //PB15 //数据输入线
// #define LCD_SCL //PB13 //时钟线
// #define LCD_CS //PB12 //片选
// #define LCD_SDO //PB14 //数据输出/复位
// #define LCD_RS //PB1 //命令/数据切换
// #define LCD_BLK //PB0 //背光控制
*******************************************************************************/
//液晶控制口置1操作语句宏定义
#define LCD_SDA_SET HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_SET) //PB15置1 LCD_SDI PB15 //数据输入线
#define LCD_SCL_SET HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_SET) //PB13置1 LCD_SCL PB13 //时钟线
#define LCD_CS_SET HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_SET) //PB12置1 LCD_CS PB12 //片选
#define LCD_RST_Set HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_SET) //PB14置1 LCD_SDO PB14 //数据输出/复位
#define LCD_RS_SET HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET) //PB1置1 LCD_RS PB1 //命令/数据切换
#define LCD_BLK_SET HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET) //PB0置1 LCD_BLK PB0 //背光控制
//液晶控制口置0操作语句宏定义
#define LCD_SDA_CLR HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET) //PB15置0 //DIN LCD_SDI PB15 //数据输入线
#define LCD_SCL_CLR HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_RESET) //PB13置0 //CLK LCD_SCL PB13 //时钟线
#define LCD_CS_CLR HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_RESET) //PB12置0/CS LCD_CS PB12 //片选
#define LCD_RST_Clr HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_RESET) //PB14置0 //RES LCD_SDO PB14 //数据输出/复位
#define LCD_RS_CLR HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET) //PB1置0 //DC LCD_RS PB1 //命令/数据切换
#define LCD_BLK_CLR HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET) //PB0置0 //DIN LCD_BLK PB0 //背光控制
#define LCD_BLK_On LCD_BLK_SET //开背光 LCD背光控制
#define LCD_BLK_Off LCD_BLK_CLR //关背光 LCD背光控制
//LCD重要参数集
typedef struct
{
u16 width; //LCD 宽度
u16 height; //LCD 高度
u16 id; //LCD ID
u8 dir; //横屏还是竖屏控制:竖屏和横屏。
u16 wramcmd; //开始写gram指令
u16 setxcmd; //设置x坐标指令
u16 setycmd; //设置y坐标指令
}_lcd_dev;
/////////////////////////////////////用户配置区///////////////////////////////////
//支持横竖屏快速定义切换
#define LCD_DIR_Mode 0 //4种工作模式0和1是竖屏模式2和3是横屏模式
#define USE_HORIZONTAL 0 //方向设置: 0,竖屏模式 1,横屏模式.
//////////////////////////////////////////////////////////////////////////////////
//LCD参数
extern _lcd_dev lcddev; //管理LCD重要参数
//LCD的画笔颜色和背景色
extern u16 POINT_COLOR;//默认红色
extern u16 BACK_COLOR; //背景颜色.默认为白色
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//扫描方向定义--扫描方式有不同规格,可能定义不左右和上下的参照方向不同,总结方式,只有一下八种
#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 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 GRAY0 0xEF7D //灰色0
#define GRAY1 0x8410 //灰色1
#define GRAY2 0x4208 //灰色2
#define LGRAYBLUE 0xA651 //浅灰蓝色(中间层颜色)
#define LBBLUE 0x2B12 //浅棕蓝色(选择条目的反色)
////////////////////////延时函数--宏定义/////////////////////////////////////////////////
#define LCD_Delay_us delay_us //延时函数
#define LCD_Delay_ms delay_ms //延时函数
////////////////////////硬件驱动-功能函数//////DevEBox 大越创新//////shop389957290.taobao.com///////////////////////////////////////////////////
void LCD_GPIO_Init(void); //液晶IO初始化配置
void LCD_WR_REG(vu16 regval); //液晶屏--写寄存器函数
void LCD_WR_DATA8(u8 data); //写8位数据
void LCD_WR_DATA16(vu16 data); //写16位数据
void LCD_Init(void); //初始化
void LCD_HardwareRest(void); //硬复位--如果IO连接硬件复位可控有效
void LCD_SoftRest(void); //软复位
void LCD_DisplayOn(void); //开显示
void LCD_DisplayOff(void); //关显示
//////////////////以下函数是屏幕显示图形的简单驱动函数////////////DevEBox 大越创新//////shop389957290.taobao.com//////////////////////////////////////
void LCD_Clear(u16 Color); //清屏
void LCD_SetCursor(u16 Xpos, u16 Ypos); //设置光标
void LCD_DrawPoint(u16 x,u16 y); //画点--使用设置的笔尖颜色
void LCD_Fast_DrawPoint(u16 x,u16 y,u16 color); //快速画点--使用当前输入颜色参数
void LCD_Draw_Circle(u16 x0,u16 y0,u8 r, u16 Color); //画圆
void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2, u16 Color); //画线
void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2, u16 Color); //画矩形
void LCD_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 color); //填充单色
void LCD_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color); //填充指定颜色
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u16 color,u8 mode); //显示一个字符
void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size,u16 color); //显示一个数字
void LCD_ShowxNum(u16 x,u16 y,u32 num,u8 len,u8 size,u16 color,u8 mode); //显示 数字
void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u16 color,u8 *p); //显示一个字符串,12/16字体
void LCD_WriteReg(u16 LCD_Reg, u16 LCD_RegValue); //写寄存器
void LCD_WriteRAM_Prepare(void); //开始写GRAM 命令
void LCD_WriteRAM(u16 RGB_Code); //LCD写GRAM
void LCD_Scan_Dir(u8 dir); //设置屏扫描方向
void LCD_Display_Dir(u8 dir); //设置屏幕显示方向
void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height); //设置窗口
void Draw_Test(void);//绘图工具函数测试
void Color_Test(void);//颜色填充显示测试
void Font_Test(void);// 字体字形显示测试
void GBK_LibFont_Test(void);//GBK 字体字形显示测试
void Demo_Menu(void);//演示程序菜单
#endif
/*******************************************************************************/
//DevEBox 大越创新
//淘宝店铺mcudev.taobao.com
//淘宝店铺shop389957290.taobao.com
/*******************************************************************************/