触摸式液晶屏二次开发中几项关键技术研究

2010-06-13 11:33夏心江吴志国
微处理机 2010年3期
关键词:液晶屏驱动程序寄存器

夏心江,吴志国,胡 钢

(河海大学计算机及信息工程学院,江苏常州213022)

1 引言

随着信息技术的快速发展,触摸屏的应用日趋普及,在我国已逐渐形成了产业,触摸屏输入装置将会发展成为未来诸种信息产品的主流技术之一。但是,在各类领域应用触摸屏的二次开发过程中,必须先解决好几个关键技术,诸如:驱动程序、触控寄存器配置、字符图形显示编程、人机交互程序等,方能使系统设计得以继续。就目前可参考的资料而言,可借鉴的设计技术系统描述十分有限,下面重点讨论这些问题。

2 触摸屏系统硬件设计

2.1 硬件系统组成

触摸屏的本质是传感器,它由触摸检测部件和触摸屏控制器组成。触摸检测部件安装在显示器屏幕前面,用于检测用户触摸位置;触摸屏控制器是从触摸检测装置接收信息,将它转换成触点坐标送给CPU,同时能接收CPU发来的命令并加以执行。硬件系统由320×240分辨率的 NB320240R_BIW_SBNH触摸式液晶屏、驱动芯片NT7086、触控芯片RA8806组成,如图1所示。

RA8806是台湾瑞佑公司开发的文字与绘图模式的点矩阵液晶显示(STN-LCD)控制器,内建字库,具有触摸屏控制、对比控制、键盘扫描等功能强大的核心部件,同时能够提供画面旋转、字体放大等超强附加功能。NT7086芯片是LSI公司推出的基于低功耗CMOS高电压制程技术的LCD驱动器。在段驱动模式,它可以连接1位串行或4位并行算法的控制器;在共同驱动模式,适用双输入模式;在部分应用模式,具有电源关闭功能,能降低能源消耗[4]。

触控芯片负责完成整个液晶屏的显示控制及触摸信号的采集与处理,驱动芯片为显示控制提供驱动,320*240触摸屏用于显示及感测触摸信号。整个触摸式液晶屏的控制命令由MCU单片机发出。eP89V51RD2FN单片机是PHILIPS公司开发的一款80C51微控制器,包含64kB Flash和1024字节的数据RAM,封装为塑料双列直插式40脚,Flash程序存储器支持并行和串行方式在系统编程(ISP)[6]。

图1 触摸屏硬件结构框图

2.2 触控芯片模式选择及单片机接口配置

RA8806支持8080和6800等两种微处理机接口传输模式。接口模式的选择决定于RA8806“MI”引脚的电位。当选择8080模式时,MI接低电位;选择6800模式时,MI接高电位。本设计采用的是8080模式,表 1所示为在 8080时序下P89V51RD2FN单片机与触摸式液晶屏的接口连接设计。程序在PC机中经过编译后,通过串口,由HIN232CP芯片驱动并传送到P89V51RD2FN单片机内,P89V51RD2FN单片机通过特定接口向触摸式液晶屏发出控制指令。控制触摸式液晶屏的显示、信号采集与处理等操作[1]。

表1 单片机与液晶接口对应连接表

3 触摸屏二次开发相关软件设计

3.1 程序初始化

在程序设计之初,必须进行初始化操作,包括如下步骤:

(1)设计软件重置初始化函数,当执行完一段代码后,进行重置操作。

(2)设计清空显示初始化函数,当触摸式液晶屏即将进入下一屏时,清空本屏的显示内容。

(3)设计寄存器配置初始化函数,将RA8806各寄存器设置为默认值。

各初始化函数如下:

void softrst()//软件重置初始化函数

void lcd_inital()//寄存器配置初始化函数

void clear(void)//清屏显示初始化函数

3.2 驱动程序设计

RA8806可以接收四种数据传输周期,分别是指令写入周期、状态读取周期、数据写入周期以及数据读取周期。

要对某缓存器进行写数据时,首先执行指令写入周期,包括欲写入缓存器的编号,再以写入数据周期将数值写入该缓存器。这两个周期执行后,数值数据将被写入到该缓存器。由于每一指令的写入需要两个数据传输周期,且每个数据传输周期最少也要2个系统频率周期的时间才能完成,因此每一条指令至少需要花费4个系统频率周期才能写入。

写入指令初始化步骤:①设定ZCS1为低电位(触摸液晶屏系统已将CS2固定为高电位),此时为接收指令状态。②置ZRD为高电平,即关闭读取信号。③利用RS与ZWR的配合时序确定存取周期。④关闭写信号及接收指令状态,即拉高ZWR电平与ZCS1电平。

驱动程序设计方法如下:

void LCD_CmdWrite(uchar cmdaddr)//8080时序

{

cs1=0;

rd=1;

rs=1;

wr=0;

BUS=cmdaddr;

wr=1;

cs1=1;

}

写入数据周期与写入指令周期的不同点在于RS与ZWR的配合时序不同。

驱动程序设计方法如下:

void LCD_DataWrite(uchar wrdata)//数据写控制

{

cs1=0;

rd=1;

rs=0;

wr=0;

BUS=wrdata;

wr=1;

cs1=1;

}

读取数据初始化步骤:①定义变量Data,用于存储读取到的数据。②利用RS与ZWR的配合时序确定存取周期。③设定ZRD为读有效状态。④关闭读有效状态,同时拉高RS电平。⑤将从BUS中读到的数据返回到寄存器内。

驱动程序设计方法如下:

uchar LCD_DataRead(void)//数据读控制

