SOPCEDA综合课程设计报告液晶显示屏LCD显示接口设计.docx

上传人:b****5 文档编号:7460358 上传时间:2023-01-24 格式:DOCX 页数:24 大小:950.44KB
下载 相关 举报
SOPCEDA综合课程设计报告液晶显示屏LCD显示接口设计.docx_第1页
第1页 / 共24页
SOPCEDA综合课程设计报告液晶显示屏LCD显示接口设计.docx_第2页
第2页 / 共24页
SOPCEDA综合课程设计报告液晶显示屏LCD显示接口设计.docx_第3页
第3页 / 共24页
SOPCEDA综合课程设计报告液晶显示屏LCD显示接口设计.docx_第4页
第4页 / 共24页
SOPCEDA综合课程设计报告液晶显示屏LCD显示接口设计.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

SOPCEDA综合课程设计报告液晶显示屏LCD显示接口设计.docx

《SOPCEDA综合课程设计报告液晶显示屏LCD显示接口设计.docx》由会员分享,可在线阅读,更多相关《SOPCEDA综合课程设计报告液晶显示屏LCD显示接口设计.docx(24页珍藏版)》请在冰豆网上搜索。

SOPCEDA综合课程设计报告液晶显示屏LCD显示接口设计.docx

SOPCEDA综合课程设计报告液晶显示屏LCD显示接口设计

江西理工大学应用科学学院

SOPC/EDA综合课程设计报告

 

设计题目:

液晶显示屏LCD显示接口设计

设计者:

学号:

班级:

指导老师:

时间:

设计报告

综合测试

 

总评

格式

(10)

内容

(40)

图表

(10)

答辩

(20)

平时

(20)

 

目录

第1章预习知识.....................................................1

1.1液晶显示屏的基本原理与使用方法1

1.1.1点阵型LCD简介1

1.1.2点阵LCD的显示原理1

1.1.3液晶显示模块接口时序1

1.2课程设计题目:

液晶显示屏LCD显示接口设计2

1.2.1课程设计目的及基本要求2

1.3设计要求3

第2章设计内容提要及说明...........................................4

2.1元件原理图4

2.212864指令系统7

第3章系统硬件设计................................................10

第4章设计过程....................................................12

第5章实习总结…………………………………………………………………21

致谢…………………………………………………………………………………22

参考文献……………………………………………………………………………23

第1章预习知识

1.1液晶显示屏的基本原理与使用方法

1.1.1点阵型LCD简介

LCD液晶显示器是LiquidCrystalDisplay的简称,LCD的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。

比CRT要好的多,但是价钱较其它显示器贵。

1.1.2点阵LCD的显示原理

在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。

对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。

而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。

而剩下的低128位则留给英文字符使用,即英文的内码。

那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?

这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状。

1.1.3液晶显示模块接口时序

模块有并行和串行两种连接方法(时序如下):

1、8位并行连接时序

图5MPU写资料到模块

 

图6MPU从模块读出资料

2、串行连接时序图

图7串行连接时序图

1.2课程设计题目:

液晶显示屏LCD显示接口设计

1.2.1课程设计目的及基本要求

液晶显示屏已广泛应用于人们的日常生活中,在各种领域中起到越来越重要的位置。

因此,掌握和控制液晶显示屏是非常重要的技能。

进行课程设计是加强实践,提高动手能力的重要环节,通过课程设计,同时在软件编程,排错调试,相关仪器设备的使用技术等方面得到全面的提高。

掌握液晶显示屏实现的相关方法,为将来的实际工作打下一定的基础。

本课程设计是以SED1520控制器为基础,基本要求是:

1、掌握SED1520控制器基本结构

2、掌握液晶显示屏的工作原理及使用方法

3、掌握用VHDL语言编写程序

4、掌握QuartusII的使用方法

5、掌握GW48系列SOPC/EDA实验开发系统:

a:

闲置不用GW48系统时,必须关闭电源,拔下电源插头!

b:

在实验中,当选中某种模式后,要按一下右侧的复位键,以使系统进入该结构模式工作。

c:

换目标芯片时要特别注意,不要插反或插错,也不要带电插拔,确信插对后才能开电源。

其它接口都可带电插拔。

