系统硬件设计
本方案采用的FPGA为Alter公司的ACEX1K30芯片,它可提供系统的时钟及读写控制,ACEX系列的FPGA由逻辑阵列块LAB(Logic array block)、嵌入式阵列块EAB(embedded array block)、快速互联以及IO单元构成,每个逻辑阵列块包含8个逻辑单元LE(logic element)和一个局部互联[1]。每个逻辑单元则由一个4输入查找表(LUT)、一个可编程触发器、快速进位链、级连链组成,多个LAB和多个EAB则可通过快速通道互相连接。EAB是ACEX系列器件在结构设计上的一个重要部件,他是输入端口和输出端口都带有触发器的一种灵活的RAM块,其主要功能是实现一些规模不太大的FIFO、ROM、RAM和双端口RAM等。在本液晶显示接口电路中,EAB主要用宏功能模块实现片上ROM。它通过调用FPGA上的EAB资源来实现汉字的显示和字符的存储,并根据控制信号产生的地址值从ROM中读取字符值,然后送LCD显示器进行显示。
由于所用的图形点阵液晶块内置有SED1520控制器,所以,其电路特性实际上就是SED1520的电路特性。SED1520的主要特性如下[2]:
具有液晶显示行驱动器,具有16路行驱动输出,并可级联实现32行驱动。
具有液晶显示列驱动器,共有61路列驱动输出。
内置时序发生器,其占空比可设置为1/16和1/32两种。
内藏显示存储器,显示存储器内的数据可直接显示,"1"为显示,"0"为不显示。
接口总线时序可适配8080系列或M6800系列,并可直接与计算机接口。
操作简单,有13条控制指令。
采用CMOS工艺,可在电压低至2.4-7.0V时正常工作,功耗仅30μW。
本设计所用的字符液晶模块CM12232由两块SED1520级连驱动,其中一个工作在主工作方式下,另一个工作在从方式下,主工作方式SED1520负责上半屏16行的驱动和左半屏的61列驱动,从工作方式的SED1520则负责下半屏16行的驱动和右半屏的61列驱动,使能信号E1、E2用来区分具体控制的是那一片SED1520,其系统的硬件连接图如图1所示。
由图1可见,该系统的硬件部分连接十分简单,其中FPGA部分没画出,而液晶与FPGA的接口则可直接以网表的形式给出,将它们直接与FPGA的普通I/O引脚相连即可。
系统的软件接口实现
具体实现的重点是如何从存放有字符的ROM块中读出数据,并按照液晶的时序正确的写入,在介绍具体实现方法前,首先要熟悉SED1520的指令。
SED1520的几种主要的控制指令格式如下:
(1)复位格式(Reset)
该指令用于实现SED1520的软件复位。该指令执行时,显示起始行寄存器清零,接着列地址指针清零,之后页地址寄存器置为"3"。
(2)休闲状态设置(Statis drive ON/OFF)
该指令是休闲状态的软件开关,当S=1时,SED1520进入休闲状态;当S=0时,SED1520将中止或退出休闲状态。
(3)占空比设置(Slect duty)
该指令用于设置SED1520的占空比,Du=0时为1/16占空比,Du为1时为1/32占空比。
(4)ADC选择指令(Selet ADC)
该指令用于设置显示存储器中单元的地址所对应的显示驱动输出的顺序。A=0时,顺时针显示;A=1时,逆时针显示。
(5)显示起始行设置(Display start line)
该指令可用于设置显示屏上第一行(行驱动输出COMO所对应的显示行)所对应的显示存储器的行号,由此行顺序下延可得到对应显示屏上的显示效果,L=0-31(1FH),对应表示显示存储器的第1-32行。
(6)显示开/关设置(Display ON/OFF)
该指令控制着显示驱动器的输出。当Di=0时,显示关,当Di=1时,显示开。
(7)页面显示存储的设置
SED1520将显示存储器分为4个页面(0-3页)。每个页面都有80个字节。页面管理可由2位页地址寄存器控制,该指令就是设置页地址寄存器的内容,以选择相应的显示寄存器的页面。P=0-3,对应代表0-3页。
(8)列地址设置(Set column(segment)address)
SED1520的显示存储器的每个页面上都有80个字节,每个字节中的8位数据对应着显示屏上同一列的8点行,列地址指针就是管理这80个字节单元的,列地址指针是一个7位加一计数器,由它和页地址寄存器组合,可唯一指定显示存储器的某一个单元,列地址指针在计算机对显示存储器的每次操后都将自动加一。该指令就是设置列地址指针内容的。当CY=0-4FH,分别对应于1-80单元的地址。