{

uchar Data;

wr=1;

rs=0;

cs1=0;

rd=0;

Data=BUS;

rd=1;

cs1=1;

rs=1;

return Data;

}

3.3 寄存器配置及字符、图形显示编程技术

字符显示的寄存器配置可参考图2流程。

图2 字符显示寄存器配置流程图

图形显示主要采用描点法,以显示任意一点为先决条件,逐步画出所有需要显示的点。例如:在界面上显示一个正方形,首先,设计描点函数,用于在坐标(e,r)处点亮数组m中的第u个像素点,即完成显示任意一点功能。接着,设计正方形图形显示函数,调用描点函数,显示所需图形。

用于画横行的描点函数如下:

void display_dian(uchar*m,uchar e,uchar r,uchar u)

//描点函数1,用于画横行

{

LCD_CmdWrite(0x00);

LCD_DataWrite(0x04);//选择文字工作模式为文字模式

LCD_CmdWrite(0x60);

LCD_DataWrite(e);//定位横坐标

LCD_CmdWrite(0x70);

LCD_DataWrite(r);//定位纵坐标

LCD_CmdWrite(0xb0);

LCD_DataWrite(m[u]);//显示点

}

用于画竖列的描点函数声明如下,其他类同:

void display_dian1(uchar*m,uchar e,uchar r,uchar u)

//描点函数2,用于画竖行

正方形图形显示函数编程如下:

////正方形x:正方形左上角x坐标,y:正方形左上角y坐标//////

void display_fang(uchar x,uchar y)

{

t=0;

count=0;

g=0;//参数初始化

for(t=0;t<48;t++)//上行

{count=t/8;

g=t%8;

display_dian(raio1,x+count,y,g);

}

t=0;

count=0;

g=0;//参数初始化

for(t=0;t<48;t++)//下行

{

count=t/8;

g=t%8;

display_dian(raio1,x+count,y+40,g);

}

p=y+1;//参数初始化

for(t=0;t<40;t++)//右竖

{

display_dian1(raio2,x+6,p++ ,0);

}

p=y+1;

for(t=0;t<39;t++)//左竖

{

display_dian1(raio2,x,p++ ,0);

}

}

在主函数中需要画图时可调用本函数进行逐步描点操作。

3.4 数据的采样与处理

RA8806内建一组10位ADC和控制电路,以连接四线电阻式触控屏幕。触控屏幕由两层非常薄的电阻式屏幕组成,如图3。在两层屏幕中间有一小缝隙,当有外力施加在面板上的某一点时,两层电阻式屏幕将被触碰(touch),形成回路而导通。由于两层电阻式屏幕的端点含有电极(XL、XR、YU、YD),如图4,因此,相对于触碰的位置,系统将侦测到一个XY的坐标值。

当触控事件发生时,在屏幕电阻上所产生的分压将决定触控的所在位置。在XY的坐标值被传回系统(RA8806)并储存在特定的缓存器后,触控屏幕控制器(touch panel controller)将发出一中断告知微处理机(MPU),即中断(INTR)寄存器的触控扫描侦测状态位(BIT0)将会被置为1。

数据采样与处理编程流程如图5所示。根据设计需要配置寄存器:设定寄存器TPCR1的BIT7为1,BIT6—BIT4为 100,BIT2 —BIT0为 100,将寄存器INTR的BIT7—BIT0全部清零。

图5 数据采样与处理流程图

3.5 人机交互子程序设计

人机交互程序设计步骤如下:①使能触控功能,重置中断状态;②读取中断状态,判断触摸状态位,确定触点被按下;③读取X、Y坐标,判断按下触点后所发出命令;④进入触点操作子函数,执行本命令;⑤返回参数及清空中断。

4 结束语

以上介绍的触摸屏在系统应用开发过程中,所涉及到的几项关键技术,如驱动程序、触控寄存器配置、字符图形显示编程、人机交互程序等技术,已经运用到所承担的课题“RLC数字测量仪”设计之中,为系统提供了最简单、方便、自然的一种新型人机交互方式。所介绍的相关技术具有一定的通用性、实用性和借鉴价值。

[1]Raio Technology Inc.RA8806 two layers Character/Graphic LCD Controller Specification Preliminary Version 1.0[EB/OL].2008.http://www.raio.com.tw/Data/Datasheet/RA88%20Series/Completed/RA8806_DS_v13_Eng.pdf.

[2]叶小岭,严海东.嵌入式触摸屏在汽车实验记录仪中的应用[J].计算机测量与控制,2009,17(3):573-575.

[3]New Tec DisplayCo.Ltd.NB320240R -BIW -SBN 触摸屏[EB/OL].http://www.newtec.com.tw.

[4]NEOTEC SEMICONDUCTOR LTD.NT7086.80 CH SEGMENT/COMMON DRIVER FOR DOT MATRIX LCD[EB/OL].2002.http://www.neotec.com.tw.

[5]Intersil Corporation.HIN230 thru HIN241 Data Sheet[EB/OL].2000.http://www.intersil.com/data/fn/fn3138.pdf.

[6]周立功.P89V51RD2器件手册[EB/OL].液晶与显示.2005. http://www. zlgmcu. com/philips/80c51/P89V51RD2/P89V51_isp.pdf.

猜你喜欢
液晶屏驱动程序寄存器
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
基于STM32F4的多通道串口驱动TFT液晶屏显示系统设计
阻止Windows Update更新驱动程序
计算机硬件设备驱动程序分析
一种消除液晶屏高温MURA的工艺研究
基于单片机的点餐系统硬件设计
基于机器视觉的液晶屏字符缺陷检测系统设计
Lx5280模拟器移植设计及实施
高速数模转换器AD9779/AD9788的应用