




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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列驱动,从工
10、作方式的sed1520则负责下半屏16行的驱动和右半屏的61列驱动,使能信号e1、e2用来区分具体控制的是那一片sed1520,其系统的硬件连接图如图1所示。由图1可见,该系统的硬件部分连接十分简单,其中fpga部分没画出,而液晶与fpga的接口则可直接以网表的形式给出,将它们直接与fpga的普通i/o引脚相连即可。系统的软件接口实现具体实现的重点是如何从存放有字符的rom块中读出数据,并按照液晶的时序正确的写入,在介绍具体实现方法前,首先要熟悉sed1520的指令。sed1520的控制指令表
11、60; 第四章 设计过程4.1 初始化部分的状态机设计根据字符模块初始化的流程图:图7 lcd初始化流程图4.2 时钟模块的设计由于fpga开发板上自带的晶振频率为50mhz,而所需要的时钟频率则需要小于13.9k。因此需要一个分频器对其进行分频。这里采用简单的计数器对其进行分频,通过分频器将外部输入的32 mhz的信号分成频率为153600hz的信号。在分频之后由于时钟信号需要同时控制lcd模块以及fpga的模块,因此需要编写一个程序,使得两者之间同步
12、。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 std_logic);end baud;architecture behavioral of baud isbeginprocess(clk,resetb)variable cnt:integer;beginif resetb='1' thencnt:=0;bclk&l
13、t;='0'elsif rising_edge(clk)then if cnt>=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中无法识别中文,使用时需要参照中文字符表,将需要的字符所对应的数据输入ram,然后通过和英文模块不重复的符号来实现对其的调用。如 “江”这个中文字符,所对应国标码”bdad”,因此在函数
14、部分应为:constant data_buf : data_buffer := (x"bd",x"ad");本程序驱动液晶显示“江西理工大学应用科学学院课程设计” “班级”“姓名”“日期”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:in std_logic;rw, r
15、s, 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_buf : data_buffer :=
16、 (x"bd",x"ad",x"ce",x"f7",x"c0",x"ed",x"b9",x"a4", x"b4",x"f3",x"d1",x"a7",x"d3",x"a6",x"d3",x"c3",x"bf",x"c6",x"d1
17、",x"a7", x"d1",x"a7",x"d4",x"ba",x"bf",x"ce",x"b3",x"cc",x"c9",x"e8",x"bc",x"c6", x"b0",x"e0",x"bc",x"b6", x"d0",x&
18、quot;d5",x"c3",x"fb", x"c8",x"d5",x"c6",x"da"); beginprocess(clk)variable cnt:integer range 0 to divide_to_100k;beginif rising_edge(clk)then cnt:=cnt+1;if cnt=divide_to_100k then cnt:=0;end if;if cnt<divide_to_100k/2 then clk_100k&l
19、t;= '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 to 48; beginif rising_edge(clk_100k)thenif rst = '1'
20、then current_s <= s0 ; cnt1 := 0 ;cnt1_1 := 0;code_cnt := 0 ; data_cnt := 0 ; lcd_rst <= '0'else case current_s iswhen s0=> rw<= '1'rs <= '1'e <= '1'cnt1:=cnt1+1;if cnt1 < 250 then lcd_rst <= '0'elsif cnt1 < 500 then lcd_rst <=
21、39;1'elsif cnt1=500 then lcd_rst <= '1'cnt1 := 0;current_s <= s1;end if;when s1=>cnt1_1:=cnt1_1+1; if cnt1_1 < 1*3 then e <= '1'rs <= '0'rw <= '0'elsif cnt1_1<2*3 then lcd_data<=x"0c"elsif cnt1_1<10*3 then e<='0'e
22、lsif cnt1_1=10*3 then cnt1_1:=0;current_s<=s2;end if;when s2=>cnt1_1:=cnt1_1+1; if cnt1_1<1*3 then e<='1'rs<='0'rw<='0'elsif cnt1_1<2*3 then lcd_data<=x"80"elsif cnt1_1<10*3 then e<='0'elsif cnt1_1=10*3 then cnt1_1:=0;current_s&
23、lt;=s3;end if;when s3=> if cnt1_1<1*3 then e<='1'rs<='1'rw<='0'elsif cnt1_1<2*3 then lcd_data<=data_buf(data_cnt);elsif cnt1_1=2*3 then data_cnt:= data_cnt+1;elsif cnt1_1<100 then e<='0'end if;cnt1_1:=cnt1+1;if cnt1_1=100 then cnt1_1:=0;if d
24、ata_cnt=16 then current_s<=s4;data_cnt:=0;end if;end if;when others=>current_s<=s0;end case;end if;end if;end process;end behavioral;图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;
25、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: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:
26、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:integer :=2;constant thd:integer :=480;constant tvd:integer :=272;beginprocess(key3) begin if key3'event and key3='1' then
27、 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="01"then rgb<=rgbx; elsif cnt="10"then rgb<=rgby; else rgb<="0000
28、00000000000000000000" end if;end process; process(hs_cnt,vs_cnt) begin if hs_cnt<102 then rgbx<="000000000000000000000000" elsif hs_cnt<162 then rgbx<="000000000000000011111111" elsif hs_cnt<222 then rgbx<="111111110000000000000000" elsif hs_cnt&l
29、t;282 then rgbx<="000000001111111111111111" elsif hs_cnt<342 then rgbx<="000000001111111100000000" elsif hs_cnt<402 then rgbx<="111111110000000011111111" elsif hs_cnt<462 then rgbx<="111111111111111100000000" elsif hs_cnt<522 then rgbx&
30、lt;="111111111111111111111111" else rgbx<="101010101010101010101010" end if; if vs_cnt<43 then rgby<="000000000000000000000000" elsif vs_cnt<75 then rgby<="000000000000000011111111" elsif vs_cnt<107 then rgby<="11111111000000000000000
31、0" elsif vs_cnt<139 then rgby<="000000001111111111111111" elsif vs_cnt<171 then rgby<="000000001111111100000000" elsif vs_cnt<203 then rgby<="111111110000000011111111" elsif vs_cnt<235 then rgby<="111111111111111100000000" elsif vs
32、_cnt<267 then rgby<="111111111111111111111111" else rgby<="101010101010101010101010" end if; end process; clock:process(clk) begin if clk'event and clk='1'then if cnt1=2 then cnt1<="000" else cnt1<=cnt1+1;end if; end if; end process; process (
33、clk) begin if clk'event and clk='0' then if cnt2=2 then cnt2<="000" else cnt2<=cnt2+1;end if; end if; end process; process(clk) begin if clk'event 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 clk'event and clk='0'then 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_t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 6《比例尺》大单元整体设计(教学设计)-2024-2025学年六年级上册数学冀教版
- 2023二年级数学上册 七 分一分与除法第4课时 分香蕉配套教学设计 北师大版
- 2023三年级数学上册 二 观察物体第1课时 看一看(一)教学设计 北师大版
- 毕业论文课题答辩汇报
- 7 中华民族一家亲 第一课时 (教学设计)-部编版道德与法治五年级上册
- Unit5 Drink Lesson 1(教学设计)-2023-2024学年人教新起点版英语一年级下册
- 胰体尾脾切除护理
- Unit 3 Lesson 2教学设计 2024-2025学年冀教版(2024)七年级英语上册
- 2024秋九年级化学上册 第三单元 物质构成的奥秘 课题2 原子的结构第2课时 原子核外电子的排布 离子教学设计(新版)新人教版
- 6《骑鹅旅行记(节选)》教学设计-2023-2024学年统编版语文六年级下册
- 安徽省蚌埠市2025届高三第二次教学质量检查考试英语试卷(含答案)
- 金氏五行升降中医方集
- 小儿常见皮疹识别与护理
- 补充协议-房屋租赁承租方变更
- 2025年山西经贸职业学院单招职业技能考试题库新版
- 某连锁药店公司发展战略
- 2025年河南工业和信息化职业学院单招职业技能测试题库及答案1套
- 跌倒护理RCA案例汇报
- 利用DeepSeek优化水资源管理
- DeepSeek人工智能语言模型探索AI世界科普课件
- 《迪拜帆船酒店》课件
评论
0/150
提交评论