سلام دوستان
این برنامه تاچ اسکرین منه ، یه مشکلی داره که اونم کالیبره نیست
ممنون میشم راهنمایی کنید ، کالیبرش کنم
کار میکنه ها و لی زیاد دقیق نیست مثلا :
مختصات توی 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
دیدگاه