这一集里,我们把液晶屏模块、触摸屏模块相结合,实现了画笔的功能,这个小的应用里,加入了一个常见的触摸屏野点处理算法。这是我们从驱动升级到应用的一个小的跨越。
由于现在博客里暂时放不了视频,大家只能点击一下链接观看视频,讲义仍然放在博客中。
优酷链接:http://v.youku.com/v_show/id_XMzMwNDkyODg4.html
清晰版下载地址:http://115.com/file/dnodx35u 如需提取码,则是:dnodx35u
开发板链接:http://item.taobao.com/item.htm?spm=1103Qmdt.3-3dfNy.h-1Akvus&id=9026190872&
代码实现了读取触摸屏坐标,并将触摸屏坐标换算为液晶屏的显示坐标,将像素点显示到触摸坐标的位置,实现了通过触摸屏在液晶屏上进行简单的线条绘画。
代码设置了防触摸屏坐标误触发机制,通过算法尽量减少触摸屏野点。使触发坐标更准确。
运行代码,通过用手指或者其他光滑的物体在液晶屏上划动,可以看到液晶屏上显示出划动的轨迹。
触摸屏野点算法:
为确保触摸屏显示坐标准确,通常采用野点处理算法,代码中每次采取9个坐标点,然后对其取平均值和差值,排除偏离实际坐标较大的坐标值,将准确的坐标输出。
触摸屏坐标与液晶屏坐标换算:
X坐标换算: tem_x = (tem_x-0xb0)*100/763;
Y坐标换算: tem_y = (tem_y-0x150) *100/1288;
如感觉坐标定位不准确,可适当修改上面的换算参数值。
在指定坐标显示一个点:
因液晶屏最终显示的数据格式为RGB565,所以显示点的数据为16bit ,由两个8bit的数据分别送入。
void play_point(unsigned int x,unsigned int y,unsigned char *pdispbuf)
{
pdispbuf[2*x+0+y*960] = 0xff ;
pdispbuf[2*x+1+y*960] = 0xff;
}
1. 编译并运行代码
2. 用手指在液晶屏上划动
3. 观察液晶屏显示
液晶屏上会显示出手指划动的轨迹。
文章评论(0条评论)
登录后参与讨论