#include "tftlcd.h"
#include "font.h"
#include "uart.h"
#include "stdlib.h"
//LCD的画笔颜色和背景色
u16 FRONT_COLOR=WHITE; //画笔颜色
u16 BACK_COLOR=BLACK; //背景色
_tftlcd_data tftlcd_data;
void Delay(unsigned int dly)
{
unsigned int i,j;
for(i=0;i<dly;i++)
for(j=0;j<255;j++);
}
//写寄存器函数
//cmd:寄存器值
void LCD_WriteCmd(u16 cmd)
{
#ifdef TFT20_HX8309
unsigned char cmdH, cmdL;
cmdH = cmd >> 8;
cmdL = cmd & 0x00FF;
TFT_WR = 1; //初始化WR
TFT_CS = 0; //打开片选
TFT_RD = 1; //选择写
TFT_RS = 0; //选择命令
TFT_DATAPORTH = cmdH; //放置命令数据
TFT_DATAPORTL = cmdL; //放置命令数据
TFT_WR = 0; //写入时序
TFT_WR = 1;
TFT_CS = 1; //关闭片选
#endif
#ifdef TFT22_R61503B
unsigned char cmdH, cmdL;
cmdH = cmd >> 8;
cmdL = cmd & 0x00FF;
TFT_WR = 1; //初始化WR
TFT_CS = 0; //打开片选
TFT_RD = 1; //选择写
TFT_RS = 0; //选择命令
TFT_DATAPORTH = cmdH; //放置命令数据
TFT_WR = 0; //写入时序
TFT_WR = 1;
TFT_DATAPORTH = cmdL;
TFT_WR = 0; //写入时序
TFT_WR = 1;
TFT_CS = 1; //关闭片选
#endif
#ifdef TFT22_ILI9225B
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=0;
TFT_DATAPORTH=cmd>>8;
TFT_WR=0;
TFT_WR=1;
TFT_DATAPORTH=cmd&0x00ff;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT24_ST7781R
TFT_CS=0;
TFT_RS=0;
TFT_DATAPORTH=cmd>>8;
TFT_DATAPORTL=cmd;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT26_R61509V
TFT_CS=0;
TFT_RS=0;
TFT_DATAPORTH=cmd>>8;
TFT_DATAPORTL=cmd;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT26_ILI9325D
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=0;
TFT_DATAPORTL=cmd>>8;
TFT_WR=0;
TFT_WR=1;
TFT_DATAPORTL=cmd&0x00ff;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT24_ST7789S
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=0;
TFT_DATAPORTH=cmd;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT24_SSD1297
TFT_CS=0;
TFT_RS=0;
TFT_DATAPORTH=cmd>>8;
TFT_DATAPORTL=cmd;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT20_ILI9225
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=0;
TFT_DATAPORTH=cmd>>8;
TFT_WR=0;
TFT_WR=1;
TFT_DATAPORTH=cmd&0x00ff;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT20_ILI9341
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=0;
TFT_DATAPORTH=cmd;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT20_ST7775R
TFT_CS=0;
TFT_RS=0;
TFT_DATAPORTH=cmd>>8;
TFT_DATAPORTL=cmd;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT20_ST7775RV
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=0;
TFT_DATAPORTL=cmd>>8;
TFT_WR=0;
TFT_WR=1;
TFT_DATAPORTL=cmd&0x00ff;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT20_ILI9225C
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=0;
TFT_DATAPORTL=cmd>>8;
TFT_WR=0;
TFT_WR=1;
TFT_DATAPORTL=cmd&0x00ff;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT20_R61503U
TFT_CS=0;
TFT_RS=0;
TFT_DATAPORTH=cmd>>8;
TFT_DATAPORTL=cmd;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT20_HX8340B
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=0;
TFT_DATAPORTH=cmd;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT24_HX8357A
TFT_CS=0;
TFT_RS=0;
TFT_DATAPORTH=cmd>>8;
TFT_DATAPORTL=cmd;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
}
//写数据
//dat:要写入的值
void LCD_WriteData(u16 dat)
{
#ifdef TFT20_HX8309
unsigned char datH, datL;
datH = dat >> 8;
datL = dat & 0x00FF;
TFT_WR = 1; //初始化WR
TFT_CS = 0; //打开片选
TFT_RD = 1; //选择写
TFT_RS = 1; //选择发送数据
TFT_DATAPORTH = datH; //放置命令数据
TFT_DATAPORTL = datL; //放置命令数据
TFT_WR = 0; //写入时序
TFT_WR = 1;
TFT_CS = 1; //关闭片选
#endif
#ifdef TFT22_R61503B
unsigned char datH, datL;
datH = dat >> 8;
datL = dat & 0xFF;
TFT_WR = 1; //初始化WR
TFT_CS = 0; //打开片选
TFT_RD = 1; //选择写
TFT_RS = 1; //选择发送数据
TFT_DATAPORTH = datH; //放置命令数据
TFT_WR = 0; //写入时序
TFT_WR = 1;
TFT_DATAPORTH = datL;
TFT_WR = 0; //写入时序
TFT_WR = 1;
TFT_CS = 1; //关闭片选
#endif
#ifdef TFT22_ILI9225B
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=1;
TFT_DATAPORTH=dat>>8;
TFT_WR=0;
TFT_WR=1;
TFT_DATAPORTH=dat&0x00ff;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT24_ST7781R
TFT_CS=0;
TFT_RS=1;
TFT_DATAPORTH=dat>>8;
TFT_DATAPORTL=dat;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT26_R61509V
TFT_CS=0;
TFT_RS=1;
TFT_DATAPORTH=dat>>8;
TFT_DATAPORTL=dat;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT26_ILI9325D
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=1;
TFT_DATAPORTL=dat>>8;
TFT_WR=0;
TFT_WR=1;
TFT_DATAPORTL=dat&0x00ff;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT24_ST7789S
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=1;
TFT_DATAPORTH=dat;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT24_SSD1297
TFT_CS=0;
TFT_RS=1;
TFT_DATAPORTH=dat>>8;
TFT_DATAPORTL=dat;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT20_ILI9225
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=1;
TFT_DATAPORTH=dat>>8;
TFT_WR=0;
TFT_WR=1;
TFT_DATAPORTH=dat&0x00ff;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT20_ILI9341
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=1;
TFT_DATAPORTH=dat;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT20_ST7775R
TFT_CS=0;
TFT_RS=1;
TFT_DATAPORTH=dat>>8;
TFT_DATAPORTL=dat;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT20_ST7775RV
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=1;
TFT_DATAPORTL=dat>>8;
TFT_WR=0;
TFT_WR=1;
TFT_DATAPORTL=dat&0x00ff;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT20_ILI9225C
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=1;
TFT_DATAPORTL=dat>>8;
TFT_WR=0;
TFT_WR=1;
TFT_DATAPORTL=dat&0x00ff;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT20_R61503U
TFT_CS=0;
TFT_RS=1;
TFT_DATAPORTH=dat>>8;
TFT_DATAPORTL=dat;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT20_HX8340B
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=1;
TFT_DATAPORTH=dat;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT24_HX8357A
TFT_CS=0;
TFT_RS=1;
TFT_DATAPORTH=dat>>8;
TFT_DATAPORTL=dat;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
}
void LCD_WriteData_Color(u16 color)
{
#ifdef TFT20_HX8309
unsigned char datH, datL;
datH = color >> 8;
datL = color & 0x00FF;
TFT_WR = 1; //初始化WR
TFT_CS = 0; //打开片选
TFT_RD = 1; //选择写
TFT_RS = 1; //选择发送数据
TFT_DATAPORTH = datH; //放置命令数据
TFT_DATAPORTL = datL; //放置命令数据
TFT_WR = 0; //写入时序
TFT_WR = 1;
TFT_CS = 1; //关闭片选
#endif
#ifdef TFT22_R61503B
unsigned char datH, datL;
datH = color >> 8;
datL = color & 0xFF;
TFT_WR = 1; //初始化WR
TFT_CS = 0; //打开片选
TFT_RD = 1; //选择写
TFT_RS = 1; //选择发送数据
TFT_DATAPORTH = datH; //放置命令数据
TFT_WR = 0; //写入时序
TFT_WR = 1;
TFT_DATAPORTH = datL;
TFT_WR = 0; //写入时序
TFT_WR = 1;
TFT_CS = 1; //关闭片选
#endif
#ifdef TFT22_ILI9225B
TFT_WR=1;
TFT_CS=0;
TFT_RD=1;
TFT_RS=1;
TFT_DATAPORTH=color>>8;
TFT_WR=0;
TFT_WR=1;
TFT_DATAPORTH=color&0x00ff;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT24_ST7781R
TFT_CS=0;
TFT_RS=1;
TFT_DATAPORTH=color>>8;
TFT_DATAPORTL=color;
TFT_WR=0;
TFT_WR=1;
TFT_CS=1;
#endif
#ifdef TFT26_R61509V
TFT