- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十八节:ADS7843 驱动的 320240 电阻型触摸屏
(1) 开场白:
320240 的触摸屏是由 320240 液晶显示屏和 320240 电阻触摸薄膜组成。320240 液晶显
示屏披上一层触摸膜的皮就是触摸屏了。显示和读取触摸信息是各自独立的,我们通过编
写程序,两者有机结合起来,让客户产生错觉,以为触摸和显示是一体的。
320240 液晶屏的程序在第十五节已经讲过。现在重点介绍一下电阻触摸薄膜的原理。它的
本质是利用电阻分压的原理。假如我在桌面上放了一条很长的裸露电阻,我们的手触摸到
电阻的某点时,就相当于可调电阻的中间移动点,按到哪一点位置,我们只要通过AD 把
被分压后的电压读取出来,就知道你的手按到了哪个位置。一张触摸膜相当于在 X 轴和 Y
轴都放了一个很宽很长的裸露电阻,手按到哪一点,只要把该点的 X 轴和 Y 轴的分压通过
AD 读取出来,就可以得到被触摸的 X 轴和 Y 轴坐标。驱动电阻型触摸屏,就相当于单片
机驱动一个外部 AD 转换芯片,这个 AD 芯片就是 ADS7843 。
编程技巧:我们要在显示屏上先做一个显示程序,专门用来显示按下去的 X 轴坐标和 Y 轴
坐标,这样方便我们记录按键的位置信息。有了具体某个按键的位置信息,我们才可以针
对此按键进行后续的触发程序编写。
(2)功能需求:
在触摸屏上按下一个矩形按键,此按键马上反显,表示被触发。同时把相对应的
X 轴和 Y 轴坐标数据在液晶屏上显示出来。
(3)硬件原理:
跟 320240 液晶显示屏的接线请参考第十五节。然后用单片机的 4 个 IO 口分别跟
ADS7843 的 DCLK, CS, DIN, DOUT 连接。ADS7843 的 PENIRQ 引脚可以不接悬空,如果
读者想把此键盘中断请求信号也用上,请自己查看 pdf 文档编写相对应的程序。
(4 )源码适合的单片机:SST89E516RD,晶振为 11.0592MHz。
(5)源代码讲解如下:
#include <reg52.h>
#include <intrins.h>
#define LcmXPixel 320 //横向宽度
#define LcmYPixel 240 //纵向高度
#define Uchar unsigned char
#define Uint unsigned int
#define SystemSet 0x40 //硬件寄存器的驱动信息,具体是什么意思没必要知道
#define Scroll 0x44
#define BasePart1 0x00 //显示区 1
#define BasePart2 0x40 //显示区 2
#define BasePart3 0x80 //显示区 3
#define BasePart4 0x00 //显示区 4
#define DispOn 0x59
#define DispOff 0x58
#define Ovlay 0x5b
#define HdotScr 0x5a
#define CsrDirR 0x4c
#define CsrDirL 0x4d
#define CsrDirU 0x4e
#define CsrDirD 0x4f
#define CsrW 0x46
#define CsrR 0x47
#define mWrite 0x42
#define mRead 0x43
#define paraP9 (LcmXPixel/8)
//cnt_key_x_lower1 和 cnt_key_x_upper1 是 X 轴的触摸有效范围,cnt_key_y_lower1 和
cnt_key_y_upper1 是 Y 轴的触摸有效范围,
//此数据的得来,要靠我们自己编写的 X 轴和 Y 轴的坐标显示程序。
#define cnt_key_x_lower1 900 //触摸矩形按键的有效触摸范围
#define cnt_key_x_upper1 1900
#define cnt_key_y_lower1 1900
#define cnt_key_y_upper1 2100
#define cnt_key_wd 50 //被触摸的按键反显后的停留时间,
//补充说明:吴坚鸿程序风格是这样的,凡是输出 IO 后缀都是_dr,凡是输入的//IO 后缀都
//是_sr ,凡是数据总线后缀都是_bus
#define LcmDataBus P1 //数据总线
sbit WR_dr=P3^0; //320240 液晶显示屏的驱
文档评论(0)