一个数码管有八个引脚,控制八段二极管的亮灭,用以显示需要的数字。

当有N个数码管时,一个一个控制的话需要N x 8 个引脚,消耗资源较多。

因此可以利用动态显示的方案通过人眼的视觉暂留特性达到静态显示的效果(动态显示周期<20ms),只需N+8个引脚。节省了大量资源。(动态静显)

数码管动态显示的逻辑电路如下:

Verilog设计代码如下:

module digital_tube(//八个数码管显示clk,reset,disp_num_all,dg_tube,tube_part);input clk ;input reset ;input [31:0]disp_num_all ;output [7:0]dg_tube ;output [7:0]tube_part ;parameter one_dis_t = 25'd1_000_000 ;//每个晶体管显示时间(计数)reg [16:0]counter1 ;reg [2:0] counter2 ;always @ ( posedge clk or negedge reset )//分频beginif (! reset )counter1 <= 17'd0 ;else if ( (one_dis_t-1) <= counter1 )counter1 <= 17'd0 ;elsecounter1 <= counter1 +1'b1 ;endalways @ ( posedge clk or negedge reset )//循环beginif (! reset )counter2 <= 3'd0 ;else if ( (one_dis_t-1) <= counter1 ) counter2 <= counter2 +1'b1 ;endwire [3:0]disp_num_one ;//3-8译码器 控制哪个数码管显示decoder_3_8 tube_select(//控制.a(counter2[2] ),.b(counter2[1]),.c(counter2[0]),.out(dg_tube));//需要一个八选一选通器,对应哪个数码管显示什么内容mux8  tube_display(//选通.sel(counter2),.data(disp_num_all),.out(disp_num_one));//真值表对应显示数字LUT_truth translator(//控制.num(disp_num_one),.out(tube_part));
endmodule
module decoder_3_8(a,b,c,out);input a;input b;input c;output reg [7:0]out;always@(*)begin//等价于always({a,b,c})a是高位,c是低位case({a,b,c})3'b000:out=8'b0000_0001;             3'b001:out=8'b0000_0010; 3'b010:out=8'b0000_0100; 3'b011:out=8'b0000_1000; 3'b100:out=8'b0001_0000; 3'b101:out=8'b0010_0000; 3'b110:out=8'b0100_0000; 3'b111:out=8'b1000_0000; endcaseendendmodule
module mux8(sel,data,out);input [2:0]sel ;input [31:0]data ;output reg [3:0]out ;always@(*)begincase(sel)3'b000 : out = data[3:0] ;3'b001 : out = data[7:4] ;3'b010 : out = data[11:8] ;3'b011 : out = data[15:12] ;3'b100 : out = data[19:16] ;3'b101 : out = data[23:20] ;3'b110 : out = data[27:24] ;3'b111 : out = data[31:28] ;endcaseend
endmodule
module LUT_truth(num,out);input [3:0]num ;output reg [7:0]out ;always@(num)begincase(num)4'h0 : out = 8'hc0 ;4'h1 : out = 8'hf9 ;4'h2 : out = 8'ha4 ;4'h3 : out = 8'hb0 ;4'h4 : out = 8'h99 ;4'h5 : out = 8'h92 ;4'h6 : out = 8'h82 ;4'h7 : out = 8'hf8 ;4'h8 : out = 8'h80 ;4'h9 : out = 8'h90 ;4'ha : out = 8'h88 ;4'hb : out = 8'h83 ;4'hc : out = 8'hc6 ;4'hd : out = 8'ha1 ;4'he : out = 8'h86 ;4'hf : out = 8'h8e ;endcaseend
endmodule
`timescale 1ns / 1ns
module digital_tube_tb();reg clk ;reg reset ;reg [31:0]disp_num_all;wire [7:0]dg_tube ;wire [7:0]tube_part ;digital_tube   #( .one_dis_t( 100 ))digital_tube_im(//八个数码管显示clk,reset,disp_num_all,dg_tube,tube_part);initial clk = 1 ;always #10 clk = ! clk ;initialbeginreset = 0 ;disp_num_all = 32'd0 ;#201 ;reset = 1 ;#200 ;disp_num_all = 32'habb02525 ;#20000;disp_num_all = 32'h52520bba ;#30000;        $stop;endendmodule

数码管动态显示Verilog实现(参考小梅哥教程)(视觉暂留)相关推荐

  1. 数码管动态显示c语言,《手把手教你学51单片机-C语言》之六 中断与数码管动态显示...

    中断是单片机系统重点中的重点,因为有了中断,单片机就具备了快速协调多模块工作的能力,可以完成复杂的任务.本章将首先带领大家学习一些必要的C语言基础知识,然后讲解数码管动态显示的原理,并最终借助于中断系 ...

  2. 【 FPGA 】四位16进制的数码管动态显示设计

    数码管的动态显示是对每个数码管采用分时复用的方式轮流点亮每个数码管,在同一时间只会点亮一个数码管. 分时复用的扫描显示利用了人眼的视觉暂留特性,如果公共端的控制信号刷新速度足够快,人眼就不会区分出LE ...

  3. 掌上实验室V8系列教程(三)数码管动态显示

    目录 1 项目功能 2 电路原理 3 动态显示原理 4 示例代码 6 扩展功能 7 参考资源 1 项目功能 4位数码管动态显示 2 电路原理 3 动态显示原理 一位八段式数码管内部有8个LED,习惯上 ...

  4. FPGA 驱动数码管动态显示(VerilogVivado)

    FPGA 驱动数码管动态显示 前言 一.数码管驱动原理 二.设计思路 三.实现代码 四.hex8_tb文件 五.上板测试 1.74HC595时序图 2. HC595_Driver设计 3.HC595_ ...

  5. 【FPGA开发笔记】—— 数码管动态显示项目详细剖析+个人心得体会

    文章目录 一.项目要求 二.问题分析与思路设计 2.1 从基本的动态显示入手 2.2 算法设想 三.实际操作 3.1 程序架构 3.2 Verilog代码 3.2.1 main模块 3.2.2 100 ...

  6. STC89C52单片机 数码管动态显示

    数码管动态显示 静态与动态显示 动态显示 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效.选亮数码管采用动态扫描显示.所谓动态扫描显示即轮流向各位数码管送出字形码和相 ...

  7. 蓝桥杯基础模块3_2:数码管动态显示

    一.模块题目 二.原理简述 动态显示的基本原理与实现思路(转载) 动态显示实质上就是轮流点亮单个数码管实现多位数码管整体显示的效果.在轮流显示过程中,每位数码管点亮时间为1-2ms,由于人的视觉暂留现 ...

  8. 蓝桥杯单片机数码管动态显示_单片机静态动态数码管

    单片机系统中常用的显示器有: 发光二极管LED(Light Emitting Diode)显示器.液晶LCD(Liquid Crystal Display)显示器.TFT液晶显示器等.LED显示器有两 ...

  9. 基于51单片机实现4位数码管动态显示

    单片机入门学习记录(一) 硬件配置: 主控:STC89C52单片机 显示器件:四位一体数码管 操作器件:点动式独立按键SB1.SB2.SB3.SB4 *选配器件:蜂鸣器 功能要求: 1)开机自检:四位 ...

最新文章

  1. 开发者转型AI看过来,这是一场汇聚中美顶尖专家的AI盛会
  2. 演示:配置日志发送到VTY虚拟终端线路
  3. webpack安装和配置
  4. [51nod]1284 2 3 5 7的倍数(容斥原理)
  5. php 获取http headers
  6. pandas 固定值 增加一列_pandas入门详细教程(附导图)
  7. 《Swift开发实战》——第1章,第1.4节启动iOS 8模拟器
  8. 防止多次提交的几个比较
  9. 【Vue】—数据的双向绑定v-model
  10. 学习用Python编程时要避免的3个错误
  11. Linux shell中2>1的含义
  12. 如何判断一个类是无用的类?
  13. 【入门】PyTorch文本分类
  14. HDU 1010 -Tempter of the Bone(深度搜索)
  15. 如何安装matlab?官网下载详细教程
  16. FireFly编辑器调用C语言,grasshopper的插件FireFly 萤火虫
  17. 等腰三角形悬臂梁式光纤光栅振动传感器分析
  18. 二极管工作原理讲解(转载)
  19. php ffmpeg扩展下载
  20. AI笔记: 数学基础之方向导数的计算和梯度

热门文章

  1. 腾讯云服务器标准型SA2和标准型S5哪里不同
  2. Java基础测试选择题带答案解析(一)
  3. 报错:dataSource init error java.sql.SQLException: com.mysql.cj.jdbc.Driver
  4. 【JS高级】正则入门基础—关于你想知道的正则表达式_01
  5. 利用MAT进行内存泄露分析
  6. 华为机试第十五题:HJ15 求int型正整数在内存中存储时1的个数
  7. Matlab常用求解数学规划模型代码
  8. okr工作法学学习笔记20210315
  9. 未能连接重庆网上银行服务器,安装重庆银行“网上银行安全套件”后,键盘无法使用的解决方案...
  10. Python入门学习P16~P20