飞凌OK6410之触摸屏的学习

来源:互联网 发布:淘宝代销怎么上传宝贝 编辑:程序博客网 时间:2024/06/05 16:22

一、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、  下面的代码都是清除中断,以便响应下一次代码


触摸屏就想单的谈到这里了

原创粉丝点击