VHDL实现数码管的动态扫描(可以连接其他的模块)

简述一下写的原因

对于我为什么要写这个模块,其实主要的原因就是这个东西在EDA的作业中会很重要。而且在我上次写的那个动态扫描,虽然可以实现数码管的动态扫描,但是那个终究只是我实现计数器的,而在我要做其他的模块的时候,使用那种方法来实现数码管的扫描,个人感觉比较吃力,也难的实现,所以我就所幸重新写了一个来重新实现数码管的动态扫描,然后就是顺便分享一下。仅此而已。

原理

虽然在前面已经说过了,但是我还是想简单的说一下**(因为个人有了一丝丝新的见解)**。 动态扫描,简而言之就是通过数码管在不同的时间下,来通过不同的段选信号以及位选信号来控制数码管的显示。然后如果加快一下频率的化,那么在你看来就是这些数字是一起显示的(因为人眼的余晖效应)。不知道啥是余晖效应的读者可以点一下链接。

实现过程

如果你能过读懂我所描述的原理的化,那么你就能很轻松的读懂下面的代码

好了,不说了,代码呈上。代码上我就做一点简单的注释,不难的,很容易看懂的。

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;entity show is
port(
time_g:in std_logic_vector(3 downto 0);--计数器的个位信号
time_s:in std_logic_vector(3 downto 0);--计数器的十位信号
clk:in std_logic;
sel:out std_logic_vector(7 downto 0);
smg:out std_logic_vector(6 downto 0)
);
end;
architecture one of show is
begin
process(clk)
variable cnt:integer range 0 to 1:=0;--定义变量来实现对数码管的控制,这里实现的是一个简单的两位的计数器,所以是0到1
begin
if clk'event and clk='1' then  if cnt=0 then sel<="11111101";case time_s iswhen "0000"=>smg<="1111110";when "0001"=>smg<="0110000";when "0010"=>smg<="1101101";when "0011"=>smg<="1111001";when "0100"=>smg<="0110011";when "0101"=>smg<="1011011";when "0110"=>smg<="1011111";when "0111"=>smg<="1110000";when "1000"=>smg<="1111111";when "1001"=>smg<="1111011";when others=>smg<="0000000";end case;cnt:=cnt+1;elsif cnt=1 then sel<="11111110";case time_g iswhen "0000"=>smg<="1111110";when "0001"=>smg<="0110000";when "0010"=>smg<="1101101";when "0011"=>smg<="1111001";when "0100"=>smg<="0110011";when "0101"=>smg<="1011011";when "0110"=>smg<="1011111";when "0111"=>smg<="1110000";when "1000"=>smg<="1111111";when "1001"=>smg<="1111011";when others=>smg<="0000000";end case;cnt:=0;end if;
end if;
end process;
end;

嗯,我还是简单的说一下吧。

首先你定义了一个cnt来控制数码管,然后当时钟上升沿到来的时候,cnt=0的就开始工作,而当下一次时钟信号到来的时候,cnt=1的部分开始工作,然后循环往复,当时钟频率够快,你感觉看到的就是一起显示在上面的。(什么嘛,这不就是原理嘛,没错就是)

后续

这个是实现EDA大作业的很重要的一部分,上面只是给出了一个简单的模板而已,自己可以按照需求进行添加。然后生成元器件进行连线即可。

