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

上传人:b****6 文档编号:16478381 上传时间:2023-07-13 格式:DOCX 页数:38 大小:508.49KB
下载 相关 举报
液晶显示屏LCD显示接口设计课程设计.docx_第1页
第1页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第2页
第2页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第3页
第3页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第4页
第4页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第5页
第5页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第6页
第6页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第7页
第7页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第8页
第8页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第9页
第9页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第10页
第10页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第11页
第11页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第12页
第12页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第13页
第13页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第14页
第14页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第15页
第15页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第16页
第16页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第17页
第17页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第18页
第18页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第19页
第19页 / 共38页
液晶显示屏LCD显示接口设计课程设计.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

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

 

SOPC/EDA综合课程设计报告

 

设计题目:

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

设计者:

学号:

班级:

自动化091班

指导老师:

完成时间:

2012年1月6日

设计报告

综合测试

 

总评

格式

(10)

内容

(40)

图表

(10)

答辩

(20)

平时

(20)

摘要

如今,科技进步给我们的生活带来了很大的变化。

液晶显示设备越来越多,各种各样的液晶显示产品走进我们生活中。

从手机到电脑显示器,从掌上电脑到平板电视。

无处没有液晶显示技术的身影。

液晶显示器由于具有低压、微功耗、显示信息量大、体积小等特点,在移动通信终端、便携计算机、GPS卫星定位系统等领域有广泛用途,成为使用量最大的显示器件。

液晶显示控制器作为液晶驱动电路的核心部件通常由集成电路组成,通过为液晶显示系统提供时序信号和显示数据来实现液晶显示。

本设计是一种基于FPGA(现场可编程门阵列)的液晶显示控制器。

与集成电路控制器相比,FPGA更加灵活,可以针对小同的液晶显示模块更改时序信号和显示数据。

FPGA的集成度、复杂度和面积优势使得其日益成为一种颇具吸引力的高性价比ASIC替代方案。

本文选用GW48系列的SOPC/EDA实验开发系统,利用硬件描述语言VHDL设计了液晶显示拧制器,实现了替代专用集成电路驱动控制LCD的作用。

 

关键词:

EDA(电子设计自动化),VHDL(硬件描述语言),液晶控制器接口设计,LCD(液晶显示器)。

 

第1章预备知识

1.112864点阵型液晶显示屏的基本原理与使用方法

1.1.112864点阵型LCD简介

图112864实物图

12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。

可完成图形显示,也可以显示8×4个(16×16点阵)汉字。

实物如上图所示。

引脚号

引脚名称

方向

功能说明

1

VSS

----

模块的电源地

2

VDD

----

模块的电源正端

3

V0

----

LCD驱动电压输入端

4

RS(CS)

H/L

并行的指令/数据选择信号;串行的片选信号

5

R/W(SID)

H/L

并行的读写选择信号;串行的数据口

6

E(CLK)

H/L

并行的使能信号;串行的同步时钟

7

DB0

H/L

数据0

8

DB1

H/L

数据1

9

DB2

H/L

数据2

10

DB3

H/L

数据3

11

DB4

H/L

数据4

12

DB5

H/L

数据5

13

DB6

H/L

数据6

14

DB7

H/L

数据7

15

PSB

H/L

并/串行接口选择:

H-并行;L-串行

16

NC

空脚

17

/RET

H/L

复位低电平有效

18

NC

空脚

19

LED_A

-----

背光源正极(LED+5V)

20

LED_K

-----

背光源负极(LED-OV)

表112864引脚说明

逻辑工作电压(VDD):

4.5~5.5V

电源地(GND):

0V

工作温度(Ta):

0~60℃(常温)/-20~75℃(宽温)

1.1.2点阵LCD的显示原理

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

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

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

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

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

这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如英文的'A'在字模的记载方式如图2所示:

图2“A”字模图

而中文的“你”在字模中的记载却如图3所示:

图3“你”字模图

1.1.3字模提取软件的应用

对于我们需要显示的一两个字符来说,用手工的方法去取模是可以的,但是随着我们需要显示的字符的数量增加以及多样化,手动取模就显的更吃力,效率更加底下,所以我们必须一个取模工具,网上流传的一个字模提取工具可以让我们高效的得到我们需要显示的字符的代码。

随着电子行业的发展,很多研发机构把汉字以代码的形式固化在液晶显示屏中,形成了带字库的液晶显示屏,方便了我们使用液晶显示屏,但是对于复杂多变的图形,显得就无能为力了,只能用取模软件去取得显示代码,因此学会自摸软件的使用,会使我们的工作效率事半功倍的。

软件界面如下:

图4字模提取软件

 

1.1.412864液晶显示模块接口时序

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

1、8位并行连接时序

图5MPU写资料到模块

图6MPU从模块读出资料

 

2、串行连接时序图

图7

1.1.5有关FPGA的知识

图8FPGA芯片

FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在可编程阵列逻辑PAL(ProgrammableArrayLogic)、门阵列逻辑GAL(GateArrayLogic)、可编程逻辑器件PLD(ProgrammableLogicDevice)等可编程器件的基础上进一步发展的产物。

它是作为专用集成电路ASIC(ApplicationSpecificIntegratedCircuit)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

