📄 tft.c
字号:
#include <reg51.h>
#include "TFT.h"
#include "TYPE.h"
/*=========================================================
函数描述:选寄存器
隶属模块:TFT
参数说明:com输入命令
返回说明:无返回值
===========================================================*/
void THT_COM(INT8U com)
{
RX = 1;
CS = 0;
WD = 1;
A0 = 0;
P0 = com;
CS = 0;
WD = 0;
CS = 1;
WD = 1;
}
/*=========================================================
函数描述:写入设置
隶属模块:TFT
参数说明:dat输入值
返回说明:无返回值
===========================================================*/
void THT_DAT(INT8U dat)
{
RX = 1;
CS = 0;
WD = 1;
A0 = 1;
P0 = dat;
CS = 0;
WD = 0;
}
/*=========================================================
函数描述:设置一个特殊的区域
隶属模块:TFT
参数说明:x1,y1,x2,y2传入的图形的轮廓坐标值
返回说明:无返回值
===========================================================*/
void TFTSetArea( INT16U x1, INT16U y1, INT16U x2, INT16U y2 )
{
x1+=2;
x2+=2;
y1+=3;
y2+=3;
THT_COM(0x2A);
THT_DAT(x1>>8);
THT_DAT(x1);
THT_DAT(x2>>8);
THT_DAT(x2);
THT_COM(0x2B);
THT_DAT(y1>>8);
THT_DAT(y1);
THT_DAT(y2>>8);
THT_DAT(y2);
THT_COM(0x2C);
}
/*=========================================================
函数描述:为图形、窗口上色
隶属模块:TFT
参数说明:dollop为DOLLOP结构体类型的参数
返回说明:无返回值
===========================================================*/
void TFTDrawDollop( DOLLOP* dollop )
{
INT8U x,y;
TFTSetArea(dollop->Xs, dollop->Ys, dollop->Xe, dollop->Ye); //子TFT上设置一个区域
for( x = 0; x < dollop->Xe - dollop->Xs + 1; x ++ ) //显示行
{
for( y = 0; y < dollop->Ye - dollop->Ys + 1; y++ ) //显示列
{
THT_DAT(dollop->Color>>8);
THT_DAT(dollop->Color );
}
}
}
/*=========================================================
函数描述:对整个窗口的颜色初始化
隶属模块:TFT
参数说明:Color为16字节的BGR数据
返回说明:无返回值
===========================================================*/
void GUI_Inital(INT16U Color )
{
DOLLOP dollop;
dollop.Xs = 0;
dollop.Xe = 127;
dollop.Ys = 0;
dollop.Ye = 129;
dollop.Color = Color;
TFTDrawDollop( &dollop );
}
/*=========================================================
函数描述:延时ttms时间
隶属模块:TFT
参数说明:tt需要延时的时间
返回说明:无返回值
===========================================================*/
void delay(INT16U tt)
{
INT16U i, j;
for(i = 0; i < tt; i++)
for(j == 0; j < 114; j++);
}
/*=========================================================
函数描述:初始化TFT,复位后需要120ms的延时
隶属模块:TFT
参数说明:无
返回说明:无返回值
===========================================================*/
void TFT_INIT()
{
THT_COM(0x01); //软件复位
delay(130);
THT_COM(0x11); //唤醒休眠
// THT_COM(0x12); //局部显示模式
THT_COM(0x13); //标准显示模式
THT_COM(0x20); //显示倒置关闭
// THT_COM(0x21); //显示倒置打开
THT_COM(0x26);
THT_DAT(0x04);
THT_COM(0xb1);
THT_DAT(0x08);
THT_DAT(0x14);
THT_COM(0xc0);
THT_DAT(0x0a);
THT_DAT(0x05);
THT_COM(0xc1);
THT_DAT(0x02);
// THT_COM(0x29); //显示打开
THT_COM(0x2a); //显示方向设置
THT_DAT(0x00);
THT_DAT(0x00);
THT_DAT(0x00);
THT_DAT(0x7f);
THT_COM(0x2b);
THT_DAT(0x00);
THT_DAT(0x00);
THT_DAT(0x00);
THT_DAT(0x7f);
THT_COM(0x36); // 寄存器数据应用控制
THT_DAT(0xc8);
THT_COM(0x3a);
THT_DAT(0x05);
// THT_COM(0x28);
THT_COM(0x29); //显示打开
// THT_COM(0x2c); //写入寄存器
}
/*=========================================================
函数描述:复位
隶属模块:TFT
参数说明:无
返回说明:无返回值
===========================================================*/
void RESET()
{
REST = 1;
delay(1);
REST = 0;
delay(2);
REST = 1;
delay(1);
}
/*=========================================================
函数描述:在TFT上设置一个窗口
隶属模块:TFT
参数说明:无
返回说明:无返回值
===========================================================*/
void WINDOW(WIN *window)
{
THT_COM(0x2a); //显示方向设置
THT_DAT(0x00);
THT_DAT(window->Xs);
THT_DAT(0x00);
THT_DAT(window->Xe);
THT_COM(0x2b);
THT_DAT(0x00);
THT_DAT(window->Ys);
THT_DAT(0x00);
THT_DAT(window->Ye);
}
/*=========================================================
函数描述:写入值
隶属模块:TFT
参数说明:无
返回说明:无返回值
===========================================================*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -