基于ARM处理器的LCD控制及触摸屏接口设计

[复制链接]
chenqiang | 2008-3-27 03:28:00 | 显示全部楼层

基于ARM处理器的LCD控制及触摸屏接口设计

摘要: 对由S3C44B0X控制彩色显示屏和四线电阻式触摸屏组成的人机界面控制系统作了较为深入的分析与研究。介绍了S3C44B0X内置LCD控制器、液晶屏LM7M632和触摸屏控制器ADS7843的管脚功能和工作原理,完成了S3C44B0X与LM7M632及ADS7843的接口设计,论述了LCD和触摸屏的驱动过程, 实现了彩色液晶显示及触摸屏控制功能。实验表明本系统通用性好,可应用于其它嵌入式系统中。 

    关键词:ARM处理器;S3C44B0X;LCD;ADS7843;触摸屏; 

引言

    随着信息技术的不断发展,嵌入式系统正在越来越广泛的应用到航空航天、消费类电子、通信设备等领域。而在嵌入式系统中,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像素点数据输出端口。

点击看大图

图1: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)接口信号线定义


图2:LCD控制器与LCD硬件连接方法

点击看大图

图3: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,VFRAMErPDATC=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的硬件设计与控制驱动提供了一种实用解决方案,本方案可应用于其它嵌入式系统中。

 

您需要登录后才可以回帖 登录 | 注册哦

本版积分规则