1、课 程 设 计课 程 硬件课程设计 题 目 液晶控制器接口设计 院 系 计算机与信息技术学院 专业班级 学生姓名 学生学号 指导教师 2009年 7 月 10 日课程设计任务书课程 硬件课程设计题目 液晶控制器接口设计专业 计算机科学与技术 姓名 学号 主要内容、基本要求等一、主要内容:对于实验仪器上所使用的液晶模块使用说明请参看后面第三部分 中文液晶显示模块说明中的详细介绍。整个模块共有四个单元电路组成,分别是:时序发生器、地地址发生器、存储器、控制器。其中:时钟发生器共有三组时钟输出,分别送给:地址发生器,使其产生存储器读地址;存储器,作为输出数据的同步时钟;控制器,作为控制器的工作时钟及
2、输出信号同步时钟。时钟发生器的设计方法与前面实验的设计方法类似,在这里就不再重复了。地址发生器在时钟信号与BUSY信号的共同作用下,产生存储器所需的地址信息。当BUSY信号有效时(BUSY=1),停止输出地址信号;当液晶模块处于空闲状态(BUSY=0)时,输出地址信号。控制器用来产生液晶模块所需的STOBE和存储器输出使能信号。当BUSY信号有效时(BUSY=1),关闭存储器的输出;当液晶模块处于空闲状态(BUSY=0)时,分别送出STOBE=1和存储器输出使能信号,等待BUSY变为1。当BUSY=1时,使STOBE=0,数据传送结束。存储器主要用来存储液晶模块的命令,在同步时钟的作用下,数据
3、同步输出。该存储器可为ROM型,也可以为RAM型。当为ROM型是,其显示模式及显示数据不可变,即只能显示固定的信息;为RAM型时,其显示模块及数据可根据需要任意配置,即可显示出更为灵活及复杂的信息,如实时的波形显示器等。二、基本要求:设计并实现一个12832的汉字图形液晶显示器的控制器,要求:能够显示几个液晶模块字库中的汉字和ASIC字符三、扩展要求能够显示一个简单的图形。按照规范写出论文,要求字数在4000字以上,并进行答辩。论文内容包括概述(学习、调研、分析、设计的内容摘要)、EDA技术的现状和发展趋势、对EL教学实验箱和Quartus软件的掌握程度、数字钟的设计过程(包括原理图或程序设计
4、、编译、仿真分析、硬件测试的全过程),论文中含有原理图、程序、仿真波形图及其分析报告。完成期限 2周 指导教师 专业负责人 2011年 月 日东北石油大学课程设计成绩评价表课程名称硬件课程设计题目名称液晶控制器接口设计学生姓名学号指导教师姓名职称序号评价项目指 标(优秀)满分评分1选题难度选题难度较高,或者对原题目进行了相当程度的改进。102工作量、工作态度和出勤率工作量饱满,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。103课程设计质量按期圆满的完成了规定的任务,方案设计合理,思考问题全面,系统功能完善。404报告质量问题论述思路清晰,结构严谨,文理通顺,撰写规范,图表完备正
5、确。305回答问题在进行课程设计程序系统检查时,能正确回答指导教师所提出的问题。106创新(加分项)工作中有创新意识,对前人工作有改进或有应用价值。在进行系统检查时能对创新性进行说明,并在报告中有相应的论述。+5总分评语:指导教师: 年 月 日摘 要 如今,科技进步给我们的生活带来了很大的变化。液晶显示设备越来越多,各种各样的液晶显示产品走进我们生活中。从手机到电脑显示器,从掌上电脑到平板电视。无处没有液晶显示技术的身影。液晶显示器由于具有低压、微功耗、显示信息量大、体积小等特点,在移动通信终端、便携计算机、GPS卫星定位系统等领域有广泛用途,成为使用量最大的显示器件。液晶显示控制器作为液晶驱
6、动电路的核心部件通常由集成电路组成,通过为液晶显示系统提供时序信号和显示数据来实现液晶显示。本设计是一种基于FPGA(现场可编程门阵列)的液晶显示控制器。与集成电路控制器相比,FPGA更加灵活,可以针对小同的液晶显示模块更改时序信号和显示数据。FPGA的集成度、复杂度和面积优势使得其日益成为一种颇具吸引力的高性价比ASIC替代方案。本文选用MAX7000S系列的EPM7128SLC84-15器件,利用硬件描述语言VHDL设计了液晶显示拧制器,实现了替代专用集成电路驱动控制LCD的作用。关键词: EDA(电子设计自动化),VHDL(硬件描述语言),液晶控制器接口设计,LCD(液晶显示器)。目 录
7、第1章 课程设计内容和要求11.1 设计内容11.2 设计要求11.3 设计目的1第2章 液晶控制器设计方案22.1 设计思路22.2 工作原理及框图22.3 各模块功能描述4第3章 液晶显示器接口底层电路设计63.1设计规划63.2设计说明63.3底层电路程序6第4章 液晶控制器接口的顶层文件设计114.1设计说明114.2 顶层文件程序11第5章 液晶控制器接口设计的测试与运行135.1仿真结果135.2 实验箱验证情况13总结15参考文献16东北石油大学本科生硬件课程设计第1章 课程设计内容和要求1.1 设计目的设计并实现一个12832的汉字图形液晶显示器的控制器,要求:(1)能够显示几
8、个液晶模块字库中的汉字和ASIC字符。(2)能够显示一个简单的图形(选做)。1.2 设计内容 (1)学习掌握液晶显示模块的工作原理及应用。(2)熟练掌握VHDL编程语言,编写液晶显示模块的控制逻辑。1.3 设计要求(1)仿真所编写的程序,模拟验证所编写的模块功能。(2)下载程序到芯片中,硬件验证所设置的功能,能够实现汉字的显示。(3)整理设计内容,编写设计说明书。第2章 液晶控制器设计方案2.1 设计思路根据指导教师布置的课题,通过参考书籍、查阅手册、图表和文献资料,网络等获取相关的知识后,了解到:液晶显示模块硬件接口协议为请求/应答(REQ/BUSY)握手方式。应答BUSY 高电平(BUSY
9、 =1)表示 OCMJ 忙于内部处理,不能接收用户命令;BUSY 低电平(BUSY =0)表示 OCMJ 空闲,等待接收用户命令。发送命令到 OCMJ可在BUSY =0 后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平REQ 信号(REQ =1)通知OCMJ请求处理当前数据线上的命令或数据。OCMJ模块在收到外部的REQ高电平信号后立即读取数据线上的命令或数据,同时将应答线BUSY变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线BUSY是否为低(BUSY
10、=0?),如果BUSY =0,表明模块对用户的写操作已经执行完毕。可以再送下一个数据。2.2 工作原理及框图2.2.1液晶LCD显示器的工作原理:液晶显示器是一种采用了液晶控制透光技术来实现色彩的显示器。从液晶显示器的结构来看,采用的LCD显示屏都是由不同部分组成的分层结构。LCD由两块玻璃板构成,厚约1mm,其间由包含有液晶材料的5um均匀间隔隔开。因为液晶材料本身并不发光,所以在显示屏两边都设有作为光源的灯管,而在液晶显示屏背面有一块背光板(或称匀光板)和反光膜,背光板是由荧光物质组成的可以发射光线,其作用主要是提供均匀的背景光源。背光板发出的光线在穿过第一层偏振过滤层之后进入包含成千上万
11、液晶液滴的液晶层。液晶层中的液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。在玻璃板与液晶材料之间是透明的电极,电极分为行和列,在行与列的交叉点上,通过改变电压而改变液晶的旋光状态,液晶材料的作用类似于一个个小的光阀。液晶材料周边是控制电路部分。当LCD中的电极产生电场时,液晶分子就会产生扭曲,从而将穿越其中的光线进行有规则的折射,然后经过第二层过滤层在屏幕上显示出来。2.2.2设计原理图如下:图2-1 液晶控制器接口设计原理图显示国标汉字:命令格式: F0 XX YY QQ WW。该命令为5字节命令(最大执行时间为1.2毫秒,Ts2=1.2mS),其中:XX:为以汉字
12、为单位的屏幕行坐标值,取值范围00到07、02到09、00到09;YY:为以汉字为单位的屏幕列坐标值,取值范围00到01、00到03、00到04;QQ WW:坐标位置上要显示的GB 2312 汉字区位码。2.2.3设计框图: 下载编程时序仿真在线测试设计处理设计输入功能仿真图2-2 液晶控制器设计框图2.3 各模块功能描述液晶显示模块共有四个单元电路组成,分别是:时序发生器、地地址发生器、存储器、控制器。引脚功能图和内部结构框图分别如图3-3和图3-4所示。图2-3 液晶控制器引脚功能图图2-4 液晶控制器内部结构框图其中,时钟发生器共有三组时钟输出,分别送给:地址发生器,使其产生存储器读地址
13、;存储器,作为输出数据的同步时钟;控制器,作为控制器的工作时钟及输出信号同步时钟。地址发生器在时钟信号与BUSY信号的共同作用下,产生存储器所需的地址信息。当BUSY信号有效时(BUSY=1),停止输出地址信号;当液晶模块处于空闲状态(BUSY=0)时,输出地址信号。控制器用来产生液晶模块所需的STOBE和存储器输出使能信号。当BUSY信号有效时(BUSY=1),关闭存储器的输出;当液晶模块处于空闲状态(BUSY=0)时,分别送出STOBE=1和存储器输出使能信号,等待BUSY变为1。当BUSY=1时,使STOBE=0,数据传送结束。存储器主要用来存储液晶模块的命令,在同步时钟的作用下,数据同
14、步输出。该存储器可为ROM型,也可以为RAM型。当为ROM型是,其显示模式及显示数据不可变,即只能显示固定的信息;为RAM型时,其显示模块及数据可根据需要任意配置,即可显示出更为灵活及复杂的信息,如实时的波形显示器等。第3章 液晶显示器接口底层电路设计3.1设计规划该液晶控制器可显示模块字库中的汉字和ASSIC字符,又具有清零功能。因此。此程序共有两大大模块,汉字显示模块,清零模块。1.汉字显示模块是根据查表对照的方法显示出设计者想要表达的文字。液晶屏上显示的汉字是16*16的像素。2.ASIC字符显示相对汉字来说比较简单。只需要16*8个像素。3.清零功能是强制清除一切记录的功能。3.2设计
15、说明液晶屏幕上是如何显示一些汉字或者是图画,这是我们应该思考的一个问题。在数字电路中,所有数据都是由0、1保存的,同样LCD也是利用这种方法。在点阵LCD上显示的只有两种颜色,因此可用0和1来表示这两种颜色,假设空格是16*16个0组成的,在现实16*16的字体时,将其中某些点置为1便可在视觉上形成汉字,这些二进制数成为代码。与汉字不同的是一个字符只需要16*8的像素便可。3.3底层电路程序3.3.1 清零模块清零模块的功能:实现将地址清零的功能。当clr为0时,将初始地址置为00000000。当clr为1时,出现上升沿时,如果addr1为00111100,则将addr置为00000001;不
16、出现上升沿时,则将addr加1,以实现地址的循环。如此实现清零模块的功能。清零模块的代码(VHDL)如下:LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;USE ieee.std_logic_arith.all;USE work.rom.all;ENTITY lcd1 is PORT(clr,clk,BUSY: IN std_logic; STOBE : OUT std_logic; dout: OUT std_logic_vector(7 DOWNTO 0); -实体端口的设计END lcd1;
17、ARCHITECTURE doit OF lcd1 ISsignal counter,addr1: std_logic_vector(7 downto 0); -结构体的信号设计signal addr : std_logic_vector(7 DOWNTO 0);BEGINP1: process(clr,busy) begin if(clr=0) then addr1=00000000; -给地址清零 elsif(busyevent and busy=1) then if(addr1=00111100) then addr1=00000001; -如果出现busy出现上升沿实现地址的赋值 el
18、se addr1=addr1+1; -实现地址的循环 end if; end if;end process P1;P2: process(clr,busy) begin if(clr=0) then addr=00000000; -地址清零 elsif(busyevent and busy=0) then addr=addr1; -当busy出现下降沿时地址的赋值 end if;end process P2; 由以上程序可发现:如果clr 为1,初始地址被赋值为000000001,如果busy为1,则准备下一条地址。如果busy为0,则把地址数据传送给存储器,来进行数据的存储。如果clr为0时
19、,地址置00000000清零,则实现了清零的功能。3.3.2 汉字显示模块汉字显示模块的原理是:将汉字内码gb2312码存入只读存储器rom中,用下面程序对汉字内码进行调用,则可以将所对应的汉字显示出来。例如汉字“东”的汉字内码为2211,用显示模块二进制将2211表示出来,则可以将汉字“东”显示出来。如此,则可以显示出所需要的汉字。此液晶显示器每行显示六个字,一共两行。另外,由于只读存储器的大小为256*8,所以,当所需要的汉字的内码设置完后,应当用00000000对rom进行填充,使其达到256*8的大小,以实现循环,避免产生乱码。汉字显示模块的代码(VHDL)如下:LIBRARY iee
20、e;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;USE ieee.std_logic_arith.all;USE work.rom.all; -调用存储器中的内容ENTITY lcd1 is PORT(clr,clk,BUSY: IN std_logic; STOBE : OUT std_logic; dout: OUT std_logic_vector(7 DOWNTO 0); -实体端口的设计END lcd1;ARCHITECTURE doit OF lcd1 IS -结构体信号的设计signal counter,
21、addr1: std_logic_vector(7 downto 0);signal addr : std_logic_vector(7 DOWNTO 0);BEGINP1: process(clr,busy) begin if(clr=0) then -清零功能的实现 addr1=00000000; elsif(busyevent and busy=1) then -busy出现上升沿地址的赋值 if(addr1=00111100) then addr1=00000001; else addr1=addr1+1; end if; end if;end process P1;P2: proce
22、ss(clr,busy) begin if(clr=0) then addr=00000000; -清零功能的实现 elsif(busyevent and busy=0) then -busy出现下降沿地址的赋值 addr=addr1; end if;end process P2;P3: process(busy, clk) begin if(busy=1) then counter=00000000; -清零 elsif(clkevent and clk=1) then -clock出现上升沿时进行加法计数 counter=counter+1; end if;end process P3;d
23、out=rom (CONV_INTEGER (addr);stobe=00000011 else 0; END doit;LIBRARY ieee;USE ieee.std_logic_1164.ALL;PACKAGE rom IS CONSTANT rom_width: NATURAL :=8; -natural表示大于零的整数 CONSTANT rom_length: NATURAL :=256; SUBTYPE rom_word IS STD_LOGIC_VECTOR(rom_width-1 DOWNTO 0); TYPE rom_table IS ARRAY ( 0 To rom_le
24、ngth-1) of rom_word; CONSTANT rom : rom_table :=rom_table (11110000,00000001,00000000,00010110,00001011,-2211“东”用来显示汉字的内码11110000,00000010,00000000,00010001,00010001,-1717“北”11110000,00000011,00000000,00101010,00001111,-4215“石”11110000,00000100,00000000,00110011,00101101,-5145“油”11110000,00000101,00
25、000000,00010100,01010011,-2083“大”11110000,00000110,00000000,00110001,00000111,-4907“学”-所需要显示的汉字内码输入完整后,为了避免出现乱码,必须用00000000将256*8的只读存储器rom将存储器填满,以实现地址的循环,且不出现乱码。00000000,00000000,00000000,00000000, -如此填充,为保证rom总共的大小为256*8END rom;为节省空间,大小为256*8的内码只显示主要内容,用00000000填充的其它部分,不再作一一显示,用省略号表示。只需保证该只读存储器rom的
26、真正大小为256*8即可。另外,根据汉字gb2312码更改只读存储器rom中的内容可以相应地更改显示汉字的字数和内容;利用点阵列,则可以显示字符;用英文码,则可以显示英文其它显示命令格式如下(不做一一列举):(1)显示8X8 ASCII字符命令格式:F1 XX YY AS该命令为4字节命令(最大执行时间为0.8毫秒,Ts2=0.8mS),其中XX:为以ASCII码为单位的屏幕行坐标值,取值范围00到0F、04到13、00到13YY:为以ASCII码为单位的屏幕列坐标值,取值范围00到1F、00到3F、00到4FAS:坐标位置上要显示的ASCII 字符码(2)显示位点阵命令格式: F2 XX Y
27、Y 该命令为3字节命令(最大执行时间为0.1毫秒,Ts2=0.1mS),其中XX:为以1*1点阵为单位的屏幕行坐标值,取值范围00到7F、20到9F、00到9FYY:为以1*1点阵为单位的屏幕列坐标值,取值范围00到40、00到40、00到40第4章 液晶控制器接口的顶层文件设计4.1设计说明所谓建立顶层文件就是将已经设计好的各个功能组件组合调用,连成一个整体,使整个系统按照设计要求在实际中工作起来。而此程序中的顶层文件即是将清零模块和汉字内码显示模块结合起来,使其实现清零和显示汉字的两大功能。具体操作:将汉字显示的内码存入到大小为256*8的只读存储器rom中,然后再在清零模块的程序中对该只
28、读存储器rom进行调用。在一个工程中用两个.vhd文件分别存入顶层文件程序和只读存储器rom的程序即可。如此,便将清零模块和汉字显示模块连成了一个整体。在液晶显示器中便可实现清零和显示汉字的两个功能。4.2 顶层文件程序代码如下:LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;USE ieee.std_logic_arith.all;USE work.rom.all;ENTITY lcd1 is -实体端口的设计 PORT(clr,clk,BUSY: IN std_logic; STOBE : O
29、UT std_logic; dout: OUT std_logic_vector(7 DOWNTO 0);END lcd1;ARCHITECTURE doit OF lcd1 IS -结构体信号的设计signal counter,addr1: std_logic_vector(7 downto 0);signal addr : std_logic_vector(7 DOWNTO 0);BEGINP1: process(clr,busy) begin if(clr=0) then -清零功能的实现 addr1=00000000; elsif(busyevent and busy=1) then
30、-busy出现上升沿地址的赋值 if(addr1=00111100) then addr1=00000001; else addr1=addr1+1; end if; end if;end process P1;P2: process(clr,busy) begin if(clr=0) then -强制清零功能的实现 addr=00000000; elsif(busyevent and busy=0) then -busy出现下降沿地址的赋值 addr=addr1; end if;end process P2;P3: process(busy, clk) begin if(busy=1) th
31、en -清零功能的实现 counter=00000000; elsif(clkevent and clk=1) then -clock出现上升沿时开始计数 counter=counter+1; end if;end process P3;dout=rom (CONV_INTEGER (addr);stobe=00000011 else 0; END doit;最后创建一个工程,在里面新建两个.vhd文件,一个用于存储顶层文件程序,一个用于输入只读存储器rom中的内容。在顶层文件程序中调用只读存储器rom中的内容,便可实现液晶显示的清零功能和显示汉字的功能。第5章 液晶控制器接口设计的测试与运行
32、5.1液晶控制器设计仿真结果下图5-1是将上述程序在Quartus 中进行仿真后实现的波形图:图5-1:液晶控制器设计仿真结果5.2 实验箱验证情况实验连线:将CLK接时钟模块输出,使其频率为1.25MHZ2.5MHZ,BUSY接液晶模块的BUSY输入端,REQ接液晶模块的REQ输出端,dout7.0分别接液晶模块的DB7.0输入端。在MAX7000S系列的EPM7128SLC84-15实验箱中验证情况如下图5-2:图5-2 液晶控制器接口设计实验箱验证结果结 论液晶显示器绿色环保,它的能源消耗相对于传统的CRT来说,简直是太小了(17功率大概在200W以内);对于近来逐渐引起国人重视的噪音污
33、染也与它无缘,因为它的自身的工作特点决定了它不会产生噪音。随着仪器、仪表、电子设备等智能化程度的提高,液晶显示模块的使用也越来越广泛。在于液晶的接口中,关键是满足液晶的时序要求;在软件的编程中,关键是要进行正确的初始化、操作以及显示内容的代码。两个星期的课程设计主要经历了以下几个过程:广泛查阅资料、文献综述、总体思路的确定、方案的具体化及论证、方案的确定、软件的调试、系统的调试,还包括论文总结。我认为整个过程是一个联系非常紧密的过程,前一过程的结果为后一过程奠定了基础。在整个过程中,我不仅对液晶控制系统的每一个细节有了比较深入的掌握,而且对关于系统扩展的相关知识有了感性的认识,不仅掌握了大量的
34、专业知识,更学会了系统模块设计的基本思想。最后要感谢老师和研究生学长对我们课程设计的指导与帮助!参考文献1侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计M. 西安:西安科技大学出版社,2005.2赵志海.液晶显示器及其应用M.北京:电子工业出版社.2007.3李朝青.单片机原理及接口技术M.北京:北京航空航天大学出版社,2003.4李勇.CPLD/FPGA应用开发技术与工程实践M. 北京:人民邮电出版社,2004.5李维缇,郭强.液晶显示器件应用技术M.北京:北京邮电学院出版社,2003.6罗苑棠.CPLD/FPGA常用模块与综合系统设计M. 北京:电子工业出版社,2007.7姜雪松,张海风.可编程逻辑器件和EDA设计技术M.北京:机械工业出版社,2006.8马建国,孟宪元.电子设计自动化技术基础M.北京:清华大学出版社,2008.9永胜.液晶显示接口设计与仿真M.机械工业出版社,2005.10姜维.实用电子系统设计基础M.北京:电子工业出版社,2008.17