【数电实验】实验 5 数码管动态扫描显示电路设计

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

【2023-11-16:修改Y为4位宽,支持显示学号8和9】

实验要求

一、实验目的

1. 学习动态扫描显示数码管的使用。

2. 学习数据选择器及其信号分配方法。

3. 巩固 Verilog HDL 层次化设计电路的方法。

利用modelsim仿真

模块代码

1.modelsim仿真代码

`timescale 1 ps/1 ps

module ljq_2344_5_vlg_tst();

  reg clk;
  reg en;
                                              
  wire [2:0] DIG;
  wire [1:0] Q;
  wire [3:0] Y;
  wire [6:0] codeout;
  wire [4:0] seg;
  
  ljq_2344_5 i1 (
    .DIG(DIG),
    .Q(Q),
    .Y(Y),
    .clk(clk),
    .codeout(codeout),
    .en(en),
    .seg(seg)
  );

  initial begin
    en = 1;
    clk = 1;                     
  end                                                    
  reg [25:0] counter = 26'b0;

  always begin                          
                                                          
    #25 clk = ~clk;
    counter = counter + 1'b1;
    if(counter[20]) begin
    en = ~en;
    counter = 26'b0;
    end

  end
endmodule

2.程序源代码

module ljq_2344_5 (clk,en,DIG,seg,codeout,Y,Q);
input clk,en;    //时钟和使能信号
output [1:0] Q;    //计数信号
output [3:0] Y;
output [2:0] DIG;    //位选信号,SEG3~SEG0,根据Q值变化
output [6:0] codeout;    //七段数码管译码信号
output [4:0] seg;    //位选信号,SEG7~SEG4, 恒为0
wire clk1000;
//调用子模块
ljq_2344_5_0 clk_(clk, clk1000);
ljq_2344_5_1 counter(clk1000,Q,en);
ljq_2344_5_2 segswitch(Q,DIG,seg);
ljq_2344_5_3 numselect(Q,Y);
ljq_2344_5_4 decoder(Y,codeout);

endmodule
module ljq_2344_5_0(clk,clk1000);//分频器

parameter clkin=50000000;
parameter clkout=1000;
input clk;
output reg clk1000=0;

reg [20:0] count;

always @(posedge clk)

begin
    if (count<(clkin/(2*clkout)-1))
     begin
         count<=count+1'b1;
            clk1000<=clk1000;
     end
    else
         begin
             clk1000<=~clk1000;
             count<=0;
         end
end

endmodule
module ljq_2344_5_1(clk,Q,en);    //3-digit计数器
input clk,en;
output reg[1:0]Q=2'b00;
always @(posedge clk)
     if(en==1'b1)
	  begin
	  if(Q==2'd3)
	    Q<=2'd1;
	  else
	    Q<=2'd1+Q;
	  end
	  else
		begin
			Q <= 2'd0;
		end
endmodule
module ljq_2344_5_2(x,DIG,seg);    //2-3线译码器
input [1:0] x;
output reg[2:0] DIG;    //位选信号
output [4:0]seg;    //位选信号
assign seg=4'b0000;
always @(x)
begin
case(x)
2'd1:DIG <= 4'b0001;    //数码管SEG1亮
2'd2:DIG <= 4'b0010;    //数码管SEG2亮
2'd3:DIG <= 4'b0100;    //数码管SEG3亮
default:DIG <= 4'b0;    //默认不亮
endcase
end
endmodule
module ljq_2344_5_3(SEL,Y);    //数据选择器
input [1:0] SEL;
output reg[3:0] Y;
always @(SEL)
begin
case(SEL)
2'd1:Y <= 4'b0100;
2'd2:Y <= 4'b0100;
2'd3:Y <= 4'b0011;
default: Y <=4'b0;
endcase
end
endmodule
module ljq_2344_5_4 (Y,codeout);      //译码器
input[3:0] Y;
output[6:0] codeout;
reg [6:0]codeout;
always@(Y)
begin
    case(Y)
	4'd0 : codeout=7'b1111110; 
    4'd1 : codeout=7'b0110000;
    4'd2 : codeout=7'b1101101;
    4'd3 : codeout=7'b1111001;
    4'd4 : codeout=7'b0110011;
    4'd5 : codeout=7'b1011011;
    4'd6 : codeout=7'b1011111;
	4'd7 : codeout=7'b1110000;
    4'd8 : codeout=7'b1111111;
    4'd9 : codeout=7'b1111011;
	 default: codeout=7'bx;
	 endcase
	end
endmodule

RTL电路图

数码管动态扫描仿真代码,数电实验,fpga开发

验收波形图

数码管动态扫描仿真代码,数电实验,fpga开发

引脚分配表(EP4CE6E22C8)

​​​​​​​数码管动态扫描仿真代码,数电实验,fpga开发

标准参考:

数码管动态扫描仿真代码,数电实验,fpga开发文章来源地址https://www.toymoban.com/news/detail-769624.html

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

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

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

相关文章

  • 二、19【FPGA】数码管动态显示实验

    学习说明此文档为本人的学习笔记,注重实践,关于理论部分会给出相应的学习链接。 学习视频:是根据野火FPGA视频教程——第二十二讲 https://www.bilibili.com/video/BV1nQ4y1Z7zN?p=3 “天下武功唯快不破”    “看到的不一定为真” 眼睛的视觉暂留:光信号传入大脑需要短暂时间,

    2023年04月08日
    浏览(39)
  • <微机原理>[汇编语言]-[实验七]数码管动态显示实验

    实验一 软件开发环境和简单程序设计 实验二 I_O输入输出实验 实验三 键盘扫描显示实验 实验四 中断实验 实验五 定时器实验 实验六 串行口实验 实验七 数码管动态显示实验 实验八 矩阵键盘应用实验 实验九 电子时钟 微机原理实验课程,会陆续根据目录更新文章 掌握LED八段

    2024年02月07日
    浏览(39)
  • verilog学习笔记- 15)动态数码管显示实验

    目录 简介: 实验任务: 硬件设计: 程序设计: 下载验证: 由于一般的静态驱动操作虽然方便,但占用的 I/0 口较多,例如要驱动6 位 8 段数码管,以静态驱动方式让数码管各个位显示不同的数值,如“123456”,需要占用6 × 8 = 48个I/O 口,虽然对于 FPGA 这种 I/O 口较多的芯片

    2024年02月07日
    浏览(48)
  • FPGA基本实验之数码管的动态显示

            关于数码管的基本知识大家可以参考我上一篇文章数码管的静态显示,         使用 1ms 的刷新时间让六个数码管轮 流显示:第 1ms 点亮第一个数码管,第 2ms 点亮第二个数码管,以此类推依次点亮六个数 码管,6ms 一个轮回,也就是说每个数码管每 6ms 点亮

    2024年02月08日
    浏览(42)
  • VHDL矩阵键盘扫描数码管显示

    1.打开Quarteus,直接点击New Project izard. 2.选择存放路径和工程名后一直Next,直到出现芯片选择页面(这里需要特别注意,这个软件不支持中文,所以工程存放路径一定不能含有中文,否则会报错) 3.选择对应的芯片,我这里选择EP4CE40F23C8,然后Next,最后Finish 4.完成工程的创建

    2023年04月24日
    浏览(64)
  • FPGA项目五:数码管动态扫描

    led 数码管( LED Segment Displays )是由多个发光二极管封装在一起的器件,这些二极管组成“8”字型,在内部完成引线连接,只引出它们的各个笔划和公共电极。一般来说, led 数码管常用段数为 7 段,如下图中所示的 a、b、c、d、e、f、g,有的数码管还会添加一个小数点,如图

    2024年02月06日
    浏览(58)
  • 数码管扫描显示-单片机通用模板

    ①人的眼睛中的画面在0.02S(50Hz)左右,光源的闪烁频率高于50-60赫兹时,人眼通常无法察觉到光的闪烁; ②通过控制LED的亮灭透过模具贴纸从而控制数字和图案的亮灭; 在主函数main的while循环里调用,等标志更新显示 在2~4kHz的定时器里面调用 FreshDisplay() 映射到IO功能函数,频

    2024年02月19日
    浏览(38)
  • 【FPGA零基础学习之旅#11】数码管动态扫描

    🎉欢迎来到FPGA专栏~数码管动态扫描 ☆* o(≧▽≦)o *☆ 嗨 ~我是 小夏与酒 🍹 ✨ 博客主页: 小夏与酒的博客 🎈该系列 文章专栏: FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 📜 欢迎大家关注! ❤️ 🥝 Spirit_V2开发板按键控制数码管:

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

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

    2024年02月09日
    浏览(47)
  • 数码管动态显示

    8个数码管 SEL 8个显示电路 a,b,c,d,e,f,g,h SEG 要使哪一个亮,则将SEL[X]置为1,X线拉低---------使用一个 3-8译码器 ,根据cnt[2:0]来选择哪一个数码管亮 所以不同的数都可以根据SEL和SEG来进行选择 根据输入的不同的数来进行显示,一共有8个数码管,一个数的范围是0-f 。 需要4位,一

    2023年04月19日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包