📄 tft_c.c
字号:
#include "common.h"
#include "zk.h"
#include "tk.h"
#include "lcd.h"
void wlcddata(uint mdata)
{
while(MCUfifoset==1);
MCUclk=0;
MUX0 = 0;
MUX1 = 0;
MUX2 = 0;
Lpin=mdata;
MCUclk=1;
MUX0 = 1;
MCUclk=0;
mdata=mdata>>8;
Lpin=mdata;
MCUclk=1;
}
void wlcdaddr(ulong maddr,bit i)
{
while(MCUfifoset==1);
MCUfifoclk = 0;
if(i==0)
{
MUX0 = 0;
MUX1 = 1;
MUX2 = 0;
MCUclk=0;
Lpin=maddr;
maddr=maddr>>8;
if(maddr&0x00000001==1)
Hpin=1;
else
Hpin=0;
MCUclk=1;
MUX0=1;
maddr=maddr>>1;
MCUclk=0;
Lpin=maddr;
Hpin=0;
MCUclk=1;
}
else
{
MUX0 = 0;
MCUclk=0;
MUX1 = 0;
MUX2 = 1;
MCUclk=1;
}
MCUfifoclk = 1;
}
void Pset(uint x,uchar y,uchar color,bit layer)
{
ulong addr;
uint mdata;
addr=(ulong)(x+1)*240;
addr=addr-y-1;
mdata=color;
if(layer)
mdata=mdata<<8;
wlcddata(mdata);
wlcdaddr(addr,0);
}
void Fill(uint x,uchar y,uint width,uchar height,uchar color,bit layer)
{
ulong addr;
uint mdata,i;
uchar j;
mdata=color;
if(layer)
mdata=mdata<<8;
wlcddata(mdata);
for(i=x;i<x+width;i++)
{
addr=(ulong)(i+1)*240;
for(j=y;j<y+height;j++)
{
if(j==y)
{
addr=addr-j-1;
wlcdaddr(addr,0);
}
else
wlcdaddr(addr,1);
}
}
}
void Line(uint x,uchar y,uint length,uchar dir,uchar color,bit layer)
{
uint i;
uint mdata;
ulong addr;
if(dir==0)
{
for(i=x;i<x+length;i++)
{
Pset(i,y,color,layer);
}
}
else if(dir==1)
{
mdata=color;
if(layer)
mdata=mdata<<8;
wlcddata(mdata);
addr=(ulong)(x+1)*240;
for(i=y;i<length+y;i++)
{
if(i==y)
{
addr=addr-i-1;
wlcdaddr(addr,0);
}
else
wlcdaddr(addr,1);
}
}
}
void BMPDisplay(uint x,uchar y,uint width,uchar height,uchar dir,uchar BMP[],bit layer)
{
uchar i;
uint j;
uint mdata;
ulong addr;
for(j=0;j<width;j++)
{
addr=(ulong)(x+1+j)*240;
for(i=0;i<height;i++)
{
if(dir==0)
{
if(layer)
mdata=BMP[j*height+i]*256;
else
mdata=BMP[j*height+i];
}
else
{
if(layer)
mdata=BMP[i*height+j]*256;
else
mdata=BMP[i*height+j];
}
wlcddata(mdata);
if(i==0)
{
addr=addr-y-1;
wlcdaddr(addr,0);
}
else
wlcdaddr(addr,1);
}
}
}
void DrawButton(uint x,uchar y,uchar length,uchar PushPull,bit layer)
{
uchar i;
Line(x,y,length,0,0x70,layer);
Line(x,y+19,length,0,0x70,layer);
Line(x,y,20,1,0x70,layer);
Line(x+length-1,y,20,1,0x70,layer);
if(PushPull==0)
{
BMPDisplay(x+1,y+1,6,18,0,BMPButtonStart,layer);
for(i=0;i<length-14;i++)
{
BMPDisplay(x+7+i,y+1,1,18,0,BMPButtonBody,layer);
}
BMPDisplay(x+length-7,y+1,6,18,0,BMPButtonEnd,layer);
}
else
{
Line(x+1,y+1,length-2,0,0x8d,layer);
Line(x+1,y+1,18,1,0x8d,layer);
Line(x+2,y+2,length-4,0,0x91,layer);
Line(x+2,y+2,16,1,0x91,layer);
Line(x+length-3,y+2,16,1,0x99,layer);
Line(x+length-2,y+1,18,1,0x9d,layer);
Line(x+3,y+17,length-5,0,0x99,layer);
Line(x+2,y+18,length-3,0,0x9d,layer);
Fill(x+3,y+3,length-6,14,0x95,layer);
}
}
void WriteChar(uint x,uchar y,uchar character,uchar color,uchar backcolor,bit layer)
{
uchar i,k,chardata;
ulong addr;
uint mdata;
for(i=0;i<6;i++)
{
addr=(ulong)(i+1+x)*240-y-1;
chardata=AZK[character-0x20][i*2];
for(k=0;k<8;k++)
{
if((chardata&0x01)==1)
{
mdata=color;
if(layer)
mdata=mdata<<8;
wlcddata(mdata);
wlcdaddr(addr,0);
}
else
{
if(backcolor!=0)
{
mdata=backcolor;
if(layer)
mdata=mdata<<8;
wlcddata(mdata);
wlcdaddr(addr,0);
}
}
addr--;
chardata>>=1;
}
chardata=AZK[character-0x20][i*2+1];
for(k=0;k<4;k++)
{
if((chardata&0x01)==1)
{
mdata=color;
if(layer)
mdata=mdata<<8;
wlcddata(mdata);
wlcdaddr(addr,0);
}
else
{
if(backcolor!=0)
{
if(layer)
mdata=backcolor*256;
else
mdata=backcolor;
wlcddata(mdata);
wlcdaddr(addr,0);
}
}
addr--;
chardata>>=1;
}
}
if(backcolor!=0) Line(x+6,y,12,1,backcolor,layer);
//gNextPoint=x+6;
}
void BigChar(uint x,uchar y,uchar character,uchar color,uchar backcolor,bit layer)
{
uchar j,i,k,chardata;
ulong addr;
uint mdata;
for(i=0;i<15;i++)
{
addr=(ulong)(i+1+x)*240-y-1;
for(j=0;j<3;j++)
{
chardata=BZK[character][i*3+j];
for(k=0;k<8;k++)
{
if((chardata&0x01)==1)
{
if(layer)
mdata=color*256;
else
mdata=color;
wlcddata(mdata);
wlcdaddr(addr,0);
}
else
{
if(backcolor!=0)
{
if(layer)
mdata=backcolor*256;
else
mdata=backcolor;
wlcddata(mdata);
wlcdaddr(addr,0);
}
else
wlcddata(0);
}
addr--;
chardata>>=1;
}
}
}
// if(backcolor!=0) Line(x+6,y,12,1,backcolor,layer);
// gNextPoint=x+15;
}
void WritebigChar(uint x,uchar y,uchar character,uchar color,uchar backcolor,bit layer)
{
uchar i,k,chardata;
ulong addr;
uint mdata;
for(i=0;i<12;i++)
{
addr=(ulong)(i+1+x)*240-y-1;
chardata=AZK[character-0x20][(i/2)*2];
for(k=0;k<16;k++)
{
if((chardata&0x01)==1)
{
mdata=color;
if(layer)
mdata=mdata<<8;
wlcddata(mdata);
wlcdaddr(addr,0);
}
else
{
if(backcolor!=0)
{
mdata=backcolor;
if(layer)
mdata=mdata<<8;
wlcddata(mdata);
wlcdaddr(addr,0);
}
}
addr--;
if(k%2)
chardata>>=1;
}
chardata=AZK[character-0x20][(i/2)*2+1];
for(k=0;k<8;k++)
{
if((chardata&0x01)==1)
{
mdata=color;
if(layer)
mdata=mdata<<8;
wlcddata(mdata);
wlcdaddr(addr,0);
}
else
{
if(backcolor!=0)
{
if(layer)
mdata=backcolor*256;
else
mdata=backcolor;
wlcddata(mdata);
wlcdaddr(addr,0);
}
}
addr--;
if(k%2)
chardata>>=1;
}
}
if(backcolor!=0) Line(x+12,y,24,1,backcolor,layer);
}
void WriteHZ(uint x,uchar y,uchar character,uchar color,uchar backcolor,bit layer)
{
uchar k,i,chardata;
ulong addr;
uint mdata;
for(i=0;i<12;i++)
{
addr=(ulong)(i+1+x)*240-y-1;
chardata=HZK[character][i*2];
for(k=0;k<8;k++)
{
if((chardata&0x01)==1)
{
mdata=color;
if(layer)
mdata=mdata<<8;
wlcddata(mdata);
wlcdaddr(addr,0);
}
else
{
if(backcolor!=0)
{
if(layer)
mdata=backcolor*256;
else
mdata=backcolor;
wlcddata(mdata);
wlcdaddr(addr,0);
}
}
addr--;
chardata>>=1;
}
chardata=HZK[character][i*2+1];
for(k=0;k<4;k++)
{
if((chardata&0x01)==1)
{
mdata=color;
if(layer)
mdata=mdata<<8;
wlcddata(mdata);
wlcdaddr(addr,0);
}
else
{
if(backcolor!=0)
{
if(layer)
mdata=backcolor*256;
else
mdata=backcolor;
wlcddata(mdata);
wlcdaddr(addr,0);
}
}
addr--;
chardata>>=1;
}
}
if(backcolor!=0) Line(x+12,y,12,1,backcolor,layer);
//gNextPoint=x+12;
}
void WritebigHZ(uint x,uchar y,uchar character,uchar color,uchar backcolor,bit layer)
{
uchar k,i,chardata;
ulong addr;
uint mdata;
for(i=0;i<24;i++)
{
addr=(ulong)(i+1+x)*240-y-1;
chardata=HZK[character][(i/2)*2];
for(k=0;k<16;k++)
{
if((chardata&0x01)==1)
{
mdata=color;
if(layer)
mdata=mdata<<8;
wlcddata(mdata);
wlcdaddr(addr,0);
}
else
{
if(backcolor!=0)
{
if(layer)
mdata=backcolor*256;
else
mdata=backcolor;
wlcddata(mdata);
wlcdaddr(addr,0);
}
}
addr--;
if(k%2)
chardata>>=1;
}
chardata=HZK[character][(i/2)*2+1];
for(k=0;k<8;k++)
{
if((chardata&0x01)==1)
{
mdata=color;
if(layer)
mdata=mdata<<8;
wlcddata(mdata);
wlcdaddr(addr,0);
}
else
{
if(backcolor!=0)
{
if(layer)
mdata=backcolor*256;
else
mdata=backcolor;
wlcddata(mdata);
wlcdaddr(addr,0);
}
}
addr--;
if(k%2)
chardata>>=1;
}
}
if(backcolor!=0) Line(x+24,y,24,1,backcolor,layer);
}
void StrDisplayHZ(uint x,uchar y,uchar str[],uchar strlen,uchar color,uchar backcolor,bit layer)
{
uchar i;
for(i=0;i<strlen;i++)
{
WriteHZ(x+i*13,y,str[i],color,backcolor,layer);
}
}
void StrDisplaybigHZ(uint x,uchar y,uchar str[],uchar strlen,uchar color,uchar backcolor,bit layer)
{
uchar i;
for(i=0;i<strlen;i++)
{
WritebigHZ(x+i*26,y,str[i],color,backcolor,layer);
}
}
void StrDisplayASC(uint x,uchar y,uchar str[],uchar strlen,uchar color,uchar backcolor,bit layer)
{
uchar i;
for(i=0;i<strlen;i++)
{
WriteChar(x+i*7,y,str[i],color,backcolor,layer);
}
}
void StrDisplaybigASC(uint x,uchar y,uchar str[],uchar strlen,uchar color,uchar backcolor,bit layer)
{
uchar i;
for(i=0;i<strlen;i++)
{
WritebigChar(x+i*13,y,str[i],color,backcolor,layer);
}
}
void sanjiao(uint x,uchar y,uchar color,bit layer)
{
ulong addr;
uint mdata,i;
uchar j,s=19,t=0;
mdata=color;
if(layer)
mdata=mdata<<8;
wlcddata(mdata);
for(i=x;i<x+17;i++)
{
if(i%2)
{
s=s-2;
t++;
}
addr=(ulong)(i+1)*240;
for(j=y;j<y+s;j++)
{
if(j==y)
{
addr=addr-y-1-t;
wlcdaddr(addr,0);
}
else
wlcdaddr(addr,1);
}
}
}
void CharDisplay(uint x,uchar y,uchar num,uchar color,uchar backcolor,uchar layer)
{
uchar i;
i=(uchar)(num/100);
WriteChar(x,y,i+0x30,color,backcolor,layer);
num-=i*100;
i=(uchar)(num/10);
WriteChar(x+6,y,i+0x30,color,backcolor,layer);
num-=i*10;
WriteChar(x+12,y,num+0x30,color,backcolor,layer);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -