引言
触摸屏是目前最简单、方便、自然的而且又适用于中国多媒体信息查询国情的输入设备, 它具有坚固耐用、反应速度快、节省空间、易于交流等许多优点。触摸屏技术被认为是未来人机交互科技的主流方向之一,相关的产业及其产品的应用也正在成为一个热点。
本设计题目来自于广西区自然科学基金项目, 是基金项目中的一个研究子模块, 本文作者在毕业设计期间针对NL 6448AC33218 彩色液晶显示屏及其触摸屏, 应用C8051F020 单片机控制芯片, 采用单片机C 语言编制程序并进行调试, 并且程序采用模块化设计。
一、系统构成
本设计是基于单片机C8051F020 微处理器控制的彩色液晶及触摸屏的控制系统, 系统结构框图如图1所示:
图1 系统结构框图
二、系统连接方式及工作过程
(一)C8051F020 控制TFT6448b 的工作过程
在用C8051F020 实现对TFT 6448b 的控制过程中, 采用总线方式进行控制。因为TFT 6448b 液晶控制器自带有锁存功能, 所以在使用总线方式进行控制时并不需要外加锁存芯片, 只须使用单片机C8051F020 的P0、P2、P3 口就可以实现。在系统加电之前, 由于C8051F020 的典型工作电压为313V , TFT 6448b 的工作电压是5V , 对P0、P2、P3 口相应连接管脚进行驱动能力扩展; 根据控制需求, 通过P0、P2、P3 端口寄存器, 将相应端口的引脚配置成漏极输出方式。将P3 口配置成为数据?地址输出口, 输出地址时, 其为地址总线的低八位, P2 口提供高位地址; 传输数据时, 其为8 位数据总线口。系统加电后, 使得TFT 6448b 的片选信号?C S 有效, 通过往TFT 6448b 的相应行、列、控制、数据寄存器中写入数据, 即可用C8051F020 芯片实现对TFT 6448b的控制, 从而实现彩色液晶的显示控制。
(二) 触摸屏硬件接口电路及工作原理
图2 触摸屏硬件接口电路
根据四线电阻式触摸屏的工作原理, 结合图2 中触摸屏硬件接口电路。
该触摸屏硬件接口电路的具体工作过程如下: 1、如图2 所示电路, 连接好线路, 给电源输入端、参考基准电压端接入313V 的直流电源; 2、结合软件编程对AD0 进行初始化, 系统处于休眠状态时, 软件开中断, 截止PN P1、PN P2、N PN 1, 饱和导通N PN 2; 3、等待触摸屏被触摸; 4、若触摸屏上发生触摸, 进入中断服务程序, 关掉外部中断, 进行短暂延时以消除外界抖动。通过判断中断输入口P010 的电平变化, 确定抖动是否结束。通过软件截止PN P2、N PN 2, 饱和导通PN P1、N PN 1, 选择模数转换通道A IN 010, 采集触摸点的X 方向坐标值,延时等待转换结束, 移出转换结果; 电极电压切换, 通过软件置位, 截止PN P1、N PN 1, 饱和导通PN P2、N PN 2, 选择模数转换通道A IN 011, 采集触摸点的Y 方向坐标值, 延时等待转换结束, 移出转换结果; 5、通过将采集到的X 和Y 坐标值与设定的按键边界值进行比较, 若比较结果为真, 则切换到相应的子页面, 否则, 重新开中断, 并返回主程序; 6、触摸屏硬件接口电路工作过程重新回到步骤3, 继续等待下一次触摸。
三、彩色液晶显示及触摸屏软件设计
(一) 显示原理
如要在点阵液晶显示器上显示汉字, 首先从汉字点阵生成工具中提取要显示的汉字的点阵字模。因为每个汉字在字库中是以点阵字模形式存储的, 所以在程序当中建立字库, 以便调用。程序监测, 是"1"就显示, 是"0"就不显示。检测某位是否为"1"的方法两种: 一种是移位法。每次向左移动一位, 然后判断进位的值, 若为"1", 说明要显示, 则向写数据寄存器DA T 送该字要显示的颜色代码; 若为"0", 说明不用显示, 跳过; 另一种是位与法。先与80H 位与, 判断该字节的最高位是否为"1", 若是, 说明要显示; 若不是, 跳过; 再依次与40H、20H、10H、08H、04H、02H、01H 位与, 判断相应位是否为"1".如要显示字符、数字和图形等, 其方法和原理与显示汉字一样。
(二) 程序设计
1、显示程序程序设计。
其程序流程图如图3 所示:
图3 显示子程序流程图
2、触摸屏软件设计。
结合图2 所示触摸屏硬件接口电路, 为实现对触摸屏上触摸点的识别, 实现页面切换功能。本设计中触摸屏模块软件设计思想是: 对P0 端口的P010 引脚、P1 端口的P114~ P117 引脚, 通过相应的端口输出方式寄存器, 配置为推挽输出方式; 对模数转换器ADC0 的相关寄存器进行设置, 将模拟输入通道配置为单端输入方式, 通过通道选择寄存器分时选通采集数据的模数转换通道。进入主程序, 等待外部触摸中断发生。若外界产生触摸, 进入中断服务程序, 关掉外部中断, 可以避免多个触摸点发生冲突。通过判断中断输入口电平的变化消除非意图触摸产生的抖动; 消除抖动后。通过电压切换, 分别导通X 电极对、Y 电极对, 分别采集X 方向、Y 方向的模拟输入量并移出转换结果, 将采集到的值与事先设定的按键边界值进行比较, 若在按键范围内, 则切换到相应页面, 否则开中断并返回主程序, 继续等待外部触摸中断发生。相应软件设计流程图如图4所示。
图4 软件设计流程图
3、触点判断程序设计。
在本设计当中彩色液晶显示屏的坐标分布情况分布如下: 屏的最左上角(0, 0) , 屏的最左下脚(0, 479) ,屏的最右上角(639, 0) , 屏的最右下角(639, 479)。通过往彩色液晶显示控制芯片TFT 6448b 的列、行、控制、数据寄存器中送入相应的值, 即可以在液晶屏上任何地方实现显示。根据显示页面设计要求, 将需要显示的按键用文字、字符或者图形标识事先在液晶显示屏上显示出来。譬如其中页面中有两个按键标识, 即"返回"和"下一页".这两个标识在液晶显示屏的位置是这样的, 如上图5 所示。
图5 液晶显示屏的两个按键标
根据ADC0 模块采集到的X 和Y 坐标值, 通过按照从左到右、从上到下的逐点测量的方法, 得出触摸屏各触点电压梯度经过转换后的数值是按照线性分布的。因为将得到12 位十六进制数值右移了3 位, 那么对应的十进制数的最大值为511, 最小值为0, 其精度为1/512.触摸屏上的坐标的具体分布如图6 所示。
图6 触摸屏上的坐标分布
依照图6 所示, 可以知道其坐标分布的几个特殊点坐标值(列, 行) , 譬如: 触摸屏的最左上角(511, 511) ,屏的最左下脚(0, 511) , 屏的最右上角(511, 0) , 屏的最右下角(0, 0) ; 在此基础上, 通过将触摸屏固定在液晶显示屏上, 即可以测量触摸屏对应显示屏上固定按键标识的按键区域边界值。具体软件流程图如图7 所示: 下面通过阐述一个按键标识来说明, 如图5 的"返回"按键标识。
图7 软件流程图
1、对触摸屏坐标进行采集标定, 得到的按键边界值,X 坐标为51< kk & kk< 94, Y 坐标的边界值为452<mm &mm < 507;2、当触摸发生, 将采集到的X 坐标和Y 坐标与该按键标识的边界值进行比较, 如果在该按键边界值之间说明按键正确, 否则不正确;3、如按键正确, 进行页面切换, 调用页面显示子模块程序, 显示相应的子页面;4、如采集的X 和Y 坐标不正确, 但坐标值属于其它按键坐标值的范围, 则调用相对应的按键的显示子模块程序; 如不属于其它按键范围, 则返回等待。如上所述, 所有页面的按键的识别和显示方法都是一致的, 唯一的区别就是坐标值的不同。
四、调试
本设计中, 在触摸屏硬件接口电路设计及软件编程中, 涉及到软件程序调试。调试过程中, 采用功能模块化的方法: 譬如在实现整个彩色液晶及触摸屏控制的过程中, 简要的软、硬件调试步骤如下: 硬件--实现C8051F020 与TFT 6448b2LCD 控制板的连接-> 实现单片机C8051F020 与触摸屏之间的连接-> 将两个模块连接在一起, 构成一个整体的控制系统; 软件--先是实现单色屏的显示-> 在此基础上实现不同颜色和型号的字?字符的显示-> 紧接着插入占用存储空间较小的图片(如C8051F020 芯片外形图) -> 考虑任意点触摸的实现-> 考虑定点触摸的采集并实现按键区域触摸-> 考虑切换子页面功能的实现-> 实现比较人性化彩色页面显示。