当前位置:   article > 正文

FPGA项目(10)——基于FPGA的倒计时显示电路的设计与仿真_fpgazh5-9+基于fpga的倒计时时钟电路设计的计数器模块仿真波形图_fpga数码管倒计时部分的实现方式

fpga数码管倒计时部分的实现方式

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

接着就是分频模块。这种分频非常简单,就不具体解释了,直接给出代码:

下面重点来了

首先,要实现k2按下数值清0的效果,这个非常简单。直接在if语句里面判断,符合条件直接清0就行。然后要实现时间的预设功能,那么假定只有在倒计时暂停的情况下才可以进行时间设定,倒计时运行过程中不能对时间进行修改。所以在设定时间时首先要判断k1的状态,如果k1为0,才可以进行时间预设。当k1为1时,就是正常的倒计时状态。Sec信号在1HZ脉冲的驱动下(clk_hz信号每隔1S会置1一次)减1,每次减到0都判断一次minute是否为0,如果minute不为0,说明倒计时过程还未结束,应该重新给sec赋值并且minute减1,否则说明倒计时结束了,蜂鸣器报警,同时暂停倒计时的过程。这部分的逻辑代码如下:

需要注意这里使用的是 if  else if 语句,里面的条件是有优先级顺序的。复位信号的优先级最高,然后的清0按键k2,然后是k1.

最后就是将所得的时间数值,取出来,送给显示模块进行显示。

仿真图如下:

这是不加数码管显示的,为的是更清楚的看到时间的变化。一开始我令k3按下去一个周期  K5按下去2个周期,那么对应的效果就是minute+1,sec+2。从仿真的结果看,确实是这样。随后当k1置为高电平以后,分钟和秒钟在进行倒计时的过程。当时间减完以后,可以看到蜂鸣器输出了高电平,倒计时过程暂停了!

接下来给出一张完整的仿真图:

完整代码如下:

module count_down(
 input                   clk    ,        // 时钟信号				假设时钟信号为50M
 input                   rst_n  ,        // 复位信号
 input					 k1,			//用于控制计时的启动和停止			1表示启动    0表示停止
 input					 k2,			//用于控制计数时间的归零
 input					 k3,			//用于设置倒计时时间时 对分钟的+
 input					 k4,			//用于设置倒计时时间时 对分钟的-
 input					 k5,			//用于设置倒计时时间时 对秒钟的+
 input					 k6,			//用于设置倒计时时间时 对秒钟的-			//所有按键都假设 不按下为1   按下为0
 
 output			[5:0]	 minut_out,		//将时间输出  便于观察
 output			[5:0]	 sec_out,
 output	  reg			 beep,			//蜂鸣器报警   高电平报警
 output    		[3:0]     seg_sel,        // 数码管位选,最左侧数码管为最高位
 output    	    [6:0]     seg_led         // 数码管段选
);


//parameter    hz_num=32'd50_000_000;
parameter    hz_num=32'd50;						//将50M时钟分频到1HZ所需要的分频系数   仿真时取50   实物取50_000_000

reg [5:0]	minute;					//预设时间的分钟
reg	[5:0]	sec;					//预设时间的秒钟

reg			clk_hz;					//分频后的1hz信号
reg	[31:0]	hz_cnt;					//分频模块使用的寄存器

wire [3:0]  minute_ge;				//保存分钟的个位  用于输出到数码管显示
wire [3:0]  minute_shi;				//保存分钟的十位  用于输出到数码管显示
wire [3:0]  sec_ge;					//保存秒钟的个位  用于输出到数码管显示
wire [3:0]  sec_shi;				//保存秒钟的时位  用于输出到数码管显示

wire [15:0] data_out;			   //要传递到数码管显示的数据

//产生1hz的模块
always @(posedge clk) begin
	if(hz_cnt==hz_num-1)
		begin
		hz_cnt<=32'd0;
		clk_hz<=1'b1;
		end
	else
		begin
		hz_cnt<=hz_cnt+1;
		clk_hz<=1'b0;
		end
end

//读取按键信息  进行倒计时预设  假设只有在停止状态下才能进行时间预设 (也就是k1=0  才可以设置时间)
always @(posedge clk or negedge rst_n) begin
	if(!rst_n)
		begin				//复位时  时间都归0
		minute<=6'd0;
		sec<=6'd0;
		beep<=1'b0;			//蜂鸣器不响
		end
	else if(k2==0)			//按下k2 时间也归0
		begin				
		minute<=6'd0;
		sec<=6'd0;
		end
	else if(k1==0)			//如果是在停止状态下,则对时间进行设定
		begin
			if(k3==0)
				begin
				minute<=minute+6'd1;
				end
			else if(k4==0)
				begin
				minute<=minute-6'd1;
				end
			else if(k5==0)
				begin
				sec<=sec+6'd1;
				end
			else if(k6==0)
				begin
				sec<=sec-6'd1;
				end
			else
				begin
				minute<=minute;
				sec<=sec;
				end
		end
	else if(k1==1)				//如果实在开启状态下
		begin
			if(clk_hz)			//在1S的脉冲驱动下  进行倒计时操作
				begin
				if(sec>0)
					sec<=sec-6'd1;
				else					//秒钟倒计时到0了
					begin				
					if(minute>0)		//如果分钟不为0
						begin
					    sec<=6'd60;			//秒钟重新赋值为60
						minute<=minute-6'd1;		//分钟 减1
						end
					else				//如果分钟为0 说明倒计时结束了
 						begin


![img](https://img-blog.csdnimg.cn/img_convert/6025a7fe5bfc56361e592c820ca5c93b.png)
![img](https://img-blog.csdnimg.cn/img_convert/afee22bdcd909bd03b65179cab7e7cbf.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/847812
推荐阅读
相关标签
  

闽ICP备14008679号