液晶显示屏LCD显示接口设计课程设计.doc

上传人:啊飒飒 文档编号:11664963 上传时间:2021-08-29 格式:DOC 页数:24 大小:1.24MB
返回 下载 相关 举报
液晶显示屏LCD显示接口设计课程设计.doc_第1页
第1页 / 共24页
液晶显示屏LCD显示接口设计课程设计.doc_第2页
第2页 / 共24页
液晶显示屏LCD显示接口设计课程设计.doc_第3页
第3页 / 共24页
液晶显示屏LCD显示接口设计课程设计.doc_第4页
第4页 / 共24页
液晶显示屏LCD显示接口设计课程设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《液晶显示屏LCD显示接口设计课程设计.doc》由会员分享,可在线阅读,更多相关《液晶显示屏LCD显示接口设计课程设计.doc(24页珍藏版)》请在三一文库上搜索。

1、Sopc/EDA课程设计:液晶显示屏LCD显示接口设计江西理工大学应用科学学院SOPC/EDA综合课程设计报告设计题目: 液晶显示屏LCD显示接口设计 设 计 者: 刘文志学 号: 14班 级: 测控071指导老师: 王忠锋完成时间: 2010年1月23日 设计报告综合测试总评格式(10)内容(40)图表(10)答辩(20)平时(20)目 录目 录1第1章 预习知识21.1液晶显示屏原理21.2课程设计题目:液晶显示屏LCD显示接口设计21.3、设计要求3第2章 设计内容提要及说明42.1 元件原理图4第3章 系统硬件设计10第4章 设计过程13第5章 实习总结22参考文献23致谢24 第1章

2、 预习知识1.1 液晶显示屏原理 1.1.1 液晶显示屏的LCD的使用原理和设置;1.1.2 液晶显示模块设计方法。1.1.3 查询有关课程设计汉字的国标码1.1.4 有关FPGA的知识1.1.5 端口的设计方法1.1.6 熟悉GW48系列SOPC/EDA实验开发系统及现代DSP实验开发系统的使用方法。1.2 课程设计题目:液晶显示屏LCD显示接口设计1.2.1 课程设计目的及基本要求 液晶显示屏已广泛应用于人们的日常生活中,在各种领域中起到越来越重要的位置。因此,掌握和控制液晶显示屏是非常重要的技能。进行课程设计是加 强实践,提高动手能力的重要环节,通过课程设计,同时在软件编程,排错调试,相

3、关仪器设备的使用技术等方面得到全面的提高。掌握液晶显示屏实现的相关方法,为将来的实际工作打下一定的基础。本课程设计是以SED1520控制器为基础,基本要求是: 1、掌握SED1520控制器基本结构2、掌握液晶显示屏的工作原理及使用方法3、掌握用VHDL语言编写程序 4、掌握Quartus II的使用方法 5、掌握GW48系列SOPC/EDA实验开发系统:a:闲置不用GW48系统时,必须关闭电源,拔下电源插头! b:在实验中,当选中某种模式后,要按一下右侧的复位键,以使系统进入该结构模式工作。c:换目标芯片时要特别注意,不要插反或插错,也不要带电插拔,确信插对后才能开电源。其它接口都可带电插拔。

4、请特别注意,尽可能不要随意插拔适配板,及实验系统上的其他芯片。d:并行口工作模式设置在“EPP”模式!e: 跳线座“SPS” 默认向下短路(PIO48);右侧开关默认拨向“TO MCU”。f: 对于GW48-PK2系统,左下角拨码开关除第4档“DS8使能”向下拨(8数码管显示)外,其余皆默认向上1.3、设计要求使用FPGA设计一个液晶显示屏LCD显示的控制器,使其能够显示文字、数字或图形(根据需要选择LCD屏),至少需要显示“江西理工大学应用科学学院课程设计”字样,另外需要显示班级姓名和日期。其它功能可自行增加! (型号GW48-PK2)第2章 设计内容提要及说明2.1 元件原理图图1 下载/