请特别注意,尽可能不要随意插拔适配板,及实验系统上的其他芯片。

d:

并行口工作模式设置在“EPP”模式!

e:

跳线座“SPS”默认向下短路(PIO48);右侧开关默认拨向“TOMCU”。

f:

对于GW48-PK2系统,左下角拨码开关除第4档“DS8使能”向下拨(8数码管显示)外,其余皆默认向上

1.3课程设计题目内容要求

使用FPGA设计一个液晶显示屏LCD显示的控制器,使其能够显示文字、数字或图形(根据需要选择LCD屏),至少需要显示“江西理工大学应用科学学院课程设计”字样,另外需要显示班级姓名和日期。

其它功能可自行增加!

 

第2章设计内容提要及说明

2.1元件原理图

图1下载/编程接口电路图

图2液晶显示屏

 

2.1.1模块引脚说明

表1模块引脚

逻辑工作电压(VDD):

3.3~5.5V

电源地(GND):

0V

工作温度(Ta):

0~+50℃(常温)/-20~70℃(宽温)

2.1.2接口时序

模块有并行和串行两种连接方法(时序如下):

a)8位并行连接时序图

图3MPU写资料到模块

图4MPU从模块读出资料

a)串行连接时序图

图5串行时序图

表2时钟周期表

串行数据传送共分三个字节完成:

第一字节:

串口控制——格式11111ABC

A为数据传送方向控制:

H表示数据从LCD到MCU,L表示数据从MCU到LCD。

B为数据类型选择:

H表示数据室显示数据,L表示数据室控制指令。

C固定为0。

第二字节:

(并行)8位数据的高4位——格式DDDD0000

第三字节:

(并行)8位数据的低4位——格式DDDD0000

串行接口时序参数:

(测试条件:

T=25℃VDD=4.5V)

2.212864指令系统

2.2.1用户指令集

指令表1:

(RE=0:

基本指令集)

表3基本指令表

指令表2:

(RE=1:

扩充指令集)

表4扩充指令表

 

2.2.2FPGA与LCD连接方式

FPGA与LCD连接方式:

(仅PK2型含此)。

由实验电路结构图COM可知,默认情况下,FPGA是通过89C51单片机控制LCD液晶显示的,但若FPGA中有Nios嵌入式系统,则能使FPGA直接控制LCD显示。

方法是拔去此单片机(在右下侧),用连线将座JP22/JP21(LCD显示器引脚信号)各信号分别与座JP19/JP20(FPGA引脚信号)相连接即可。

图6实验电路结构图COM

第3章系统硬件设计

本方案采用的FPGA为Alter公司的ACEX1K30芯片,它可提供系统的时钟及读写控制,ACEX系列的FPGA由逻辑数组块LAB(Logicarrayblock)、嵌入式数组块EAB(embeddedarrayblock)、快速互联以及IO单元构成,每个逻辑数组块包含8个逻辑单元LE(logicelement)和一个局部互联[1]。

每个逻辑单元则由一个4输入查找表(LUT)、一个可编程触发器、快速进位链、级连链组成,多个LAB和多个EAB则可通过快速通道互相连接。

EAB是ACEX系列器件在结构设计上的一个重要部件,他是输入埠和输出埠都带有触发器的一种灵活的RAM块,其主要功能是实现一些规模不太大的FIFO、ROM、RAM和双埠RAM等。

在本液晶显示接口电路中,EAB主要用宏功能模块实现片上ROM。

它通过调用FPGA上的EAB资源来实现汉字的显示和字符的存储,并根据控制信号产生的地址值从ROM中读取字符值,然后送LCD显示器进行显示。

由于所用的图形点阵液晶块内置有SED1520控制器,所以,其电路特性实际上就是SED1520的电路特性。

SED1520的主要特性如下:

(1)具有液晶显示行驱动器,具有16路行驱动输出,并可级联实现32行驱动。

(2)具有液晶显示列驱动器,共有61路列驱动输出。

(3)内置时序发生器,其占空比可设置为1/16和1/32两种。

(4)内藏显示内存,显示内存内的数据可直接显示,"1"为显示,"0"为不显示。

(5)接口总线时序可适配8080系列或M6800系列,并可直接与计算机接口。

(6)操作简单,有13条控制指令。

