第十八节ADS7843驱动的320240电阻型触摸屏

上传人:cn****1 文档编号:486170978 上传时间:2023-01-02 格式:DOC 页数:22 大小:68.50KB
返回 下载 相关 举报
第十八节ADS7843驱动的320240电阻型触摸屏_第1页
第1页 / 共22页
第十八节ADS7843驱动的320240电阻型触摸屏_第2页
第2页 / 共22页
第十八节ADS7843驱动的320240电阻型触摸屏_第3页
第3页 / 共22页
第十八节ADS7843驱动的320240电阻型触摸屏_第4页
第4页 / 共22页
第十八节ADS7843驱动的320240电阻型触摸屏_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《第十八节ADS7843驱动的320240电阻型触摸屏》由会员分享,可在线阅读,更多相关《第十八节ADS7843驱动的320240电阻型触摸屏(22页珍藏版)》请在金锄头文库上搜索。

1、第十八节:ADS7843驱动的320240电阻型触摸屏(1) 开场白:320240的触摸屏是由320240液晶显示屏和320240电阻触摸薄膜组成。320240液晶显示屏披上一层触摸膜的皮就是触摸屏了。显示和读取触摸信息是各自独立的,我们通过编写程序,两者有机结合起来,让客户产生错觉,以为触摸和显示是一体的。320240液晶屏的程序在第十五节已经讲过。现在重点介绍一下电阻触摸薄膜的原理。它的本质是利用电阻分压的原理。假如我在桌面上放了一条很长的裸露电阻,我们的手触摸到电阻的某点时,就相当于可调电阻的中间移动点,按到哪一点位置,我们只要通过AD把被分压后的电压读取出来,就知道你的手按到了哪个位置

2、。一张触摸膜相当于在X轴和Y轴都放了一个很宽很长的裸露电阻,手按到哪一点,只要把该点的X轴和Y轴的分压通过AD读取出来,就可以得到被触摸的X轴和Y轴坐标。驱动电阻型触摸屏,就相当于单片机驱动一个外部AD转换芯片,这个AD芯片就是ADS7843。编程技巧:我们要在显示屏上先做一个显示程序,专门用来显示按下去的X轴坐标和Y轴坐标,这样方便我们记录按键的位置信息。有了具体某个按键的位置信息,我们才可以针对此按键进行后续的触发程序编写。(2)功能需求: 在触摸屏上按下一个矩形按键,此按键马上反显,表示被触发。同时把相对应的X轴和Y轴坐标数据在液晶屏上显示出来。(3)硬件原理:跟320240液晶显示屏的

3、接线请参考第十五节。然后用单片机的4个IO口分别跟ADS7843的DCLK,CS,DIN,DOUT连接。ADS7843的PENIRQ引脚可以不接悬空,如果读者想把此键盘中断请求信号也用上,请自己查看pdf文档编写相对应的程序。(4)源码适合的单片机:SST89E516RD,晶振为11.0592MHz。(5)源代码讲解如下:#include #include #define LcmXPixel 320 /横向宽度#define LcmYPixel 240 /纵向高度#define Ucharunsigned char#define Uintunsigned int#define SystemSe

4、t 0x40 /硬件寄存器的驱动信息,具体是什么意思没必要知道#define Scroll0x44#define BasePart1 0x00 /显示区1#define BasePart2 0x40 /显示区2#define BasePart3 0x80 /显示区3#define BasePart4 0x00 /显示区4#define DispOn0x59#define DispOff0x58#define Ovlay0x5b#define HdotScr0x5a#define CsrDirR0x4c#define CsrDirL0x4d#define CsrDirU0x4e#define C

5、srDirD0x4f#define CsrW0x46#define CsrR0x47#define mWrite0x42#define mRead0x43#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#defi

6、ne 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=P30; /320240液晶显示屏的驱动IO口sbit RD_dr=P31;sbit CS_dr = P35;sbit RS_dr = P33;sbit RES_dr = P34;/ads7843的驱动IO口sbit

