📄 tft61505.c
字号:
while(1)
{
if (*pStr == 0)
{
return;
}
Show_Single_Ascii(x, y, pStr, LineColor, FillColor, Mod);
x += 8;
pStr += 1;
}
}
void Show_HZ24(unsigned int x,unsigned int y,const unsigned char *str)
{
unsigned int i,j,k;
unsigned char tem;
for(i=0;i<37;i++)
{
Set_Ram_Addr(x,y+i);
Lcd_Send_Command(0x22);
for(j=0;j<5;j++)
{
tem = str[i*5+j];
for(k=0;k<8;k++)
{
if(tem&(0x80>>k))
Lcd_Send_Data(BLUE);
else
{
Set_Ram_Addr(x+j*8+k+1,y+i);
Lcd_Send_Command(0x22);
}
}
}
}
}
void Lcd_Show_Bmp565(unsigned int x, unsigned int y, unsigned int w, unsigned int h, const unsigned char *str)
{
unsigned int i,j,temp;
for(j=0;j<h;j++)
{
//Set_Ram_Addr(x,y+j);
//Lcd_Send_Command(0x22);
/* for(i=0;i<w;i++)
{ //Lcd_Send_Data(*(unsigned short *)(&str[(j*w+i)*2])); //高位在前
Set_Ram_Addr(x+w-i,y+j);
Lcd_Send_Command(0x22);
temp=str[(j*w+i)*2+1]<<8; //低位在前
temp|=str[(j*w+i)*2];
Lcd_Send_Data(temp);
}*/
Set_Ram_Addr(x,y+h-j);
Lcd_Send_Command(0x22);
for(i=0;i<w;i++)
{
//Lcd_Send_Data(*(unsigned short *)(&str[(j*w+i)*2])); //高位在前
temp=str[(j*w+i)*2+1]<<8; //低位在前
temp|=str[(j*w+i)*2];
Lcd_Send_Data(temp);
}
}
}
void Lcd_Put_Pixel(unsigned int x,unsigned y, unsigned int Color)
{
Set_Ram_Addr(x,y);
Lcd_Send_Command(0x22);
Lcd_Send_Data(Color);
}
//画线
//x1,y1:起点坐标
//x2,y2:终点坐标
void Lcd_Draw_Line(u16 x1, u8 y1, u16 x2, u8 y2,u16 co1or)
{
u16 t;
s16 xerr=0,yerr=0,delta_x,delta_y,distance;
s8 incx,incy;
// compute the distance in both directions
delta_x=x2-x1;
delta_y=y2-y1;
// compute the direction of the increment ,
//an increment of "0" means either a vertical or horizontal lines
if(delta_x>0) incx=1;
else if( delta_x==0 ) incx=0;
else incx=-1;
if(delta_y>0) incy=1;
else if( delta_y==0 ) incy=0;
else incy=-1;
// determine which distance is greater
delta_x = abs( delta_x );
delta_y = abs( delta_y );
if( delta_x > delta_y ) distance=delta_x;
else distance=delta_y;
// draw the line
for( t=0;t <= distance+1; t++ )
{
Lcd_Put_Pixel(x1,y1,co1or);
xerr += delta_x ;
yerr += delta_y ;
if( xerr > distance )
{
xerr-=distance;
x1+=incx;
}
if( yerr > distance )
{
yerr-=distance;
y1+=incy;
}
}
}
void DispLine(unsigned int StartX, unsigned int StartY, unsigned int EndX, unsigned int EndY, unsigned int Color)
{
unsigned int DrawPointNumX,DrawPointNumY;
unsigned int DrawPointX,DrawPointY;
unsigned char FlagX,FlagY;
float k;
float plus;
k = ((float)EndY - (float)StartY)/((float)EndX-(float)StartX);
plus = (float)EndY - k*EndX;
//----Cauculate Each Point------------
if(EndX>= StartX)
{ DrawPointNumX = EndX - StartX; FlagX=0; }
else
{ DrawPointNumX = StartX - EndX; FlagX=1; }
if(EndY>=StartY)
{ DrawPointNumY = EndY- StartY; FlagY=0; }
else
{ DrawPointNumY = StartY- EndY; FlagY=1; }
if(DrawPointNumX>=DrawPointNumY)
{
DrawPointX = StartX;
if(FlagX==0)
{
while(DrawPointNumX--)
{
DrawPointX++;
DrawPointY =(unsigned int)(((float)DrawPointX) * k + plus);
Lcd_Put_Pixel(DrawPointX, DrawPointY, Color);
}
}
else
{
while(DrawPointNumX--)
{
DrawPointX--;
DrawPointY =(unsigned int)(((float)DrawPointX) * k + plus);
Lcd_Put_Pixel(DrawPointX, DrawPointY, Color);
}
}
}
else
{
DrawPointY = StartY;
if(FlagY==0)
{
while(DrawPointNumY--)
{
DrawPointY++;
DrawPointX =(unsigned int)(((float)DrawPointY - plus) /k);
Lcd_Put_Pixel(DrawPointX, DrawPointY, Color);
}
}
else
{
while(DrawPointNumY--)
{
DrawPointY--;
DrawPointX =(unsigned int)(((float)DrawPointY - plus) /k);
Lcd_Put_Pixel(DrawPointX, DrawPointY, Color);
}
}
}
}
void Lcd_Show_Num(unsigned int x, unsigned int y, unsigned short num)
{
unsigned char str[5];
unsigned char i,j;
for(i=0;i<32;i++)
{
for(j=0;j<16;j++)
{
Set_Ram_Addr(x+i,y+j);
Lcd_Send_Command(0x22);
Lcd_Send_Data(BLACK);
}
}
str[0] = num/1000+0x30;
str[1] = (num%1000)/100+0x30;
str[2] = (num%1000)%100/10+0x30;
str[3] = (num%1000)%100%10+0x30;
str[4] = '\0';
for(i=0;i<3;i++)
{
if(str[0]=='0')
{
str[0]=str[1];
str[1]=str[2];
str[2]=str[3];
str[3]=str[4];
}
}
Lcd_Show_String(x, y, str, RED, YELLOW, 0);
}
void touch_Init(void)
{
GPIO_SetBits(GPIOD,TFT_TCS);
GPIO_SetBits(GPIOD,TFT_DCLK);
GPIO_SetBits(GPIOD,TFT_DIN);
}
//=================================
static unsigned short RD_AD(void)
{
unsigned int temp=0;
unsigned char i;
GPIO_ResetBits(GPIOD,TFT_DIN);
GPIO_SetBits(GPIOD,TFT_DCLK);
for(i=0;i<12;i++)
{
GPIO_ResetBits(GPIOD,TFT_DCLK);
temp<<=1;
if(GPIO_ReadInputDataBit(GPIOD, TFT_DOUT)==1) temp++;
GPIO_SetBits(GPIOD,TFT_DCLK);
}
GPIO_SetBits(GPIOD,TFT_TCS);
return(temp);
}
//=================================
unsigned int read_trouch (unsigned char cmd)
{
unsigned char i;
GPIO_SetBits(GPIOD,TFT_TCS);
GPIO_ResetBits(GPIOD,TFT_DIN);
GPIO_ResetBits(GPIOD,TFT_DCLK);
GPIO_ResetBits(GPIOD,TFT_TCS);
for(i=0;i<8;i++)
{
if(cmd&0x80)GPIO_SetBits(GPIOD,TFT_DIN);
else GPIO_ResetBits(GPIOD,TFT_DIN);
cmd=cmd<<1;
GPIO_SetBits(GPIOD,TFT_DCLK);
GPIO_ResetBits(GPIOD,TFT_DCLK);
}
return RD_AD();
}
//=================================
void touch_GetAdXY(unsigned int *x,unsigned int *y)
{
*x=read_trouch(CHX);
*y=read_trouch(CHY);
}
/*-------------------------------EOF-------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -