随着信息技术的不断发展,嵌入式系统正在越来越广泛的应用到航空航天、消费类电子、通信设备等领域。而在嵌入式系统中,LCD作为人机交互的主要设备之一,显示系统又是不可缺少的一部分。近年来,随着微处理器性能的不断提高,特别是ARM处理器系列的出现,嵌入式系统的功能也变得越来越强大。液晶显示器由于具有功耗低、外形尺寸小、价格低、驱动电压低等特点以及其优越的字符和图形的显示功能,已经成为嵌入式系统使用中的首选的输出设备。随着多媒体技术的发展,单色的LCD已不能满足人们在各种多媒体应用方面的更高要求,彩色LCD正越来越广泛地被应用到嵌入式系统中。触摸屏是人们获取信息的一种便利工具, 已广泛应用于工商、税务、银行等各种需要对公众提供信息服务的行业[1]。触摸屏作为一种特殊的计算机外设,是目前最简单、方便、自然的一种人机交互方式。它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备[2]。
S3C44B0X是三星公司生产的基于ARM7TDMI内核的RISC微处理器,主频可达66MHz[3]。它集成了包括LCD控制器在内的等外围器件。LM7M632是Sharp公司推出的分辨率为640×240的STN型彩色LCD显示屏,支持256色显示[4]。本文重点讨论了S3C44B0X与LM7M632及ADS7843的接口设计以及LCD和触摸屏的驱动过程。
1 S3C44B0X中内置LCD控制器介绍
S3C44B0X中内置的LCD控制器可以支持4级灰度、16级灰度的黑白LCD和256级颜色的彩色LCD屏;支持3种LCD驱动器:4位双扫描,4位单扫描,8位单扫描显示模式。内置的LCD控制器的作用是将定位在系统存储器(SDRAM)中的显示缓冲区中的LCD图像数据传送到外部LCD驱动器,并产生必须的LCD控制信号[5]。图1为LCD控制器内部结构框图。其中,VCLK是LCD控制器和LCD驱动器之间的像素时钟信号;VLINE是LCD控制器和LCD 驱动器之间的行同步脉冲信号;VFRAME是LCD控制器和LCD驱动器之间的帧同步信号。VM是LCD驱动器的AC信号。VD[3∶0 ]和VD[ 7∶4 ] 是LCD像素点数据输出端口。
2 LCD模块及硬件接口
LM7M632是按照8位单扫描模式工作的。所谓8位单扫描方式,就是显示采用8位并行数据线进行“行”数据连续移位输出,直到整个帧的数据都被移出为止。LCD模块接口信号线的定义如表1所示,图2为LCD控制器与LCD的硬件接口的连接图。在该显示系统的硬件电路中,S3C44B0中的内置LCD控制器与LCD模块LM7M632的连接是关键。图3是LM7M632模块接口时序图。其中,YD是帧(写满整个屏的数据称为1个“帧”)同步信号,该信号启动LCD屏的新一帧的数据。两个YD脉冲之间的时间长度就称之为“帧周期”。根据LCD模块的特性,帧刷新周期为12ms到14ms,频率为70Hz~80Hz。每1帧中包含240个LP脉冲。LP为行(共240行)数据输入锁存信号,该信号启动LCD屏新的一行的数据。也就是行同步脉冲信号。每1行中包括640×3/8个XCK脉冲信号。XCK为行数据输入信号,也就是每一行中像素点数据传输的时钟信号;每组8位的数据在XCK的下降沿处被输入锁存。D0~D7是8位的显示数据输入信号。
表1:LCD模块(LM7M632)接口信号线定义
在该显示系统中,其显示方式是以直接操作显示缓冲区(SDRAM)的内容进行,LCD控制器会通过DMA方式从显示缓冲区中获取数据,不需要CPU干预。在256色显示模式下,显示缓冲区中的一个字节数据代表LCD上的一个点的颜色信息,因此,所需要的缓冲区的大小为640 ×240 ×1 字节,其中每个字节的RGB数据格式为:由3位红色(Bit7~Bit5)、3位绿色(Bit4~Bit2)、2位蓝色 (Bit1~Bit0) 组成。
3 触摸屏原理及硬件接口
触摸屏按其工作原理的不同可分为表面声波屏、电容屏、电阻屏和红外屏几种[6]。其中最常见的是电阻式触摸屏,其屏体部分是一块与显示器表面非常配合的多层复合薄膜。触摸屏工作时,上下导体层相当于电阻网络。当某一层电极加上电压时,会在该网络上形成电压梯度。如有外力使得上下两层在某一点接触,则在另一层未加电压的电极上可测得接触点处的电压,从而知道接触点处的坐标。
ADS7843是TI公司生产的四线电阻触摸屏转换接口芯片。它是一款具有同步串行接口的12位取样模数转换器。在125kHz吞吐速率和2.7V电压下的功耗为750µW,而在关闭模式下的功耗仅为0.5µW。由于具有低功耗和高速等特性,所以被广泛应用。图4是S3C44B0同ADS7843的连接电路。X+、Y+、X- 、Y-是转换器模拟输入端,DCLK是外部时钟输入;CS 是片选端;DIN 是串行输入,其控制数据通过该引脚输入;DOUT是串行数据输出,用于输出转换后的触摸位置数据.最大数为二进制的4095; IN3、IN4是辅助输入;PENIRQ是PEN中断引脚。其中,S3C44B0选取PG口与ADS7843接口,共使用PG2 - PG7的6条口线。
4、彩色液晶显示及触摸屏软件设计
4.1 LCD显示
4.1.1 初始化LCD端口。
由于LCD模块与S3C44B0相连,LCD是8位数据线,所以必须初始化S3C44B0X的C口与D口。其程序如下: rPDATC = rPDATC &~ (1 << 8) | (1 << 8);/ / LCD使能
rPCONC = rPCONC &~ ( 0xff << 8) | ( 0xff <<8);/ / 配置VD[7∶4 ]
rPCOND = 0xaaaa;/ /配置VD[3∶0 ],VCLK,VLINE,VM,VFRAME
rPDATC=0xffff ;
4.1.2 申请大小为640×240字节大小的显示缓冲区。
显示缓冲区就是在系统存储器中划出一块区域,用来存放要显示的图像数据。将要显示的图像数据直接放入显示缓冲区就能直接在LCD显示屏上显示出所显示的图像。其程序如下:
frameBuffer256= (unsigned char*)malloc(ARRAY_SIZE_COLOR);其中ARRAY_SIZE_COLOR=640×240
4.1.3 初始化LCD控制寄存器
在点亮LCD之前,还应该对LCD控制器相关的寄存器进行初始化[6],使LCD控制器的配置与外接LCD显示模块特性相匹配,包括设置LCD分辨率、扫描频率、显示模式、产生控制信号和控制时序等。
4.1.4 LCD显示
LCD初始化之后,由于在S3C44B0X中,CUP不支持文件管理,必须把要显示的图片包含到程序中。例如,如果要在LCD显示640×240大小的图片,在实际操作中,首先应使用转换工具(如:Image2Lcd)把图片转换成c格式的数组文件,即把每一个像素点的颜色转换成用一个字节表示,然后把整个文件保存成240×640的数组形式。然后把文件包含在项目工程中,用循环语句即可实现显示。如要显示汉字、字符和数字等, 其方法和原理与显示图像基本一样。
4.2 触摸屏软件设计
4.2.1触摸屏模式设置
ADS7843的参考电压模式设置分为两种:单端模式和差分模式。在单端模式中,参考输入电压选取的是V cc 和GND ,由于内部的开关电阻压降影响转换结果带来误差,所以转换器内部的低阻开关对转换精度有一定影响;差分模式参考输入由未选中的输入通道Y + 、Y - 、 X + 、X - 提供参考电源和地,不管内部开关电阻如何变化,其转换结果总与触摸屏的电阻成比例,克服了内部开关电阻的影响,但当转换频率很高时则增加了功耗,需要考虑低功耗设计。
4.2.2 PENIRQ作用
由于触摸屏A/D采样时功耗增加,所以软件设计中,只有在用户按下触摸屏时,才需要进行A/D转换。为了降低功耗,充分利用该芯片的能力,配合软件设计,硬件电路设计成按下触摸屏时,通过PENIRQ 向MCU发出中断。同时软件配置ADS7843采用笔中断功能降低功耗,当按下触摸屏时,则PENIRQ引脚电位变低,MCU收到中断请求后可以发出启动转换命令,并查询BUSY引脚直到转换完成取出坐标。启动转换分两次进行,分别获得x和y方向的坐标。
4.2.3 触摸屏程序设计流程
充分权衡单端模式和差分模式的优缺点,本系统选择参考电压的输入模式为差分模式,控制程序使用的状态字[7]设置为:X通道0x90,Y通道0xD0。触摸屏程序流程如图5所示。程序中S3C44B0X的GPG7在下降沿触发的情况下检测PENIRQ是否为低电平,若为低电平则认为有按下触摸屏;否则认为没有按下触摸屏。利用I/O口模拟DIN,DOUT和DCLK上的3线串行传输时将读取的x或y轴坐标数值的控制字送入ADS7843,后再串行读出坐标值。坐标值送给S3C44B0X,CPU经过处理后在LCD上显示相应的信息并执行相应的参数指令,整个系统都是可以按照LCD上的提示,通过触摸屏来控制,从而完成人机交互的功能。
5 结束语
在嵌入式系统中,LCD作为人机交互的主要设备之一,具有重要的作用。本文完成了S3C44B0X控制LCD及触摸屏的软硬件设计,实践证明该系统稳定可靠, 能够达到预期效果。本文为人机界面中的LCD的硬件设计与控制驱动提供了一种实用解决方案,本方案可应用于其它嵌入式系统中。