STM32之触摸屏
一、触摸屏控制器简介
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。
It is recommended that the processor mask the interruptPENIRQ is associated with whenever the processor sendsa control byte to the TSC2046. This prevents false triggering of interrupts when the PENIRQ output is disabled in the cases discussed in this section.
摘自:《TSC2046 芯片手册》
为了消除这种错误的触发,在发送命令之前先禁止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的显示方向与触摸屏的方向不一致,但是只要找到合适的对应关系,就能正确操作。举例:
触摸屏:
GRAM扫描方向:右上角-->左下角(横屏)
y(240)
<------------
| |
| |
| |
| |
| | x
| | (320)
| |
| |
| |
| |
| |
| |
------------- VBMP图片显示:
GRAM扫描方向:右下角-->左上角(横屏)
y(240)
------------A
| |
| |
| |
| |
| | x
| | (320)
| |
| |
| |
| |
| |
| |
<------------触摸屏与BMP图片显示的坐标转换关系:Y-Mirror
X触 = 320 - XBMP
Y触 = XBMP
参考:《TSC2046 芯片手册》
STM32之触摸屏的更多相关文章
- LVGL库入门教程01-移植到STM32(触摸屏)
LVGL库移植STM32 LVGL库简介 LVGL(Light and Versatile Graphics Library)是一个免费.开源的嵌入式图形库,可以创建丰富.美观的界面,具有许多可以自定 ...
- stm32 触摸屏 XPT2046
引脚功能描述 控制字的控制位命令 控制字节各位描述 单端模式输入配置 差分模式输入配置 时序 前8个时钟用来通过DIN引脚输入控制字节,接着的12个时钟周期将完成真正的模数转换,剩下的3个多时钟周期将 ...
- [stm32][ucos][ucgui] 2、LED闪烁、串口、滑块、文本编辑框简单例程
上一篇:[stm32][ucos] 1.基于ucos操作系统的LED闪烁.串口通信简单例程 * 内容简述: 本例程操作系统采用ucos2.86a版本, 建立了7个任务 任务名 ...
- FreeModbus 移植于STM32 实现Modbus RTU通信
http://ntn314.blog.163.com/blog/static/161743584201233084434579/ 毕业设计自己要做个基于STM32的PLC能直接跑语句表的,现在看来好像 ...
- STM32采集电阻触摸贴膜
今天为了解决一个测量电阻屏压力的问题,自己直接用STM32做了一个测量电阻屏的程序(直接把触摸屏的四根线接到单片机引脚上),通过AD切换采集,采集X轴电压,Y轴电压,和压力..最后附上自己的程序 先说 ...
- stm32学习基本知识点
1.AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备 2.Stm32f10x.h相当于reg52.h(里面有基本的位操作定义),另一个为st ...
- STM32的GUI库使用
1. 实验平台使用百为的STM32F103开发板 2. 例程目录\百为stm32开发板光盘\stm32_gui_lib\Project\Embedded_GUI_Example\EWARM 3. 直接 ...
- 第29章 电容触摸屏—触摸画板—零死角玩转STM32-F429系列
第29章 电容触摸屏—触摸画板 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...
- stm32与三菱PLC通信
一.三菱PLC通讯概要 三菱PLC FX系列通信结构如下图所示: 三菱PLC FX系列的通信规格如下图所示: 三菱PLC FX系列一般有以下几种通信模块,以FX2N为例: FX2N-232-BD ...
随机推荐
- global 用法
<?php//$GLOBALS['he']="hechunhuae";function Test(){ //global $he; $GLOBALS['he']=" ...
- Memcached source code analysis -- Analysis of change of state--reference
This article mainly introduces the process of Memcached, libevent structure of the main thread and w ...
- Java基础知识强化之IO流笔记66:Properties的概述 和 使用(作为Map集合使用)
1. Properties的概述 Properties:属性集合类.是一个可以和IO流相结合使用的集合类. 该类主要用于读取以项目的配置文件(以.properties结尾的文件 和 xml文件). ...
- 修改整个app的字体
在项目开发中 有时候为了一些好的UI效果 可能需要自定义字体 app导入字体库的教程网上有很多 导进去 修改plist文件 然后如何将整个app的字体都换成自定义的字体呢 一个个去写太麻烦了 ...
- 2014年6月5日 深圳 IBM 安全解决方案会议通知
2014年6月5日 深圳 IBM 安全解决方案会议通知 http://gdtesting.com/news.php?id=191 时间: 2014年6月5日 地点: 深圳大中华喜来登 议程: IBM安 ...
- Windows2012中安装Nginx并创建为Windows服务
安装Nginx 下载windows版nginx (http://nginx.org/download/nginx-1.10.0.zip),之后解压到需要放置的位置(D:\xampp\nginx) 将N ...
- 【Slickflow学习】.NET开源工作流项目转换(二)
第一次自己写博客文章,大家多多指教.写博客主要记录一下学习的过程,给初学者提供下参考,也留给自己做备忘. Slickflow .NET开源工作流-项目转换 上一篇文章里说了1.2版本的下载,下载解压后 ...
- 一些实用的js高级技巧
技巧一之setTimeout. 应用案例:比如你想一个函数循环执行10次,怎么办?以前通常是先setInterval,然后clearInterval,技巧一就是克服这个问题 (function () ...
- ajax发送请求
首先创建XMLHttpRequest对象,利用此对象发送请求 主页面 <!doctype html> <html lang="en"> <head&g ...
- 标签的innerHTML属性和html()
在新公司开发编码的时候,经常写js代码:有时候就需要往某个标签里添加一些html脚本或者要拿到某个标签里的html脚本,那么就会用到innerHTML和html. 1.innerHTML属性 w3sc ...