一、触摸屏控制器简介
1、TSC2046概貌
2、TSC2046引脚描述
3、TSC2046应用电路
4、常见接线方法
- YU=Y-
- YD=Y+
- XL=X-
- XR=X+
二、TSC2046编程注意事项
TSC2046的PENIRQ脚在触摸屏被按下的时候输出低电平,没有按下的时候输出高电平。需要格外注意的是在MCU给TSC2046发送命令的时候,次引脚也会产生错误的低电压脉冲,0 us<t<100 us。
为了消除这种错误的触发,在发送命令之前先禁止TSC2046的中断线,发送命令后再重新使能中断。
/*
****************************************************************************************************
* 函 数 名: TSC2046_ReadAdc
* 功能说明: 选择一个模拟通道,启动ADC,并返回ADC采样结果
* 形 参:_ucCh = 0x90 表示Y通道; 0xd0 表示X通道
* 返 回 值: 12位ADC值
****************************************************************************************************
*/
uint16_t XPT2046_ReadAdc(uint8_t _ucCh)
{
uint16_t dat; EXTI_IRQ_Cmd( EXTI_Line4,DISABLE); //发送命令时会产生误中断信号,屏蔽中断 XPT2046_WriteCMD(_ucCh);
dat = XPT2046_ReadCMD(); EXTI_ClearITPendingBit(EXTI_Line4); //产生的误中断信号会将中断标志位置1
EXTI_IRQ_Cmd( EXTI_Line4,ENABLE); //重新使能中断 return dat;
}
三、触摸屏操作实例
1、触摸屏x/y方向的确定
刚买来的触摸屏,我们需要进行x/y方向的确定。确定方法:在进入TSC2046触发信号引起的中断服务程序中,通过串口打印出两个通道的电压值。依次获取触摸屏四个角的电压值,最后就可以根据这些电压值确定x/y的方向。
以野火的3.2寸LCD触摸屏为例(注意液晶屏的正方向如下方左图所示):
2、触摸屏矫正
触摸屏矫正的目的是为了获取触摸屏触点电压到LCD触摸屏像素坐标的转换关系。有此参数,就可以根据触摸屏的触点电压找到对应的LCD上的像素点。
试想如何根据上方的两图提供的数据,想出一种简单的矫正算法。最简单的就是:
- 以右上角为起点,左下角为终点,也就是说右上角为(0,0),左下角为(320,240)
- 对x方向进行320等分,对y方向进行240等分
事实上,为了获得较好的结果,矫正算法也是很复杂的,有现成的函数可以调用,笔者没有去研究。
使用者需要格外注意的是:在矫正的时候,LCD的显示方向要与触摸屏的方向一致,否则矫正失败。矫正成功之后,以后就可以根据触电电压结合矫正参数算出LCD上对应的位置。
在使用中,有可能LCD的显示方向与触摸屏的方向不一致,但是只要找到合适的对应关系,就能正确操作。举例:
参考:《TSC2046 芯片手册》