点阵液晶模块与LPC2214的接口方式研究与编程

时间:2022-08-08 05:02:57

点阵液晶模块与LPC2214的接口方式研究与编程

摘要:该文从应用角度叙述了常规的液晶显示模块YM19264C的结构特点和基本功能,并在YM19264C和ARM 嵌入式微控制器LPC2214时序分析的基础上,讨论了ARM 嵌入式微处理器LPC2214与点阵液晶显示模块组成的硬件电路的设计方法,设计了以I/O模拟总线连接液晶模块和外部存储器接口扩展液晶模块两种应用电路,而且对两种接口方式下的程序设计进行了分析,同时,给出了屏幕显示不正常时一个简单的解决办法。

关键词:ARMLPC2214; 液晶显示; 外部存储器控制器

中图分类号:TP334文献标识码:A文章编号:1009-3044(2008)32-1245-02

Study and Programming on Interface Mode of Dot Matrix LCD Module and LPC2214

LIU Yi1, LUO Li-ping1, FANG An-an2

(1.Electrical and Mechanical College,Nanchang University, Nanchang 330031, China;2.Information Engineering College, Nanchang University, Nanchang 330031, China)

Abstract: The structural characteristics and basic functions of conventional dot matrix LCD module YM19264C are introduced from the application point of view, and the design method of the hardware circuit composed by ARM embedded microprocessor LPC2214 and dot matrix LCD module is discussed based on the timing analysis of YM19264C and ARM embedded microprocessor LPC2214. In addition, two application circuits of LCD modules are also designed, including one linked by I/O as bus and the other extended by external memory controller, and carried on the analysis of program designs in two interface modes. The paper finally proposes a simple solution for abnormal screen display.

Key words: ARM; LPC2214; LCD; EMC

1 引言

点阵式图形液晶显示屏是LCD的一种,能够动态显示图形、汉字以及各种符号信息,为各种电子产品提供了友好的人机界面,生产厂家通常将液晶显示单元、显示控制器,显示内存和显示驱动电路等装配在一起,做成液晶显示模块LCD Module(LCM)。LCM对外提供标准数据和控制接口以及控制指令。本文在简介以 KS0108B/KS0107B为驱动器的YM19264C液晶显示模块的结构、功能的基础上,详述了与ARM微控制器LPC2214的两种硬件接口电路及接口软件编程方法。

2 YM19264C液晶模块结构

YM19264C图形LCD为192×64单色模块,其接口为 8位并行总线方式,显示驱动控制电路由三片列驱动器KS0108B和一片行驱动器KS0107B组成,属行列驱动及控制合一的驱动电路。YM19264C液晶模块与微控制器的接口共有2 0个引脚,各引脚定义如表1所示。

YM19264内部有显示数据锁存器,简单的操作指令显示开关设置,显示起始行设置,地址指针设置和数据读/写等指令。表2为LCM控制时序表。

3 YM19264C与LPC2214的接口电路

3.1 I/O模拟总线与液晶模块接口电路

NPX公司生产的ARM微控制器LPC2214为144脚封装,可提够GPIO口高达76(使用了外部存储器)~112个(单片使用)。其特性为单个位的方向控制,单独控制输出的置位和清零。

由于LPC2214有充分的I/O口资源,因此可以用GPIO口(通过程序)模拟液晶模块的时序来达到控制LCD的目的 与LPC2214接口采用5条位控制总线和8位并行数据总线输入输出,连接框图如图1所示。当然,该种方式占用GPIO口较多,具体到设计系统中,可根据系统用到的功能对应GPIO口复用功能进行选取和配置。

3.2 I/O模拟总线与液晶模块连接方式的程序设计

使用LPC2214 GPIO口先要设置引脚连接模块寄存器 PINSEL,用来为引脚配置 I/O口功能,然后进行GPIO方向设置。GPIO包含四个寄存器,如表3所列。

由于YM19264C拥有一系列操作指令,通过这些指令可以实现对显示屏的控制。在设计过程中,根据YM19264C的指令系统以及时序信号波形图等用I/O口模拟时序进行编程。 通常液晶显示编程的过程是:首先编写状态查询、写指令、写数据、读数据等子程序;然后编写清屏、画点等基本子程序;在此基础上编写程序以显示字符、数字、汉字等。根据YM19264C的使用说明,指令设置和数据读写都要在LCM空闲的条件下进行操作,因此要注意状态字中的 BUSY 标志。只有在BUSY=0 时,MPU对LCM的操作才能有效。读取状态字要满足以下时序,首先使控制信号RS=0,RW=1,接着LCM将8位指令传送到8个I/O口上,然后E为高电平。CSA,CSB在这期间可以是00,01或10,根据选择屏的情况来设置。

左屏读取状态字的子程序如下:

void test()

