静态数码管显示

这篇具有很好参考价值的文章主要介绍了静态数码管显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习芯片: EP4CE6F17C8
本次学习使用的为共阳极数码管,即用低电平点亮数码管,同样可知,共阴极数码管的阴极连在一起,即用高电平点亮数码管。

八段数码管示意图:
静态数码管显示,fpga开发
静态数码管显示,fpga开发
a,b,c,d,e,f,g,dg表示八段数码管时,a为最低位,dp为最高位
八段数码管用8位二进制表示,由于本次实验使用共阴极数码管,所以0表示亮,1表示灭,即数码管显示数字0我们可以用8'b1100_0000表示,数字F使用8'b1000_0111表示,同理可知,共阴极数码管和共阳极数码管互为对方的按位取反。

任务描述:
六个数码管同时间隔0.5s显示0-f。要求:使用一个顶层模块,调用计时器模块和数码管静态显示模块。静态数码管显示,fpga开发
模块原理图:
静态数码管显示,fpga开发
代码设计:

/*
2023.7.13
计时0.5s,计满输出高电平
*/

module time_count(
    input       wire        clk         ,
    input       wire        rst_n       ,

    output      reg         flag

);


parameter MAX_NUM = 26'd24_999_999;//0.5s

reg [24:0]  cnt;

always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        cnt <= 26'd0;
        flag <= 1'b0;
    end
    else if(cnt == MAX_NUM) begin
        cnt <= 26'd0;
        flag <= 1'b1;
    end
    else begin
        cnt <= cnt + 1'd1;
        flag <= 1'b0;
    end
end


endmodule 
/*
2023.7.13
数码管显示
*/

module seg_led_static(
    input       wire        clk         ,
    input       wire        rst_n       ,
    input       wire        flag        ,//计满0.5s后,输入的高电平

    output      reg [5:0]   sel         ,//位选信号
    output      reg [7:0]   seg          //段选信号

);


reg [3:0] num;//保存当前数码管显示的数字

always @(posedge clk or negedge rst_n) begin
    if(!rst_n)begin
        sel <= 6'b111111;
    end
    else begin
        sel <= 6'b000000;//打开全部数码管
    end
end

always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        num <= 4'h0;
    end
    else if(flag) begin
        num <= num + 1'h1;
    end
    else begin
        num <= num;
    end
end

always @(posedge clk or negedge rst_n) begin
    if(!rst_n)begin
        seg <= 8'b0;
    end
    else begin
        case(num)
            4'h0:    seg <= 8'b1100_0000;//匹配到后参考共阴极真值表
	        4'h1:    seg <= 8'b1111_1001;
	        4'h2:    seg <= 8'b1010_0100;
	        4'h3:    seg <= 8'b1011_0000;
	        4'h4:    seg <= 8'b1001_1001;
	        4'h5:    seg <= 8'b1001_0010;
	        4'h6:    seg <= 8'b1000_0010;
	        4'h7:    seg <= 8'b1111_1000;
	        4'h8:    seg <= 8'b1000_0000;
	        4'h9:    seg <= 8'b1001_0000;
	        4'ha:    seg <= 8'b1000_1000;
	        4'hb:    seg <= 8'b1000_0011;
	        4'hc:    seg <= 8'b1100_0110;
	        4'hd:    seg <= 8'b1010_0001;
	        4'he:    seg <= 8'b1000_0110;
	        4'hf:    seg <= 8'b1000_1110;
	      	default : seg <= 8'b1100_0000;
        endcase 
    end     
end

endmodule
/*
2023.7.13
静态数码管显示,间隔0.5s输出0——F.
*/

module top_seg_led_static(
    input       wire        clk         ,
    input       wire        rst_n       ,

    output      wire [5:0]  sel         ,
    output      wire [7:0]  seg
);

parameter MAX_NUM = 26'd24_999_999;
wire flag_reg;

time_count #(.MAX_NUM (MAX_NUM)) u_time_count(
    .clk    (clk),
    .rst_n  (rst_n),

    .flag   (flag_reg)

);

seg_led_static u_seg_led_static(
    .   clk         (clk),
    .   rst_n       (rst_n),
    .   flag        (flag_reg),

    .   sel         (sel),
    .   seg         (seg)

);


endmodule

测试文件:

`timescale 1ns/1ns
module top_seg_led_static_tb();
    reg        clk;
    reg        rst_n;

    wire [5:0]  sel;//位选信号
    wire [7:0]  seg;//段选信号

    parameter MAX_NUM = 9;//切换一次状态的周期数量
    parameter CYCLE = 20;//周期

    always #(CYCLE/2) clk = ~clk;

    initial begin
        clk = 1'b0;
        rst_n = 1'b0;//开始复位
        #(CYCLE);
        rst_n = 1'b1;//结束复位
        #((MAX_NUM + 1)*CYCLE*16);
        $stop;
    end


    
    top_seg_led_static #(.MAX_NUM (MAX_NUM)) u_top_seg_led_static(
        .clk(clk),
        .rst_n(rst_n),

        .sel(sel),
        .seg(seg)

    );


endmodule

我们通过modelsim仿真结果如下:
静态数码管显示,fpga开发
运行结果:
静态数码管显示,fpga开发文章来源地址https://www.toymoban.com/news/detail-589057.html

到了这里,关于静态数码管显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA极易入门教程----数码管篇(1)静态显示

            数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数一般分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管(多一个小数点显 示)。当然也还有一些其他类型的数码管如“N”形管、“米”字管以及工业科研领域用 的

    2024年02月05日
    浏览(34)
  • FPGA学习日志——74hc595驱动的数码管静态显示seg_595_static

    数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数一般分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管(多一个小数点显示)。 八段数码管是一个八字型数码管,分为八段:a、b、c、d、e、f、g、dp,其中dp为小数点,每一段即

    2024年02月08日
    浏览(71)
  • 学习笔记|认识数码管|控制原理|数码管实现0-9的显示|段码跟位码|STC32G单片机视频开发教程(冲哥)|第九集:数码管静态显示

    数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,也就是多一个小数点(DP)这个小数点可以更的表示数码管想要显示的内容;按能显示多少个(8)可分为1位、2位、3位、4位、5位、6位、7位等数码管。 按发光二极管单元连接方

    2024年02月10日
    浏览(41)
  • 静态数码管——FPGA

    环境: 1、Quartus18.0 2、vscode 3、板子型号:EP4CE6F17C8 要求: 六位数码管全选,每间隔0.5s轮流显示0~F。 静态与动态数码管: 静态数码管 : 在静态显示中,只考虑段选信号。在不同的时刻,各个位选信号保持不变,并根据真值表,选择要显示的数字或者字母。 动态数码管 :

    2024年02月16日
    浏览(33)
  • FPGA——静态数码管

    quartus 18.1 modelsim vscode Cyclone IV开发板 我们使用的数码管是8段数码管,每段是由led组成。通过控制每段led的亮灭,来控制数码管显示不同的数字和字母。 数码管分为共阴极和共阳极,共阳极数码管如图所示,a—dp为输入端,全部在二极管的负极,二极管的正极极共同接+5v(高电

    2024年02月16日
    浏览(26)
  • 51单片机(四)静态数码管和动态数码管显示

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月09日
    浏览(37)
  • 数码管的静态显示

    首先说一下数码管,其实就是7个led灯,加上一个小数点正好8位,和51单片机的一个端口连接。 使不同的灯亮起,就可以实现显示0到9这几个数字。 以上都是图片,下面把对应的值给到大家,0到9的十六进制值复制粘贴就好了:{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} 下面说一

    2024年02月06日
    浏览(63)
  • 静态数码管显示

    学习芯片: EP4CE6F17C8 本次学习使用的为共阳极数码管,即用低电平点亮数码管,同样可知,共阴极数码管的阴极连在一起,即用高电平点亮数码管。 八段数码管示意图: a,b,c,d,e,f,g,dg表示八段数码管时,a为最低位,dp为最高位 八段数码管用8位二进制表示,由于本次实验使用

    2024年02月16日
    浏览(23)
  • 数码管静态显示

      上期课程中,我们使用了按键控制蜂鸣器。本期课程中,我们将学习Cyclone IV开发板上新的器件—数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。   数码管分七段数码管和八段数码管。七段和八段的区别在于,是否包括小数点DP(Digital Point)。本

    2024年02月16日
    浏览(23)
  • 数码管的静态显示(二)

    要按照上图的顺序传递位选和段选的数据。 因为q0是最高位,共阳极数码管结构是dp....a,所以应该先传入低位a,而a在上图中的8段2进制编码中是seg[7],所以段选信号的顺序是seg[0],...seg[7]。 因为输出信号是两个时钟,所以要进行分频,因为不能太高。因为是4分频,所以计数

    2024年03月18日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包