7、ads7843_DCLK_dr = P20; /时钟信号,下降沿有效sbit ads7843_CS_dr = P23; /片选信号,低电平有效sbit ads7843_DIN_dr = P22; /串行数据输入sbit ads7843_DOUT_sr = P21; /串行数据输出void delay(unsigned int t); /时序延时函数声明void write_com(unsigned char cmdcode);/往液晶模块写入指令void write_data(unsigned char Di_drspdata);/往液晶模块写入数据void LocateXY(unsigned

8、 char x,unsigned char y);/设定显示地址函数,驱动液晶程序的一部分void screen_clear(); /清空屏的内容void zf_display816(unsigned char col, unsigned char pag,const unsigned char* zk,unsigned char opposite_flag); /显示8X16的字符函数,本节的核心内容void hz_display1616(unsigned char col, unsigned char pag,const unsigned char* zk,unsigned char op

9、posite_flag); /显示16X16的汉字函数,本节的核心内容void hz_display2424(unsigned char col, unsigned char pag,const unsigned char* zk,unsigned char opposite_flag); /显示24X24的汉字函数,本节的核心内容void draw_rec(unsigned int x,unsigned int y,unsigned int x_length,unsigned int y_length); /画矩形,用来制造矩形按键void RevBmp(unsigned char ox,u

10、nsigned char oy,unsigned char Lengh,unsigned char High);/把选中的矩形反显void ClearBmp(unsigned char ox,unsigned char oy,unsigned char Lengh,unsigned char High);/把选中的矩形清空内容void ADS7843_start();/ADS7843启动void ADS7843_wr(unsigned char dat);unsigned int ADS7843_rd();/读ADS7843void key_scan();/触摸按键扫描void key_ser

11、vice(); /触摸服务程序unsigned int average(unsigned int c3);/取三个数据中的中间数值void display_data(unsigned int x,unsigned int y,unsigned char number);/显示数字函数void init_lcd(); /初始化液晶模块unsigned char key_lock=0;/按键自锁unsigned char key_sec=0;/被触发的按键unsigned int key_wd_cnt=0;/触摸按键反显后的停留延时计数器unsigned char a4;unsigned char

12、 b4;unsigned int avex=0;unsigned int avey=0;unsigned char wd_update=1;Uchar code ParaSysTable8= /P1-P8参数,估计是设置硬件寄存器的信息,我也不懂,没必要懂0x30,0x87,0x07,(LcmXPixel/8-1),(10000000/9/LcmYPixel/70),LcmYPixel,(LcmXPixel/8),0x00;Uchar code ParaScrTable10= /P1-P10参数,估计是设置硬件寄存器的信息,我也不懂,没必要懂0x00,BasePart1,0xF0,0x00,B

13、asePart2,0xF0,0x00,BasePart3,0x00,BasePart4;unsigned char Lcm_Layer = 1; /显示所在层1,2,3分别表示1 2 3区,具体含义我也不懂,没必要懂/补充说明:吴坚鸿程序风格是这样的,凡是字库内容,如果是字符,则前缀用zf,然后紧/跟着点阵数,接着下划线,最后紧跟显示的字符。如果有重复的,则多加一个序列号标识。如果是汉字,则前缀用hz,其它的一样。unsigned char code zf816_V=/从取模软件中复制的字库,横向取模,字节正序/*-文字:V-*/*-宋体12;此字体下对应的点阵为:宽x高=8x16 -*/0x

14、00,0x00,0x00,0xE7,0x42,0x42,0x44,0x24,0x24,0x28,0x28,0x18,0x10,0x10,0x00,0x00,;unsigned char code hz1616_hong=/*-文字:鸿-*/*-宋体12;此字体下对应的点阵为:宽x高=16x16 -*/0x40,0x20,0x20,0x40,0x20,0xFC,0x0E,0xC4,0x84,0xA4,0x54,0xA4,0x54,0x8C,0x24,0x80,0x24,0xFE,0x26,0x02,0xD8,0x02,0x43,0xFA,0x40,0x02,0x40,0x02,0x40,0x0A,0x00,0x04,;unsigned char code hz1616_ge=/*-文字:哥-*/*-宋体12;此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0x7F,0xFC,0x00,0x10,0x1F,0x90,0x10,0x90,0x1F,0x90,0x10,0x90,0x00,0x04,0xFF,0xFE,0x00,0x10,0x1F,0x90,0x10,0x90,0x1F,0x90,0x10,0x90,0x0

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号