基于FPGA的电子密码锁

这篇博客介绍了如何基于FPGA设计一个8位字母数字密码锁,详细阐述了功能需求,包括初始密码设定、解锁流程及错误处理。同时,讨论了硬件要求,如LCD1602的接线与工作原理,以及ASCALL对照表在显示字符中的应用。文中还展示了设备的不同状态效果图,并提供了部分源代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于FPGA的电子密码锁

实现的功能

1、 设计制作一个数字密码锁,共有8位密码,要求该密码是字母与数字的结合。输入密码由LCD显示
2、 系统上电后,8位初始密码为0000_0000.
3、 输入8位破解密码,输入完毕后,按确认键,若输入密码与破解密码匹配,则开锁成功,点亮第一位led(长亮)蜂鸣器响一声。解锁成功后按设置密码键可重新设置密码。若输入密码与破解密码不匹配,则开锁不成功,点亮第二位led(长亮),再次输入破解密码。若下次输入正确,则点亮第一位led(长亮),熄灭第二位led,若输入密码3次以后,仍未解锁,则第二位led长亮,第三位led长亮并锁闭键盘。
4、 按下复位键,解锁键盘,熄灭第一位、第二位和第三位led,并可重新操作第三步。

硬件要求:

LCD1602一块(16引脚的);
FPGA开发板。这里我采用的是正点原子的新起点开发板,使用其他的开发板要记得自个分配引脚。使用的是正点原子新起点开发板的话可以按下面连接LCD1602和分配引脚:
在这里插入图片描述
注意,板子上只有四个按键0~3,还需要额外接两个按键4和5。按键key_in[6]没有用到,预留出来了。外接按键要按下图接,上拉电阻为10K,电压3.3v
在这里插入图片描述

LCD1602的工作原理:
LCD1602在玩过单片机的应该是较早接触的字符型液晶显示器了,一般来说,LCD1602有16引脚,也有14引脚的,16脚的相比14脚的多了背光电源A(15脚)和地线K(16脚)。我手里这里使用的是16脚的,接线图如下:RS到DB7按上图的引脚分配表接开发板上
在这里插入图片描述
对应到LCD1602的引脚上分别是:

1、VSS接电源地。

2、VDD接+5V。

3、VO是液晶显示的偏压信号,可接电位器,改变背光,电压过高和过低会看不清字符。
4、RS是命令/数据选择引脚,接FPGA的一个I/O,当RS为低电平时,选择命令;当RS为高电平时,选择数据。

5、RW是读/写选择引脚,接FPGA一个I/O,当RW为低电平时,向LCD1602写入命令或数据;当RW为高电平时,从LCD1602读取状态或数据。如果不需要进行读取操作,可以直接将其接GND。(这里我接的是IO口)
共有四种状态:注意FPGA速度很快,在控制LCD1602时注意延时
输入RS=0,RW=1,E=高脉冲。输出:D0—D7为状态字。(读命令)
输入RS=1,RW=1,E=高脉冲。输出:D0—D7为数据。 (读数据)
输入RS=0,RW=0,E=高脉冲。输出:无。 (写命令)
输入RS=1,RW=0,E=高脉冲。输出:无。(写数据)

6)E,执行的使能引脚,接FPFA的一个I/O。

7)D0—D7,并行数据输入/输出引脚,接FPGA的的8个I/O口。

8)A背光正极,可接到VCC。

9)K背光负极,接GND

LCD1602可以显示16列2行的字符,LCD1602显示的原理 跟 8* 8的点阵显示原理很相似,1602显示字符的原理也是8*8的点组成的,例如我们要显示一数字0:
通过点亮相应的点就可以,但与点阵不同的是,有些LCD1602不需要取字模,因为其内部自带了字库,通过对照ASCALL码表就可以显示相应的数字:例如还是要显示数字0的话,我们只需要往DB0-DB7写入数值48,就可显示数字0
字符0按点显示

常用的ASCALL对照表:

在这里插入图片描述
LCD1602的工作原理可自行百度或参考:LCD1602工作原理

效果图:

开始状态:
在这里插入图片描述
密码错误:
在这里插入图片描述
密码正确
在这里插入图片描述
最后,附上代码:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值