四、系统的程序设计
1.系统总流程图
系统硬件可以分为输入、控制、输出部分,其中控制部分是连接输入、输出。单片机程序决定输入如何影响输出,输出如何响应输入,其具体框图如图6 所示。单片机对ADS7843 进行读取后对数据进行坐标变换,最后把处理的值输出驱动LED.
图6 系统软件流程图。
2.触摸屏坐标读取
所谓的触摸点坐标是指当触摸屏被按下时触摸芯片读出的X 轴与Y 轴的数值。触摸坐标的读取时非常关键的,它是触摸屏使用过程中最重要的环节,若触摸点坐标有误,将导致单片机错误处理。首先使能ADS7843,然后向ADS7843 写入测量X 坐标的控制字,延时若干毫秒后,读取ADS7843 的转换数据。读取的数据即X 的坐标值;再把测量Y 坐标控制字写入ADS7843,延时若干毫秒后,读取ADS7843 的转换数据,就得到了Y 坐标的值,然后禁止ADS7843.这样既完成了一次读取坐标值的过程。其具体流程如图7所示。
图7 ADS7843读取框图
3.系统坐标校准处理
由于任意两个触摸屏上的点密度都不可能完全一致,所以要求在使用触摸屏之前,必须进行校准。校准方式有两点校准,三点校准,四点校准等。其中,校准的点数越多,触摸屏数据越精确,校准也越繁琐。本系统使用两点校准的方法对触摸屏进行校准。
(1) 先分别测试触摸屏左下角及右上角的坐标(ads7843_xmin,ads7843_ymin);(ads7843_xmax,ads7843_ymax);
(2) 计算水平方向的比率(ads7843_xts)和垂直方向的比率(ads7843_yts);
(3)假设液晶屏中的当前点是液晶屏坐标(X,Y):
当前点的触摸屏的X 坐标=X× ads7843_xts+ ads7843_xmin ;
当前点的触摸屏的Y 坐标=Y× ads7843_yts+ ads7843_ymin ;
系统执行校准程序后把触摸屏左下角, 右下角的坐标值与水平方向的比率存放如单片机EEPROM 中,每当系统重新启动时调用对应的数值有于对触摸位置的判别。
4.控制器SPI通讯
控制器ATmega48内部集成SPI通讯所需的软硬件功能,主机和从机之间的SPI 连接如图8所示。系统包括两个移位寄存器和一个主机时钟发生器,通过将从机的 SS引脚拉低,主机启动一次通讯过程。主机和从机将需要发送的数据放入相应的移位寄存器。主机在SCK引脚上产生时钟脉冲以交换数据。主机的数据从主机的MOSI移出,从从机的MOSI移入;从机的数据从从机的MISO移出,从主机的MISO移入。主机通过将从机的SS拉高实现与从机的同步。
图8 控制器SPI通讯框图
A D S 7 8 4 3 读写时序如图9 所示。由此可见ADS7843 SPI接口的一次完整操作需要3×8=24个DCLK时钟周期,前8个脉冲接收8位的命令,并在第6个脉冲的上升沿开始A/D转换器进入采样阶段,从第9个脉冲开始进入转换阶段,输出12位采样值,转换结束进入空闲阶段。直到24个DCLK结束,CS置高电平,一次测量结束。