名稱:DE2-115開發(fā)板的4位電子密碼鎖數(shù)碼管LCD1602液晶顯示(代碼在文末下載)
軟件:Quartus II
語言:Verilog
代碼功能:
1、 設(shè)計一個四位的電子密碼鎖,每按下一個數(shù)字鍵,就輸入一個數(shù)字,并在顯示器上顯示該數(shù)值,同時將先前輸入的數(shù)據(jù)左移。
2、此外,包含密碼清除(密碼右移),密碼更改(可以通過按鍵修改新密碼),密碼上鎖和密碼解除(按下解除首先檢查密碼是否正確,密碼正確就開鎖)功能。
3、密碼連續(xù)錯誤3次報警。
4、通過數(shù)碼管和LCD1602液晶顯示密碼鎖的開關(guān)狀態(tài)。
本代碼已在DE2-115開發(fā)板驗證,其他開發(fā)板可以通過修改管腳適配,開發(fā)板如下:
演示視頻:
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//當前狀態(tài) ); //定義6個狀態(tài) 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; //狀態(tài)機控制 always@(posedge?clk) case(state) s_lock://鎖定狀態(tài) if(confirm==1) state<=s_compare; else state<=s_lock; s_compare://比對密碼狀態(tài) 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;//繼續(xù)鎖定 s_alarm://報警 if(reset==1)//清除報警 state<=s_lock;//繼續(xù)鎖定 else state<=s_alarm;//報警 s_modify://修改密碼 if(confirm==1) state<=s_pass;//返回開鎖狀態(tài) else state<=s_modify; default:state<=s_lock; endcase
設(shè)計文檔:
1. 工程文件
2. 程序文件
3. 管腳分配
4. 程序編譯
5. RTL圖
6. Testbench
7. 仿真圖
整體仿真圖
默認密碼1234,下圖輸入1234后按下確認鍵后開鎖,led_open高電平表示開鎖,此時按下modify按鍵進行密碼修改,輸入新密碼后,按下確認鍵,將密碼修改為2537。
修改完密碼按下lock_up鍵,鎖定,此時led_open變?yōu)榈碗娖?/p>
輸入原密碼1234無法打開,連續(xù)輸入三次密碼錯誤后報警,alarm信號拉高
按下reset信號關(guān)閉報警,才能再次密碼,關(guān)閉報警后輸入新密碼2537,將鎖打開。
注:按鍵按下均為低電平。
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=231