名称:DE2-115开发板的4位电子密码锁数码管LCD1602液晶显示
软件:Quartus II
语言:Verilog
代码功能:
1、 设计一个四位的电子密码锁,每按下一个数字键,就输入一个数字,并在显示器上显示该数值,同时将先前输入的数据左移。
2、此外,包含密码更改(可以通过按键修改新密码),密码上锁和密码解除(按下解除首先检查密码是否正确,密码正确就开锁)功能。
3、密码连续错误3次报警
4、通过数码管和LCD1602液晶显示密码锁的开关状态
本代码已在DE2-115开发板验证,其他开发板可以通过修改管脚适配,开发板如下:
演示视频:DE2-115开发板的4位电子密码锁数码管LCD1602液晶显示
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
代码下载:
部分代码展示:
//密码锁控制模块 module mimasuo_ctrl( input clk, input [15:0] password,//输入的密码 input [15:0] correct_password,//正确的密码 input confirm,//确认 input reset,//清楚报警 input modify,//修改密码 input lock_up,//上锁 output led_open,//开锁指示灯 output [2:0] current_state//当前状态 ); //定义6个状态 parameter s_lock=3'd0; parameter s_compare=3'd1; parameter s_pass=3'd2; parameter s_error=3'd3; parameter s_modify=3'd4; parameter s_alarm=3'd5; reg [2:0] state=3'd0; assign current_state=state; reg [2:0] error_cnt=3'd0; //状态机控制 always@(posedge clk) case(state) s_lock://锁定状态 if(confirm==1) state<=s_compare; else state<=s_lock; s_compare://比对密码状态 if(correct_password==password) state<=s_pass; else state<=s_error; s_pass://密码正确 if(modify==1) state<=s_modify;//修改密码 else if(lock_up==1) state<=s_lock;//上锁 else state<=s_pass; s_error://密码错误 if(error_cnt>=3'd2) state<=s_alarm;//错误3次报警 else state<=s_lock;//继续锁定 s_alarm://报警 if(reset==1)//清除报警 state<=s_lock;//继续锁定 else state<=s_alarm;//报警 s_modify://修改密码 if(confirm==1) state<=s_pass;//返回开锁状态 else state<=s_modify; default:state<=s_lock; endcase
设计文档:
1. 工程文件
2. 程序文件
3. 管脚分配
4. 程序编译
5. RTL图
6. Testbench
7. 仿真图
整体仿真图
默认密码1234,下图输入1234后按下确认键后开锁,led_open高电平表示开锁,此时按下modify按键进行密码修改,输入新密码后,按下确认键,将密码修改为2537。
修改完密码按下lock_up键,锁定,此时led_open变为低电平
输入原密码1234无法打开,连续输入三次密码错误后报警,alarm信号拉高
按下reset信号关闭报警,才能再次密码,关闭报警后输入新密码2537,将锁打开。
注:按键按下均为低电平。