سلام دوستان
این برنامه تاچ اسکرین منه ، یه مشکلی داره که اونم کالیبره نیست
ممنون میشم راهنمایی کنید ، کالیبرش کنم
کار میکنه ها و لی زیاد دقیق نیست مثلا :
مختصات توی LCD :
خروجی تاچ من
مختصات توی LCD :
خروجی تاچ من
[hr]
مختصات توی LCD :
خروجی تاچ من
این برنامه تاچ اسکرین منه ، یه مشکلی داره که اونم کالیبره نیست
ممنون میشم راهنمایی کنید ، کالیبرش کنم
کد:
void read_touch()
{
unsigned int x,y;
float x1,y1;
adc_on();
if(touch_pressed()==1)
{
x=1023-read_touch_x();
y=1023-read_touch_y();
}
else
{
x=0;
y=0;
}
x1 = (float)(x) / 4.2624 ;
y1 = (float)(y) / 3.196875;
x1*=1.148326;
y1*=1.159420;
x = abs( (unsigned int) (x1) );
y = abs( (unsigned int) (y1) );
_touch.x = x;
_touch.y = y;
}
char touch_pressed(void)
{
unsigned int t=0;
adc_on();
for(int k=0;k<5;k++)
t+=_touch_pressed();
t/=5;
return t;
}
char _touch_pressed(void)
{
int z1,z2;
float rtouch;
lcd_touch_ddr._XP=1;
lcd_touch_port._XP=0;
lcd_touch_ddr._YM=1;
lcd_touch_port._YM=1;
lcd_touch_ddr._XM=0;
lcd_touch_port._XM=0;
lcd_touch_ddr._YP=0;
lcd_touch_port._YP=0;
z1 = analog_read(XM);
z2 = analog_read(YP);
rtouch = z2;
rtouch /= z1;
rtouch -= 1;
rtouch *= read_touch_x();
rtouch *= 150;
rtouch /= 1024;
return (((unsigned int)(rtouch))>0) ? 1:0 ;
}
unsigned int read_touch_x()
{
lcd_touch_ddr._YP=0;
lcd_touch_ddr._YM=0;
lcd_touch_port._YP=0;
lcd_touch_port._YM=0;
lcd_touch_ddr._XP=1;
lcd_touch_ddr._XM=1;
lcd_touch_port._XP=1;
lcd_touch_port._XM=0;
_delay_ms(1);
return analog_read(YP);
}
unsigned int read_touch_y()
{
lcd_touch_ddr._XP=0;
lcd_touch_ddr._XM=0;
lcd_touch_port._XP=0;
lcd_touch_port._XM=0;
lcd_touch_ddr._YP=1;
lcd_touch_ddr._YM=1;
lcd_touch_port._YP=1;
lcd_touch_port._YM=0;
_delay_ms(1);
return analog_read(XM);
}
مختصات توی LCD :
کد:
x=100 y=100
کد:
x=120 y=125
مختصات توی LCD :
کد:
x=200 y=200
کد:
x=209 y=214
مختصات توی LCD :
کد:
x=220 y=300
کد:
x=226 y=305




دیدگاه