新闻中心

EEPW首页>嵌入式系统>设计应用> ARM7202触摸屏接口设计方案

ARM7202触摸屏接口设计方案

作者: 时间:2011-08-18 来源:网络 收藏
4 程序

本文引用地址://m.amcfsurvey.com/article/150331.htm

的应用程序模块有:初始化、落笔中断服务程序、A/D中断服务程序、滤波程序和坐标转换程序。初始化程序、滤波程序和坐标转换程序是一般常规通用程序。驱动程序其核心是落笔中断和A/D转换这两个中断服务程序,以下是在uc/OS操作系统下触摸屏驱动程序的两个中断服务程序,其详细说明见注释。

  static void TouchPenDownISR(int level) //落笔中断服务程序

  {

  unsigned int status;

  status=*(volatile int *)PioCIS0xfff;

  if (status 0x80 )

  {

  *(volatile int *)PioCIC|=0x80; //清落笔中断

  *(volatile int *)PioCIM=~0x80; //关落笔中断

  *(volatile int *)PioCDR=~0x100; //使落笔中断检测无效,触摸屏扫描电路有效

  *(volatile int*)ADCCR=~0x80; //开A/D电源

  *(volatile int*)ADCTPCR|=0x80|0x40; //触摸屏读有效,A/D中断有效

  }

  }

  static void TouchINIISR(int level) //触摸屏A/D转换中断服务程序

  {

  int x[4];

  int y[4];

  *adcisr |= 0x80; //清触摸屏A/D中断

  TouchSample(x,y); //得到X/Y方向数值

  *(volatile int*)ADCTPCR=~(0x80|0x40); //触摸屏读无效,触摸屏A/D中断无效

  *(volatile int *)PioCDR|=0x100; //使落笔中断检测有效,触摸屏扫描电路无效

  if(*(volatile int *)PioCDR0x80) //检测到起笔

  {

  *(volatile int *)PioCIC|=0x80; //清落笔中断

  *(volatile int *)PioCIM|=0x80; //开落笔中断

  *(volatile int *)ADCCR|=0x80; //关A/D电源

  *(volatile int*)ADCTPCR=~(0x80|0x40); //触摸屏读无效,触摸屏A/D中断无效

  }

  else //如仍有落笔

  {

  *(volatile int *)PioCDR=~0x100; //使落笔中断检测无效,触摸屏扫描电路有效

  *(volatile int *)ADCTPCR|=0x80|0x40; //触摸屏读有效,触摸屏A/D中断有效

  }

  }

  5 结束语

  根据上述对触摸屏工作机制的分析,笔者在实时嵌入式操作系统uc/OS下编写的触摸屏驱动程序应用于基于的智能控制器,实践证明系统稳定可靠,满足了在复杂的实时多任务环境中触摸屏快速响应的要求。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