(7)采用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的控制指令表

                     

 

第四章设计过程

4.1初始化部分的状态机设计

根据字符模块初始化的流程图:

图1LCD初始化流程图

4.2时钟模块的设计

由于FPGA开发板上自带的晶振频率为50MHZ,而所需要的时钟频率则需要小于13.9K。

因此需要一个分频器对其进行分频。

这里采用简单的计数器对其进行分频,通过分频器将外部输入的32MHZ的信号分成频率为153600HZ的信号。

在分频之后由于时钟信号需要同时控制LCD模块以及FPGA的模块,因此需要编写一个程序,使得两者之间同步。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYbaudIS

port(clk,resetb:

instd_logic;

bclk:

outstd_logic);

endbaud;

architecturebehavioralofbaudis

begin

process(clk,resetb)

variablecnt:

integer;

begin

ifresetb='1'then

cnt:

=0;bclk<='0';

elsifrising_edge(clk)then

ifcnt>=208thencnt:

=0;bclk<='1';

elsecnt:

=cnt+1;bclk<='0';

endif;

endif;

endprocess;

endbehavioral;

图2时钟模块

图3系统的仿真图形

4.3中文字符部分的数据模块

中文部分由于VHDL中无法识别中文,使用时需要参照中文字符表,将需要的字符所对应的数据输入RAM,然后通过和英文模块不重复的符号来实现对其的调用。

如“江”这个中文字符,所对应国标码”bdad”,因此在函数部分应为:

constantdata_buf:

data_buffer:

=(x"bd",x"ad");

本程序驱动液晶显示“江西理工大学应用科学学院课程设计”“班级”“姓名”“日期”

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entitylcdis

generic(divide_to_100k:

integer:

=1000);

port(clk,rst:

instd_logic;

rw,rs,e,lcd_rst:

outstd_logic;

lcd_data:

outstd_logic_vector(7downto0));

endlcd;

architecturebehavioraloflcdis

signalclk_100k:

std_logic;

typestateis(s0,s1,s2,s3,s4);

signalcurrent_s:

state;

typedata_bufferisarray(0to65)ofstd_logic_vector(7downto0);

constantdata_buf:

data_buffer:

=(

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",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"D7",x"D4",x"B6",x"AF",x"BB",x"AF",

x"A3",x"B1",x"A3",x"B0",x"A3",x"B2",

x"D7",x"A4",x"D0",x"A1",x"C1",x"FA",

x"A3",x"B2",x"A3",x"B0",x"A3",x"B1",x"A3",x"B3",x"A3",x"AE",x"A3",x"B1",x"A3",x"AE",x"A3",x"B3");

begin

process(clk)

variablecnt:

integerrange0todivide_to_100k;

begin

ifrising_edge(clk)thencnt:

=cnt+1;

ifcnt=divide_to_100kthencnt:

=0;

endif;

ifcnt

elseclk_100k<='1';

endif;

endif;

endprocess;

process(clk_100k)

variablecnt1:

integerrange0to500;

variablecnt1_1:

integerrange0to100;

variablecode_cnt:

integerrange0to13;

variabledata_cnt:

integerrange0to48;

begin

ifrising_edge(clk_100k)then

ifrst='1'thencurrent_s<=s0;cnt1:

=0;cnt1_1:

=0;

code_cnt:

=0;data_cnt:

=0;lcd_rst<='0';

elsecasecurrent_sis

whens0=>rw<='1';rs<='1';e<='1';cnt1:

=cnt1+1;

ifcnt1<250thenlcd_rst<='0';

elsifcnt1<500thenlcd_rst<='1';

elsifcnt1=500then

lcd_rst<='1';cnt1:

=0;current_s<=s1;

endif;

whens1=>cnt1_1:

=cnt1_1+1;

ifcnt1_1<1*3thene<='1';rs<='0';rw<='0';

elsifcnt1_1<2*3thenlcd_data<=x"0c";

elsifcnt1_1<10*3thene<='0';

elsifcnt1_1=10*3thencnt1_1:

=0;current_s<=s2;

endif;

whens2=>cnt1_1:

=cnt1_1+1;

ifcnt1_1<1*3thene<='1';rs<='0';rw<='0';

