基于EasyARM1138的城市公交路线智能查询机 第8页//在指定位置画一水平线
// x1 列起始坐标 x2 列结束坐标 y 行坐标 usValue 线的颜色值
void lineDrawH(unsigned short x1, unsigned short x2, unsigned short y, unsigned short usValue)
{
unsigned short usTmp;
if (x1 > x2) {
usTmp = x1;
x1 = x2;
x2 = usTmp;
}
if (x1 > 239) {x1 = 239;}
if (x2 > 239) {x2 = 239;}
//窗口设置
windowset(0, y, 239, y);
// 设置增长方向为:左 --> 右,上 --> 下
__writeCommand(0,0x00,0x04); /* 扫描方向控制 */
__writeCommand(0,0x01,0x07); /* 扫描方向控制 */
setCoordinate(x1, y); /* 设置起始坐标 */
while (x1++ <= x2) {
__writeData16(usValue); /* 画一个点的像素值 */
}
}
//在指定位置画一竖线
// x 列坐标 y1 行起始坐标 y2 行结束坐标 usValue 线的颜色值
void lineDrawV(unsigned short x, unsigned short y1, unsigned short y2, unsigned short usValue)
{
unsigned short usTmp;
if (y1 > y2) {
usTmp = y1;
y1 = y2;
y2 = usTmp;
}
if (y1 > 319) {y1 = 319;}
if (y2 > 319) {y2 = 319;}
//窗口设置
windowset(x, 0, x, 319);
// 设置增长方向为:左 --> 右,上 --> 下
__writeCommand(0,0x00,0x04); /* 扫描方向控制 */
__writeCommand(0,0x01,0x07); /* 扫描方向控制 */
setCoordinate(x, y1); /* 设置起始坐标 */
while (y1++ <= y2) {
__writeData16(usValue); /* 画一个点的像素值 */
}
}
4.3 控制模块的设计与实现
4.3.1 触摸屏工作原理
ADS7843是一款连续近似记录(SAR)的A/D转换器。可通过连结触摸屏X+将触摸信号输入到A/D转换器,同时打开Y+和Y- 驱动,然后数字化X+的电压,从而得到当前Y位置的测量结果。同理也可得到X方向的坐标。具体设置和使用方法可查阅TI公司的ADS7843数据手册,下面主要介绍ADS7843的模式设置、PEN 中断引脚的使用。
●模式设置
ADS7843有差分(DIFFERENTIAL)和单端(SIN-GLE-ENDED MODE)两种工作模式。这两种模式对转换后的精度和可靠性有一些影响。如果将A/D转换器配置为读绝对电压(单端模式)方式,那么驱动(DRIVER)电压的下降将导致转换输入数据的错误。而如果配置为差分模式,则可以避免上述错误。当触摸屏被按下时,有两种情况可影响接触点的电压:一种是当触摸到显示屏时,会导致触摸屏外层振动;另一种是触摸屏顶层和低层之间的寄生电容引起的电流振荡以及在ADS7843 输入引脚上引起的电压振荡。这两种情况都可导致触摸屏上的电压发生振荡以及增加DC值稳定的时间。在单端模式中,一旦在触摸屏上检测到一次触摸事件,电路系统将发送一串控制字节给ADS7843,并要求它进行一次转换。然后ADS7843将在获取周期的起始点通过内部FET开关给面板提供电压,而这将导致触摸点电压的升高。正如上面所介绍的,上升的电压在最终稳定之前会振荡一段时间。当获取周期结束后,所有的FET开关关闭,A/D转换器进入转换周期。如果在转换周期期间,没有发出下一个控制字节,ADS7843 将进入低功耗模式并等待下一条指令。由于面板上分布有大量电容,特别是滤波噪音,因此,应该注意设置好对应于X坐标或Y坐标上的电压。在单端模式中,输入电压必须在Data In word的最后三个时钟周期期间设置,否则将产生错误。
除了内部FET开关从获取周期开始到转换周期结束期间一直保持打开状态以外,差分模式的操作类似于单端模式。加在面板上的电压将成为A/D转换器的基准电压,提供一个度量比操作。这意味着如果加在面板上的电压发生变化(由于电源、驱动电阻、温度或触摸屏电阻等原因),A/D转换器的度量比操作将对这种变化进行补偿。如果在当前转换周期发向ADS7843的下一个控制字节所选择的通道与前一个控制字节相同,那么在当前转换完成后开关仍然不会关闭。
在这两种模式中,ADS7843只有3个时钟周期可以从触摸屏上获取(取样)输入模拟电压,因此,为了ADS7843 可以获取正确的电压,输入电压必须在/ 个时钟周期的时间范围内设置好。打开驱动将引起触摸屏的电压快速升高到最终值。为了得到正确的转换数据,获取必须在触摸屏完全设置好时完成。获取的方式有两种:一种是采用单端模式,即采用相对较慢的时钟扩展获取时间(三个时钟周期);二是采用差分模式,即用相对较快的时钟在第一个转换周期内设置电压,在第二个转换周期获取准确电压。该方式的两个控制字节相同,且内部X/Y 开关在首次转换后不会关闭。由于首次转换期间电压还不稳定,因此应当丢弃首次转换的结果。使用第二种方式的另一个优点是功耗低。因为在全部转换后,ADS7843 会进入低功耗模式来等待下一次取样周期;对于慢时钟,下一次取样可能在当前转换结束后立即进入取样周期,而没有时间进入低功耗模式。实际在单端模式下不能使用快速时钟。差分模式还具有以下两个优点:第一个优点是能够在不扩展转换器获取时间的条件下用很长的设置时间处理触摸屏,即触摸屏电压可以有足够的时间稳定下来。第二个优点是ADS7843通过快速时钟可以进入低功耗模式,从而可以节约电池能量。因此,通常建议使用差分模式。
●PEN中断引脚的使用
PEN中断引脚的主要作用是让设计者可以完全控制ADS7843 的低功耗操作模式。图" 所示是其模式操作连接示意图。图中,I/O1和I/O2 是引自EP7212的通用目的输入/输出口。当电源加入系统且转换器被设置(PD1,PD0=00)之后,器件进入低功耗模式。而当未触摸面板时,ADS7843内部的二极管没有偏压,因此没有电流流过(忽略漏流);当触摸面板时,Y-将提供一条电流(I)通路,这时X+、X-和Y+处于高阻状态,电流经过1OO千欧电阻和中断二极管,PENIRQ被拉低,从而通过I/O2上一个不超过,0.65V的电压唤醒CPU,然后EP7212再拉低I/01和I/O2上的电位,同时对ADS7843控制寄存器写一个字节以进行转换初始化。为了转换PENIRQ二极管上的偏置电压,EO7212必须拉低I/O1和I/O2 上的电压。否则,如果在转换期间二极管上有一个前向偏压,那么附加的电流将引起错误的输入数据。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>
基于EasyARM1138的城市公交路线智能查询机 第8页下载如图片无法显示或论文不完整,请联系qq752018766