功能

功能:四位数码管显示,从零开始计数,前两位显示秒(059),后两位显示0.01秒(099),
计满后从零开始,有开始键、暂停键、复位键。当第一次按下开始键,秒表从初始开始计数,LED显示器上显示当前计时值;当紧按下(按住)暂停键时,秒表暂停计时,LED上显示当前计时值,放开则继续计时;当按下复位键时,秒表停止计数,并且计数结果清零。

部分代码

module time_clock(clk,reset_n,start_key,pause_key,duan,wei);input           clk;                            //clk:50MHZ时钟输入;input           reset_n;                        //复位信号输入,低电平有效;input           start_key;                      //开始信号输入,低电平有效;input           pause_key;                      //暂停功能按键,进行秒表计时和倒计时时可以通过该按键进行暂停,‘1’暂停,‘0’继续output  [7:0]   duan;                           //duan:数码管段码;output  [7:0]   wei;                            //wei:数码管位码;reg     [7:0]   duan;                           //duan:数码管段码;reg     [7:0]   wei;                            //wei:数码管位码;reg     [24:0]  count;                          //100HZ时钟计数器reg     [13:0]  count2;                         //扫描时钟计数器reg             clk_2000hz;                     //100HZ时钟信号reg             clk_scan;                       //数码管扫描时钟reg     [1:0]   select;                         //用于扫描时选择显示位码// ****************************************************//开始按键消抖模块// ****************************************************reg         start_key_out;parameter   start_s0=3'b000,start_s1=3'b001,start_s2=3'b010,start_s3=3'b011,start_s4=3'b100,start_s5=3'b101;reg [2:0]   start_state;always @(posedge clk or negedge reset_n)beginif(reset_n == 1'b0)beginstart_state <= start_s0;start_key_out <= 1'b1;endelsebegincase (start_state)start_s0:begin start_key_out <= 1'b1;if(start_key == 1'b0)start_state <= start_s1;else start_state <= start_s0;endstart_s1:begin if(start_key == 1'b0)start_state <= start_s2;else start_state <= start_s0;end start_s2:begin if(start_key == 1'b0)start_state <= start_s3;else start_state <= start_s0;    end start_s3:begin if(start_key == 1'b0)start_state <= start_s4;else start_state <= start_s0;    endstart_s4:begin if(start_key == 1'b0)start_state <= start_s5;else start_state <= start_s0;    endstart_s5:begin if(start_key == 1'b0)beginstart_key_out <= 1'b0;start_state <= start_s5;end else beginstart_key_out <= 1'b0;start_state <= start_s5;endenddefault:beginstart_state <= start_s0;start_key_out <= 1'b1;endendcaseendend//****************************************************************************************************//  模块名称:分频模块//  功能描述://****************************************************************************************************always @(posedge clk or negedge reset_n)//2000HZ时钟进程beginif(reset_n == 1'b0)begincount <= 25'd0;clk_2000hz <= 1'b0;endelseif(count == 25'd12499)beginclk_2000hz <= ~clk_2000hz;count <= 25'd0;endelsecount <= count + 1'b1;endreg     [17:0]  counter_count;reg             clk_100hz;always @(posedge clk or negedge reset_n)//100HZ时钟进程 clk_2000hzbeginif(reset_n == 1'b0)begincounter_count <= 18'd0;clk_100hz <= 1'b0;endelseif(~pause_key == 1'b0)//当暂停的时候不进行产生计数时钟信号if(counter_count == 18'd1)//9beginclk_100hz <= ~clk_100hz;counter_count <= 18'd0;endelsecounter_count <= counter_count + 1'b1;elsebeginclk_100hz <= 1'b0;counter_count <= 18'd0;endend    //****************************************************************************************************//  模块名称:秒表计时//  功能描述://**************************************************************************************************** reg     [3:0]   counter_haomiao_ge;             //秒表计时,毫秒个位数BCD码reg     [3:0]   counter_haomiao_shi;            //秒表计时,毫秒十位数BCD码reg     [3:0]   counter_miao_ge;                //秒表计时,秒个位数BCD码reg     [2:0]   counter_miao_shi;               //秒表计时,秒十位BCD二进制码always @(posedge clk_100hz or negedge reset_n)beginif(reset_n == 1'b0)begincounter_haomiao_ge <= 4'd0;counter_haomiao_shi <= 4'd0;counter_miao_ge <= 4'd0;counter_miao_shi <= 3'd0;endelseif(~start_key_out == 1'b1)//开始信号有效的时候进行计时if(counter_haomiao_ge == 4'd9)begincounter_haomiao_ge <= 4'd0;if(counter_haomiao_shi == 4'd9)begincounter_haomiao_shi <= 4'd0;if(counter_miao_ge ==4'd9)begincounter_miao_ge <= 4'd0;if(counter_miao_shi == 3'd5)begincounter_miao_shi <= 3'd0;endelsecounter_miao_shi <= counter_miao_shi + 1'b1;endelsecounter_miao_ge <= counter_miao_ge + 1'b1;endelsecounter_haomiao_shi <= counter_haomiao_shi + 1'b1;endelsecounter_haomiao_ge <= counter_haomiao_ge + 1'b1;elsebegincounter_haomiao_ge <= 4'd0;counter_haomiao_shi <= 4'd0;counter_miao_ge <= 4'd0;counter_miao_shi <= 3'd0;endend //****************************************************************************************************//  模块名称:毫秒、秒计数寄存模块//  功能描述://****************************************************************************************************        reg     [3:0]   reg_haomiao_ge;                 //毫秒个位数BCD码reg     [3:0]   reg_haomiao_shi;                //毫秒十位数BCD码reg     [3:0]   reg_miao_ge;                    //秒个位数BCD码reg     [2:0]   reg_miao_shi;                   //秒十位BCD二进制码always @(posedge clk or negedge reset_n)beginif(reset_n == 1'b0)beginreg_haomiao_ge <= 4'd9;reg_haomiao_shi <= 4'd9;reg_miao_ge <= 4'd9;reg_miao_shi <= 3'd5;endelsebeginreg_haomiao_ge <= counter_haomiao_ge;reg_haomiao_shi <= counter_haomiao_shi;reg_miao_ge <= counter_miao_ge;reg_miao_shi <= counter_miao_shi;endend//****************************************************************************************************//  模块名称:数码管位选择时钟产生模块//  功能描述://****************************************************************************************************always @(posedge clk or negedge reset_n)//数码管扫描时钟产生进程beginif(reset_n == 1'b0)begincount2 <= 14'd0;clk_scan <= 1'b0;endelseif(count2 == 14'd10000)begincount2 <= 14'd0;clk_scan <= ~clk_scan;//2500Hz的数码管扫描频率时钟信号endelsecount2 <= count2 + 1'b1;end//****************************************************************************************************//  模块名称:数码管位选择产生信号模块//  功能描述://****************************************************************************************************always @(posedge clk_scan or negedge reset_n)begin if(reset_n == 1'b0)select <= 2'b00;elseselect <= select + 1'b1;//数码管位选择信号end//****************************************************************************************************//  模块名称:译码电路//  功能描述://****************************************************************************************************always @(posedge clk or negedge reset_n)beginif(reset_n == 1'b0)beginwei <= 8'b11111111;duan <= 8'hff;endelsebeginif(select == 2'd0)beginwei <= 8'b11101111;//毫秒个位数显示case(reg_haomiao_ge)4'b0000:duan <= 8'b1100_0000;//04'b0001:duan <= 8'b1111_1001;//14'b0010:duan <= 8'b1010_0100;//24'b0011:duan <= 8'b1011_0000;//34'b0100:duan <= 8'b1001_1001;//44'b0101:duan <= 8'b1001_0010;//54'b0110:duan <= 8'b1000_0010;//64'b0111:duan <= 8'b1111_1000;//74'b1000:duan <= 8'b1000_0000;//84'b1001:duan <= 8'b1001_0000;//9default:duan <= 8'hff;endcaseendelse if(select == 2'd1)beginwei <= 8'b11011111;//毫秒十位数显示case(reg_haomiao_shi)4'b0000:duan <= 8'b1100_0000;//04'b0001:duan <= 8'b1111_1001;//14'b0010:duan <= 8'b1010_0100;//24'b0011:duan <= 8'b1011_0000;//34'b0100:duan <= 8'b1001_1001;//44'b0101:duan <= 8'b1001_0010;//54'b0110:duan <= 8'b1000_0010;//64'b0111:duan <= 8'b1111_1000;//74'b1000:duan <= 8'b1000_0000;//84'b1001:duan <= 8'b1001_0000;//9default:duan <= 8'hff;endcaseendelse if(select == 2'd2)beginwei <= 8'b10111111;//秒个位数显示case(reg_miao_ge)4'b0000:duan <= 8'b0100_0000;//04'b0001:duan <= 8'b0111_1001;//14'b0010:duan <= 8'b0010_0100;//24'b0011:duan <= 8'b0011_0000;//34'b0100:duan <= 8'b0001_1001;//44'b0101:duan <= 8'b0001_0010;//54'b0110:duan <= 8'b0000_0010;//64'b0111:duan <= 8'b0111_1000;//74'b1000:duan <= 8'b0000_0000;//84'b1001:duan <= 8'b0001_0000;//9default:duan <= 8'hff;endcaseendelse if(select == 2'd3)beginwei <= 8'b01111111;//秒十位数显示case(reg_miao_shi)3'b000:duan <= 8'b1100_0000;3'b001:duan <= 8'b1111_1001;3'b010:duan <= 8'b1010_0100;3'b011:duan <= 8'b1011_0000;3'b100:duan <= 8'b1001_1001;3'b101:duan <= 8'b1001_0010;3'b110:duan <= 8'b1000_0010;default:duan <= 8'hff;endcaseendelse beginwei <= 8'b11111111;duan <= 8'hff;endendend
endmodule

