FPGA项目(11)——基于FPGA的按键计数器

        这次做的按键计数器,功能不复杂,比较简单。稍微花点篇幅讲解一下。首先给出设计的具体要求:

        首先给出顶层的原理图设计:

 

         比较难的功能应该算是第四点,即高位的0不予以显示。但是,原子家提供的数码管显示例程里面,已经包含了这个功能,所以我们直接拿来调用就行。具体代码我就不贴了,有需要的去原子官网下载。

        另外就是按键消抖模块,关于按键消抖,我之前已经讲解过了,参考我的这篇博客:

       FPGA项目(3)--按键消抖_嵌入式小李的博客-CSDN博客icon-default.png?t=N4P3https://blog.csdn.net/guangali/article/details/130674206?spm=1001.2014.3001.5501        接下来就是按键计数器的逻辑设计了。这个也不难。定义三个按键和一个数据,不同按键按下,数据对应加不同数值就行:

        

         最后,给出逻辑控制模块的具体代码:

        

module counter(
input	clk,
input	rst,
input	k1,							//按下+1
input	k2,							//按下+10
input	k3,							//按下+100			这里的按键信号都经过了消抖处理

output					en,			//数码管使能位
output					sign,		//符号控制位
output		 [5:0]		point,
output   reg [19:0]     data        // 6个数码管要显示的数值
);


always @(posedge clk or negedge rst) begin
	if(!rst)
		data<=20'd0;				//按下复位键  结果清0
	else if(k1==1'b0)
		data<=data+20'd1;
	else if(k2==1'b0)
		data<=data+20'd10;
	else if(k3==1'b0)
		data<=data+20'd100;
	else
		data<=data;
		
end	
assign	en=1'b1;			//数码管一直使能
assign	sign=1'b0;			//不显示负号
assign  point=6'b000000;	//不显示小数点

endmodule

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值