总结:设计理念是通过拨动开关输入由四位二进制数字表示的密码,然后按下按钮确认并验证输入。 如果验证失败,所有号码都会亮起但不亮,并发出警报。 灯将关闭,数字显示屏上将出现解锁消息,直到输入正确的密码并再次验证成功。
1.设计理念:通过拨动开关输入由四位二进制数字表示的密码,通过按键确认并确认输入。 如果验证通过,则LED不亮,数码管显示0,提示您解锁。 如果验证失败,数字LED将不亮,LED将全亮,并发出警报。 LED 灯熄灭,数字 LED 显示 0,提示您解锁,直到输入正确的密码并再次验证成功。
安全:
解锁成功或失败会有清晰的提示。 您可以从 16 种密码组合中进行选择。 但如果输入错误,则会进入报警模式。 您需要确认输入以避免意外触摸。
请参阅附件中的视频。
2.代码(1) my_codelock.v
module my_codelock(seg_led,//digital led_state, key_confirm, sw_input,//led, switch, key clk, rst//防抖输入必需);input key_confirm;//key=输入确认 [3:0] sw_input;//开关 switch=密码输入输出 [7:0] LED_state;reg [7:0] LED_state;//LED指示状态 reg [ 8: 0] seg_led;output [8:0] ] seg_led;//数码管会提示正确打开输入clk,rst;always@(*)beginseg_led=9"h00;if (key_confirm= =0)begin//按下去确认开始校准 if (sw_input==4"b0101) beginled_state=8"b1111_1111;//如果密码正确,LED不亮,数码板亮 seg_led=9"h3f;endelse beginled_state=8"b0000_0000;endendend debounce u1 (.clk (clk), .rst (rst), .key (key_confirm), .key_pulse () );endmodule
(1) debounce.v
模块 debounce (clk,rst,key,key_pulse) ; 参数N = 1; //删除输入clk的键数; 输入 [N-1:0] 键。 //输入按键输出 [N-1:0] key_pulse; //按键动作产生的脉冲 reg [N-1:0] key_rst_pre; //最后触发 reg [N-1: 0] key_rst ; 定义一个寄存器变量来存储键值。 //定义寄存器设备变量存储当前触发的键值。 Wire [N-1:0] key_edge; //当检测到高电平到低电平变化时产生高电平脉冲。 //使用非阻塞分配函数触发两个时钟。 按键的状态始终存储在两个寄存器变量中 @(fusedge clk 或 negedge rst ) begin if (!rst) begin key_rst
评论前必须登录!
注册