触摸屏的使用
触摸屏工作原理
触摸屏的分类
触摸屏作为一种输入设备,是目前最简单、方便的一种人机交互方式,具有坚固耐用、反应速度快、节省空间、易于交流等许多优点。
从技术原理来区别触摸屏,可分为5类:
1.电阻式触摸屏
2.电容式触摸屏
3.红外线技术触摸屏
4.表面声波技术触摸屏
5.矢量压力传感技术触摸屏
电阻屏工作原理
当手指触摸屏幕时,两个相互绝缘的导电层在触摸点处连接,顶层的5伏电压就会加到底层触摸点处,底层该点的电压会发生改变。
控制器检测到该点的变化后,将该点的电压进行A/D转换,得到的值与5伏相比,再乘以该轴总长度即可得触摸点靠地那一端的坐标。
电容屏原理
相比于电阻屏,电容屏的优点是感应灵敏,支持多点触摸,更适合现代电子产品的需求。
给工作面通上一个很低的电压,当用户触摸屏幕时,手指头吸收走一个很小的电流,这个电流分从触摸屏四个角上的电极中流出,并且理论上流经这四个电极的电流与手指到四角的距离成比例,控制器通过对这四个电流比例的精密计算,得出触摸点的位置。
电阻屏代码编写
int xdata,ydata;#define ADCCON (*(volatile unsigned *)0x58000000) //ADC control
#define ADCTSC (*(volatile unsigned *)0x58000004) //ADC touch screen control
#define ADCDLY (*(volatile unsigned *)0x58000008) //ADC start or Interval Delay
#define ADCDAT0 (*(volatile unsigned *)0x5800000c) //ADC conversion data 0
#define ADCDAT1 (*(volatile unsigned *)0x58000010) //ADC conversion data 1/*interrupt registes*/
#define SRCPND (*(volatile unsigned long *)0x4A000000)
#define INTMSK (*(volatile unsigned long *)0x4A000008)
#define INTOFFSET (*(volatile unsigned long *)0x4A000014)
#define SUBSRCPND (*(volatile unsigned long *)0x4A000018)
#define INTSUBMSK (*(volatile unsigned long *)0x4A00001c)
#define INTPND (*(volatile unsigned long *)0x4A000010)void ts_init()
{//1. 设置AD转换时钟ADCCON = (1<<14) | (49<<6);//2. 设置中断屏蔽位INTMSK = ~(1<<31);INTSUBMSK = ~(1<<9);//3. 进入等待中断的模式ADCTSC = 0xd3;
}void tc_handler()
{ //1. 启动xy坐标自动转换 ADCTSC = (1<<2);ADCCON |= (1<<0);//2. 等待转换完成while (!(ADCCON & (1<<15)))//3. 获取坐标xdata = ADCDAT0 & 0x3ff;ydata = ADCDAT1 & 0x3ff;//4. 清除按下中断SUBSRCPND |= (1<<9);SRCPND = (1<<31);INTPND = (1<<31); //5. 进入等待弹起中断ADCTSC = 0xd3;ADCTSC |= (1<<8);while(1){if(SUBSRCPND &(1<<9)) break;}//6. 清除弹起中断SUBSRCPND |= (1<<9);SRCPND = (1<<31);INTPND = (1<<31); printf("x is %d,y is %d\n",xdata,ydata);//7. 再次进入等待按下中断的状态ADCTSC = 0xd3;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
