原创 FPGA学习之基于动态数码管的时钟显示

2017-5-15 11:19 3526 21 21 分类: FPGA/CPLD

动态数码管的原理之前已经说过,但是之前说的只是它的工作原理,今天我们来说说动态数码管的应用。今天通过FPGA编程,驱动8个动态数码管显示“时-分-秒”。

下图是4位共阳动态数码管的工作时序。某一时刻控制某一个位选并给一个8位的段选数据,则该数码管会显示相应的数据,通过快速的扫描,就会看到4个数码管同时亮,并且显示不同的数字。

640.webp

首先来看看我们今天所使用的动态数码管的硬件原理图。

640.webp (1)

从原理图中我们可以看出,数码管的段选由74HC245芯片驱动,数码管的位选由74HC138驱动。

下面我们来看看这两个芯片的手册及功能,首先看看74HC245的手册

640.webp (2)

640.webp (3)

第一幅图是对74HC245芯片功能的描述,第二幅图是74HC245芯片内部的逻辑结构,从这两张图中我们可得知:74HC245是一个带有3态输出的双向驱动缓冲器。也就是说当确定方向之后,输入是什么,输出就是什么,只不过输出的电流稍大一点儿而已。

我们再来看看74HC138芯片手册

640.webp (4)

640.webp (5)

第一幅图是74HC138的功能描述,第二幅图是74HC138的真值表,从这两幅图中可以得出,74HC是一个3线(输入)——8线(输出)的译码器,ABC三个输入决定Y0-Y7八个中的哪一个为低电平。所以从这里我们可以得出,硬件原理图中的数码管为共阴数码管。

明白了硬件电路原理图及芯片手册之后,下面我们开始FPGA的编程。本次设计中,FPGA程序总共由三大模块组成,分别是时间计时模块,数码管译码模块、动态数码管驱动这三部分组成,如下图。

640.webp (6)

本设计中,其他模块的代码太长,无法全部截屏,所以这里只把数码管译码模块和动态数码管驱动这两部分的Verilog代码贴出来供参考,其他的代码请大家关注微信号“xiaomage_group”查看详细内容~~~~

640.webp (7)

640.webp (8)

下面我们将写好的代码进行全局综合编译,编译无误之后下载入FPGA电路板中,验证设计的正确性。

QQ图片20170515111616

这是下载后实际拍出来的效果,从图片中可以看出,该设计的确实现了计时的功能,能够显示“时-分-秒”的功能,说明我们的设计时没有问题的,哈哈哈哈~~~~~

更多详细内容请大家关注微信号“xiaomage_group”查看~~


文章评论0条评论)

登录后参与讨论
我要评论
0
21
关闭 站长推荐上一条 /2 下一条