STM32F407 TFT电阻触摸屏 四点校准法

本文介绍了如何使用STM32F407进行TFT电阻触摸屏的四点校准,包括算法说明、详细步骤以及实物照片。在校准过程中,通过在屏幕四个角设定基准点并记录触摸屏采集坐标,通过横纵坐标判断因子确保数据准确性,最后计算校准参数以实现精确触控。
摘要由CSDN通过智能技术生成

STM32F407 TFT电阻触摸屏 四点校准法


提示:STM32F407在使用3.2英寸TFT电阻触摸屏时,应该对其进行校准。

一、算法说明

电阻触摸屏由触摸屏(TS)和LCD屏上下两层组成。
在这里插入图片描述

采用的触摸屏分辨率320*240(W=320,H=240),在LCD四个设定位置确定基准点,对应的触摸屏采集坐标为(x,y)。校准用四点法校准,设定的四个点如下表所示。

序号 LCD屏位置 触摸屏采集数据
1 (20,20) (x0,y0)
2 (220,20) (x1,y1)
3 (20,320) (x2,y2)
4 (220,320) (x3,y3)
设定的四个点如下图所示。
在这里插入图片描述

二、算法步骤

校准算法的步骤如下:
1)在(20,20)坐标处显示第一个点,等待触摸屏触发,触摸后记录触发点坐标(x0,y0),在(W-20,20)坐标处显示第二个点;
2)等待触摸屏触发,触摸后记录触发点坐标(x1,y1),在(20,H-20)坐标处显示第三个点;
3)等待触摸屏触发,触摸后记录触发点坐标(x2,y2),在(W-20,H-20)坐标处显示第四个点;
4)触摸屏触摸后记录坐标为(x3,y3)分别记录四个点坐标后,进行判断。判断准则为横坐标判断和纵坐标判断。
a.横坐标判断:点1到点2的距离在这里插入图片描述
点3到点4的距离 在这里插入图片描述
横坐标判断因子Ph,若0.95<Ph<1.05,则认为坐标采集数据正确;否则,则重新采集坐标数据。
a.纵坐标判断:点1到点3的距离
在这里插入图片描述
点2到点4的距离 在这里插入图片描述

横坐标判断因子Pz,若0.95<Pz<1.05,则认为坐标采集数据正确;否则,则重新采集坐标数据。
5)若横、纵坐标判断因子均在允许的范围内,则计算电阻触摸品校准参数。
横坐标比例因子为Kx,横坐标偏移因子为Dx,则有
在这里插入图片描述
在这里插入图片描述

纵坐标比例因子为Ky,纵坐标偏移因子为Dy,则有

在这里插入图片描述
在这里插入图片描述

TFT触摸屏校准函数

/*****************************************************************************
 * @name       :u8 TP_Get_Adjdata(void)
 * @date       :2021-1-12
 * @function   :Calibration touch screen and Get 4 calibration parameters
 * @parameters :None
 * @retvalue   :None
******************************************************************************/
void TP_Adjust(void)
{
   
    u16 pos_temp[4][2];//四个点位置
    u8  cnt=0;
    u16 d1,d2;
    u32 tem1,tem2;
    double fac;
    u16 outtime=0;
    cnt=0;
    POINT_COLOR=BLUE;
    BACK_COLOR =WHITE;
    LCD_Clear(WHITE);//清屏白色
    POINT_COLOR=GRED;
    LCD_Clear(WHITE);//清屏白色
    POINT_COLOR=BLACK;
    LCD_ShowString(10,40,16,"Please use the stylus click",1);//显示提示信息
    LCD_ShowString(10,56,16,"the cross on the screen.",1);//显示提示信息
    LCD_ShowString(10,72,16,"The cross will always move",1);//显示提示信息
    LCD_ShowString(10,88,16,"until the screen adjustment",1);//显示提示信息
    LCD_ShowString(10,104,16,"is completed.",1);//显示提示信息

    TP_Drow_Touch_Point(20,20,BLUE);//画点1
    tp_dev.sta=0;//清除触发信号
    tp_dev.xfac=0;//
    {
   
        tp_dev.scan(1);//扫描触摸屏物理坐标
        if((tp_dev.sta&0xc0)==TP_CATH_PRES)//触摸屏触发一次
        {
   
            outtime=0;
            tp_dev.sta&=~(1<<6);//按键标志位
  • 8
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值