FPGA能完成任何数字器件的功能,上至高性能CPU,下至简单的74系列电路,都可以用FPGA来实现。

FPGA如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由设计一个数字系统。

通过软件仿真,我们可以事先验证设计的正确性。

在PCB完成以后,还可以利用FPGA的在线修改能力,随时修改设计而不必改动硬件电路。

使用FPGA来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可*性。

PLD的这些优点使得PLD技术在90年代以后得到飞速的发展,同时也大大推动了电子设计自动化EDA(ElectronicDesignAutomatic)软件和硬件描述语言VHDL(Very-High-SpeedIntegratedCircuitHardwareDescription)的进步。

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屏),至少需要显示“江西理工大学应用科学

学院课程设计”字样,另外需要显示班级姓名和日期。

其它功能可自行增加!

(型号GW48-PK2)

 

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

2.1元件原理图

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

图10液晶显示屏

2.212864指令系统

2.2.112864用户指令集

指令表1:

(RE=0:

基本指令集)

指令

指令码

说明

执行时间(540KHZ)

RS

RW

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

清除显示

0

0

0

0

0

0

0

0

0

1

将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H”

4.6ms

地址归位

0

0

0

0

0

0

0

0

1

X

设定DDRAM的地址计数器(AC)到“00H”,并且将游标移到开头原点位置;这个指令并不改变DDRAM的内容

4.6ms

进入点

设定

0

0

0

0

0

0

0

1

I/D

S

指定在资料的读取与写入时,设定游标移动方向及指定显示的移位

72us

显示状态

开/关

0

0

0

0

0

0

1

D

C

B

D=1:

整体显示ON

C=1:

游标ON

B=1:

游标位置ON

72us

游标或显示移位控制

0

0

0

0

0

1

S/C

R/L

X

X

设定游标的移动与显示的移位控制位元;这个指令并不改变DDRAM的内容

72us

功能设定

0

0

0

0

1

DL

X

0

RE

X

X

DL=1(必须设为1)

RE=1:

扩充指令集动作

RE=0:

基本指令集动作

72us

设定CGRAM地址

0

0

0

1

AC5

AC4

AC3

AC2

AC1

AC0

设定CGRAM地址到地址计数器(AC)

72us

设定DDRAM

地址

0

0

1

AC6

AC5

AC4

AC3

AC2

AC1

AC0

设定DDRAM地址到地址计数器(AC)

72us

读取忙碌标志(BF)和地址

0

1

BF

AC6

AC5

AC4

AC3

AC2

AC1

AC0

读取忙碌标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值

0us

写资料到RAM

1

0

D7

D6

D5

D4

D3

D2

D1

D0

写入资料到内部的RAM(DDRAM/CGRAM/IRAM/GDRAM)

72us

读出RAM的值

1

1

D7

D6

D5

D4

D3

D2

D1

D0

从内部RAM读取资料(DDRAM/CGRAM/IRAM/GDRAM)

72us

表2

指令表—2:

(RE=1:

扩充指令集)

指令

指令码

说明

执行时间(540KHZ)

RS

RW

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

待命模式

0

0

0

0

0

0

0

0

0

1

将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H”

72us

卷动地址或IRAM地址选择

0

0

0

0

0

0

0

0

1

SR

SR=1:

允许输入垂直卷动地址

SR=0:

允许输入IRAM地址

72us

反白选择

0

0

0

0

0

0

0

1

R1

R0

选择4行中的任一行作反白显示,并可决定反白与否

72us

睡眠模式

0

0

0

0

0

0

1

SL

X

X

SL=1:

脱离睡眠模式

SL=0:

进入睡眠模式

72us

扩充功能设定

0

0

0

0

1

1

X

1

RE

G

0

RE=1:

扩充指令集动作

RE=0:

基本指令集动作

G=1:

绘图显示ON

G=0:

绘图显示OFF

72us

设定IRAM地址或卷动地址

0

0

0

1

AC5

AC4

AC3

AC2

AC1

AC0

SR=1:

AC5—AC0为垂直卷动地址

SR=0:

AC3—AC0为ICONIRAM地址

72us

设定绘图RAM地址

0

0

1

AC6

AC5

AC4

AC3

AC2

AC1

AC0

设定CGRAM地址到地址计数器(AC)

72us

表3

2.2.2FPGA与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(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的控制指令表:

指令名称

控制信号

控制代码

A0R/W

D7D6D5D4D3D2D1D0

复位

00

11100010

显示开关设置

00

1010111Di

地址排序设置

00

1010000A

体闲状态设置

00

1010010S

占空比设置

00

1010100Du

显示起始行设置

00

110L4L3L2L1L0

页面地址设置

00

101110P1P0

列地址设置

00

0C6C5C4C3C2C1C0

启动改写方式

00

11100000

结束改写方式

00

11101110

读取状态字

01

BUSYADCON/OFFRESET0000

写显示数据

10

数据

读显示数据

11

数据

表4

图12系统硬件连接图

第四章设计过程

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

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

72us

72us

72us

72us

4.6ms

4.6ms

72us

 

图13LCD初始化流程图

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;

 

图14时钟模块

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(0to43)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"b0",x"e0",x"bc",x"b6",

x"d0",x"d5",x"c3",x"fb",

x"c8",x"d5",x"c6",x"da");

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

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2