{ uint8 dat;

IO0CLR = (CSA)|(CSB)|(RS); //选择左屏,RS=0,数据总线上出现的是指令

IO0SET = RW; // R/W=1,为读选通;

do

{IO0DIR = LCDOUT;//设置GPIO 口P0.7~P0.15为输入

IO0SET = E; //在 E高电平期间, 数据被读出。

dat=IO0PIN>>8;//读数据

IO0CLR = E;

dat=0x90 & dat; //仅当第BUSY和复位为0时才可操作}

while(!(dat==0x00));}

同理,根据表2中LCM的时序,可以编写出传送数据,传送指令的程序,这里要说明的是无论I/O口传送的是数据还是指令,在I/O上都表现为高低电平的变化。通过IOSET/IOCLR可以设定I/O口的高低状态。程序语句为(传递参数为data):

IO0SET =data

IO0CLR =~data & 0x0000FF00;

但通过IO0SET,IO0CLR设定I/0口会出现意外的中间状态,在某些系统中,这种中间状态可能会带来错误。而通过IOPIN可以消除这种中间状态,仅需执行IO0PIN = (data

最后说明的是采用ADS编译,完整的应用还需要编写启动代码,以实现向量表定义、堆栈初始化、I/O初始化等,笔者采用的是周立功公司提供的模板,这里就不加赘述了。

3.3 外部存储器接口与液晶模块连接电路

LPC2214含有外部存储器控制器EMC, 在I/O口紧张的情况下可采用8为总线方式连接LCM,首先分析表2以及LPC2214的读写时序,图2为LPC2214的读时序,在读时序时OE端为低电平,WE端为高电平,而在LPC2214的写时序时OE端为高电平,WE端为低电平。

可见LCM的数据访问时序与LPC2214的存储器访问时序有很大区别,LPC2214和液晶显示模块的接口电路设计的关键是如何通过合理的设计,使得LPC2214的存储器访问时序和LCM的访问时序正确的配合。

设计接口电路如图3所示。将LPC2214 nWE端接到LCM 的E端, 将LPC2214的nOE端取反后接LCM的R/W端,这样在LPC2214 读周期时,LCM的E端为高电平,LCM 的R/W 端也为高电平,为LCM读状态; 在LPC2214写周期时,LCM 的R/W端为低电平时,LCM 的E端刚好有一个下降沿出现,为LCM数据写入。LPC2214的nWE端下降时间最大为5ns,而LCM的E端下降时间要求最大为25ns,时间上完全可以配合。

LCM的片选信号由LPC2214的A2,A3取反后和外部存储器 Bank1片选 nCS1或非后得到。nCS1始终为0,表示使用LPC2214外部存储器接口的Bank1地址空间,地址范围为 0x81000000~0x81FFFFFF,A1和LCM 的RS端连接,用来控制写数据还是写命令,当A2,A3为1时,LCM左屏被选中,左屏数据操作地址为0x8100000E,左屏命令操作地址为0x8100000C,当A2为1,A3为0时,LCM中屏被选中,中屏数据操作地址为0x81000006,中屏命

令操作地址为0x81000004,当A2为0,A3为1时,LCM右屏被选中,右屏数据操作地址为0x8100000A,右屏命令操作地址为0x81000008。

3.4 外部存储器接口与液晶模块连接方式的程序设计

使用LPC2214的总线对LCM操作控制前,先要设置芯片的外部存储器控制器(EMC),以设置总线宽度,总线速度。程序如下:

LDRR0,=BCFG1 //设置BCFG1寄存器

LDRR1,=0x10000CA0

STRR1,[R0]

外部存储器访问形式控制LCM的程序设计比I/O模拟总线控制LCM简单,时序的问题在硬件上得到了解决,LPC2214初始化完成以后向LCM进行指令设置,指令设置包括开显示、设置起始行、页面地址、列地址。设置好这些参数后就可以向LCM写数据。但如I/O模拟总线方式一样的是,指令设置和数据读写都要在LCM空闲的条件下进行操作。以对YM19264的左屏操作为例。

//定义LCM左屏地址

#define LCM_LEFTCOM (*((volatile unsigned short *) 0x8100000C))

#define LCM_LEFTDAT(*((volatile unsigned short *) 0x8100000E))

//写命令子程序(不检查LCM状态),入口参数:command

#define LCD_WriteCommand(command) LCM_LEFTCOM = (unsigned int16)command

//写数据子程序(不检查LCM状态),入口参数:dat

#define LCD_WriteData(dat) LCM_LEFTDAT = (unsigned int16)dat

//读取状态字子程序

#define LCD_ ReadState() LCM_LEFTCOM

//读取数据子程序

#define LCD_ ReadData() LCM_LEFTDAT

//写命令子程序

voidLCD_WriteCommand0(uint8 command)

{ while(!(0x90 & LCD_ ReadState()))break;

LCD_WriteCommand(command);} //发送命令字

参考以上子程序,写数据子程序以及中、右屏的子程序也可以很方便的写出。最后要说明的仍是由于采用ADS编译,完整的应用同样需要编写启动代码。

在具体应用中,可能出现有时显示正常有时显示不正常的现象,或者上批显示正常,这批显示不正常,针对这种情况,在不易修改电路结构的情况下可以在E、R/W、RS信号处分别对地接0.001μ(102)的电容,即调整这三个信号的相对时间间隔。

4 结论

本文通过深入分析基于32位ARM 嵌入式微处理器 LPC2214、 点阵式图形液晶显示屏YM19264的工作原理以及它们在时序上的不同,设计了两种液晶模块与ARM微控制器的连接电路,这两种液晶显示电路都能够满足一般系统对图形、文字的显示要求,有较高的性价比和可靠稳定的工作性能,无论是对于无外部总线的ARM微处理器还是开放了外部总线的ARM微处理器的液晶显示电路设计都提供了有益的参考。

参考文献:

[1] 周立功.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2006.

[2] 周立功,张华.深入浅出ARM7-LPC213x/214x[M].北京:北京航空航天大学出版社,2005.

[3] 李宏.液晶显示器件应用技术[M].北京:机械工业出版社,2004.

上一篇:高职电子商务专业《电子商务安全》课程实训的... 下一篇:Dreamweaver 8中数据库的应用