在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1964|回复: 0

[原创] 勇敢的芯伴你玩转Altera FPGA连载65:数码管驱动实例

[复制链接]
发表于 2018-4-25 22:33:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
勇敢的芯伴你玩转Altera FPGA连载65:数码管驱动实例

特权同学,版权所有

配套例程和更多资料下载链接:

http://pan.baidu.com/s/1i5LMUUD

1.jpg


先来了解一下数码管的工作原理。如图8.30所示,这是一个典型的带小数点的一位数码管。如果忽略小数点,我们通常称它为7段数码管(即便有小数点,我们也习惯的称呼为7段数码管),所谓7段,是指着7个发光二极管而言的。任意一个0-9的阿拉伯数字的显示,只要通过这7个发光二极管进行亮或灭的组合都可以实现。例如,我们要显示数字0,那么只要让发光二极管abcdef点亮(gdot熄灭)就可以了。

2.jpg

8.30 数码管示意图

接下来,大家可能就要关心着这7个发光二极管是如何控制的,我们又是如何通过FPGAI/O口去点亮或熄灭任意一个发光二极管?很简单,原理上来讲,一个带小数点的数码管的所有8个发光二极管的正极或负极有一个公共端,通常必须接GND(共阴极数码管)或者接VCC(共阳极数码管),而另一个非公共端的8个引脚就留给用户的I/O直接控制了。例如,如果我们使用的是共阴极的数码管,那么我们在使用该数码管时就要将其公共端接地(或者接低电平0),我们的应用中,把这个公共端连接到了FPGAI/O脚上,这便是数码管的片选信号。如果FPGA的这个I/O脚输出低电平0,那么这个数码管就能够显示数字;如果这个I/O输出高电平1,那么无论数码管的8个段选端输出0还是1,都无法将8个发光二极管的任意一个点亮,这也达到了关闭数码管显示的效果。这样一来,这个数码管的公共端被我们当做了数码管片选引脚使用了,虽然不是名副其实的“片选”,但还真达到了异曲同工之妙。


我们的例程要实现的功能比较简单基础:让4个数码管每隔1s不断的递增计数显示,计数范围为0-F。为了便于代码编写控制7个用于段选(不包括小数点)的发光二极管显示不同的字符,这里只做了一个简单的对应表,把不同字符显示时的7I/O值进行编码,如表8.2所示。

8.2 数码管显示字符与驱动编码映射表

  

数字/字符

  
  

0

  
  

1

  
  

2

  
  

3

  
  

4

  
  

5

  
  

6

  
  

7

  
  

编码(16进制)

  
  

3f

  
  

06

  
  

5b

  
  

4f

  
  

66

  
  

6d

  
  

7d

  
  

07

  
  

数字/字符

  
  

8

  
  

9

  
  

A

  
  

B

  
  

C

  
  

D

  
  

E

  
  

F

  
  

编码(16进制)

  
  

7f

  
  

6f

  
  

77

  
  

7c

  
  

39

  
  

5e

  
  

79

  
  

71

  


本实例的功能框图如图8.31所示。PLL产生的25MHz时钟,分别供给两个子模块,秒计数器(counter.v)模块产生一个每秒递增的16位数据,这16位数据以16进制形式通过数码管显示驱动模块(seg7.v)显示到数码管上。数码管显示驱动模块以分时复用的片选方式,将数据送到数码管的各个段选位上。

3.jpg

8.31 数码管驱动功能框图


该实例工程的模块间层级关系如图8.32所示。

4.jpg

8.32 数码管驱动实例代码层次

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-26 23:41 , Processed in 0.018373 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表