5、编程接口电路图图2 液晶显示屏2.1.1 模块引脚说明表1 模块引脚逻辑工作电压(VDD):3.35.5V电源地(GND):0V工作温度(Ta):0+50(常温)/ -2070(宽温)2.1.2 接口时序模块有并行和串行两种连接方法(时序如下):a) 8位并行连接时序图图3 MPU写资料到模块图4 MPU从模块读出资料a) 串行连接时序图图5 串行时序图表2 时钟周期表串行数据传送共分三个字节完成:第一字节:串口控制格式 11111ABC A为数据传送方向控制:H表示数据从LCD到MCU,L表示数据从MCU到LCD。 B为数据类型选择: H表示数据室显示数据,L表示数据室控制指令 C固定为0第

6、二字节:(并行)8位数据的高4位格式DDDD0000第三字节:(并行)8位数据的低4位格式DDDD0000串行接口时序参数:(测试条件: T=25 VDD=4.5V)2.1.3 用户指令集指令表1:(RE=0:基本指令集)表3 基本指令表指令表2:(RE=1:扩充指令集)表4 扩充指令表2.1.4 FPGA与LCD连接方式FPGA与LCD连接方式:(仅PK2型含此)。由实验电路结构图COM可知,默认情况下,FPGA是通过89C51单片机控制LCD液晶显示的,但若FPGA中有Nios嵌入式系统,则能使FPGA直接控制LCD显示。方法是拔去此单片机(在右下侧),用连线将座JP22/JP21(LCD

7、显示器引脚信号)各信号分别与座JP19/JP20(FPGA引脚信号)相连接即可。图6 实验电路结构图COM 第3章 系统硬件设计本方案采用的FPGA为Alter公司的ACEX1K30芯片,它可提供系统的时钟及读写控制,ACEX系列的FPGA由逻辑数组块LAB(Logic array block)、嵌入式数组块EAB(embedded arr ay block)、快速互联以及IO单元构成,每个逻辑数组块包含8个逻辑单元LE(logic element)和一个局部互联1。每个逻辑单元则由一个4输入查找表(LUT)、一个可编程触发器、快速进位链、级连链组成,多个LAB和多个EAB则可通过快速通道互相

8、连接。EAB是ACEX系列器件在结构设计上的一个重要部件,他是输入埠和输出埠都带有触发器的一种灵活的RAM块,其主要功能是实现一些规模不太大的FIFO、ROM、RAM和双埠RAM等。在本液晶显示接口电路中,EAB主要用宏功能模块实现片上ROM。它通过调用FPGA上的EAB资源来实现汉字的显示和字符的存储,并根据控制信号产生的地址值从ROM中读取字符值,然后送LCD显示器进行显示。由于所用的图形点阵液晶块内置有SED1520控制器,所以,其电路特性实际上就是SED1520的电路特性。SED1520的主要特性如下: (1)具有液晶显示行驱动器,具有16路行驱动输出,并可级联实现32行驱动。(2)具

9、有液晶显示列驱动器,共有61路列驱动输出。(3)内置时序发生器,其占空比可设置为1/16和1/32两种。(4)内藏显示内存,显示内存内的数据可直接显示,1为显示,0为不显示。(5)接口总线时序可适配8080系列或M6800系列,并可直接与计算机接口。(6)操作简单,有13条控制指令。(7)采用CMOS工艺,可在电压低至2.4-7.0V时正常工作,功耗仅30W。本设计所用的字符液晶模块CM12232由两块SED1520级连驱动,其中一个工作在主工作方式下,另一个工作在从方式下,主工作方式SED1520负责上半屏16行的驱动和左半屏的61列驱动,从工作方式的SED1520则负责下半屏16行的驱动和

10、右半屏的61列驱动,使能信号E1、E2用来区分具体控制的是那一片SED1520,其系统的硬件连接图如图1所示。由图1可见,该系统的硬件部分连接十分简单,其中FPGA部分没画出,而液晶与FPGA的接口则可直接以网表的形式给出,将它们直接与FPGA的普通I/O引脚相连即可。系统的软件接口实现具体实现的重点是如何从存放有字符的ROM块中读出数据,并按照液晶的时序正确的写入,在介绍具体实现方法前,首先要熟悉SED1520的指令。SED1520的控制指令表第四章 设计过程4.1 初始化部分的状态机设计根据字符模块初始化的流程图:图7 LCD初始化流程图4.2 时钟模块的设计由于FPGA开发板上自带的晶振

11、频率为50MHZ,而所需要的时钟频率则需要小于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; bc

