首页 | 期刊简介 | 编辑部 | 广告部 | 发行部 | 在线投稿 | 联系我们 | 产品信息索取
2024年8月19日星期一
2011年第01期
 
2010年第12期
 
2010年第11期
2010年第11期
 
2010年第10期
2010年第10期
 
2010年第09期
2010年第09期
 
2010年第09期
2010年第08期
 
2010年第07期
2010年第07期
 
2010年第06期
2010年第06期
 
2010年第05期
2010年第05期
 
2010年第04期
2010年第04期
 
2010年第03期
2010年第03期
 
2010年第02期
2010年第02期
 
2010年第01期
2010年第01期
 
2009年第12期
2009年第12期
 
2009年第11期
2009年第11期
 
2009年第10期
2009年第10期
 
2009年第9期
2009年第9期
 
2009年第8期
2009年第8期
 
2009年第7期
2009年第7期
 
2009年第6期
2009年第6期
 
2009年第5期
2009年第5期
 
2009年第4期
2009年第4期
 
2009年第3期
2009年第3期
 
2009年第2期
2009年第2期
 
2009年第1期
2009年第1期
 
2008年第12期
2008年第12期
 
2008年第11期
2008年第11期
 
2008年第10期
2008年第10期
 
2008年第9期
2008年第9期
 
2008年第8期
2008年第8期
 
2008年第7期
2008年第7期
 
2008年第6期
2008年第6期
 
2008年第5期
2008年第5期
 
2008年第4期
2008年第4期
 
2008年第3期
2008年第3期
 
2008年第2期
2008年第2期
 
2008年第1期
2008年第1期
基于FPGA的液晶显示接口设计

The Design of LCD Display Interface Module Based on FPGA

武汉理工大学自动化学院 张红娜 胡荣强 胡合松


在小规模图形液晶显示模块上使用液晶显示驱动控制器组成液晶显示驱动和控制系统是低成本、低功耗、高集成度应用的最好选择。

SED1520是当前最常用的一种液晶显示驱动控制器,图形液晶显示模块的规模为32行及以下。本文用到的液晶模块CM12232即内置SED1520,其驱动控制系统由两片SED1520组成。

FPGA 即现场可编程门阵列器件,是一种超大规模集成电路,具有在电路可重配置能力(in circuit reconfigurable ,ICR) 。设计者设计的逻辑在编译、适配后变成网络表,下载到FPGA芯片上, FPGA 即可执行设计逻辑的功能。因此FPGA在芯片控制和接口逻辑设计等各个方面的应用越来越广泛。


系统硬件设计

在本方案中采用的FPGA为Altera公司的ACEX1K30芯片,负责提供系统时钟及读写控制。ACEX系列FPGA由逻辑阵列块LAB(logic array block)、嵌入式阵列块EAB(embedded array block)、快速互连以及IO单元构成。每个逻辑阵列块包含8个逻辑单元LE(logic element )和一个局部互联。每个逻辑单元则由一个4输入查找表(LUT)、一个可编程触发器、快速进位链和级连链组成。多个LAB和多个EAB 通过快速通道互相连接。EAB是ACEX系列器件在结构设计上的一个重要部件,它是输入端口和输出端口都带有触发器的一种灵活的RAM 块,其主要功能就是实现一些规模不太大的FIFO、ROM、RAM 和双端口RAM 等。在本液晶显示接口电路中,主要用宏功能模块实现片上ROM,它调用FPGA上的EAB资源来实现显示汉字的字符存储,根据控制信号产生的地址值由ROM中读取字符值,送LCD显示器进行显示。

由于所用的图形点阵液晶块内置SED1520控制器,所以其电路特性实际上就是SED1520的电路特性。

SED1520的主要特性如下:

具有液晶显示行驱动器:16路行驱动输出,可级联实现32行驱动。

具有液晶显示列驱动器:61路列驱动输出。

内置时序发生器:占空比可设置为 1/16和 1/32两种。

内藏显示存储器:显示存储器内的数据直接显示,"l"为显示,"0"为不显示。

接口总线时序:可适配8080系列或M6800系列时序,可直接与计算机接口连接。

操作简单,13条控制指令。

CMOS工艺,工作电压低至2.4~7.0V,低功耗 30uW。

本设计所用的字符液晶模块CM12232由两块SED1520级连驱动,其中一个工作在主工作方式下,另一个工作在从方式下。主工作方式SED1520负责上半屏16 行的驱动和左半屏的61列驱动。从工作方式SED1520负责下半屏16 行的驱动和右半屏的61列驱动。使能信号E1,E2 用来区分是控制哪一片SED1520,系统的硬件连接图如图1所示。

图1 系统硬件连接图(略)

由图1可见系统的硬件部分连接很简单。其中FPGA部分没画出,液晶与FPGA的接口直接以网标的形式给出,它们直接与FPGA的普通I/O引脚相连即可。


系统的软件接口实现

具体实现的关键是如何从存放有字符的ROM块中读出数据并按照液晶的时序正确的写进去。在介绍具体的实现前,要熟悉SED1520的指令。
SED1520的控制指令表如下:

(略)

● 复位(Reset)

该指令实现SED1520的软件复位,该指令执行: 显示起始行寄存器清零;列地址指针清零;页地址寄存器置为"3"。

(略)

● 休闲状态设置(Statis drive ON/OFF)

该指令是休闲状态的软件开关。当S=1时,SED1520进入休闲状态,当S=0时SED1520将中止或退出休闲状态。

(略)

● 占空比设置(Slect duty)

该指令设置了SED1520的占空比,当 Du=0时为 1/16占空比,DU= 1时为1/32占空比。

