您当前的位置:五五电子网电子知识单片机-工控设备综合-其它触摸屏技术在16位单片机中的应用 正文
触摸屏技术在16位单片机中的应用

触摸屏技术在16位单片机中的应用

点击数:7105 次   录入时间:03-04 11:58:51   整理:http://www.55dianzi.com   综合-其它

  在出现数次问题后, 我们都发现显示部分正常, 而触摸部分不正常, 也就是ADS7843的使用有问题, 其内部结构原理图如图3所示。从图上我们可以看见主要有四通道信号转换器、逐次逼近寄存器( SAR )、电容型数据/转换器( CDAC )、比较器、串行接口与控制器功能模块组成。其中与编程有关的信号是DCLK、/CS、DIN、DOUT、BUSY、/PENIRQ,数据流向见图4所示。

图3 AD7843内部原理结构

图3 AD7843内部原理结构

图4 ADS7843接口图

图4 ADS7843接口图

  对于ADS7843来说, 除了电源与地线, 输入模拟信号X+ 、X- 、Y+ 、Y - 、IN3、IN4, 输入数字信号DCLK、/CS、DIN;输出数字信号BUSY、DOUT、/PEN IRQ.与编程有关的均是数字信号, 数据输入、输出、时钟输入均为串行方式, 最高转换速率为1/125KH z, 线路设计结构上比较方便只需要6根端口线单片机就可以建立完全的数据交互。

  2. 4 现象分析

  采用80196的P1口的6个端口专门与其打交道, 从硬件上讲是完全可以的。然而由于在编程中P1口有些端口是作输入、有些端口需要作为输出, 80196又没有对位直接进行操作的指令, 对P1某一个端口作输出操作, 通常196会先读P1口的8个管脚, 然后再进行 写!的操作, 根据P1口结构, 必然会带来若作为输入端口的管脚在其外部输入信号为低时, 执行 写!指令后出现了将其输入状态改为了输出状态。此时在80196与ADS7843的DOUT与/PEN IRQ这两根线上都将出现了同一根线上出现两个输出信号、争抢信号的问题, 这是数字电路中绝对不允许的, 它的出现就有可能损坏芯片。

  根据资料介绍, 在编程操作中, 当P1口中有些管脚作为输入, 有些管脚作为输出时要特别注意对P1 口写指令操作,它是一个读、写过程, 最好借助于一些单元。

  3 软件设计分析

  对于按键的处理, 系统采用中断方式, 流程如图5所示。

图5按键流程图

图5按键流程图



www.55dianzi.com

  主要相关程序如下:

  /* 触摸屏写控制指令、读数据子程序* /

  LDB R6, # 08H ; 写8位控制指令代码

  CLRC; LDB AL, COM ; 指令代码准备发送

  ADS7843_W: SHLB AL, # 1 ; 数据串行发送

  JC S_D I_1; JMP S_DI_0

  S_DI_1: LDB BL, IOPORT1 ; 将P1 口状态保存在BL 寄存器中

  ORB BL, # 03H ; 将数据出DOUT置高, 数据入DIN 为信号输入状态

  LDB IOPORT1, BL ; 将修改后的状态送至P1口

  JMP SKCLK

  S_DI_0: LDB BL, IOPORT1 ; 将P1 口状态保存在BL 寄存器中

  ANDB BL, # 0FEH ; 将数据出DOUT 置低

  ORB BL, # 02H ; 数据入D IN为信号输入状态

  LDB IOPORT1, BL; 将修改后的状态送至P1口

  SKCLK: LDB BL, IOPORT1 ; 将P1口状态保存在BL寄存器中

  ANDB BL, # 0F7H ; 时钟信号DCLK为低

  ORB BL, # 01H ; 将数据出DOUT 置高

  LDB IOPORT1, BL ; 将修改后的状态送至P1口

  LDB BL, IOPORT1 ; 将P1口状态保存在BL寄存器中

  ORB BL, # 09H ; 时钟信号DCLK 为高, 将数据出DOUT置高

  LDB IOPORT1, BL ; 将修改后的状态送至P1口

  DJNZ R6, ADS7843_W ; 8位指令送完

  LDB BL, IOPORT1 ; 将P1口状态保存在BL寄存器中

  ANDB BL, # 0F7H ; 时钟信号DCLK为低

  ORB BL, # 01H ; 将数据出DOUT 置高

  LDB IOPORT1, BL ; 将修改后的状态送至P1口

  /* 准备接受触摸屏按键读14 位数据数据, 先接受低8位数据* /

  LDB R6, # 08H ; 键值设定方向读低8位数据程序

  DATA_OUT: LDB BL, IOPORT1 ; 将P1口状态保存在BL寄存器中

  ORB BL, # 09H ; 时钟信号DCLK 为高, 将数据出DOUT置高

  LDB IOPORT1, BL ; 将修改后的状态送至P1口

  LDB BL, IOPORT1 ; 将P1口状态保存在BL寄存器中

  ANDB BL, # 0F7H ; 时钟信号DCLK为低

  ORB BL, # 01H ; 将数据出DOUT 置高

  LDB IOPORT1, BL ; 将修改后的状态送至P1口

  SHLB AL, # 1 ; 数据左移一位

  JBS IOPORT1, 0, DI_O_1 ; 判数据入DIN 高?

  ANDB AL, # 0FEH ; 数据入DIN低, 输入0

  JMP DATA_OUT1

  DI_O_1: ORB AL, # 01H ; 数据入DIN高, 输入1

  DATA_OUT1: DJNZ R6, DATA_OUT ; 8位数据读完

  STB AL, FIRST ; 低8位数据保存至FIRST单元同样处理接受数据高4位数据

  …… …… ; 4位数据读完, 数据保存。读14 位数据程序完成后返回

  程序上机调试后再没有出现触摸屏与单片机之间指令不执行, 烧坏触摸芯片的问题。也许你会发现, 在程序编程中, 我们使用了BL寄存器作P1口的过渡保护单元, 对输出信号采用了对位的或、与方式达到输出“1”、 “0”电平。保证P1的输入端口不会因其他P1 端口的操作而改变其状态, 在信号线上出现两个输出、争抢信号的现象。这就是触摸屏出问题的主要原因。

  4  结语

  在项目鉴定时, 专家们给出了系统设计新颖、结构合理、功能比较完善, 扩展性强, 有一定的市场空间。特别提到了每个触摸键设计合理、反映正确的结论。

  在本项目结束时还有一个关于按键的遗留问题: 由于是使用单端模式工作, 且CPU 接到请求后, 为了消除抖动、防止误触发, 延时后再响应其请求, 造成了按键反映迟缓, 这是一个硬件、软件都需改进的问题, 硬件需换模拟数据转换芯片,软件上延时可以短一些。



上一页  [1] [2] 


本文关键字:技术  单片机  触摸屏  综合-其它单片机-工控设备 - 综合-其它