- 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);
- }
- }