




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 江西理工大学应用科学学院SOPC/EDA综合课程设计报告设计题目: 液晶显示屏LCD显示接口设计设 计 者: 肖小龙学 号: 08060209114 班 级: 自动化091班指导老师: 王忠锋完成时间: 2012年1月6日设计报告综合测试总评格式(10)内容(40)图表(10)答辩(20)平时(20)摘 要 如今,科技进步给我们的生活带来了很大的变化。液晶显示设备越来越多,各种各样的液晶显示产品走进我们生活中。从手机到电脑显示器,从掌上电脑到平板电视。无处没有液晶显示技术的身影。液晶显示器由于具有低压、微功耗、显示信息量大、体积小等特点,在移动通信终端、便携计算机、GPS卫星定位系统等领域有
2、广泛用途,成为使用量最大的显示器件。液晶显示控制器作为液晶驱动电路的核心部件通常由集成电路组成,通过为液晶显示系统提供时序信号和显示数据来实现液晶显示。本设计是一种基于FPGA(现场可编程门阵列)的液晶显示控制器。与集成电路控制器相比,FPGA更加灵活,可以针对小同的液晶显示模块更改时序信号和显示数据。FPGA的集成度、复杂度和面积优势使得其日益成为一种颇具吸引力的高性价比ASIC替代方案。本文选用GW48系列的SOPC/EDA实验开发系统,利用硬件描述语言VHDL设计了液晶显示拧制器,实现了替代专用集成电路驱动控制LCD的作用。关键词: EDA(电子设计自动化),VHDL(硬件描述语言),液
3、晶控制器接口设计,LCD(液晶显示器)。目录第1章 预备知识1.1 12864点阵型液晶显示屏的基本原理与使用方法 12864点阵型LCD简介图1 12864实物图12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及12864全点阵液晶显示器组成。可完成图形显示,也可以显示84个(1616点阵)汉字。实物如上图所示。引脚号引脚名称方向功能说明1VSS-模块的电源地2VDD-模块的电源正端3V0-LCD驱动电压输入端4RS(CS)H/L并行的指令/数据选择信号;串行的片选信号5R/W(SID)H/L并行的读写选择信号;串行的数据口6E(CLK)H/L并行的使能信号;串行的同步时钟7D
4、B0H/L数据08DB1H/L数据19DB2H/L数据210DB3H/L数据311DB4H/L数据412DB5H/L数据513DB6H/L数据614DB7H/L数据715PSBH/L并/串行接口选择:H-并行;L-串行16NC空脚17/RETH/L复位 低电平有效18NC空脚19LED_A-背光源正极(LED+5V)20LED_K-背光源负极(LED-OV)表1 12864引脚说明逻辑工作电压(VDD):4.55.5V电源地(GND):0V工作温度(Ta):060(常温) / -2075(宽温) 点阵LCD的显示原理在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,
5、可以得到不同的结果。对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低128位则留给英文字符使用,即英文的内码。那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如英文的A在字模的记载方式如图2所示:图2 “A”字模图而中文的“你”在字模中的记载却如图3所示:图3 “你”字模图
6、1.1.3 字模提取软件的应用对于我们需要显示的一两个字符来说,用手工的方法去取模是可以的,但是随着我们需要显示的字符的数量增加以及多样化,手动取模就显的更吃力,效率更加底下,所以我们必须一个取模工具,网上流传的一个字模提取工具可以让我们高效的得到我们需要显示的字符的代码。随着电子行业的发展,很多研发机构把汉字以代码的形式固化在液晶显示屏中,形成了带字库的液晶显示屏,方便了我们使用液晶显示屏,但是对于复杂多变的图形,显得就无能为力了,只能用取模软件去取得显示代码,因此学会自摸软件的使用,会使我们的工作效率事半功倍的。软件界面如下:图4 字模提取软件1.1.4 12864液晶显示模块接口时序模块
7、有并行和串行两种连接方法(时序如下):1、8位并行连接时序图5 MPU写资料到模块图6 MPU从模块读出资料2、串行连接时序图图7 有关FPGA的知识图8 FPGA芯片FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在可编程阵列逻辑PAL(Programmable Array Logic)、门阵列逻辑GAL(Gate Array Logic)、可编程逻辑器件PLD(Programmable Logic Device)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路ASIC(Application Specific Integra
8、ted Circuit)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA能完成任何数字器件的功能,上至高性能CPU,下至简单的74系列电路,都可以用FPGA来实现。FPGA如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由设计一个数字系统。通过软件仿真,我们可以事先验证设计的正确性。在PCB完成以后,还可以利用FPGA的在线修改能力,随时修改设计而不必改动硬件电路。使用FPGA来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可*性。PLD的这些优点使得PLD技术在90年代以后得到飞速的发展,
9、同时也大大推动了电子设计自动化EDA(Electronic Design Automatic)软件和硬件描述语言VHDL(Very-High-Speed Integrated Circuit Hardware Description)的进步。1.2 课程设计题目:液晶显示屏LCD显示接口设计 课程设计目的及基本要求 液晶显示屏已广泛应用于人们的日常生活中,在各种领域中起到越来越重要的位置。因此,掌握和控制液晶显示屏是非常重要的技能。进行课程设计是加 强实践,提高动手能力的重要环节,通过课程设计,同时在软件编程,排错调试,相关仪器设备的使用技术等方面得到全面的提高。掌握液晶显示屏实现的相关方法,
10、为将来的实际工作打下一定的基础。本课程设计是以SED1520控制器为基础,基本要求是: 1、掌握SED1520控制器基本结构2、掌握液晶显示屏的工作原理及使用方法3、掌握用VHDL语言编写程序 4、掌握Quartus II的使用方法 5、掌握GW48系列SOPC/EDA实验开发系统:a:闲置不用GW48系统时,必须关闭电源,拔下电源插头! b:在实验中,当选中某种模式后,要按一下右侧的复位键,以使系统进入该结构模式工作。c:换目标芯片时要特别注意,不要插反或插错,也不要带电插拔,确信插对后才能开电源。其它接口都可带电插拔。请特别注意,尽可能不要随意插拔适配板,及实验系统上的其他芯片。d:并行口
11、工作模式设置在“EPP”模式!e: 跳线座“SPS” 默认向下短路(PIO48);右侧开关默认拨向“TO MCU”。f: 对于GW48-PK2系统,左下角拨码开关除第4档“DS8使能”向下拨(8数码管显示)外,其余皆默认向上1.3、设计要求使用FPGA设计一个液晶显示屏LCD显示的控制器,使其能够显示文字、数字或图形(根据需要选择LCD屏),至少需要显示“江西理工大学应用科学学院课程设计”字样,另外需要显示班级姓名和日期。其它功能可自行增加! (型号GW48-PK2)第2章 设计内容提要及说明2.1 元件原理图 图9 下载/编程接口电路图图10 液晶显示屏2.2 12864指令系统 12864
12、用户指令集指令表1:(RE=0:基本指令集)指令指令码说明执行时间(540KHZ)RSRWDB7DB6DB5DB4DB3DB2DB1DB0清除显示0000000001将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H”4.6ms地址归位000000001X设定DDRAM的地址计数器(AC)到“00H”,并且将游标移到开头原点位置;这个指令并不改变DDRAM的内容4.6ms进入点设定00000001I/DS指定在资料的读取与写入时,设定游标移动方向及指定显示的移位72us显示状态开/关0000001DCBD=1:整体显示ONC=1:游标ONB=1:游标位置ON72us游
13、标或显示移位控制000001S/CR/LXX设定游标的移动与显示的移位控制位元;这个指令并不改变DDRAM的内容72us功能设定00001DLX0REXXDL=1 (必须设为1)RE=1: 扩充指令集动作RE=0: 基本指令集动作72us设定CGRAM地址0001AC5AC4AC3AC2AC1AC0设定CGRAM地址到地址计数器(AC)72us设定DDRAM地址001AC6AC5AC4AC3AC2AC1AC0设定DDRAM地址到地址计数器(AC)72us读取忙碌标志(BF)和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙碌标志(BF)可以确认内部动作是否完成,同时可以读出地址计数
14、器(AC)的值0us写资料到RAM10D7D6D5D4D3D2D1D0写入资料到内部的RAM(DDRAM/CGRAM/IRAM/GDRAM)72us读出RAM的值11D7D6D5D4D3D2D1D0从内部RAM读取资料(DDRAM/CGRAM/IRAM/GDRAM)72us表2指令表2:(RE=1:扩充指令集)指令指令码说明执行时间(540KHZ)RSRWDB7DB6DB5DB4DB3DB2DB1DB0待命模式0000000001将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H”72us卷动地址或IRAM地址选择000000001SRSR=1:允许输入垂直卷动地址S
15、R=0:允许输入IRAM地址72us反白选择00000001R1R0选择4行中的任一行作反白显示,并可决定反白与否72us睡眠模式0000001SLXXSL=1:脱离睡眠模式SL=0:进入睡眠模式72us扩充功能设定000011X1REG0RE=1: 扩充指令集动作RE=0: 基本指令集动作G=1 :绘图显示ONG=0 :绘图显示OFF72us设定IRAM地址或卷动地址0001AC5AC4AC3AC2AC1AC0SR=1:AC5AC0为垂直卷动地址SR=0:AC3AC0为ICON IRAM地址72us设定绘图RAM地址001AC6AC5AC4AC3AC2AC1AC0设定CGRAM地址到地址计数
16、器(AC)72us表32.2.2 FPGA与LCD连接方式FPGA与LCD连接方式:(仅PK2型含此)。由实验电路结构图COM可知,默认情况下,FPGA是通过89C51单片机控制LCD液晶显示的,但若FPGA中有Nios嵌入式系统,则能使FPGA直接控制LCD显示。方法是拔去此单片机(在右下侧),用连线将座JP22/JP21(LCD显示器引脚信号)各信号分别与座JP19/JP20(FPGA引脚信号)相连接即可。图11 实验电路结构图COM第3章 系统硬件设计本方案采用的FPGA为Alter公司的ACEX1K30芯片,它可提供系统的时钟及读写控制,ACEX系列的FPGA由逻辑数组块LAB(Log
17、ic array block)、嵌入式数组块EAB(embedded arr ay block)、快速互联以及IO单元构成,每个逻辑数组块包含8个逻辑单元LE(logic element)和一个局部互联1。每个逻辑单元则由一个4输入查找表(LUT)、一个可编程触发器、快速进位链、级连链组成,多个LAB和多个EAB则可通过快速通道互相连接。EAB是ACEX系列器件在结构设计上的一个重要部件,他是输入埠和输出埠都带有触发器的一种灵活的RAM块,其主要功能是实现一些规模不太大的FIFO、ROM、RAM和双埠RAM等。在本液晶显示接口电路中,EAB主要用宏功能模块实现片上ROM。它通过调用FPGA上的
18、EAB资源来实现汉字的显示和字符的存储,并根据控制信号产生的地址值从ROM中读取字符值,然后送LCD显示器进行显示。由于所用的图形点阵液晶块内置有SED1520控制器,所以,其电路特性实际上就是SED1520的电路特性。SED1520的主要特性如下: (1)具有液晶显示行驱动器,具有16路行驱动输出,并可级联实现32行驱动。(2)具有液晶显示列驱动器,共有61路列驱动输出。(3)内置时序发生器,其占空比可设置为1/16和1/32两种。(4)内藏显示内存,显示内存内的数据可直接显示,1为显示,0为不显示。(5)接口总线时序可适配8080系列或M6800系列,并可直接与计算机接口。(6)操作简单,
19、有13条控制指令。(7)采用CMOS工艺,可在电压低至2.4-7.0V时正常工作,功耗仅30W。本设计所用的字符液晶模块CM12232由两块SED1520级连驱动,其中一个工作在主工作方式下,另一个工作在从方式下,主工作方式SED1520负责上半屏16行的驱动和左半屏的61列驱动,从工作方式的SED1520则负责下半屏16行的驱动和右半屏的61列驱动,使能信号E1、E2用来区分具体控制的是那一片SED1520,其系统的硬件连接图如图1所示。由图1可见,该系统的硬件部分连接十分简单,其中FPGA部分没画出,而液晶与FPGA的接口则可直接以网表的形式给出,将它们直接与FPGA的普通I/O引脚相连即
20、可。系统的软件接口实现具体实现的重点是如何从存放有字符的ROM块中读出数据,并按照液晶的时序正确的写入,在介绍具体实现方法前,首先要熟悉SED1520的指令。SED1520的控制指令表:指令名称控制信号控制代码 A0 R/WD7 D6 D5 D4 D3 D2 D1 D0复位0 01 1 1 0 0 0 1 0显示开关设置0 01 0 1 0 1 1 1 Di地址排序设置0 01 0 1 0 0 0 0 A体闲状态设置0 01 0 1 0 0 1 0 S占空比设置0 01 0 1 0 1 0 0 Du显示起始行设置0 01 1 0 L4 L3 L2 L1 L0页面地址设置0 01 0 1 1 1
21、 0 P1 P0列地址设置0 00 C6 C5 C4 C3 C2 C1 C0启动改写方式0 01 1 1 0 0 0 0 0结束改写方式0 01 1 1 0 1 1 1 0读取状态字0 1BUSY ADC ON/OFF RESET 0 0 0 0写显示数据1 0数 据读显示数据1 1数 据表4图12 系统硬件连接图第四章 设计过程4.1 初始化部分的状态机设计根据字符模块初始化的流程图72us72us72us72us4.6ms4.6ms72us清除显示清除显示清除显示清除显示清除显示清除显示清除显示图13 LCD初始化流程图4.2 时钟模块的设计由于FPGA开发板上自带的晶振频率为50MHZ,
22、而所需要的时钟频率则需要小于13.9K。因此需要一个分频器对其进行分频。这里采用简单的计数器对其进行分频,通过分频器将外部输入的32 MHZ的信号分成频率为153600HZ的信号。在分频之后由于时钟信号需要同时控制LCD模块以及FPGA的模块,因此需要编写一个程序,使得两者之间同步。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY baud IS port(clk,resetb:in std_logic; bclk:out st
23、d_logic);end baud;architecture Behavioral of baud isbeginprocess(clk,resetb)variable cnt:integer;beginif resetb=1 thencnt:=0;bclk=208 then cnt:=0;bclk=1;else cnt:=cnt+1;bclk=0;end if;end if;end process;end behavioral;图14 时钟模块4.3 中文字符部分的数据模块中文部分由于VHDL中无法识别中文,使用时需要参照中文字符表,将需要的字符所对应的数据输入RAM,然后通过和英文模块不重
24、复的符号来实现对其的调用。如 “江”这个中文字符,所对应国标码”bdad”,因此在函数部分应为:constant data_buf : data_buffer := (xbd,xad);本程序驱动液晶显示“江西理工大学应用科学学院课程设计” “班级”“姓名”“日期”Library IEEE;Use IEEE.STD_LOGIC_1164.ALL;Use IEEE.STD_LOGIC_ARITH.ALL;Use IEEE.STD_LOGIC_UNSIGNED.ALL;entity LCD isgeneric(divide_to_100k :integer:=1000);Port(clk, rst
25、:in STD_LOGIC;Rw, rs, e, lcd_rst :out STD_LOGIC;Lcd_data:out STD_LOGIC_VECTOR(7 downto 0); end LCD;architecture Behavioral of LCD issignal clk_100k:std_logic;type state is(s0,s1,s2,s3,s4);signal current_s: state ;type data_buffer is array (0 to 43) of std_logic_vector ( 7 downto 0 ) ;constant data_b
26、uf : data_buffer := (xbd,xad,xce,xf7,xc0,xed,xb9,xa4, xb4,xf3,xd1,xa7,xd3,xa6,xd3,xc3,xbf,xc6,xd1,xa7, xd1,xa7,xd4,xba,xbf,xce,xb3,xcc,xc9,xe8,xbc,xc6, xb0,xe0,xbc,xb6, xd0,xd5,xc3,xfb, xc8,xd5,xc6,xda); beginprocess(clk)variable cnt:integer range 0 to divide_to_100k;beginif rising_edge(clk)then cnt
27、:=cnt+1;if cnt=divide_to_100k then cnt:=0;end if;if cntdivide_to_100k/2 then clk_100k= 0;else clk_100k = 1;end if;end if;end process;process(clk_100k)variable cnt1:integer range 0 to 500;variable cnt1_1:integer range 0 to 100;variable code_cnt:integer range 0 to 13;variable data_cnt:integer range 0
28、to 48; beginif rising_edge(clk_100k)thenif rst = 1 then current_s = s0 ; cnt1 := 0 ;cnt1_1 := 0;code_cnt := 0 ; data_cnt := 0 ; lcd_rst rw= 1;rs = 1;e = 1;cnt1:=cnt1+1;if cnt1 250 then lcd_rst = 0;elsif cnt1 500 then lcd_rst = 1;elsif cnt1=500 then lcd_rst = 1;cnt1 := 0;current_s cnt1_1:=cnt1_1+1; i
29、f cnt1_1 1*3 then e = 1;rs = 0;rw = 0;elsif cnt1_12*3 then lcd_data=x0c;elsif cnt1_110*3 then e=0;elsif cnt1_1=10*3 then cnt1_1:=0;current_scnt1_1:=cnt1_1+1; if cnt1_11*3 then e=1;rs=0;rw=0;elsif cnt1_12*3 then lcd_data=x80;elsif cnt1_110*3 then e=0;elsif cnt1_1=10*3 then cnt1_1:=0;current_s if cnt1
30、_11*3 then e=1;rs=1;rw=0;elsif cnt1_12*3 then lcd_data=data_buf(data_cnt);elsif cnt1_1=2*3 then data_cnt:= data_cnt+1;elsif cnt1_1100 then e=0;end if;cnt1_1:=cnt1+1;if cnt1_1=100 then cnt1_1:=0;if data_cnt=16 then current_scurrent_s=s0;end case;end if;end if;end process;end Behavioral;图15 文字显示模块4.4
31、图形的数据模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY lcdlinehozi IS PORT( CLK,key3: IN STD_LOGIC; CK0,DISP,Hsync,Vsync:OUT STD_LOGIC; rgb:OUT STD_LOGIC_VECTOR(0 TO 23) ); END;ARCHITECTURE WX OF lcdlinehozi ISSIGNAL CLK_TEMP1,CLK_TEMP2,CK :STD_LOGIC ;SIGNAL CNT1,CNT2
32、:STD_LOGIC_VECTOR(2 DOWNTO 0);signal cnt:std_logic_vector(1 downto 0);SIGNAL HS_CNT,VS_CNT:INTEGER RANGE 0 TO 525;signal rgbx,rgby: STD_LOGIC_VECTOR(0 TO 23);CONSTANT THp:INTEGER :=41;CONSTANT THb:INTEGER :=2;CONSTANT THf:INTEGER :=2;CONSTANT TVp:INTEGER :=10;CONSTANT TVb:INTEGER :=2;CONSTANT TVF:IN
33、TEGER :=2;CONSTANT THd:INTEGER :=480;CONSTANT TVd:INTEGER :=272;BEGINPROCESS(key3) BEGIN IF key3event and key3=1 THEN IF cnt=10 THEN cnt=00; else cnt=cnt+1; end if; end if; end process; process(cnt) begin if elsif cnt=01then rgb=rgbx; elsif cnt=10then rgb=rgby; else rgb=000000000000000000000000; end
34、 if;end process; process(hs_cnt,vs_cnt) begin if hs_cnt102 then rgbx=000000000000000000000000; elsif hs_cnt162 then rgbx=000000000000000011111111; end if; if vs_cnt43 then rgby=000000000000000000000000; elsif vs_cnt75 then rgby=000000000000000011111111; end if; end process; CLOCK:PROCESS(CLK) BEGIN
35、IF CLKEVENT AND CLK=1THEN IF CNT1=2 THEN CNT1=000; ELSE CNT1=CNT1+1;END IF; END IF; END PROCESS; PROCESS (CLK) BEGIN IF CLKEVENT AND CLK=0 THEN IF CNT2=2 THEN CNT2=000; ELSE CNT2=CNT2+1;END IF; END IF; END PROCESS; PROCESS(CLK) BEGIN IF CLKEVENT AND CLK=1 THEN IF CNT1=0 THEN CLK_TEMP1=1; ELSIF CNT1=
36、1 THEN CLK_TEMP1=0; END IF; END IF; END PROCESS; PROCESS (CLK) BEGIN IF CLKEVENT AND CLK=0THEN IF CNT2=0 THEN CLK_TEMP2=1; ELSIF CNT2=1 THEN CLK_TEMP2=0; END IF; END IF; END PROCESS; CK=CLK_TEMP1 OR CLK_TEMP2; CK0=CK; PROCESS(CK) BEGIN IF CKEVENT AND CK=1 THEN IF HS_CNT=THp-1 THEN Hsync=1; HS_CNT=HS_CNT+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电商绿色物流行业物流配送模式创新研究报告
- 给砖厂送煤矸石合同范本
- 高端救生衣采购合同范本
- 私人租赁车牌协议书范本
- 深度保洁服务协议书范本
- 职工公寓合租协议书范本
- 离婚了如何写财产协议书
- 瑜伽馆赠送课程合同范本
- 用就业协议代替劳动合同
- 水稻还田合同协议书范本
- 急流救援IRB培训一(水域救援基础理论、艇操、船外机安装)
- 2025年宁波农商发展集团限公司招聘高频重点提升(共500题)附带答案详解
- 《眼内炎患者的疾病》课件
- 2024-2030年中国独立学院行业转型挑战分析发展规划研究报告
- 历年全国普通话考试真题50套
- 智能物业管理大数据应用方案
- 香港公司股东协议书范本
- DB43T 876.8-2015 高标准农田建设 第8部分:科技服务
- 普通洗车操作流程及操作指导书
- 伤寒与副伤寒患者的护理
- 2024年辽宁电工(高级技师)高频核心题库300题(含解析)
评论
0/150
提交评论