AN1510C ATK-7’TFTLCD 电容触摸屏模块使用说明
本应用文档(AN1510C,对应 MiniSTM32 开发板扩展实验 13)将教大家如何在 ALIENTEK
Mini STM32 开发板上使用 ATK-7’ TFTLCD 电容触摸屏模块(本文档仅针对 V1 版本的 7 寸屏
模块,即:CPLD+FT5206 方案;非 V2 版本的 7 寸屏模块,V2 版本采用的是:SSD1963+FT5206
方案)。
本文档分为如下几部分:
1, ATK-7’ TFTLCD 电容触摸屏模块简介
2, 硬件连接
3, 软件实现
4, 验证
1、ATK-7’ TFTLCD 电容触摸屏模块简介
ATK-7’ TFTLCD 电容触摸屏模块,是 ALIENTEK 生产的一款高性能 7 寸电容触摸屏模块,
该模块屏幕分辨率为 800*480,16 位真彩显示,模块自带 LCD 控制器,拥有多达 8MB 的显
存,能提供 8 页的显存,并支持任意点颜色读取。模块采用电容触摸屏,支持 5 点同时触摸,
具有非常好的操控效果。同时,模块还提供了镜像翻转、背光控制等功能,方便用户使用。
ATK-7’ TFTLCD 模块采用单 5V 供电,工作电流为 130mA~350mA,功耗很低,非常适合
各类型产品使用。
1.1 模块引脚说明
ATK-7’ TFTLCD 电容触摸屏模块通过 2*17 的排针(2.54mm 间距)同外部连接,模块可
以与 ALIENTEK 的 STM32 开发板直接对接,我们提供相应的例程,用户可以在 ALIENTEK STM32
开 发 板 上 直 接 测 试 。 ATK-7’ TFTLCD 电 容 触 摸 屏 模 块 外 观 如 图 1.1.1 所 示 :
图 1.1.1-1 ATK-7’ TFTLCD 电容触摸屏模块正面图
图 1.1.1-2 ATK-7’ TFTLCD 电容触摸屏模块背面图
模块通过 34(2*17)个引脚同外部连接,各引脚的详细描述如表 1.1.1 所示:
序号
说明
名称
NCE
RS
WR
RD
RST
LCD 控制器片选信号(低电平有效)
命令/数据控制信号(0,命令;1,数据;)
写使能信号(低电平有效)
读使能信号(低电平有效)
复位信号(低电平有效)
1
2
3
4
5
6~21
22,26,27
23~25
28
29
30
31
32
33
34
D0~D15 双向数据总线
GND
NC
VCC
MISO
MOSI
PEN
BUSY
CS
CLK
地线
未用到
5V 电源输入引脚
NC,电容触摸屏未用到
电容触摸屏 IIC_SDA 信号(CT_SDA)
电容触摸屏中断信号(CT_INT)
NC,电容触摸屏未用到
电容触摸屏复位信号(CT_RST)
电容触摸屏 IIC_SCL 信号(CT_SCL)
表 1.1.1 ATK-7’ TFTLCD 模块引脚说明
从上表可以看出,LCD 控制器总共需要 21 个 IO 口驱动,电容触摸屏需要 4 个 IO 口驱
动,这样整个模块需要 25 个 IO 口驱动。
1.2 LCD 控制器接口时序
ATK-7’ TFTLCD 模块自带的 LCD 控制器采用 16 位 8080 总线接口,总线写时序如图 1.2.1
所示:
图 1.2.1 总线写时序
图中,当 RS 为 0 的时候,表示写入的是寄存器地址(0~7),RS 为 1 的时候,表示写入
的是数据(寄存器值/GRAM 数据)。
总线读时序如图 1.2.2 所示:
图 1.2.2 总线读时序
ATK-7’ TFTLCD 模块自带的 LCD 控制器可读的寄存器只有 2 个,当 RS 为 0 的时候,表示
读取的是状态寄存器(STATE),当 RS 为 1 的时候,表示读取的是像素数据(DATA),读期间的
地址寄存器(ADDR)将被忽略。
1.3 LCD 控制器寄存器说明
ATK-7’ TFTLCD 模块自带的 LCD 控制器各个寄存器的地址和功能简介如表 1.3.1 所示:
复位值
0x0000
功能简介
16
—
—
16
RS 操作 位宽 地址 名称
0 写
0 读
1 读
1 写
1 写
1 写
1 写
0x00
0x01
0x02
16
16
16
16
16
—
0x03
END_X
ADDR 设置地址寄存器的值
STATE 读状态寄存器
DATA 读像素数据
CUR_Y 设置屏幕的 Y 坐标
CUR_X 设置屏幕的 X 坐标
PIXELS 写入像素数据
1 写
1 写
16
16
0x04 保留
0x05
PREF 设置当前显示页、当前操作页,
设置 X 方向自动返回的坐标,以及页
拷贝时 X 方向的结束坐标
背光等
0x0000
0x0000
0x0000
0x0000
0x0000
0x031f
0x0000
1 写
1 写
8
8
0x06 保留
0x07 MIRROR 控制镜像翻转
0x0001
表 1.3.1 ATK-7’ TFTLCD 模块自带 LCD 驱动器寄存器地址和功能简介
1.3.1 CUR_X 寄存器(0x01)和 CUR_Y 寄存器(0x00)
寄存器 CUR_X 和 CUR_Y 用于设置待操作像素点的坐标,TFTLCD 屏幕上坐标的排列如图
1.3.1.1 所示:
图 1.3.1.1 坐标排列
当 CUR_Y 和 CUR_X 的值确定后,像素点 A 的位置便被唯一的确定了,随后的写入的像
素数据会被准确的放置在 A 点。
1.3.2 PIXELS 寄存器(0x02)
寄存器 PIXELS 对应着 16 位的颜色数据,如果当前显示页与当前操作页相同,那么写入
PIXELS 的数据会被立即呈现在由 CUR_X 和 CUR_Y 选中的当前激活点上,如果当前显示页与
当前操作页不相同,那么写入 PIXELS 的数据不会被立即呈现出来。
ATK-7’ TFTLCD 模块的颜色格式为 RGB565,具体的颜色与每个位对应关系如表 1.3.2.1 所
示:
b15
b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4
b3 b2 b1 b0
R4
R3
R2
R1
R0
G5 G4 G3 G2 G1 G0 B4
图 1.3.2.1 颜色与位对应关系
B3 B2 B1 B0
1.3.3 END_X 寄存器(0x03)
为了提高像素数据连续读写的效率,当设置好 CUR_X 和 CUR_Y 后,每读取/写入一个像
素,当前激活点的 X 坐标就会自动加一,当激活点的 X 坐标等于 END_X 后,便会自动返回
CUR_X 同时 Y 坐标自动加一。如图 1.3.3.1 所示:
图 1.3.3.1 X 坐标自动返回示意图
以写数据为例,假设 CUR_X、CUR_Y、END_X 分别为 400、200、500,A 点、B 点、C 点、
D 点的坐标分别为(400,200)、(500,200)、(400,201)、(500,201)。设置好 CUR_X、
CUR_Y 后,第一个像素写到了 A 点,第 100 个像素写到 B 点,第 101 个像素写到 C 点,第
200 个像素写到 D 点,依此类推。
借助 END_X 寄存器,可以简化 MCU 批量数据读写的流程,假设 MCU 需要以(100,200)
为起始坐标写入一个 10×20 的矩形,那么只需要将 CUR_X 设为 100,CUR_Y 设为 200,END_X
设为 210,然后进行 200 次的像素点读/写操作即可,期间不需要再进行坐标设置操作,所
有的坐标都会被自动推算。
1.3.4 PREF 寄存器(0x05)
PREF 寄存器用于设置当前显示页、当前操作页和 TFT 背光,各个位的具体含义如表
1.3.4.1 所示:
位
b5~b0
b8~b6
b11~b9
b14~b12
b15
名称
功能简介
复位值
BK_PWM
背光控制
保留
——
CUR_PAGE 当前显示的页
OPT_PAGE 当前操作的页
保留
——
0
0
0
0
0
表 1.3.4.1 HREF 寄存器各位定义
其中,BK_PWM 用于设置背光信号的占空比,从而调节 TFT 背光的亮度,取值范围为
0~63,0 代表背光关闭,63 代表背光最亮。上电复位后 BK_PWM 的值默认为 0,也就是背
光关闭,在 MCU 对 BK_PWM 赋以非零值后,背光才能点亮。
当前显示页由 CUR_PAGE 指定,表示屏幕上实际显示的显存分页,当前操作页由
OPT_PAGE 指定,表示当前读写操作的显存分页。如果 CUR_PAGE 与 OPT_PAGE 指向同
一显存分页,那么写显存操作的结果会被立即呈现在屏幕上,如果 CUR_PAGE 与 OPT_PAGE
指向不同的显存分页,那么对 OPT_PAGE 的任何操作都不会影响屏幕上的显示内容,只有
在 CUR_PAGE 切换到 OPT_PAGE 后,OPT_PAGE 中数据才会被显示出来。
1.3.5 MIRROR 寄存器(0X07)
MIRROR 寄存器用于实现图像的水平和垂直镜像翻转,该寄存器各位的具体含义如表
1.3.5.1 所示。
位
b15~b2
b1
b0
名称
保留
UD
LR
功能简介
复位值
——
控制垂直镜像翻转
控制水平镜像翻转
表 1.3.5.1 MIRROR 寄存器各位定义
0
0
1
UD 位用于控制显示画面的垂直翻转,LR 位用于控制显示画面的水平翻转,操作 UD
位和 LR 位会影响 TFT 上的像素点位置与显存中数据地址的映射关系,但不会改变显存中
的数据,不同的 UD 和 LR 值所对应的显示效果如图 1.3.5.1 所示。
图 1.3.5.1 显示效果示意图
1.3.6 STATE/ DATA 寄存器
这两个寄存器相互配合,用于完成像素数据的读操作。STATE 寄存器的位定义如表
1.3.6.1 所示,读取该寄存器会自动启动像素点的读操作,当 MCU 查询到 STATE 的 DATA_OK
位(b0 位)为 1 后,表示像素数据有效,然后 MCU 读 DATA 寄存器即可获得对应点的像
素数据,与写像素数据的操作相同,读像素数据的像素点位置也是由当前的 CUR_X 和
CUR_Y 定义的。当 MCU 读取 DATA 寄存器后,DATA_OK 位会被自动清零。需要注意的
是,读 STATE 寄器时,b15~b1 位是随机值,因此在判断 DATA_OK 时,需要屏蔽掉这些位。
位
b15~b1
b0
名称
保留
功能简介
DATA_OK
数据有标志
表 1.3.6.1 STATE 寄存器各位定义
复位值
0
0
1.4 LCD 控制器使用说明
经过前面的介绍,我们对 ATK-7’ TFTLCD 模块自带的 LCD 控制器有了个大概的了解,接
下来,我们介绍一下该驱动器的具体使用方法。
1.4.1 初始化
ATK-7’ TFTLCD 模块自带的 LCD 控制器初始化非常简单,分为如下 3 个步骤:
1, 复位。
通过拉低模块 RST 脚,实现对 LCD 控制器的复位,延时 100ms 左右,再拉高 RST
脚,完成对 LCD 的复位。
2, 等待控制器准备好。
在复位后,我们通过直接读 LCD 控制的数据,直到读到的数据最低位变为 1,说明
LCD 驱动器准备好了,可以开始后续的的操作。
3, 设置显示相关寄存器。
这里,我们要设置的包括:MIRROR 寄存器、PREF 寄存器、ENDX 寄存器等三个寄
存器。通过 MIRROR 寄存器设置屏幕的显示方向,这里我们默认设置为 0X01。然后,
通过 PREF 寄存器设置当前操作页、当前显示页以及背光控制等参数,这里我们默认设
置操作页和显示页均为第 0 页。然后设置背光为 63,设置背光到最亮。最后,通过 ENDX
寄存器设置 X 坐标的结束位置,由于 ATK-7’ TFTLCD 模块使用的 LCD 分辨率为 800*480,
所以默认设置 ENDX 的值为 799,满足全屏显示的需要。
经过以上三步设置,LCD 驱动器的初始化就完成了。
1.4.2 画点
LCD 驱动最重要的就是画点了,这里我们简单介绍一下 ATK-7’ TFTLCD 模块的画点实现。
用模块自带的 LCD 驱动器实现画点也是非常简单,我们只需通过操作三个寄存器,即可实
现任意点的画点。
首先,将我们要画的点的坐标写入 CUR_X 和 CUR_Y 这两个寄存器。然后,我们在 PIXELS
寄存器里面写入该点的颜色值,即完成画点操作了。如果设置操作页和显示页相同的话,我
们就可以立马在 LCD 上看到这个画出来的点。
1.4.3 读点
LCD 驱动另一个重要的功能就是读取点的颜色,方便做其他处理。ATK-7’ TFTLCD 模块自
带的 LCD 驱动器可以实现任意点的读取,方法类似画点操作,不过稍有区别。
首先,我们同样是通过 CUR_X 和 CUR_Y 两个寄存器,设置要读取点的坐标。然后,我
们读 STATE 寄存器(RS=0),等待 STATE 寄存器的最低位变为 1,之后,我们读取 DATA 寄存
器(RS=1),就可以读到指定点的颜色。 这样我们就实现一个点颜色的读取。
1.5 电容触摸屏接口说明
1.5.1 电容式触摸屏简介
现在几乎所有智能手机,包括平板电脑都是采用电容屏作为触摸屏,电容屏是利用人体
感应进行触点检测控制,不需要直接接触或只需要轻微接触,通过检测感应电流来定位触摸
坐标。
ATK-7’ TFTLCD V1 模块自带的触摸屏采用的是电容式触摸屏,下面简单介绍下电容式触
摸屏的原理。
电容式触摸屏主要分为两种:
1、 表面电容式电容触摸屏。
表面电容式触摸屏技术是利用 ITO(铟锡氧化物,是一种透明的导电材料)导电膜,通过
电场感应方式感测屏幕表面的触摸行为进行。但是表面电容式触摸屏有一些局限性,它只能
识别一个手指或者一次触摸。
2、 投射式电容触摸屏。
投射电容式触摸屏是传感器利用触摸屏电极发射出静电场线。一般用于投射电容传感技
术的电容类型有两种:自我电容和交互电容。
自我电容又称绝对电容,是最广为采用的一种方法,自我电容通常是指扫描电极与地构
成的电容。在玻璃表面有用 ITO 制成的横向与纵向的扫描电极,这些电极和地之间就构成
一个电容的两极。当用手或触摸笔触摸的时候就会并联一个电容到电路中去,从而使在该条
扫描线上的总体的电容量有所改变。在扫描的时候,控制 IC 依次扫描纵向和横向电极,并
根据扫描前后的电容变化来确定触摸点坐标位置。笔记本电脑触摸输入板就是采用的这种方
式,笔记本电脑的输入板采用 X*Y 的传感电极阵列形成一个传感格子,当手指靠近触摸输
入板时,在手指和传感电极之间产生一个小量电荷。采用特定的运算法则处理来自行、列传
感器的信号来确定手指的位置。
交互电容又叫做跨越电容,它是在玻璃表面的横向和纵向的 ITO 电极的交叉处形成电
容。交互电容的扫描方式就是扫描每个交叉处的电容变化,来判定触摸点的位置。当触摸的
时候就会影响到相邻电极的耦合,从而改变交叉处的电容量,交互电容的扫面方法可以侦测
到每个交叉点的电容值和触摸后电容变化,因而它需要的扫描时间与自我电容的扫描方式相
比要长一些,需要扫描检测 X*Y 根电极。目前智能手机/平板电脑等的触摸屏,都是采用交
互电容技术。
ALIENTEK 所选择的电容触摸屏,也是采用的是投射式电容屏(交互电容类型),所以
后面仅以投射式电容屏作为介绍。
透射式电容触摸屏采用纵横两列电极组成感应矩阵,来感应触摸。以两个交叉的电极矩
阵,即: X 轴电极和 Y 轴电极,来检测每一格感应单元的电容变化,如图 1.4.1.1 所示:
图 1.5.1.1 投射式电容屏电极矩阵示意图
示意图中的电极,实际是透明的,这里是为了方便大家理解。图中,X、Y 轴的透明电
极电容屏的精度、分辨率与 X、Y 轴的通道数有关,通道数越多,精度越高。以上就是电容
触摸屏的基本原理,接下来看看电容触摸屏的优缺点:
电容触摸屏的优点:手感好、无需校准、支持多点触摸、透光性好。
电容触摸屏的缺点:成本高、精度不高、抗干扰能力较差。
这里特别提醒大家电容触摸屏对工作环境的要求是比较高的,在潮湿、多尘、高低温环
境下面,都是不适合使用电容屏的。
电容触摸屏一般都需要一个驱动 IC 来检测电容触摸,且一般是通过 IIC 接口输出触摸