繼上次關於4*4矩陣式鍵盤學習之後,於是乎,我就想為何不將他製作成乙個簡單的類似於密碼鎖的小玩意。
首先,我們先構思這個密碼鎖應該有什麼功能,當然最重要的是,他能夠輸入數字,其次我們得要乙個初始密碼,如果輸入值與初始密碼相匹配,列印出「welcome」,如果不匹配則輸入清零並且提示輸入錯誤,總共有四次錯誤機會,如果超過四次,則需要等待30秒直到顯示「try again"時才能再次輸入。
首先我們需要準備的材料有:
4*4矩陣式鍵盤
arduino 板
lcd1602液晶顯示器
對於初始密碼的設定,我們需要用到eeprom。在這裡,簡單介紹一下eeprom
eeprom(帶電可擦寫可程式設計讀寫儲存器)是使用者可更改的唯讀儲存器(rom),其可通過高於普通電壓的作用來擦除和重程式設計(重寫)。不像eprom晶元,eeprom不需從計算機中取出即可修改。eeprom是一種特殊形式的快閃儲存器,其應用通常是個人電腦中的電壓來擦寫和重程式設計
electrically erasable programmable read only memory(eeprom)lcd1602的接線圖忘記了的可以看這個電氣可拭除可程式設計唯讀儲存器
之後就是我們的原密碼**部分,當然,大家可以按照自己的喜好隨意更改。
#include void setup()
void loop()
碼先燒錄到 arduino中為0306,之後我們就能開始編寫密碼鎖。(燒錄完初始密碼後,再燒錄密碼鎖程式並不會清除原來的密碼)
#include #include #include #include liquidcrystal mylcd(0, 1, 9, 10, 11, 12);
const byte rows = 4;
const byte cols = 4;
int a;
char keys[rows][cols] = ,,,
};byte rowpins[rows] = ;
byte colpins[cols] = ;
keypad keypad = keypad( makekeymap(keys), rowpins, colpins, rows, cols );
string opw = ""; //oldpassword
string npw = ""; //這裡可以在修改密碼使用到
int falsh = 0; //記錄輸入錯誤次數
string input = ""; //輸入
void setup()
serial.println("the oldpassword is "); //串列埠列印出初始密碼
serial.println(opw);
delay (5000);
serial.flush(); //清除串列埠的資料
mylcd.setcursor(0, 0);
mylcd.print("input");
}void loop()
if (input == opw) //當密碼匹配
else if (input.length() == 4 && input != opw)}}
串列埠經過實驗可以完成他的功能,但是lcd1602 的部分,大家需按照自己的需求更改,在這裡我的1602一直顯示亂碼,其原因還未找出,如果是程式的問題還請大家指出。 利用矩陣鍵盤製作密碼鎖
本週學習了關於矩陣鍵盤的知識,並利用矩陣鍵盤製作了密碼鎖。矩陣鍵盤利用矩陣式的連線減少了io口的使用,並用掃瞄的方式保證每乙個按鍵的響應。下面是 main include include lcd1602.h include delay.h include matrixkey.h unsigned c...
電子密碼鎖
最近剛寫乙個電子密碼鎖的程式,使用verilog語言實現的。剛剛學這個語言,練習一下。感覺這個語言不是很難,而且通過學這個語言,感覺自己還能通過自學掌握一門語言,挺有成就感的。雖然現在只懂verilog最基本的一些語法,但是通過不斷練習我會不加深入的掌握它,也有信心自學更多的。加油!密碼輸入 刪除模...
實用密碼鎖
unsigned char num,i,j unsigned char passwordtemp 16 最大輸入16個 unsigned char inputtimes 密碼輸入錯誤次數 unsigned char passwordlength,plen 輸入密碼長度,實際密碼長度 bit flag...