微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 利用FPGA实现外设通信接口之: 利用FPGA实现常用显示接口(Display Interface)

利用FPGA实现外设通信接口之: 利用FPGA实现常用显示接口(Display Interface)

时间:06-05 来源:互联网 点击:

10.4利用FPGA实现常用显示接口(DisplayInterface)

10.4.1七段数码显示接口的设计与实现

七段数码管因为价格低廉,使用简单,经常被用来实现一些简单的状态显示功能。七段数码管的标准外观图如图10.16所示。右下角的圆点用Dp来表示,用来实现小数点的显示。

七段数码管经常用来显示十进制或十六进制的数,所以在数据显示之前,首先要进行二进制到十进制或者十六进制的转换。将它们转换成十进制的或是十六进制的数。

七段数码管分为共阴和共阳两种类型。比如,红色飓风开发板使用的是共阴类型的数码管,信号是高电平有效。十六进制数据在显示的时候对应的各段输出对应关系如表10.2所示。

表10.2 十六进制数据与输出的映射关系

数据

a

b

c

d

e

f

g

Dp

0

1

1

1

1

1

1

0

0

1

0

1

1

0

0

0

0

0

2

1

1

0

1

1

0

1

0

3

1

1

1

1

0

0

1

0

4

0

1

1

0

0

1

1

0

5

1

0

1

1

0

1

1

0

6

1

0

1

1

1

1

1

0

7

1

1

1

0

0

0

0

0

8

1

1

1

1

1

1

1

0

9

1

1

1

1

0

1

1

0

A

1

1

1

0

1

1

1

0

B

0

0

1

1

1

1

1

0

C

1

0

0

1

1

1

0

0

D

0

1

1

1

1

0

1

0

E

1

0

0

1

1

1

1

0

F

1

0

0

0

1

1

1

0

红色飓风开发板上采用的是4位并联的数码管。4个数码管共用8条数据线,控制线是独立的。如果4个数码管要显示不同的数值,比如显示1234,那么就需要采用一种控制策略。最常用的方法就是动态扫描显示。

动态扫描显示利用了时分的原理和人的视觉暂留效应。例如,一个4位动态扫描数码显示器的显示周期可划分为4个阶段。

阶段1→阶段2→阶段3→阶段4

每个周期只选通一位数据。在周期1显示第一个数码,周期2显示第二个数码。在扫描4个阶段后,又重新按顺序循环。如果扫描的速度足够快,从视觉上看就好像4个数码管同时显示不同的内容。

4位扫描数码管共有4组BCD码(4位)输入线,8根8段译码输出线和4根位选通线。扫描工作中,先从4组BCD数据中选出一组,通过BCD/7段译码器译码后输出。与此同时,3/8译码器产生位选通信号,则在此瞬间,数码管应该为要显示的数值。然后再选出下一组数据译码后输出,位选通信号则相应下移一位,将下一数码管选通输出,如图10.17所示。

图10.17动态扫描原理示意图

10.4.2字符型LCD显示接口的设计与实现

液晶屏(LCD)通常分为点阵型和字符型两种。字符型的液晶屏相对于数码管来说,可以显示更多的内容和字符,人机界面更为友好,而且操作简单,因此得到了广泛的应用。不同厂家的字符型LCD虽然型号不同,但是操作方法基本是一致的。

字符型LCD一般会根据显示字符的数量来确定型号,如1602表示这个液晶可以显示2行字符,每行为16个。红色飓风开发板上采用的字符型LCD的型号就是1602。下面就以1602为例来介绍字符型LCD显示接口的设计方法。

1602型液晶模块采用14针标准接口,各个管脚的定义如表10.3所示。

表10.3 1602型液晶模块的管脚配置表

管脚

符号

说明

1

VSS

器件地

2

VDD

+5V电源

3

V0

对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10kW的电位器调整对比度

4

RS

寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器

5

RW

读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平、RW为高电平时可以读忙信号,当RS为高电平、RW为低电平时可以写入数据

6

E

使能端,当E端由高电平跳变成低电平时,液晶模块执行命令

7~14

D0~D7

8位双向数据线

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形。这些字符包括:阿拉伯数字、英文字母的大小写、常用的符号和日文假名等。每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是0100_0001B(41H)。

显示的时候,模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。在编程实时,只需要输入相应字符的地址,液晶屏就会输出相应的字符。

FPGA对液晶模块的写操作、屏幕和光标的操作都是通过指令编程来实现的。1602型液晶的操作指令表如表10.4所示。

表10.4 1602型液晶模块的指令表

序号

指令

RS

RW

D7

D6

D5

D4

D3

D2

D1

D0

1

清显示

0

0

0

0

0

0

0

0

0

1

2

光标返回

0

0

0

0

0

0

0

0

1

*

3

光标或显示模式

0

0

0

0

0

0

0

1

I/D

S

4

显示开/关控制

0

0

0

0

0

0

1

D

C

B

5

光标或字符移位

0

0

0

0

0

1

S/C

R/L

*

*

6

功能设置命令

0

0

0

0

0

DL

N

F

*

*

7

字符发生器地址设置

0

0

0

1

字符发生器地址(AGG)

8

DDRAM地址设置

0

0

1

显示数据存储器DDRAM的地址(ADD)

9

读忙标志或地址

0

1

BF

计数器地址(AC)

10

写数据到RAM

1

0

要写的数据

11

从RAM读数据

1

1

读出的数据

各条指令的说明如下(表10.4中,设1为高电平、0为低电平)。

·指令1:清显示,指令码01H,光标复位到地址00H位置。

·指令2:光标返回,光标返回到地址00H。

·指令3:光标和显示模式设置。其中I/D表示光标移动方向,高电平右移,低电平左移;S表示屏幕上

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top