链接:https://pan.baidu.com/s/1JzG7b9xz8OXOeETqunnyBw
提取码:1234

基于FPGA的秒表数码管显示相关推荐

  1. 基于单片机病房呼叫系统数码管显示房号设计-基于单片机工业生产现场的光照强度控制设计-基于单片机多功能智能台灯设计-基于单片机二维码LCD显示设计-基于单片机多功能时钟闹钟万年历控制系统设计【毕设分享】

    1641基于单片机病房呼叫系统数码管显示房号设计 设计思路:此设计实现的功能通过按键模拟房号,当按键按下时会将房号编号发送到数目管上进行显示,并通过声光进行提示.包含的电路有:数码管显示电路.按键电路 ...

  2. c51时钟数码管显示流程图_基于单片机89C51的数码管显示时钟设计.doc

    基于单片机89C51的数码管显示时钟设计 基于单片机的数字时钟 摘 要单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉.但是却很少知道它的内部结构以及工作原理.由单片 ...

  3. 基于STM32的四位数码管显示编程

    1.四位数码管的简单介绍 因为在学校做项目的时候使用到了数码管显示,所以就编写了一个基于SMT32的数码管显示程序.通过看手册知道这个四位数码管采用TM1637 驱动电路.内部有集成MCU数字电路接口 ...

  4. FPGA之动态数码管显示实验

    1.试验任务 完成6位数码管以动态方式从0开始计数,没100ms计数值增加1,当计数值从0增加到999999后重新从0开始计数. 2.硬件原理图 3.程序框图 程序设计思想: FPGA顶层(top_s ...

  5. 基于FPGA的SD NAND图片显示实现

    文章目录 0.前言 1.目标 2.图片的预处理 3.SD NAND的预处理 4.FPGA实现 4.1.详细设计 4.2.仿真 4.3.实验结果 0.前言 在上一篇文章<基于FPGA的SD卡的数据 ...

  6. 基于51单片机的数码管显示方案

    这一次给大家带来的项目是课堂作业级别的51单片机数码管显示,本次的项目着重于讲解原理,让大家明白单片机的io对于外界设备的控制是如何进行的. 共阳极和共阴极数码管的差异 (1)驱动方法的差异.一个数码 ...

  7. 基于51单片机密码锁数码管显示步进电机开锁设计

    视频演示地址:https://www.bilibili.com/video/BV1Eg411G7JW/ 该设计是由AT89C51单片机为主控芯片数码管显示 开机后输入密码正确步进电机转半圈错误蜂鸣器报 ...

  8. 基于FPGA的三线制数码管驱动设计

    目录 引言 电路结构 实现思路 数码管显示译码 74HC595驱动 源码分享 板级验证 引言 对三线制数码管的驱动设计做一个简单的总结吧. 电路结构 数码管结构图: 动态扫描原理: 主要是利用了人的视 ...

  9. 基于Proteus的四位数码管显示

    1实验原理 P0口接断码线, P2口低四位接位选线,第一位数码管的位选线由P2.0来控制,第二位数码管的位选线由P2.1来控制,依次类推, 由此可知可以控制P2.0到p2.3引脚,从而控制这个数码管哪 ...

最新文章

  1. View绘制流程的入口
  2. rust怎么用items刷东西_装修贷卡怎么刷?不同银行的用不同的POS机刷才对
  3. seaborn使用FacetGrid函数可视化山脊图(Ridgeline Plot with Seaborn)
  4. 20155222 2016-2017-2 《Java程序设计》第10周学习总结
  5. 修改elementUI组件样式无效的问题研究
  6. 详解JVM内存结构(基于JDK8)
  7. java零碎要点013---JAVA执行js_java执行JavaScript_java执行js引擎不能识别document浏览器内置对象解决办法
  8. Hibernatel框架关联映射
  9. 快捷添加请求头的方法
  10. python super().__init__()
  11. IP 地址由网络和主机两部分标识组成
  12. 招聘-中软国际外派中国移动(广州)
  13. C语言:int转char
  14. 智慧交通再改革,电子警察抓拍通信传输解决方案
  15. 【2021-12-22】【Kotlin】Type inference failed. Expected type mismatch: inferred type is HashSet but Set
  16. 17.10.21B组题解
  17. Linux oracle 怎么安装,oracle在linux下怎么安装
  18. css定位-css新增选择器(内减,属性,伪类,2d变换,过渡)
  19. 安庆师范大学计算机学院书记,安庆师范大学计算机与信息学院导师教师师资介绍简介-陈春生...
  20. 形如e^(ax^2+bx+c)的积分公式的证明

热门文章

  1. 2021-10-24 PAT(5)
  2. 傲梅分区助手专业版 v6.2 中文免费版
  3. 个性化智能推荐系统分析与调研
  4. 东北大学2023分布式操作系统实验
  5. 循环移动数组,比如移动M个位置
  6. 精心收藏风林火山系统下载
  7. 十大“元宇宙”电影,元宇宙科幻影视,其中一部为国产文学改编
  8. GitHub 上 11 月份最热门的开源项目
  9. 比较两个DataFrame的Python神器DataComPy
  10. Python中的魔幻语法记录