單片機(jī)控制的密碼鎖設(shè)計(jì)(含電路圖及源程序)
//初始化51的寄存器
TMOD=0x20; //用T1計(jì)時(shí) 8位自動(dòng)裝載定時(shí)模式
TH1=0x19; //500微秒溢出一次; 250=(256-x)*12/11.0592 -> x=19
TL1=0x19;
EA=1; //開中斷
ET1=1;
TR1=0; //開定時(shí)器T1
while(1)
{ key_val=scan_key(); //按鍵輸入,有鍵按下key_val為0-7,無(wú)鍵按下key_val為255。
if (key_val!=key_val_old)
{ key_val_old=key_val;
if (key_val!=255 cnt_state!=2)
{ audio_out=0;
delay(100); //延時(shí)去抖動(dòng)
audio_out=1;
switch (key_val)
{ case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
if(key_index6) //密碼為6位,超過(guò)6位視為輸入無(wú)效
{ show_val[key_index]=key_val;
key_index++; }
break;
case 6: //確認(rèn)鍵
if(check_input_pw())
{//密碼正確
error_num=0; //密碼輸入錯(cuò)誤次數(shù)清零
//---------
pw_error=1; //密碼錯(cuò)誤指示燈滅
relay_open=0; //開鎖驅(qū)動(dòng)信號(hào)燈亮
open_lock=0; //已開鎖信號(hào)燈亮
//---------
delay(50000); //兩聲短“滴”聲
audio_out=0;
delay(50000);
audio_out=1;
delay(50000);
audio_out=0;
delay(50000);
audio_out=1;
//---------
cnt_state=1; //下一狀態(tài)處于4秒計(jì)時(shí)的狀態(tài)
TR0=1; //啟動(dòng)定時(shí)
}
else
{ if (error_num2)
{error_num++; //輸入錯(cuò)誤次數(shù)小于3次時(shí),沒錯(cuò)一次error_num增一
pw_error=0; //密碼錯(cuò)誤指示燈亮
//-----------
delay(20000);//一聲長(zhǎng)“滴”聲,提示錯(cuò)誤
audio_out=0;
delay(60000);
audio_out=1;
//-----------
init_variant();//清除所有輸入,等待下一次輸入
}
else //輸入錯(cuò)誤次數(shù)超過(guò)3次
{ alarm_out=0; //報(bào)警燈亮
pw_error=0; //密碼錯(cuò)誤指示燈亮
error_num=0; //密碼輸入錯(cuò)誤次數(shù)清零
//----------
audio_out=0; //長(zhǎng)鳴聲報(bào)警
delay(60000);
delay(60000);
delay(60000);
delay(60000);
delay(60000);
delay(60000);
delay(60000);
delay(60000);
delay(60000);
audio_out=1;
//-------------
TR1=1; //打開定時(shí)器計(jì)時(shí)
cnt_state=2; //下一狀態(tài)處于15秒計(jì)時(shí)的狀態(tài)
}
}
break;
case 7://取消鍵
init_variant();
break;
}
}
}
led_show();
}
}
//-----程序結(jié)束-----------------本文引用地址:http://www.ex-cimer.com/article/172702.htm
電路圖符號(hào)相關(guān)文章:電路圖符號(hào)大全
評(píng)論