12、lk:out std_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;图8 时钟模块图9 系统的仿真图形4.3 中文字符部分的数据模块中文部分由于VHDL中无法识别中文,使用时需要参照中文字符表,将需要的字符所对应的数

13、据输入RAM,然后通过和英文模块不重复的符号来实现对其的调用。如 “江”这个中文字符,所对应国标码”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:=1

14、000);Port(clk, rst: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

15、) ;constant data_buf : 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

16、_edge(clk)then cnt:=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_cn

17、t:integer range 0 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 c

18、nt1_1:=cnt1_1+1; if 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

19、;current_s if cnt1_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 Behavio

20、ral;图10 显示文字的模块图11 系统的仿真图形4.4 图形的数据模块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,C

21、K :STD_LOGIC ;SIGNAL CNT1,CNT2: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 T

22、Vb:INTEGER :=2;CONSTANT TVF:INTEGER :=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 cnt=00 then rgb=111111111111111111111111; elsif cnt=01then rgb

23、=rgbx; elsif cnt=10then rgb=rgby; else rgb=000000000000000000000000; end if;end process; process(hs_cnt,vs_cnt) begin if hs_cnt102 then rgbx=000000000000000000000000; elsif hs_cnt162 then rgbx=000000000000000011111111; elsif hs_cnt222 then rgbx=111111110000000000000000; elsif hs_cnt282 then rgbx=000

24、000001111111111111111; elsif hs_cnt342 then rgbx=000000001111111100000000; elsif hs_cnt402 then rgbx=111111110000000011111111; elsif hs_cnt462 then rgbx=111111111111111100000000; elsif hs_cnt522 then rgbx=111111111111111111111111; else rgbx=101010101010101010101010; end if; if vs_cnt43 then rgby=000

25、000000000000000000000; elsif vs_cnt75 then rgby=000000000000000011111111; elsif vs_cnt107 then rgby=111111110000000000000000; elsif vs_cnt139 then rgby=000000001111111111111111; elsif vs_cnt171 then rgby=000000001111111100000000; elsif vs_cnt203 then rgby=111111110000000011111111; elsif vs_cnt235 th

26、en rgby=111111111111111100000000; elsif vs_cnt267 then rgby=111111111111111111111111; else rgby=101010101010101010101010; end if; end process; CLOCK:PROCESS(CLK) BEGIN 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

27、 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=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 CNT

28、2=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; ELSIF HS_CNT=THp+THb+THd+THf-1 THEN-524 HS_CNT=0;Hsync=0; IF VS_CNT=TVp+TVb+TVd+TVf-1 THEN-285 VS VS_CNT=0;Vsync=0;DISP=1; E

29、LSIF VS_CNT=TVp-1 THEN Vsync=1;VS_CNT=VS_CNT+1; ELSE VS_CNT=VS_CNT+1; END IF; ELSE HS_CNT=HS_CNT+1;END IF;END IF; END PROCESS; END WX;图12 显示图像模块图13 系统的仿真图形第5章 实习总结23这次实习是我们第一次做课程设计,对我们来说很重要。它使我们的理论知识与实践充分地结合,还具有较强的实践动手能力,从实践中发现问题,分析问题和解决问题,为将来的实际工作打下一定的基础。 本次实习中资料的搜集和整理尤其关键,它考察我们对信息的提取能力,从而为提出设计方案做准

30、备。在设计过程中好多电路图看起来简单,但要我们编译却非常难,这时就要看我们对理论知识的应用。这次的实习使我意识到理论知识和实践能力的不足,所以,在以后的学习生活中,我需要更努力地读书和实践。 在这三个星期,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。参考文献1 潘松,黄继业。EDA技术与VHDL(第二版),清华大学出版社。2 刘韬,楼兴华。FPGA数字电子系统设计与开发实例导航,人民邮电出版社。3 周立功等编著。EDA实验与实践,北京航空航天大学出版社。4 王彦 主编。基于FPGA的工程设计与应用,西安电子科技大学出版社。致谢在本次设计中,我想首先要感谢王忠锋老师,因为在课程设计还没开始前,老师就叫我们早做准备,熟悉Quartus的使用方法;在设计过程要给我们一一解决难题,使我们的课程设计能够较成功地完成。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1