(略)

● ADC选择指令(Selet ADC)

该指令设置了显示存储器中单元的地址对应显示驱动输出的顺序。

A=0时,顺时针显示;A=1时,逆时针。

(略)


●显示起始行设置(Display start line)

该指令设置了在显示屏上第一行(行驱动输出COMO所对应的显示行)所对应的显示存储器的行号。由此行顺序下延可得到对应显示屏上的显示效果。L=0~31(1FH),表示显示存储器的第l~32行。

(略)

● 显示开/关设置(Display ON/OFF)

该指令控制着显示驱动器的输出。当Di=0时,显示关;当Di=1时,显示开。

● 页面地址设置(Set page address),ED1520将显示存储器分为4个页面:0~3页,每个页面都有 80个字节。页面管理是由2位的页地址寄存器控制。该指令就是设置页地址寄存器的内容,以选择相应的显示存储器的页面。P=0~3,代表0~3页。

(略)


●列地址设置(Set column (segment)address)

(略)

SED1520的显示存储器每个页面上都有80个字节,每个字节中的8位数据都对应着显示屏上同一列的8点行。列地址指针就是管理这80个字节单元的。列地址指针是一个7位加一计数器。由它和页地址寄存器组合唯一指定了显示存储器的某一个单元。列地址指针在计算机对显示存储器的每次操作后都将自动加一。该指令就是设置列地址指针内容的。CY=0~4FH,对应1~80单元的地址。具体实现的顶层设计原理如图2所示。
图2中lpm_rom模块是利用FPGA的宏功能模块产生的片上ROM块,用以存放要显示的字符数据。ctrl模块为控制从ROM中取出数据后在液晶上显示的核心控制模块,其功能包括控制数据的读写时序、液晶屏的分屏显示控制、分页显示控制等。

Ctrl模块程序的核心代码如下:

architecture Behavioral of ctrl is
signal divcnt : std_logic_vector(11 downto 0); --系统计数
signal data : std_logic_vector(9 downto 0); --地址输出
signal clk1,clk2,a01,cs11,cs21,flag,csflag : std_logic;
data<=divcnt(11 downto 2);--最高10位为地址
process3(clk2)
begin
if clk2'event and clk2='1' then
case conv_integer(data) is
when 0|2|4|6|8|10|12|13|138|139|264|265|390|391
=>A01<='0';cs11<='0';cs21<='1';
when 1|3|5|7|9|11|75|76|201|202|327|328|453|454
=>A01<='0';cs11<='1';cs21<='0';
when 14 to 74=>A01<='1';cs11<='0';cs21<='1';
when 140 to 200=>A01<='1';cs11<='0';cs21<='1';
when 266 to 326=>A01<='1';cs11<='0';cs21<='1';
when 392 to 452=>A01<='1';cs11<='0';cs21<='1';
when 77 to 137=>A01<='1';cs11<='1';cs21<='0';
when 203 to 263=>A01<='1';cs11<='1';cs21<='0';
when 329 to 389=>A01<='1';cs11<='1';cs21<='0';
when 455 to 515=>A01<='1';cs11<='1';cs21<='0';
when others=>A01<='0';cs11<='1';cs21<='1';
end case;
end if;
end process3;
a0<=a01;
cs1<=cs11 or csflag;
cs2<=cs21 or csflag;
ad<=data;
end Behavioral;

其中关键的程序为process3,在该过程中A01的功能是决定将数据写到液晶数据线上显示还是写到液晶的控制寄存器进行控制。当A01为低即‘0’时为写命令,当A01为‘1’时为写数据。

程序中ROM地址的前13个单元均为写命令。根据SED1520的控制命令字分别在ROM表中的0,2,4,6,8,10单元, E2,A4,A9,A0,C0,AF依次实现对CS1主工作的SED1520复位,退出休闲状态,设置占空比为1/32,顺时针显示数据RAM中的内容,显示起始行对应显示存储器的0行,显示出这一系列的初始化工作;1,3,5,7,9,11单元写入到CS2,从工作的SED1520实现其初始化。第13单元放的是B8即页地址,设置为0,从14~74单元A01=‘1’为写数据,此时片选CS1有效。ROM表中连续放入“武汉理工”4个汉字的上半部分字模(本方案共显示16个汉字“武汉理工大学自动化学院重点实验室”分两行每行8个字显示),之后75、76单元为写命令,ROM中的数据为B8,00即设置显示页为0页,该页的列地址从0开始。从77~137单元地址向CS2即从动工作方式的SED1520写数据即“大学自动”的前半部分字模。接下来的138、139单元为写命令,ROM中的数据为B9、00即页地址设置为1列,地址为0,140~200单元放入“武汉理工”的下半部分字模;201、202单元为写命令,ROM中的数据为B9、00设置页地址为1列,地址为0。203~263中为“大学自动”的下半部字模。之后8个字的写入过程与前8个字的写入过程相同,写命令的单元控制要写的页。

图2 顶层设计原理图(略)


结束语

本方案以FPGA为控制核心,实现了对字符点阵液晶的控制。该方案硬件电路连接简单,软件程序简洁,对液晶的控制简单、稳定,且可改动性灵活。若要改变液晶显示的汉字,只需改变ROM表中的字模即可,是对液晶应用的一种行之有效的方法。该方案已在我们自行开发的实验装置中通过验证并证明可行。

《世界电子元器件》2006.8
         
版权所有《世界电子元器件》杂志社
地址:北京市海淀区上地东路35号颐泉汇 邮编:100085
电话:010-62985649
E-mail:dongmei@eccn.com