elsifcnt1_1<2*3thenlcd_data<=x"80";

elsifcnt1_1<10*3thene<='0';

elsifcnt1_1=10*3thencnt1_1:

=0;current_s<=s3;

endif;

whens3=>

ifcnt1_1<1*3thene<='1';rs<='1';rw<='0';

elsifcnt1_1<2*3thenlcd_data<=data_buf(data_cnt);

elsifcnt1_1=2*3thendata_cnt:

=data_cnt+1;

elsifcnt1_1<100thene<='0';

endif;

cnt1_1:

=cnt1+1;

ifcnt1_1=100thencnt1_1:

=0;

ifdata_cnt=16thencurrent_s<=s4;data_cnt:

=0;

endif;

endif;

whenothers=>current_s<=s0;

endcase;

endif;

endif;

endprocess;

endBehavioral;

图4显示文字的模块

图5系统的仿真图形

4.4图形的数据模块

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYlcdlinehoziIS

PORT(CLK,key3:

INSTD_LOGIC;

CK0,DISP,Hsync,Vsync:

OUTSTD_LOGIC;

rgb:

OUTSTD_LOGIC_VECTOR(0TO23)

);

END;

ARCHITECTUREWXOFlcdlinehoziIS

SIGNALCLK_TEMP1,CLK_TEMP2,CK:

STD_LOGIC;

SIGNALCNT1,CNT2:

STD_LOGIC_VECTOR(2DOWNTO0);

signalcnt:

std_logic_vector(1downto0);

SIGNALHS_CNT,VS_CNT:

INTEGERRANGE0TO525;

signalrgbx,rgby:

STD_LOGIC_VECTOR(0TO23);

CONSTANTTHp:

INTEGER:

=41;

CONSTANTTHb:

INTEGER:

=2;

CONSTANTTHf:

INTEGER:

=2;

CONSTANTTVp:

INTEGER:

=10;

CONSTANTTVb:

INTEGER:

=2;

CONSTANTTVF:

INTEGER:

=2;

CONSTANTTHd:

INTEGER:

=480;

CONSTANTTVd:

INTEGER:

=272;

BEGIN

PROCESS(key3)

BEGIN

ifkey3'eventandkey3='1'then

ifcnt="10"thencnt<="00";

elsecnt<=cnt+1;endif;

endif;

endprocess;

process(cnt)

begin

ifcnt="00"thenrgb<="111111111111111111111111";

elsifcnt="01"thenrgb<=rgbx;

elsifcnt="10"thenrgb<=rgby;

elsergb<="000000000000000000000000";

endif;endprocess;

process(hs_cnt,vs_cnt)

begin

ifhs_cnt<102thenrgbx<="000000000000000000000000";

elsifhs_cnt<162thenrgbx<="000000000000000011111111";

elsifhs_cnt<222thenrgbx<="111111110000000000000000";

elsifhs_cnt<282thenrgbx<="000000001111111111111111";

elsifhs_cnt<342thenrgbx<="000000001111111100000000";

elsifhs_cnt<402thenrgbx<="111111110000000011111111";

elsifhs_cnt<462thenrgbx<="111111111111111100000000";

elsifhs_cnt<522thenrgbx<="111111111111111111111111";

elsergbx<="101010101010101010101010";

endif;

ifvs_cnt<43thenrgby<="000000000000000000000000";

elsifvs_cnt<75thenrgby<="000000000000000011111111";

elsifvs_cnt<107thenrgby<="111111110000000000000000";

elsifvs_cnt<139thenrgby<="000000001111111111111111";

elsifvs_cnt<171thenrgby<="000000001111111100000000";

elsifvs_cnt<203thenrgby<="111111110000000011111111";

elsifvs_cnt<235thenrgby<="111111111111111100000000";

elsifvs_cnt<267thenrgby<="111111111111111111111111";

elsergby<="101010101010101010101010";

endif;

endprocess;

CLOCK:

PROCESS(CLK)

BEGIN

IFCLK'EVENTANDCLK='1'THEN

IFCNT1=2THENCNT1<="000";

ELSECNT1<=CNT1+1;ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CLK)

BEGIN

IFCLK'EVENTANDCLK='0'THEN

IFCNT2=2THENCNT2<="000";

ELSEC

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

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1