static void TFT_WrData8(uint8_t data)
{
TFT_DATA(data);
TFT_RS_H;
TFT_WR_L;
//__nop();
TFT_WR_H;
}
static void TFT_WrData16(uint16_t data)
{
uint8_t i=0;
i=(uint8_t)(data>>8);
TFT_DATA(i);
TFT_RS_H;
TFT_WR_L;
//__nop();
TFT_WR_H;
i=(uint8_t)data;
TFT_DATA(i);
TFT_RS_H;
TFT_WR_L;
// __nop();
TFT_WR_H;
}
static void TFT_WrReg(uint8_t data)
{
TFT_DATA(data);
TFT_RS_L;
TFT_WR_L;
// __nop();
TFT_WR_H;
}
static void TFT_SetWindows(uint16_t xStar,uint16_t yStar,uint16_t xEnd,uint16_t yEnd)
{
TFT_WrReg(0X2A);
TFT_WrData8(xStar>>8);
TFT_WrData8(xStar&0x00ff);
TFT_WrData8(xEnd>>8);
TFT_WrData8(xEnd&0x00ff);
TFT_WrReg(0X2B);
TFT_WrData8(yStar>>8);
TFT_WrData8(yStar&0x00ff);
TFT_WrData8(yEnd>>8);
TFT_WrData8(yEnd&0x00ff);
TFT_WrReg(0X2C);
}
static void TFT_Fill(uint16_t sx,uint16_t sy,uint16_t ex,uint16_t ey,uint16_t color)
{
uint16_t i,j;
TFT_SetWindows(sx,sy,ex,ey);
for(i=sx;i<=ex;i++)
{
for(j=sy;j<=ey;j++)
TFT_WrData16(color);
}
}
static void TFT_DrawNum48(uint16_t x,uint16_t y,uint8_t num,uint8_t color)
{
uint16_t i,j;
TFT_SetWindows(x,y,x+31,y+47);
for(i=0;i<48;i++)
{
//SPI_FlashRead(HD_Number+122880+i*640+num*64-color*30720,Flash_Buffer.L,64);
for(j=0;j<32;j++)
TFT_WrData16(Flash_Buffer.L[j]);
}
}
TFT_DrawWT函数为最终调用函数,在主循环中,值更改时调用,调用就影响频率
void TFT_DrawWT(uint32_t dat)
{
uint16_t x = 202;
uint16_t y = 58;
if(dat<40)
dat=0;
else
dat-=40;
if(dat>999)//范围限制
dat=999;
if(dat<10)
{
TFT_Fill(x,y,x+31,y+47,BLACK);
TFT_Fill(x+32,y,x+63,y+47,BLACK);
TFT_DrawNum48(x+32*2,y,dat,0);
}
else if(dat<100)
{
TFT_Fill(x,y,x+31,y+47,BLACK);
TFT_DrawNum48(x+32,y,dat/10,0);
TFT_DrawNum48(x+32*2,y,dat%10,0);
}
else
{
TFT_DrawNum48(x,y,dat/100,0);
TFT_DrawNum48(x+32,y,dat%100/10,0);
TFT_DrawNum48(x+32*2,y,dat%10,0);
}
}