2019-07-20 19:22发布
tony129 发表于 2016-10-24 13:59 板子配套程序,触摸屏实验。你用了EMWIN的话,有两个地方要看下,1是GUI初始化要调用GUI_TOUCH_Calibrate那 ...
最多设置5个标签!
1.我的GUI_TOUCH_Calibrate()初始化部分是下面这样的,其实就是开发板配套代码,我现在就是直接在开发板上运行的,我设置的是横屏。请问AD边界值如何调整,或者说调整那几个数据是依据什么?
if(lcddev.id == 0X5310 || lcddev.id == 0X6804) //0X5510 0X6804为3.5寸 320x480
{
if(lcddev.dir == 0) //竖屏
{
GUI_TOUCH_Calibrate(GUI_COORD_X,0,320,3931,226);
GUI_TOUCH_Calibrate(GUI_COORD_Y,0,480,3812,196);
}else //横屏
{
GUI_TOUCH_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y);
GUI_TOUCH_Calibrate(GUI_COORD_X,0,320,3931,226);
GUI_TOUCH_Calibrate(GUI_COORD_Y,0,480,3812,196);
}
}
2.从例程代码中看,是进行了滤波处理的。
//读取一个坐标值(x或者y)
//连续读取READ_TIMES次数据,对这些数据升序排列,
//然后去掉最低和最高LOST_VAL个数,取平均值
//xy:指令(CMD_RDX/CMD_RDY)
//返回值:读到的数据
#define READ_TIMES 5 //读取次数
#define LOST_VAL 1 //丢弃值
u16 TP_Read_XOY(u8 xy)
{
u16 i, j;
u16 buf[READ_TIMES];
u16 sum=0;
u16 temp;
for(i=0;i<READ_TIMES;i++)buf=TP_Read_AD(xy);
for(i=0;i<READ_TIMES-1; i++)//排序
{
for(j=i+1;j<READ_TIMES;j++)
{
if(buf>buf[j])//升序排列
{
temp=buf;
buf=buf[j];
buf[j]=temp;
}
}
}
sum=0;
for(i=LOST_VAL;i<READ_TIMES-LOST_VAL;i++)sum+=buf;
temp=sum/(READ_TIMES-2*LOST_VAL);
return temp;
}
希望得到大家指点
一周热门 更多>