📄 tft.c
字号:
#include "TFT.h"
void TFTPortInit()
{
SCS = (GPIO0M);
PINSEL0 = 0;
PINSEL1 = 0;
PINSEL2 = 0;
PINMODE0 = 0;
PINMODE1 = 0;
PINMODE2 = 0;
FIO0DIR = 0xffffffff;
FIO1DIR = 0xffffffff;
FIO2DIR = 0xffffffff;
TFT_RST_H(); //初始化端口状态
TFT_RD_H();
TFT_WR_H();
TFT_CS_H();
TFT_RS_H();
}
//选定寄存器地址函数
void TFT_WR_REG(u8 index)
{
TFT_RS_L(); //写寄存器时位0
TFT_CS_L();
TFT_WR_L();
DataOut(index);
TFT_WR_H();
TFT_CS_H();
TFT_RS_L();
}
//写8位数据函数
void TFT_WR_BYTE(u8 od)
{
TFT_RS_H(); //读写数据时为1
TFT_CS_L();
TFT_WR_L();
DataOut(od);
TFT_WR_H();
TFT_CS_H();
TFT_RS_L();
}
/*
//读8位数据函数
u8 TFT_RD_BYTE()
{
u8 id;
GPIOE->CRL.W = 0x88888888; //数据口PE0-7,输入.
GPIOE->ODR.W |= 0x000000ff;//上拉
TFT_RS_H; //读写数据时为1
TFTNop(2);
TFT_CS_L;
TFTNop(2);
TFT_RD_L;
TFTNop(2);
TFT_RD_H;
TFTNop(2);
id = (u8)GPIOE->IDR.W;
TFT_CS_H;
TFTNop(2);
TFT_RS_L;
GPIOE->CRL.W = 0x33333333; //数据口PE0-7,50MHz输出,上拉.
return id;
}
*/
//选定寄存器并写入数据函数
//输入:dbw 数据位数,1为16位,0为8位.
void TFT_WR_CMD(u8 dbw, u8 index, u16 val)
{
TFT_WR_REG(index);
if (dbw)
{
TFT_WR_BYTE((u8) (val >> 8));//先写高8位
}
TFT_WR_BYTE((u8) val);//写低8位或只有8位
}
/*
//读16位寄存器数据
u16 TFT_RD_REG16(u8 index)
{
u16 id;
TFT_WR_REG(index);
id = TFT_RD_BYTE();
id <<= 8; //先读高8位
id += TFT_RD_BYTE(); //再读低8位然后合并
return id;
}
*/
//写16位数据
void TFT_WR_DATA(u16 dat)
{
TFT_WR_BYTE((u8) (dat >> 8));
TFT_WR_BYTE((u8) dat);
}
void TFTInit(void)
{
TFTPortInit();
TFT_RST_L();
TFT_RST_H();
//initializing funciton1
TFT_WR_CMD(0, 0xA1, 0x00);
TFT_WR_CMD(0, 0xA0, 0x00);
TFT_WR_CMD(0, 0x70, 0xC8);
TFT_WR_CMD(0, 0x72, 0xA3);
//TFT_WR_CMD(0,0x73,0x04);
//TFT_WR_CMD(0,0x75,0x45);
TFT_WR_CMD(0, 0x76, 0x23);
//TFT_WR_CMD(0,0x77,0x08);
TFT_WR_CMD(0, 0x78, 0x08);
TFT_WR_CMD(0, 0x79, 0x00);
TFT_WR_CMD(0, 0x7F, 0xF0);
TFT_WR_CMD(0, 0x71, 0x81);
TFT_WR_CMD(0, 0x0D, 0x23);
//TFT_WR_CMD(0,0x11,0x00);
//TFT_WR_CMD(0,0x12,0x00);
//TFT_WR_CMD(0,0x21,0x37);
TFT_WR_CMD(0, 0x22, 0x02);
TFT_WR_CMD(0, 0x23, 0x24);
TFT_WR_CMD(0, 0x24, 0x13);
/*
TFT_WR_CMD(0,0x25,0x0A);
TFT_WR_CMD(0,0x26,0x82);
TFT_WR_CMD(0,0x27,0x01);
TFT_WR_CMD(0,0x1E,0x25);
TFT_WR_CMD(0,0x1F,0x59);
//GAMMA设置
TFT_WR_CMD(1,0x30,0x0777);
TFT_WR_CMD(1,0x31,0x0444);
TFT_WR_CMD(1,0x32,0x0555);
TFT_WR_CMD(1,0x33,0x0444);
TFT_WR_CMD(1,0x34,0x0333);
TFT_WR_CMD(1,0x35,0x0333);
TFT_WR_CMD(1,0x36,0x0333);
TFT_WR_CMD(1,0x37,0x0333);
TFT_WR_CMD(1,0x38,0x0444);
TFT_WR_CMD(1,0x39,0x0555);
TFT_WR_CMD(1,0x3A,0x0666);
TFT_WR_CMD(1,0x3B,0x0666);
TFT_WR_CMD(1,0x3C,0x0777);
TFT_WR_CMD(1,0x3D,0x0777);
TFT_WR_CMD(1,0x3E,0x0777);
TFT_WR_CMD(1,0x3F,0x0777);
TFT_WR_CMD(1,0x40,0x0777);
TFT_WR_CMD(1,0x41,0x0777);
TFT_WR_CMD(1,0x42,0x0777);
TFT_WR_CMD(1,0x43,0x0777);
TFT_WR_CMD(1,0x44,0x0777);
TFT_WR_CMD(1,0x45,0x0777);
TFT_WR_CMD(1,0x46,0x0777);
TFT_WR_CMD(1,0x47,0x0777);
TFT_WR_CMD(1,0x48,0x0777);
TFT_WR_CMD(1,0x49,0x0777);
TFT_WR_CMD(1,0x4A,0x0777);
TFT_WR_CMD(1,0x4B,0x0777);
TFT_WR_CMD(1,0x4C,0x0777);
TFT_WR_CMD(1,0x4D,0x0666);
TFT_WR_CMD(1,0x4E,0x0666);
TFT_WR_CMD(1,0x4F,0x0666);
*/
TFT_WR_CMD(0, 0x00, 0x90); //扫描方向控制
//TFT_WR_CMD(0,0x01,0x07); //扫描方向控制
TFT_WR_CMD(0, 0x02, 0x00); //起X
TFT_WR_CMD(1, 0x03, 0x0000); //起Y
TFT_WR_CMD(0, 0x04, 0xEF); //终X(0~239)
TFT_WR_CMD(1, 0x05, 0x013F); //终Y(0~319)
//窗口设置
//TFT_WR_CMD(0,0x06,0x00); //水平起始位置
//TFT_WR_CMD(1,0x07,0x0000); //垂直起始位置
//TFT_WR_CMD(0,0x08,0xEF); //水平结束位置
//TFT_WR_CMD(1,0x09,0x013F); //垂直结束位置
/*
TFT_WR_CMD(0,0x0A,0x00);
TFT_WR_CMD(0,0x0B,0x00);
TFT_WR_CMD(0,0x0C,0x00);
TFT_WR_CMD(0,0x14,0x00);
TFT_WR_CMD(0,0x15,0x00);
TFT_WR_CMD(0,0x16,0x00);
TFT_WR_CMD(1,0x17,0x01FF);
TFT_WR_CMD(1,0x18,0x01FF);
TFT_WR_CMD(0,0x13,0x00);
TFT_WR_CMD(1,0x19,0x01FF);
TFT_WR_CMD(1,0x1B,0x01FF);
TFT_WR_CMD(1,0x1C,0x01FF);
TFT_WR_CMD(1,0x1A,0x01FF);
TFT_WR_CMD(0,0x1D,0x0E);
*/
TFT_WR_CMD(0, 0x10, 0x06); //开显示
//TFT_WR_REG(0x0E);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -