图2中。TX+、TX-、TY+、TY-为位置输入端,分别对应四线制电阻式触摸屏的四线制接口:
BUSY为忙信号指示,可在数据转换时持续一个时钟周期的高电平状态,当TCS为高时,BUSY为高阻状态:
TCS为片选输入,只有当TCS为低时,串行数据才可以从DIN读入;
DIN为串行数据输入,在DCLK的上升沿读入数据;
DOUT为串行数据输出,用于输出转换后的触摸点位置数据,12位工作方式下,其最大为4095,可在DCLK的下降沿输出数据,当TCS为高时,DOUT为高阻状态;
DCLK为外部时钟输人引脚,其输入时钟信号的频率决定了电路的转换速度,其推荐占空比为40%~60%;
PENIRQ为笔中断引脚。工作时应通过10~100 kΩ电阻器上拉,当有触摸事件发生时,可向微控制器申请中断服务;
VREF为A/D参考电压输入;
TCS、DCLK、 DIN、 BUSY、DOUT、PENIRQ分别接C8051F021的P1.0、P1.1、P1.2、P1.3、P1.4、PO.3。另外,IN3、IN4为两个附属A/D输入通道,本系统没有用到,使用时可将其接地。
3 系统软件的设计与实现
ADS7846可通过片内模拟多路开关的切换,将X+/Y+端接VCC,将X-/Y-端接地,并将X+/Y+和X-/Y-以差分形式接到A/D转换器的输入端。这样,当点击触摸屏的不同位置时,输入到A/D转换器中的电压就不相同,然后再经A/D转换后,就可得到触点的输出值,该输出值与触点的位置成近似线性关系。ADS7846通过一般控制字来设置工作方式,其控制字如表1所列。
在表1中,S为数据传输起始标志位,该位必为“1”;A2~A0用于通道选择;MODE用来选择A/D转换精度: “1”选择8位, “0”选择12位;SER/DFR选择参考电压的输入模式;PD1、PD0选择省电模式: “00”为省电模式,可在两次A/D转换之间掉电,且允许中断,而“01”同“00”相似,但不允许中断; “10”为保留; “11”为禁止省电模式。
ADS7846与C8051F021之间通过标准的SPI接口相连。并由C8051F021启动3次SPI传送来完成转换。第1次SPI传送由C8051F021向ADS7846发送控制字,含起始位、通道选择、8/12位模式选择、差分/单端选择和掉电模式选择;后两次SPI传送则是C8051F021读取A/D转换后的结果数据,至此便完成了ADS7846和C8051F021之间的一次通信。其数据传送时序如图3所示。