VHDL实现数码管的动态扫描(可以连接其他的模块)相关推荐

  1. 四位共阳极数码管显示函数_【项目8-任务10-小组13】利用四位数码管实现动态扫描显示...

    学习任务 1.四位数码管的电路结构与显示原理 (什么是位选.什么是段选.共阴与共阳的区别.显示4位数字,需要多少条口线?显示n位数字呢?) 2.Arduino直接连接四位数码管实现四位阿拉伯数字显示 ...

  2. MicroPython-On-ESP8266——数码管的使用,四位数码管及动态扫描显示

    MicroPython-On-ESP8266--数码管的使用,四位数码管及动态扫描显示 1. 四位数码管介绍 上一节里面介绍了数码管的分类以及初步学习了一位数码管的驱动方式,一位8段数码管就需要有8个 ...

  3. 74HCD164实现四位共阳数码管的动态扫描与六个按键实现继电器的通断程序

    #include<stc89.h>  #include<intrins.h> #define uchar unsigned char #define uint unsigned ...

  4. 共阳极数码管动态扫描c语言,《C语言编程实训》实训指导书三

    1 C 语言编程实训语言编程实训 实训指导书三实训指导书三 适应专业 应用电子技术适应专业 应用电子技术 广州康大职业技术学院自动化系广州康大职业技术学院自动化系 二二 0 一一 0 年十一月年十一月 ...

  5. 基于STM32的TM1638的按键控制以及数码管和LED灯的动态扫描

    目录 前言 关于按键控制的困惑及解决方案 关于按键控制判断只按下一次 数码管和LED动态扫描 关于驱动代码(HAL库加寄存器位端控制GPIO) 效果展示 数码管和led展示 按键按一次自增减展示 前言 ...

  6. 从点阵到OLED屏幕——动态扫描显示原理

    在我们买电脑.手机或者电视时,厂家常常会宣传他们的产品用的是什么屏幕,分辨率达到2K或者4K,色彩有多鲜艳,刷新率有多高. 这些参数到底是什么意思?屏幕到底是如何显示出我们想要的文字.图片以及视频呢? ...

  7. 数字逻辑与数字系统(VHDL)动态扫描数码显示器

    分析 做一个动态扫描数码显示器 一共需要三个部件: 模八计数器.8选一数据选择器.7段译码器 模八计数器 Library ieee; Use ieee.std_logic_1164.all; Use ...

  8. 数字系统实验—第13周任务(3位数码管动态扫描显示实验含工程与优化)

    数字系统实验--第13周任务 任务书 0.简介 1. 实验操作:1周 2. 完成并在线提交文档(100%) 日志(系统功能描述) 报告(目的 设计 实现 总结) 3. 三位数码管数据显示实验在线验收 ...

  9. 基于fpga的数码管动态扫描电路设计_【至简设计案例系列】基于FPGA的密码锁设计(altera版)...

    秦红凯 明德扬FPGA科教 一.项目背景概述 随着生活质量的不断提高,加强家庭防盗安全变得非常重要,但传统机械锁的构造过于简单,很容易被打开,从而降低了安全性.数字密码锁因为它的保密性很高,安全系数也 ...

  10. 【 FPGA 】控制数码管动态扫描显示的小实验

    实验的功能很简单,就是让4个数码管每隔1s递增显示,使用动态扫描的方式来实现. 从这个功能的描述可以看出,我们首先要写一个计数器模块,来让计数值每隔1s增加1,暂时实现的是16进制的东西,从0到f,之 ...

最新文章

  1. 2016-8-18晨型养成第三天
  2. [C#-SQLite] SQLite一些奇怪的问题
  3. pytorch 实现transformer
  4. 力扣:11盛水最多的容器
  5. Spring factoryBeanInstanceCache在哪里进行put?
  6. php通知websocket,php实现websocket实时消息推送
  7. malloc,calloc,realloc
  8. [html] 你知道什么是粘性布局吗?
  9. MongoDB 教程五: MongoDB固定集合和性能优化
  10. linux mount 默认读写,Linux mount 修改文件系统的读写属性
  11. 2020 AI、CV、NLP顶会最全时间列表
  12. svn无法cleanup常见解决方案
  13. K-Means算法的Java实现
  14. 深度学习基础知识——信息论(自信息、信息熵与马尔科夫链)
  15. 动态桌面壁纸软件:iWall for Mac
  16. 十分钟带你解读Effective C++(导读)
  17. Python程序员面试,这些问题你必须提前准备!
  18. EasyExcel 筛选导出
  19. 我们自己的操作系统第二弹: Ubuntu Kylin(优麒麟)安装教程
  20. java+selenium3

热门文章

  1. SecureCRT8.0破解版安装教程
  2. mysql 删除不了库
  3. 【业务架构】价值链分析:提高客户价值和盈利能力
  4. Google Play 开发者注意事项
  5. 蓝桥杯python青少年题目_蓝桥杯大赛青少组竞赛规则及样题
  6. 使用Android studio开发Android App
  7. hⅰgh怎么读音发音英语_字母h的发音音标
  8. 快手投放广告,快手广告优势有哪些呢?
  9. 芯片行业相关公司及就业岗位汇总
  10. 「MacOS鼠标操作技巧」如何设置鼠标”的速度、滚动方向等配置?