⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tft61505.c

📁 基于STM32的 模拟时序
💻 C
📖 第 1 页 / 共 4 页
字号:

    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 + -