触摸屏程序设计总结:
触摸屏工作流程以及程序设计流程:
一、触摸屏初始化:
1、设置触摸屏接口为中断等待模式(ADCTSC寄存器),等待触摸笔按下
2、清除源挂起寄存器(SRCPND)、中断挂起寄存器(INTPND)、子源挂起寄存器
(SUBSRCPND)
3、程序入口函数,关中断屏蔽寄存器和子中断屏蔽寄存器(INTMSK,INTSUBMSK),中断
模式和中断优先级默认即可
二、触摸屏中断服务子程序:
一)触摸笔按下中断
4、如果中断发生,设置x,y坐标为自动转换模式
5、启动AD转换,然后检测AD转换是否启动
6、检测AD转换是否结束,若结束,获取x,y坐标的值
7、对几个寄存器写1清零,防止反复发生中断(这里的中断是笔尖按下中断)
二)触摸笔抬起中断
8、设置触摸屏即可为等待中断模式,等待触摸笔抬起(ADCTSC,关键是要设置触摸
笔抬起中断信号)
9、如果发生中断,不做任何操作,只打印出一句触摸笔抬起中断信息
10、触摸笔抬起之后,把得到的x,y坐标值发送给PC机,显示出具体数值
三)再次设置触摸屏为等待中断模式,等待下次触摸屏被按下
源程序:
//Main.c
/*************************************************
实验环境:mini2440开发板
完成时间:2011,4,14
作者:阿龍
实现功能:对触摸屏进行设置,通过串口把触摸屏上被按下的位置,用数值显示出来
遇到的问题:这里一定要对MMU_Init()进行初始化,不然程序会出在超级终端上显示错误。
**************************************************/
#define GLOBAL_CLK 1
#include <stdlib.h>
#include <string.h>
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
#include "profile.h"
#include "memtest.h"
void ADC_init(void);
void TC_init(void);
void delay(int times);
void Set_Clk(void);
static void cal_cpu_bus_clk(void);
static void __irq TChandler(void);
int value_x=0;
int value_y=0;