当前位置:   article > 正文

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

电子密码锁设计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)**

  • 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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/765540
推荐阅读
相关标签
  

闽ICP备14008679号