TraSH/sim/simple/driver/Task_tft.h

168 lines
6.1 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.

/**
******************************************************************************
*
* TFT 3.2寸显示屏驱动文件目前使用FSMC(stm32f407系列可用其他暂不支持)
*
* 功能说明:
* 1.包含基本的显示、画点、画线功能及基本的数字显示;
* 2.包含中点画圆算法和改进中点画圆算法;
* 3.包含中点画椭圆算法;
* 4.显示字符的函数可返回当前目标所占空间的状态(坐标范围和颜色状态等!)
* 5.TFT的算法和OLED算法不同TFT是按点写入OLED按字节因此TFT不存在覆盖
* 6.区域操作的时间很长,有视觉可分辨延时,原因是对数组操作耗时太长!
*
* 使用注意:
* 1.本文件是不使用emWin等成熟移植方案的测试版本
* 2.本文件并不独立部分函数依赖硬件目前是FSMC版本
* 3.本程序为GUI界面服务除学习外不得作为他用同时欢迎不断补充功能
*
* 版本修订:
* 修改时间 版本号 修改内容
* 2017-01-01 v1.0 移植oled程序构建本文件
* 2017-01-02 v2.0 增加中点画圆算法和改进中点画圆算法;
* 2017-01-02 v2.1 增加中点画椭圆算法和改进中点画椭圆算法;
* 2017-03-05 v3.0 添加区域移屏、翻转、颜色替换、颜色对调操作函数;
* 2017-03-05 v3.1 添加了操作的全局控制开关量;
* 2018-01-023 v4.0 重构文件,对部分函数进行优化,部分函数名修改!
* 2021-03-28 v5.0 添加gd32f407
*
* 程序出处:
* Copyright (C), 2017-2017, TYUT TSS-plan by SERI.LJI
* All rights reserved
*
*
* Create 2017年01月01日
* Update 2018年01月23日
* Author dengchow
*
******************************************************************************
***/
#ifndef __TASK_TFT_H__
#define __TASK_TFT_H__
/*Task_tft.h Needed Library Define*/
#include <stdint.h>
#include <stdio.h>
/*Task_tft.h Command Define*/
#define TFT_MAX_LENGTH_OF_DEC (10) //最大显示十进制位数
#define TFT_SWAP_TEMP_COLOR BLACK //颜色对调时临时替换颜色
/*Task_tft.h Param Define*/
///*移屏函数方向参数枚举*/
typedef enum
{
TFT_DIRECT_UP = (uint8_t)1,
TFT_DIRECT_DOWN = (uint8_t)2,
TFT_DIRECT_LEFT = (uint8_t)3,
TFT_DIRECT_RIGHT = (uint8_t)4,
}_TFTScrollDirect;
///*翻转函数方向参数枚举*/
typedef enum
{
TFT_TURN_L2R = (uint8_t)1,
TFT_TURN_U2D = (uint8_t)2,
}_TFTTurnDirect;
///*区域对齐函数参数枚举*/
typedef enum
{
TFT_ALIGN_H_CENTER = (uint8_t)0, //对齐方式,水平方向居中对齐(垂直水平分组按奇偶分!)
TFT_ALIGN_H_LEFT = (uint8_t)2, //对齐方式,水平方向居左对齐
TFT_ALIGN_H_RIGHT = (uint8_t)4, //对齐方式,水平方向居右对齐
TFT_ALIGN_V_CENTER = (uint8_t)1, //对齐方式,垂直方向居中对齐
TFT_ALIGN_V_TOP = (uint8_t)3, //对齐方式,垂直方向居上对齐
TFT_ALIGN_V_BOTTOM = (uint8_t)5, //对齐方式,垂直方向居下对齐
}_TFTAlignMode;
///TFT显示状态句柄
typedef struct
{
uint16_t FC; //前景板颜色(画笔)
uint16_t BC; //背景板颜色(背景)
uint16_t XS; //起始坐标
uint16_t YS; //
uint16_t XE; //终止坐标
uint16_t YE; //
uint16_t Num; //若显示字符串,这里统计字符个数!
uint8_t FontSize; //字体
}_TFTDisplayStyleStruct;
///TFT区域对齐集合
typedef struct
{
uint16_t X; //对齐后左上角横坐标
uint16_t Y; //对齐后左上角纵坐标
}_TFTAlignStruct;
extern _TFTDisplayStyleStruct DefaultStyle;//默认风格白底黑字1206字体
/*Task_tft.h Function Define*/
uint16_t TFT_BGR2RGB(uint16_t BGR);//BGR转化为RGB
uint16_t TFT_RGB2BGR(uint16_t RGB);//RGB转化为BGR
uint16_t TFT_MakeColor(uint8_t R, uint8_t G, uint8_t B);//调色函数(输入RGB三色值输出TFT的颜色值)
void TFT_GetColor(uint16_t Color, uint8_t *R, uint8_t *G, uint8_t *B);//提色函数(输入TFT的颜色值输出RGB三色值)
///图形系列函数:
void TFT_DrawBlock(uint16_t XS, uint16_t YS, uint16_t XE, uint16_t YE, uint16_t color);//画矩形框
void TFT_DrawRect(uint16_t XS, uint16_t YS, uint16_t width, uint16_t height, uint16_t BlockC, uint16_t FillC);//画矩形(填充矩形)
void TFT_DrawLine(uint16_t XS, uint16_t YS, uint16_t XE, uint16_t YE, uint16_t color);//画实线
void TFT_DrawDottedLine(uint16_t XS, uint16_t YS, uint16_t XE, uint16_t YE, uint16_t color);//画虚线
void TFT_DrawCircle(uint16_t XC, uint16_t YC, uint16_t R, uint16_t color);//画圆
void TFT_DrawCircle2(uint16_t XC, uint16_t YC, uint16_t R, uint16_t color);//改进画圆
void TFT_DrawEllipse(uint16_t XC, uint16_t YC, uint16_t A, uint16_t B, uint16_t color);//画椭圆
void TFT_DrawPIC16(uint16_t XS, uint16_t YS, uint16_t width, uint16_t height, uint8_t *PIC);//画16位bmp格式图片
///Display系列函数
_TFTDisplayStyleStruct TFT_DisplayCHAR(uint16_t X, uint16_t Y, _TFTDisplayStyleStruct *style, char CHAR);//显示字符
_TFTDisplayStyleStruct TFT_DisplaySTR(uint16_t X, uint16_t Y, _TFTDisplayStyleStruct *style, char *STR);//显示字符串
_TFTDisplayStyleStruct TFT_DisplayHEX(uint16_t X, uint16_t Y, _TFTDisplayStyleStruct *style, uint16_t HEX);//显示转化后的16进制数字
_TFTDisplayStyleStruct TFT_DisplayINT(uint16_t X, uint16_t Y, _TFTDisplayStyleStruct *style, int32_t INT);//显示有符号的十进制数字
_TFTDisplayStyleStruct TFT_DisplayFLOAT(uint16_t X, uint16_t Y, _TFTDisplayStyleStruct *style, float FLOAT, uint8_t accu);//显示可变精度小数
///区域相关系列函数:
void TFT_Move(_TFTDisplayStyleStruct *area, _TFTScrollDirect direct, uint8_t loop);//移屏操作
void TFT_Turn(_TFTDisplayStyleStruct *area, _TFTTurnDirect direct);//翻转操作
uint8_t TFT_ColorChange(_TFTDisplayStyleStruct *area, uint16_t src, uint16_t tgt);//颜色替换操作
void TFT_ColorSwap(_TFTDisplayStyleStruct *area);//颜色对调操作
///显示状态设置系列函数:
void TFT_StyleStructInit(_TFTDisplayStyleStruct *style);//对创建的结构体进行初始化
void TFT_SetColorFont(uint16_t penColor, uint16_t backColor, uint8_t fontSize, _TFTDisplayStyleStruct *style);//设置前后板颜色、字体大小
void TFT_SetPosition(uint16_t XS, uint16_t YS, uint16_t XE, uint16_t YE, _TFTDisplayStyleStruct *style);//设置显示的坐标
_TFTAlignStruct TFT_Align(_TFTDisplayStyleStruct *area, _TFTAlignMode align);//区域对齐操作
#endif
/* ******************** Copyright (C), 2017-2017, TYUT TSS-plan by SERI.LJI ******************** */