void Touch_Adjust(void)
{
float vx1,vx2,vy1,vy2; //比例因子
u16 chx1,chx2,chy1,chy2; //默认像素点坐标为0时的AD起始值
u16 lx,ly;
struct tp_pixu32_ p[4];
u8 cnt=0;
cnt=0;
POINT_COLOR=BLUE;
BACK_COLOR =WHITE;
LCD_Clear(WHITE);
POINT_COLOR=RED;
LCD_Clear(WHITE);
Drow_Touch_Point(tp_pianyi,tp_pianyi);
while(1)
{
if(Penirq==0)
{
if(Read_TP_Once())//µÃµ½µ¥´Î°´¼üÖµ
{
p[cnt].x=tp_pixad.x;
p[cnt].y=tp_pixad.y;
cnt++;
}
switch(cnt)
{
case 1:
LCD_Clear(WHITE);
while(!Penirq)
{
}
Drow_Touch_Point(LCD_W-tp_pianyi-1,tp_pianyi);
break;
case 2:
LCD_Clear(WHITE);
while(!Penirq)
{
}
Drow_Touch_Point(tp_pianyi,LCD_H-tp_pianyi-1);//»µã3
break;
case 3:
LCD_Clear(WHITE);
while(!Penirq)
{
}
Drow_Touch_Point(LCD_W-tp_pianyi-1,LCD_H-tp_pianyi-1);
break;
case 4:
LCD_Clear(WHITE);
while(!Penirq)
{
}
vx1=p[1].x>p[0].x?(p[1].x-p[0].x+1)*1000/(LCD_W-tp_pianyi-tp_pianyi):(p[0].x-p[1].x-1)*1000/(LCD_W-tp_pianyi-tp_pianyi);
chx1=p[1].x>p[0].x?p[0].x-(vx1*tp_pianyi)/1000:p[0].x+(vx1*tp_pianyi)/1000;
vy1=p[2].y>p[0].y?(p[2].y-p[0].y-1)*1000/(LCD_H-tp_pianyi-tp_pianyi):(p[0].y-p[2].y-1)*1000/(LCD_H-tp_pianyi-tp_pianyi);
chy1=p[2].y>p[0].y?p[0].y-(vy1*tp_pianyi)/1000:p[0].y+(vy1*tp_pianyi)/1000;
vx2=p[3].x>p[2].x?(p[3].x-p[2].x+1)*1000/(LCD_W-tp_pianyi-tp_pianyi):(p[2].x-p[3].x-1)*1000/(LCD_W-tp_pianyi-tp_pianyi);
chx2=p[3].x>p[2].x?p[2].x-(vx2*tp_pianyi)/1000:p[2].x+(vx2*tp_pianyi)/1000;
vy2=p[3].y>p[1].y?(p[3].y-p[1].y-1)*1000/(LCD_H-tp_pianyi-tp_pianyi):(p[1].y-p[3].y-1)*1000/(LCD_H-tp_pianyi-tp_pianyi);
chy2=p[3].y>p[1].y?p[1].y-(vy2*tp_pianyi)/1000:p[1].y+(vy2*tp_pianyi)/1000;
if((vx1>vx2&&vx1>vx2+tp_xiaozhun)||(vx1<vx2&&vx1<vx2-tp_xiaozhun)||(vy1>vy2&&vy1>vy2+tp_xiaozhun)||(vy1<vy2&&vy1<vy2-tp_xiaozhun))
{
cnt=0;
LCD_Clear(WHITE);
Drow_Touch_Point(tp_pianyi,tp_pianyi);
continue;
}
vx=(vx1+vx2)/2;vy=(vy1+vy2)/2;
chx=(chx1+chx2)/2;chy=(chy1+chy2)/2;
LCD_Clear(WHITE);
POINT_COLOR=BLACK;
BACK_COLOR=BLUE;
lx=0;ly=50;
LCD_ShowString(lx,ly,"VX1:");lx+=40;LCD_ShowNum(lx,ly,vx1,4);
lx=0;ly+=20;
LCD_ShowString(lx,ly,"Vy1:");lx+=40;LCD_ShowNum(lx,ly,vy1,4);
lx=0;ly+=20;
LCD_ShowString(lx,ly,"CHX1:");lx+=40;LCD_ShowNum(lx,ly,chx1,4);
lx=0;ly+=20;
LCD_ShowString(lx,ly,"CHY1:");lx+=40;LCD_ShowNum(lx,ly,chy1,4);
lx=100;ly=50;
LCD_ShowString(lx,ly,"VX2:");lx+=40;LCD_ShowNum(lx,ly,vx2,4);
lx=100;ly+=20;
LCD_ShowString(lx,ly,"Vy2:");lx+=40;LCD_ShowNum(lx,ly,vy2,4);
lx=100;ly+=20;
LCD_ShowString(lx,ly,"CHX2:");lx+=40;LCD_ShowNum(lx,ly,chx2,4);
lx=100;ly+=20;
LCD_ShowString(lx,ly,"CHY2:");lx+=40;LCD_ShowNum(lx,ly,chy2,4);
lx=50;ly=150;
LCD_ShowString(lx,ly,"VX:");lx+=40;LCD_ShowNum(lx,ly,vx,4);
lx=50;ly+=20;
LCD_ShowString(lx,ly,"Vy:");lx+=40;LCD_ShowNum(lx,ly,vy,4);
lx=50;ly+=20;
LCD_ShowString(lx,ly,"CHX:");lx+=40;LCD_ShowNum(lx,ly,chx,4);
lx=50;ly+=20;
LCD_ShowString(lx,ly,"CHY:");lx+=40;LCD_ShowNum(lx,ly,chy,4);
lx=30;ly+=30;
LCD_ShowString(lx,ly,"Adjust OK! Touch Anywhere To Continue");
Read_TP_Once();
LCD_Clear(WHITE);
return;
}
}
}
}