首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于STM32的RA8806控制器LCD的设计模式分析(2)

基于STM32的RA8806控制器LCD的设计模式分析(2)

2 软件设计  2.1 软件初始化
  系统软件初始化包括STM32F103初始化、UCGUI初始化和RA8806控制器初始化,在STM32F103初始化中FSMC的配置为:
  在RA8806控制器中,触摸屏有自动模式和手动模式两种,自动模式和手动模式中,都可以通过触碰产生中断读取触碰坐标值,手动模式还可以通过轮询触碰事件读取坐标,在实验中采用的是手动模式中的轮询方式,这种方式的流程图如图2所示。在初始化RA8806时,寄存器TPCR1,TPCR2,INTR须按流程图设置,DWWR=AWRR=0x27,DWHR=AWBR=0xEF,其他寄存器默认设置。
  2.2 触摸屏坐标
  触摸屏的坐标分为逻辑坐标和物理坐标,逻辑坐标为用户触摸是手指所点击屏幕的坐标,物理坐标为触摸屏显示的实际坐标,逻辑坐标和物理坐标比较接近,如果相差太多就需要校准。
  RA8806是通过一个10位的A/D转换器连接4线电阻式触摸屏,用户触摸后产生的逻辑坐标存于TPXR,TPYR和TPZR 3个寄存器中,TPXR中存放了x轴坐标的高8位,TPYR中存放了y轴坐标的高8位,TPZR的bit[1:0]是x轴的低二位,bit[3:2]是y轴的低二位。
  为了便于处理逻辑坐标,将TPXR和TPYR寄存器的数据左移2位进行计算,再分别取出TPZR寄存器中的低二位进行或运算,得出x,y轴的坐标。这个逻辑坐标不能直接显示,需要进行校准处理后根据触摸屏的大小转换为物理坐标显示,设计程序如下:
  如果用户触摸的范围超出了设定的显示窗口,就需要对逻辑坐标(x,y)进行判断,如果超出了范围,逻辑坐标无效,就将鼠标设置到对应的边缘,反之逻辑坐标有效。
  2.3 触摸屏校准
  由于触摸屏自身的性能不好,或使用一段时间后会发现逻辑坐标和物理坐标的偏差越来越大,坐标不准造成误操作影响用户使用,这样就要通过校准程序来减少误差。电阻式触摸屏的电压成线性均匀分布,假设触摸屏上一点的逻辑坐标为(xA,yA),对应的物理坐标为(xDA,yDA),由电阻式触摸屏的线性特性可知,任意一点B的逻辑坐标可以用下面公式表示:
  只需在触摸屏上取3个物理坐标已知的点A,B,C,这3个点应该分布均匀不靠近边缘以免不准确,通过读取TPXR,TPYR,TPZR寄存器读出逻辑坐标求出Kx,Ky,求出Kx,Ky后由式(1)校准逻辑坐标与物理坐标,图3(a)为校准的界面,图3(b)为校准后计算的Kx,Ky,由图可以看出两个系数都接近于1,说明触摸屏的坐标误差比较小。
  3 结语
  RA8806控制器在软件设计上方便、灵活,能满足开发人员对中等尺寸触摸屏控制器的要求,丰富的功能和较高的性价比使RA8806控制器的LCD在市场上有很大的优势,基于RA8806的触摸屏与STM32嵌入式系统通过数据总线方式相结合,可以构造出理想的人机交互界面,具有广阔的应用领域。
继承事业,薪火相传
返回列表