一、LCD的显示介绍完了之后,在这个基础上就需要了解触摸屏的相关知识了,同样的,使用触摸屏的话就需要进行初始化了,上次已经说过了,在芯片手册上面可以看到这个
这个四个引脚是控制触摸屏的,接下来我呢就根据s3c6410的手册来分析一段代码:
主函数相当简单:
LCD初始化已经明白了,接下来就是对触摸屏进行初始化了
1、 假设当触摸道屏幕的时候发生的是外部中断VIC1的第三十个中断,则首先需要设置中断
2、 接收到中断后,就会进行AD转换,将我们的模拟量转换为数字量,这里得有个延时,那么这个预设的延迟时间是多少呢?下面代码给出了答案
3、 初始化中肯定要清楚某些中断寄存器的,这里包括触摸屏ADC寄存器和触摸屏唤醒中断寄存器
4、 接下来就是ADC控制寄存器的配置了,具体看代码,有很详细的解说的
到这里触摸屏的一些初始化就算是完成了。
二、进行第二步
加入发生中断的话,通过中断控制寄存器VICxADDRESS就会接受到信息,紧接着他可以判断出是VIC1组出现中断,然后进入中断处理函数中断处理函数,才能继续判断是到底是触笔按下中断还是触笔松开中断
1、 如果是触笔按下中断的话,首先就需要调整寄存器ADCTSC的值
因为我们需要手动测量X、Y的坐标所以就有下面的代码
2、通过函数我们可以获得相应的x/y的坐标值
GetCoordinate()具体实现方法,我们可以用如下代码表示
//获取坐标函数
void GetCoordinate(void)
{
inttemp;
temp=xValue;
//边界判定
if(xValue<185)
temp=185;
elseif(xValue>850)
temp=850;
xPos=(850-temp)*479/(850-185);
temp=yValue;
if(yValue<300)
temp=300;
elseif(yValue>700)
temp=700;
yPos=(700-temp)*271/(700-300);
}
3、 拿到了对应的坐标,那就容易实现了,只要简单的运用之前的划线的函数,就能实现触屏功能了
4、 别忘记了,这只是一次中断,为了等待下次的中断,我们还需要清除中断的
5、 下面的代码都是清除中断,以便响应下一次代码
触摸屏就想单的谈到这里了
转载:http://blog.csdn.net/jxnu_xiaobing/article/details/8652289