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);//按键标志位