2024年物联网嵌入式最全FPGA项目(8)——基于FPGA的电子密码锁设计,太完整了

img
img

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

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

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

本次使用的是共阳极数码管,关于FPGA驱动数码管的具体原理,也可以看我的这篇博客:

FPGA项目(5)–FPGA控制数码管动态显示的原理_fpga数码管显示实验原理_嵌入式小李的博客-CSDN博客FPGA驱动数码管的动态显示外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传https://blog.csdn.net/guangali/article/details/130754726?spm=1001.2014.3001.5501

重点要讲的是输入密码和密码判断的逻辑控制。

首先要定义四个按键,用于控制系统的开始,密码的输入和确认等等。然后要定义两个LED输出,还要定义一个24位宽的输出量,用于将6位十进制密码输出到数码管显示模块进行显示。复位的时候让所有变量都清0,只有当按下开始按键时,系统才开始工作。接下来,结合代码来讲解设计的思路:

Password用于保存初始密码,如果要修改密码,就修改这里。

Key_input用于保存实时输出的密码,例如第一次输入1,这个量就应该是等于24’d000_001,再输入一次2,它就等于24’d000_012,

再把这个变量传入到数码管模块进行显示,就能达到实时显示输入密码的效果。

Num是保存每一次输入的密码,默认值为5.例如第一次输入密码时,num=5,当按下密码自增键(k2时),num=6,再按一次k2,num=7,如果此时按下确认键(k1),那么num的值就会保存到key_input中,表示这是一次有效的密码输入,同时num返回到复位值5。

Confi_times用于保存按下确认按键的次数,如果按下确认按键6次,那么说明密码已经全部输入完成了,此时要进行密码核对,如果密码正确,就亮绿灯。

Flag按键用于标志系统开始运行,当开始键按下(k3),flag就置1,当flag被置1时,系统才开始运行,否则不运行。

Flag相关代码如下:

这部分代码全部给出:

module mima(
input	clk,
input	rst,								//复位  低电平有效   
input	k0,									//	-
input	k1,									// confirm
input	k2,									// +
input	k3,									// start
output	reg	led_red,
output	reg	led_green,
output	[23:0]	data						//将输入的密码输出到显示模块用于显示
);


parameter	password=24'h600417;				//设定密码   如要修改密码  则修改这里

reg [23:0]	key_input;					//用于保存输入的密码

reg [3:0]	num;						//用于寄存正在从键盘输入的数		默认为5
reg [3:0]	confirm_times;				//用于记录按下k1的次数  
reg			flag;						//用于标记k3已经按下  即系统已经开始工作


//记录k3已经被按下
always @(posedge clk or negedge rst) begin
	if(!rst)
		flag<=1'b0;
	else if(k3==1'b0)
		flag<=1'b1;
	else
		flag<=flag;
end




//控制密码的输入  判断密码是否正确
always @(posedge clk or negedge rst) begin
	if(!rst)
		begin
		led_green<=1'b0;
		led_red<=1'b0;
		key_input<=24'd0;
		confirm_times<=4'd0;
		num<=4'd5;					//默认为5
		end
	else if(flag==1'b1)				//如果系统已经开始工作
		begin
		key_input[3:0]<=num;
		led_red<=1'b1;				//系统开启时  红灯亮
		if(k2==1'b0)
			num<=num+4'd1;
		else if(k0==1'b0)
			num<=num-4'd1;
		else if(k1==1'b0)
			begin
			if(confirm_times>=4'd5)				//如果按了6次k1  说明密码全部输入完毕  此时判断密码是否正确				
				begin
				confirm_times<=4'd0;			//清0   以便下一次输入密码
				if(key_input==password)			//密码正确
					led_green<=1'b1;				//绿灯亮
				else
					led_green<=1'b0;


![img](https://img-blog.csdnimg.cn/img_convert/29cdc8d73f484fd54a26ef09251398a2.png)
![img](https://img-blog.csdnimg.cn/img_convert/9aaa93c7186997eee0d9682cc1adbc6a.png)

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

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

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

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

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

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值