stm32F4 TFTLCD显示与触摸

是基于正点原子的TFTLCD显示和触摸屏的历程改的,在本篇就不再叙述TFTLCD屏的成像原理和触摸原理了。直接上应用,可能有些地方理解的不到位,欢迎各位大佬指正。

一.LCD显示函数

1.LCD_ShowNum()      //显示数字

//x,y:起点坐标
//num:要显示的数值(0~999999999);     
//len:长度(即要显示的位数)
//size:字体大小
//mode:
//[7]:0,不填充;1,填充0.(不填充:和背景颜色不同,填充:和背景颜色相同)

void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size)
{         	
	u8 t,temp;
	u8 enshow=0;						   
	for(t=0;t<len;t++)
	{
		temp=(num/LCD_Pow(10,len-t-1))%10;
		if(enshow==0&&t<(len-1))
		{
			if(temp==0)
			{
				LCD_ShowChar(x+(size/2)*t,y,' ',size,0);
				continue;
			}else enshow=1; 
		 	 
		}
	 	LCD_ShowChar(x+(size/2)*t,y,temp+'0',size,0); 
	}
} 

2.LCD_Clear()    //清屏函数

//color:要清屏的填充色

void LCD_Clear(u16 color)
{
	u32 index=0;      
	u32 totalpoint=lcddev.width;
	totalpoint*=lcddev.height; 			//得到总点数
	if((lcddev.id==0X6804)&&(lcddev.dir==1))//6804横屏的时候特殊处理  
	{						    
 		lcddev.dir=0;	 
 		lcddev.setxcmd=0X2A;
		lcddev.setycmd=0X2B;  	 			
		LCD_SetCursor(0x00,0x0000);		//设置光标位置  
 		lcddev.dir=1;	 
  		lcddev.setxcmd=0X2B;
		lcddev.setycmd=0X2A;  	 
 	}else LCD_SetCursor(0x00,0x0000);	//设置光标位置 
	LCD_WriteRAM_Prepare();     		//开始写入GRAM	 	  
	for(index=0;index<totalpoint;index++)
	{
		LCD->LCD_RAM=color;	
	}
} 

3.LCD_ShowString()     //显示字符串

//x,y:起点坐标
//width,height:可用于显示的区域大小(如果此区域小于要显示的字符所用区域,会自动截断)  
//size:字体大小
//*p:字符串起始地址 (输要显示的字符即可)       

此函数不可以用来显示中文!!!

void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)
{         
	u8 x0=x;
	width+=x;
	height+=y;
    while((*p<='~')&&(*p>=' '))//判断是不是非法字符!
    {       
        if(x>=width){x=x0;y+=size;}
        if(y>=height)break;//退出
        LCD_ShowChar(x,y,*p,size,0);
        x+=size/2;
        p++;
    }  
}

4.POINT_COLOR=RED;     //设置字体颜色,设置字体为红色 

5.LCD_Init();                       //LCD初始化

二.触摸判断

tp_dev.scan(0);
if(tp_dev.x[t]>20&&tp_dev.x[t]<265&&tp_dev.y[t]>200&&tp_dev.y[t]<265)
{
   
      while(tp_dev.x[t]>20&&tp_dev.x[t]<265&&tp_dev.y[t]>200&&tp_dev.y[t]<265)
	  {
			  tp_dev.scan(0);
	  }
	  LCD_Clear(WHITE);
	  LCD_DrawRectangle(30,30,180,220);
	  LCD_ShowNum(40,40,1,1,24);
	  LCD_ShowNum(90,40,2,1,24);
	  LCD_ShowNum(140,40,3,1,24);
	  LCD_ShowNum(40,90,4,1,24);
	  LCD_ShowNum(90,90,5,1,24);
	  LCD_ShowNum(140,90,6,1,24);
	  LCD_ShowNum(40,140,7,1,24);
	  LCD_ShowNum(90,140,8,1,24);
	  LCD_ShowNum(140,140,9,1,24);

(1)tp_dev.scan(0);    //扫描屏幕

(2)tp_dev.x[t]>20&&tp_dev.x[t]<265&&tp_dev.y[t]>200&&tp_dev.y[t]<265

//用于判断屏幕的指定地方有没有被碰到

(3)    LCD_DrawRectangle(30,30,180,220);
               LCD_ShowNum(40,40,1,1,24);
               LCD_ShowNum(90,40,2,1,24);
               LCD_ShowNum(140,40,3,1,24);
               LCD_ShowNum(40,90,4,1,24);
               LCD_ShowNum(90,90,5,1,24);
               LCD_ShowNum(140,90,6,1,24);
               LCD_ShowNum(40,140,7,1,24);
               LCD_ShowNum(90,140,8,1,24);
               LCD_ShowNum(140,140,9,1,24);

//这十条语句用来在屏幕上画一个九格的矩阵键盘

  • 1
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值