150 lines
5.3 KiB
C
150 lines
5.3 KiB
C
/**
|
||
******************************************************************************
|
||
*
|
||
* TFT 1.14寸显示屏驱动文件,目前使用SPI
|
||
*
|
||
* 版本修订:
|
||
* 修改时间 版本号 修改内容
|
||
* 2022-12-07 v1.0 开始构建本文件;
|
||
*
|
||
* Create :2016年09月09日
|
||
* Update :2022年12月07日
|
||
* Author :dengchow
|
||
*
|
||
******************************************************************************
|
||
***/
|
||
|
||
#ifndef __TFT_SPI_H__
|
||
#define __TFT_SPI_H__
|
||
|
||
/*Needed Library Define*/
|
||
#include "__def.h"
|
||
#include "systick.h"
|
||
#include "gpio.h"
|
||
|
||
#define LCD_SPI_SOFT
|
||
|
||
#define CFG_LCD_X_SIZE LCD_X_SIZE
|
||
#define CFG_LCD_Y_SIZE LCD_Y_SIZE
|
||
|
||
/*Param Define*/
|
||
///扫描方向枚举
|
||
typedef enum
|
||
{
|
||
SCAN_L2R_U2D = (uint8_t)0, //从左到右,从上到下
|
||
SCAN_L2R_D2U = (uint8_t)1, //从左到右,从下到上
|
||
SCAN_R2L_U2D = (uint8_t)2, //从右到左,从上到下
|
||
SCAN_R2L_D2U = (uint8_t)3, //从右到左,从下到上
|
||
SCAN_U2D_L2R = (uint8_t)4, //从上到下,从左到右
|
||
SCAN_U2D_R2L = (uint8_t)5, //从上到下,从右到左
|
||
SCAN_D2U_L2R = (uint8_t)6, //从下到上,从左到右
|
||
SCAN_D2U_R2L = (uint8_t)7, //从下到上,从右到左
|
||
}_TFTScanDir;
|
||
|
||
///显示方向枚举
|
||
typedef enum
|
||
{
|
||
DISP_HORIZON = (uint8_t)0, //横向显示
|
||
DISP_PORTRAIT = (uint8_t)1, //纵向显示
|
||
}_TFTDispDir;
|
||
|
||
///tft控制参数集
|
||
typedef struct
|
||
{
|
||
uint16_t id; //ID
|
||
|
||
uint16_t width; //宽度
|
||
uint16_t height; //高度
|
||
|
||
uint16_t wramcmd; //开始写gram指令
|
||
uint16_t setxcmd; //设置x坐标指令
|
||
uint16_t setycmd; //设置y坐标指令
|
||
_TFTDispDir dir; //显示方向
|
||
}_TFTCmdTypeStruct;
|
||
|
||
extern _TFTCmdTypeStruct TFTCmd;//管理LCD重要参数
|
||
extern uint16_t POINT_COLOR;//默认黑色
|
||
extern uint16_t BACK_COLOR; //背景颜色,默认为白色
|
||
|
||
///复位控制
|
||
#define TFT_RST_PORT ;
|
||
#define TFT_RST_PIN ;
|
||
#define TFT_RST_HIGH() LCD_RST_H;
|
||
#define TFT_RST_LOW() LCD_RST_L;
|
||
|
||
///数据&命令控制
|
||
#define TFT_DC_PORT ;
|
||
#define TFT_DC_PIN ;
|
||
#define TFT_DC_DATA() LCD_DC_H;
|
||
#define TFT_DC_CMD() LCD_DC_L;
|
||
|
||
///背光灯控制
|
||
#define TFT_BACK_LED_PORT ;
|
||
#define TFT_BACK_LED_PIN ;
|
||
#define TFT_BACK_LED_OPEN() LCD_BK_ON;
|
||
#define TFT_BACK_LED_CLOSE() LCD_BK_OFF;
|
||
|
||
///扫描方向定义
|
||
#define DFT_SCAN_DIR SCAN_L2R_U2D //SCAN_D2U_L2R
|
||
|
||
///设置tft显示模式(若定义则为BGR,否则为RGB!)
|
||
#define TFT_BGR_MODE
|
||
|
||
///颜色板,RGB模式下色彩值
|
||
#define WHITE 0xFFFF // 1.白色
|
||
#define BLACK 0x0000 // 2.黑色
|
||
#define RED 0x001F // 3.红色
|
||
#define BRED 0XF81F // 4.紫色(水晶葡萄色)
|
||
#define GRED 0XFFE0 // 5.青色
|
||
#define YELLOW 0X07FF // 6.黄色
|
||
#define BLUE 0xF800 // 7.蓝色
|
||
#define MAGENTA 0xF81F // 8.洋红色(偏紫偏粉色)
|
||
#define GREEN 0x07E0 // 9.绿色
|
||
#define CYAN 0x7FFF //10.淡黄色
|
||
#define BBLUE 0XBC40 //11.浅蓝色
|
||
#define GRAY 0X8430 //12.灰色
|
||
#define BROWN 0X01CF //13.棕色
|
||
#define LLGBROWN 0X7D7C //14.浅浅灰棕色(浅皮肤色)
|
||
#define LGBROWN 0X5458 //15.浅灰棕色
|
||
#define LRED 0X841F //16.浅红色(果肉色)
|
||
#define LGRAY 0XC618 //17.浅灰色
|
||
#define LGGREEN 0XA651 //18.浅灰绿色(保护眼色)
|
||
#define LBROWN 0X2B12 //19.浅棕色
|
||
|
||
#define tobgr(d) TFT_RGB2BGR(d)
|
||
#define torgb(d) TFT_BGR2RGB(d)
|
||
|
||
/*Function Define*/
|
||
///tft底层寄存器相关操作
|
||
void TFT_WR_REG(uint16_t reg);//写寄存器地址
|
||
void TFT_WR_DATA(uint16_t dat);//写数据
|
||
uint16_t TFT_RD_DATA(void);//读数据
|
||
|
||
void TFT_Select(uint8_t idx, uint8_t en);//选择lcd设备
|
||
void TFT_WriteReg(uint16_t reg, uint16_t dat);//向寄存器写数据
|
||
uint16_t TFT_ReadReg(uint16_t reg);//从寄存器读数据
|
||
void TFT_StartWriteRAM(void);//开始写GRAM
|
||
void TFT_WriteRAM(uint16_t color);//写GRAM
|
||
|
||
void TFT_DisplayOn(void);//tft开启显示
|
||
void TFT_DisplayOff(void);//tft关闭显示
|
||
|
||
void TFT_SetCursor(uint16_t X1, uint16_t Y1, uint16_t X2, uint16_t Y2);//设置光标位置
|
||
void TFT_SetScanDir(_TFTScanDir direct);//设置tft自动扫描方向
|
||
void TFT_SetDisplayDir(_TFTDispDir direct);//设置tft显示方向
|
||
void TFT_SetWindowSize(uint16_t XS, uint16_t YS, uint16_t width, uint16_t height);//设置tft窗口大小
|
||
|
||
///初始化相关操作
|
||
void TFT_InitConfig(void);//tft初始化设置
|
||
void TFT_ClearScreen(uint16_t color);//tft清屏
|
||
|
||
uint16_t TFT_ReadPoint(uint16_t X, uint16_t Y);//读取个某点的颜色值
|
||
void TFT_DrawPoint(uint16_t X, uint16_t Y, uint16_t color);//画点
|
||
void TFT_FastDrawPoint(uint16_t X, uint16_t Y, uint16_t color);//快速画点
|
||
void TFT_FillSingleColor(uint16_t XS, uint16_t YS, uint16_t XE, uint16_t YE, uint16_t color);//在指定区域内填充单个颜色
|
||
void TFT_FillBlockColor(uint16_t XS, uint16_t YS, uint16_t XE, uint16_t YE, uint16_t *color);//在指定区域内填充颜色块
|
||
|
||
#endif
|
||
|
||
/* ******************** Copyright (C), 2017-2017, TYUT TSS-plan by SERI.LJI ******************** */
|