扫一扫,分享给好友
在数码管静态显示的基础上让数码管各个位显示不同的数字,即学会以动态驱动的方式驱动四位八段数码管。
使用4个按键分别控制4个数码管显示0~9的数字,按键每次按下后显示的数字自加1。
由于一般的静态驱动操作虽然方便,但占用的 I/0 口较多,例如要驱动4 位 8 段数码管,以静态驱动方式让数码管各个位显示不同的数值,如“123456”,需要占用4 × 8 =32个I/O 口,虽然对于 FPGA 这种 I/O 口较多的芯片而言,在资源允许的情况下可以使用,但一般不建议浪费宝贵的 I/O 口资源,尤其在 I/O 口资源紧张的情况下,所以对于多位数码管一般采用动态驱动方式使数码管显示数字。为了更好的理解数码管动态驱动,我们首先了解下市面上常见的多位数码管的内部连接。以两位数码管为例,其内部连接如下图。由此图可知,两位 8 段数码管共 10 个引脚,每位数码管的阳极连接在一起,为共阳极数码管,每位数码管相同段的 led 的阴极连接在一起,这样当给第 10 和第 5 脚高电平,给第 3 脚低电平时,两个数码管的发光二极管 A 都点亮,对于此种数码管以静态方式驱动显然不可能显示像“18”这种个位与十位不同的数字。 既然同时给第 10 和第 5 脚高电平不可行,那么是不是可以先给第 5 脚高电平,第 10 脚低电平,此时,让其显示数字“8”时,左边的数码管不显示,右边的数码管显示数字“8”;然后给第 10 脚高电平,第 5脚低电平,此时,让其显示数字“1”时,左边的数码管显示数字“1”,右边的数码管不显示,这样就可以显示数字“18”了。但有一个问题,多长时间切换显示的数码管呢,时间如果太长就只能看到数字“8”或数字“1”了,时间太短呢,结果是显示不清晰而且显示亮度不够。由于人眼的视觉暂留(人眼在观察景物时,光信号传递到人大脑神经后,会有一段短暂的时间停留,即光的作用结束后,视觉形象并不立即消失,这种残留的视觉称“后像”,视觉的这一现象则被称为“视觉暂留”)及发光二极管的余辉效应(当停止向发光二极管供电时,发光二极管亮度仍能维持一段时间),每位数码管的点亮时间为 1~2ms 时,显示效果能满足使用需要。数码管的这种驱动方式称为数码管的动态驱动,实际上就是分时轮流控制不同数码管的显示。
首先定义模块的输入输出。 然后使用一个1ms的计数器来控制状态机的切换。 因为要用四个按键控制四个数码管显示不同的数字,所以要将按键消抖模块和数码管数字显示模块都例化四次。 四个按键都能分别控制数字的自加,所以需要四个数字计数器,可以将一个数字技术器例化四次,也可以写四个计数器,本次通过写四个计数器的方式实现。 通过状态机,每隔1ms切换一次状态,使得四个数码管可以轮流循环显示,最终人眼中看到的效果便为四个数码管在四个按键的控制下同时显示不同的数字。
发布
FPGAfpga
【有奖提问】关于盘古1K2K开发板你有什么想知道的?一起来留言获取答案吧!
盘古22K开发板
盘古200 pro开发板
盘古50 pro开发板
盘古50K开发板
盘古100 pro开发板
FPGA在图像处理领域的优势有哪些?
紫光同创——PLL IP 的使用(Logos2)
谈一谈FPGA设计中的功率计算
硬件工程师的开发心得
电子发烧友网
电子发烧友论坛