您的位置:首页 > 其它

飞凌OK6410之触摸屏的学习

2013-03-08 21:38 274 查看
一、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、  下面的代码都是清除中断,以便响应下一次代码



触摸屏就想单的谈到这里了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ok6410 触摸屏 裸机