【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之数码管动态显示(五)

本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处

适用于板卡型号:

紫光同创PGL22G开发平台(盘古22K)

一:盘古22K开发板(紫光同创PGL22G开发平台)简介

盘古22K开发板是基于紫光同创Logos系列PGL22G芯片设计的一款FPGA开发板,全面实现国产化方案,板载资源丰富,高容量、高带宽,外围接口丰富,不仅适用于高校教学,还可以用于实验项目、项目开发,一板多用,满足多方位的开发需求。

二:实验目的

在数码管静态显示的基础上让数码管各个位显示不同的数字,即学会以动态驱动的方式驱动四位八段数码管。

三:实验要求

使用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切换一次状态,使得四个数码管可以轮流循环显示,最终人眼中看到的效果便为四个数码管在四个按键的控制下同时显示不同的数字。

盘古PGL22G开发板

相关推荐
千寻xun11 小时前
三、实战篇-NVME SSD控制之FPGA实现(一)
fpga开发·nvme ssd·nvme协议
a11177612 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao12 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
你想知道什么?14 小时前
线性回归-学习笔记
笔记·学习·线性回归
鱼毓屿御14 小时前
从「只会聊」到「边想边做」的跃迁
前端·学习·react.js
XMAIPC_Robot15 小时前
软硬协同实时控制|RK3588业务调度+FPGA硬件时序,ethercat实现半导体设备微秒级响应(125us)
linux·arm开发·人工智能·fpga开发
AOwhisky15 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
upper202016 小时前
从零开始设计riscv cpu记录之七
fpga开发·riscv·riscv设计·btb·分支预测
minglie117 小时前
zynq中linux系统的自动登录和免密登录
学习
茯苓gao18 小时前
嵌入式开发笔记:Qt信号槽机制深度解析——从原理到实战的全方位指南
开发语言·笔记·嵌入式硬件·qt·学习