Verilog——动态数码管显示

本文详细介绍了使用Verilog实现动态数码管显示的方法,包括时钟分频到5Mhz,将24位数据转换为8421BCD码,设置1ms定时器以及数码管的片选和显示控制。通过定时轮询数码管的使能位,利用视觉暂留效果动态展示信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要点:定时轮询6位数码管的使能位,通过人眼的视觉差动态显示数码管信息。

 

1、模块信息

module seg_led_driver(
    input               sys_clk,
    input               sys_rst_n,

    input [5:0]         point,              //数码管point的显示状态,0为显示,1为不显示;
    input               seg_en,             //数码管使能,0为关闭,1为打开
    input               seg_sign,           //数码管符号位(负号),0为不显示,1为显示;
    input [19:0]        data,               //当前要显示的数据             

    output reg[5:0]     seg_cs,             //数码管的6位片选位,低电平有效
    output reg[7:0]     seg_led             //数码管的数据总线
);

2、需要用的变量

localparam CLK_DIV = 4'd10;                 //时钟分频系数,要对系统时钟10分频
localparam MAX_CNT = 13'd5000;              //数码管5M时钟下1ms所需的最大计数

reg[3:0]        clk_cnt;                    //时钟分频计数器;
reg             seg_clk;                    //数码管时钟,5Mhz
reg[23:0]       seg_num;                    //6位数码管的24位BCD码计数器
reg[12:0]       cnt_1ms;                    //1ms的计数器
reg             flag_1ms;                   //1ms计数完成标志
reg[2:0]        cnt_cs;                     //数码管选位(片选)计数器
reg[3:0]        seg_dip;                    //当前数码管显示的数据
reg             dot_dip;                    //当前数码管显示的point

//每位数码管需要显示的数据
wire[3:0]       data0;                      //个位
wire[3:0]       data1;                      //十位
wire[3:0]       data2;                      //百位
wire[3:0]       data3;                      //千位
wire[3:0]       data4;                      //万位
wire[3:0]       data5;                      //十万位

3、获得每位数码管要显示的数据

//获取各数位对应的十进制数据
assign data0 = data % 4'd10;                //个位数
assign data1 = data / 4'd10 % 4'd10;        //十位数
assign data2 = data / 7'd100 % 4'd10;       //百位数
assign data3 = data / 10'd1000 % 4'd10;     //千位数
assign data4 = data / 14'd10000 % 4'd10;    //万位数
assign data5 &#
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值