密碼鎖題目要求
使用微控制器實現簡易密碼鎖,通過輸入密碼,實現門鎖的開啟(控制繼電器)。
具體要求如下:
(1)當輸入正確密碼後,繼電器開啟。
(2)當三次輸入錯誤密碼後,密碼鎖禁止輸入 10 秒鐘,並進行相應的提示。
(3)在輸入正確的密碼後,可修改密碼和查詢、清除門開啟的次數。
(4)自製繼電器電路模組。
(5)實現密碼掉電不丟失。
可新增符合題目背景的其它合理功能。
用矩陣鍵盤作輸入,lcd1602顯示輸入情況和判斷情況。
輸入密碼正確,三極體導通,繼電器開啟,燈亮起。
輸入密碼之後需要按下確認鍵,然後判斷函式來判斷密碼的正確與否,錯誤就錯誤次數加1,然後lcd提示一下輸入錯誤。
輸入密碼後才能夠進行密碼的修改和查詢,設定乙個變數,密碼正確後賦1就可以實現。
密碼不掉電只需要把密碼存在eeprom就可以解決了,128內部自帶eeprom,所以很好實現,我順便也把門開啟的次數也存了進去。
繼電器電路就不用多說了,很簡單的乙個電路。
題目還是很簡單的,一晚上的時間基本敲了個大概,完善了一下也沒花多長時間,上述要求全部實現,最後沒有做實物只是**了一下,有條件的可以做一下實物試一下,連的線也不多
輸入密碼連續錯誤三次,鎖定10秒,蜂鳴器響,紅色led亮起,結果如下
輸入密碼正確,繼電器開啟
修改密碼
查詢開門次數
其他功能就不演示了,例如斷電密碼不丟失。
下面展示主函式
,完整程式會放鏈結
#include
#include
#include
//lcd液晶1602
#define uchar unsigned char
#define uint unsigned int
#define rs_0
portf&=~
(1<<
pf1)
#define rs_1
portf|=(
1<<
pf1)
#define rw_0
portf&=~
(1<<
pf2)
#define rw_1
portf|=(
1<<
pf2)
#define en_0
portf&=~
(1<<
pf3)
#define en_1
portf|=(
1<<
pf3)
// eeprom
void
delay
(uint ms)
;void
eeprom_write
(uchar addr,uchar data)
;uchar eeprom_read
(uchar data)
;/*定時器*/
long sencond_cnt=0;
//用於10s計數
uchar time_open=0;
void
io_init()
;//io初始化函式
void
timer0_init()
;//t/c0初始化函式
char miao;
//lcd液晶1602 參考課本的p241
uchar table1[16]
="hello"
;uchar table2[16]
="------"
;void
lcd_wcom
(uchar com)
;void
lcd_wdat
(uchar dat)
;void
lcd_init()
;void
write1602_data_r1()
;void
write1602_data_r2()
;//串列埠 用於除錯
void
led_init()
;void
uart0_init()
;//usart0 初始化函式
void
uart0_send_1byte
(uchar send_char)
;//串列埠傳送函式
uchar num_send;
void
send_s()
;//按鍵
uchar key_press()
;//按鍵檢測函式
uchar key_where()
;//按鍵定位函式
uint in=1
,in_num=0;
uchar password0[6]
=;uchar password_in[6]
;//輸入密碼
uchar password_current[6]
;//當前密碼
uchar input[6]
=;uchar num_code[16]
=;uchar num_input=0;
//矩陣鍵盤輸入按鍵位置
uchar inum;
//開門,模式
uchar open_n=
0,mode=1;
void
trans
(uchar mode)
;//根據模式轉換提示
uchar confirm=0;
//確認輸入
uchar correct=0;
uint error_n=0;
void
panduan()
;void
main
(void
)strcpy
(table1,
"reseted already");
write1602_data_r1()
;delay
(1000);
//eeprom_write(7,0); 重置開門次數}if
(pinb
==0xfd
)//鎖門if(
key_press()
)//判斷鍵盤中是否有按鍵按下
}else
if(num_input==10)
//確認輸入
confirm=1;
//已確認
}else
if(num_input==11)
//清除輸入
else
if(num_input==
12&&correct==1)
//修改密碼
elseif(
(num_input==13)
&&correct==1)
//查詢
mode=4;
elseif(
(num_input==15)
&&correct==1)
//清除開門次數
elseif(
(num_input==14)
&&mode!=2)
//輸入密碼模式
}trans
(mode)
;//液晶顯示根據模式進行轉換
if(confirm)
//確認輸入 進入密碼判斷函式
panduan()
;if(error_n==3)
//錯誤三次 鎖定十秒
}}
程式和**檔案: stc12 密碼鎖 基於EEPROM
是照著清翔微控制器資源改過來的.大一剛來時 人生買的第乙個開發板 i2c.c include i2c.h include lcd12864.h bit ack 用於暫存應答位的值 uchar ad value 儲存ad轉換回的數字量 void delay5us void delay1us void ...
基於51微控制器的密碼鎖
本次的專案是基於51微控制器的密碼鎖,適合用來作為課程設計 主要實現了 密碼鎖功能,通過矩陣按鍵輸入密碼,輸入範圍為0 f,共有四位 同時,也可以使用更改按鍵更改密碼,在更改時需要輸入原密碼來進入更改模式,四位密碼顯示h標識,成功修改後,紅綠指示燈會同時閃爍 在輸入密碼正確後,綠色指示燈點亮,舵機啟...
密碼鎖程式 最簡單的PLC密碼鎖,我來告訴你
範例示意如下所示 控制要求 1 i0.2 i0.3為可按壓鍵。開鎖條件為i0.2設定按壓次數為三次,i0.3設定按壓次數為兩次 同時按壓i0.2 i0.3時有順序的,應先按壓i0.2,再按壓i0.3。如果按上述規定按壓,再按下開鎖按鈕i0.1,密碼鎖自動開啟。2 i0.4為不可按壓鍵,一旦按壓,再按...