内置触摸屏与键盘接口的LCD控制器RA8806的应用
扫描二维码
随时随地手机看文章
LCD作为一种常见的显示设备。具有功耗低、体积小、重量轻、显示的信息量大等特点,尤其是在便携设备中,更是占据着绝对主流的地位。对于字符或数字的简单信息显示,通常可用段码式LCD驱动器。而对于复杂的信息显示,则必须由点阵式LCD驱动显示,最常见的点阵式LCD控制/驱动器中,有不带中文字库的LCD驱动器T6963,也有带中文字库的LCD驱动器ST7920。
对于输入设备,最常见的是键盘。在小型控制系统中,键盘通常利用处理器的I/O端口扫描矩阵式行列。但占用I/O端口线,并降低处理器效率。另一种方法是利用专用的键盘接口器件,如英特尔的8279。周立功的ZLG7289等。触摸屏作为一种简单、自然的输入设备。具有坚固耐用、反应速度快、节省空间、易于交流等优点。触摸屏使人机交互更为直截,极大方便用户操作。常见的触摸屏控制器有ADS7846。但不论是键盘还是触摸屏,使用外扩器件的实现方法无疑会增加电路的复杂性和成本。
RA8806是一个双图层中英文字符与绘图模式的点阵LCD控制器,最大支持320×240点分辨率的LCD面板(扩展模式下,可支持640×240或是320×480分辨率的LCD面板)。RA8806不仅内置中文字库,还提供了8×8的键盘扫描接口和4线电阻式触摸屏控制接口,为中型尺寸LCD显示控制提供了完整人机交互的解决方案。这里全面介绍RA8806的硬件配置方法以及软件编程方法。
2 RA8806主要特性
RA8806的内部结构如图l所示。RA8806内置了4×8或8x8的键盘扫描接口,支持多键同时按下及按键时间长短判断功能;RA8806触摸屏控制器,支持了4线电阻式触摸屏扫描接口;一路可编程PWM控制器,可调节LCD面板的对比度或背光亮度;在与控制器接口方面,RA8806能够支持4位或8位数据总线宽度的8080/6800系列控制器;在显示效果方面,RA8806能够提供4级灰度显示。此外还提供了屏幕局部滚动、文字反白、粗体显示、文字放大与旋转等显示功能。
3 RA8806接口及编程
3.1 RA8806控制接口
RA8806支持8080和6800两种微控制器接口,由接口类型选择引脚MI的状态决定;MI接低电平时,选择8080接口,反之,选择6800接口。数据总线的宽度由引脚DB的状态决定:当DB接高电平时,数据总线的宽度为8位,反之,总线宽度为4位。在并行模式下,只要将RA8806和微控制器的对应引脚相连即可。对RA8806的控制访问,与8080/6800控制器对存储器的访问方式相同。需要注意的是引脚RS用来确定要传送的数据类型:RS为高电平时表示命令周期,RS为低电平表示为数据周期,对RA8806的访问类型如表l所示。
3.2 RA8806键盘接口
RA8806的矩阵键盘扫描接口应用起来非常方便,只要将KOUT[7:O]行扫描输出和KIN[7:O]列信号输人接上相应的按键即可,如图2所示。
与键盘扫描相关的寄存器有:扫描控制寄存器KSCR0和KSCRl,扫描数据寄存器KSDRO~KSDR2。在KSCRO中,最高位DB7是键盘扫描功能使能位。DB6为键盘矩阵大小选择位,DB6=1,键盘大小为4x8;DB6=O,键盘大小为8x8。DB[5:4]决定键盘消抖动的采样次数DB3为按键长按判断功能使能位。DB[2:0]决定键盘扫描的速度。KSCRl用来设置键盘唤醒功能及长按时间调整等。通过配置相应命令寄存器,RA8806的键盘扫描电路就能正常工作。
当有按键事件发生时RA8806可以通过引脚INT向系统控制器请求中断,由于RA8806的所有中断共用一个中断请求引脚INT。因此系统控制器需要读取RA8806的中断状态寄存器INTR,以判断中断来源,下面以Keil C51为例,给出键盘中断程序的主要代码:
3.3 RA8806触摸屏接口
RA8806内置一组10位A/D转换器和控制电路,用来连接4线电阻式触摸屏。只要将RA8806的X1和X2、Yl和Y2分别与触摸屏的对应引脚相连,并在Yl引脚接39~51 kΩ的上拉电阻即可,如图3所示。当触摸屏被有效触摸时,触摸点的X,Y坐标值被记录在RA8806的相应寄存器中,同时可以向微控制器申请中断。
与触摸屏相关的寄存器有:触摸屏控制寄存器TPCRl和TPCR2;触摸屏数据寄存器TPXR、TPYR和TPZR。TPCRl的DB7是触摸屏使能位;DB[6:4]决定采样触摸屏数据前的等待时间;DB[2:0]选择触摸屏A/D转换器的转换速度;TPCR2用来设置触摸屏的工作模式。触摸屏的数据寄存器TPXR和TPYR用来保存触摸点X、Y坐标值的高8位,而低2位则保存在TPZR,如果对触摸屏的分辨率要求不高,可忽略TPZR的内容。当触摸屏被接触时,信号不够稳定,为了避免误动作,通常采取连续读两次坐标值进行对比的方法加以消除,触摸屏中断服务程序的流程图如图4所示。
3.4 RA8806显示内存访问
RA8806的显示内存有CGRAM、DDRAMl和DDRAM2 3部分,微控制器访问的是哪一部分内存,RA8806要显示的是哪部分内存的内容,都是由内存访问模式寄存器MAMR来决定。需要注意的是要将待显示的内容写入到显示内存时,必须先执行内存写命令寄存器MWCR的命令写周期,之后才能将显示内容写入到显示内存中;同样要读取显示内存时,也必须先执行内存读命令寄存器MRCR的命令写周期,之后才能读取显示内存。下面以字符放大显示为例,给出部分程序代码段:
4 结语
内置中文字库的LCD驱动器RA8806,支持常见的8080/6800系列控制器并行接口,能够支持放大、旋转、反白、粗体及滚动等多种显示效果。此外,RA8806还提供触摸屏和键盘扫描接口,大大简化了系统硬件电路设计和软件设计。实验结果表明,利用RA8806和低成本的控制器实现人机交互界面是构成微机控制系统人机交互的理想方案。