機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
單片機用于電子密碼鎖設(shè)計
單片機用于電子密碼鎖設(shè)計
 更新時間:2008-7-27 13:58:06  點擊數(shù):4
【字體: 字體顏色

1.實驗任務(wù)

根據(jù)設(shè)定好的密碼,采用二個按鍵實現(xiàn)密碼的輸入功能,當密碼輸入正確之后,鎖就打開,如果輸入的三次的密碼不正確,就鎖定按鍵3秒鐘,同時發(fā)現(xiàn)報警聲,直到?jīng)]有按鍵按下3種后,才打開按鍵鎖定功能;否則在3秒鐘內(nèi)仍有按鍵按下,就重新鎖定按鍵3秒時間并報警。

2.電路原理

圖4.32.1

3.系統(tǒng)板上硬件連線

(1). 把“單片機系統(tǒng)”區(qū)域中的p0.0/ad0用導線連接到“音頻放大模塊”區(qū)域中的spk in端子上;

(2). 把“音頻放大模塊”區(qū)域中的spk out端子接喇叭和;

(3). 把“單片機系統(tǒng)”區(qū)域中的p2.0/a8-p2.7/a15用8芯排線連接到“四路靜態(tài)數(shù)碼顯示”區(qū)域中的任一個abcdefgh端子上;

(4). 把“單片機系統(tǒng)“區(qū)域中的p1.0用導線連接到“八路發(fā)光二極管模塊”區(qū)域中的l1端子上;

(5). 把“單片機系統(tǒng)”區(qū)域中的p3.6/wr、p3.7/rd用導線連接到“獨立式鍵盤”區(qū)域中的sp1和sp2端子上;

4.程序設(shè)計內(nèi)容

(1). 密碼的設(shè)定,在此程序中密碼是固定在程序存儲器rom中,假設(shè)預(yù)設(shè)的密碼為“12345”共5位密碼。

(2). 密碼的輸入問題:

由于采用兩個按鍵來完成密碼的輸入,那么其中一個按鍵為功能鍵,另一個按鍵為數(shù)字鍵。在輸入過程中,首先輸入密碼的長度,接著根據(jù)密碼的長度輸入密碼的位數(shù),直到所有長度的密碼都已經(jīng)輸入完畢;或者輸入確認功能鍵之后,才能完成密碼的輸入過程。進入密碼的判斷比較處理狀態(tài)并給出相應(yīng)的處理過程。

(3). 按鍵禁止功能:初始化時,是允許按鍵輸入密碼,當有按鍵按下并開始進入按鍵識別狀態(tài)時,按鍵禁止功能被激活,但啟動的狀態(tài)在3次密碼輸入不正確的情況下發(fā)生的。

5.c語言源程序
#include <at89x52.h>
 
unsigned char code ps[]={1,2,3,4,5};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
 
unsigned char pslen=9;
unsigned char templen;
unsigned char digit;
unsigned char funcount;
unsigned char digitcount;
unsigned char psbuf[9];
bit cmpflag;
bit hibitflag;
bit errorflag;
bit rightflag;
unsigned int second3;
unsigned int aa;
unsigned int bb;
bit alarmflag;
bit exchangeflag;
unsigned int cc;
unsigned int dd;
bit okflag;
unsigned char oka;
unsigned char okb;
 
void main(void)
{
 unsigned char i,j;
p2=dispcode[digitcount];
tmod=0x01;
th0=(65536-500)/256;
tl0=(65536-500)%256;
tr0=1;
et0=1;
ea=1;
 
while(1)
{
if(cmpflag==0)
{
if(p3_6==0) //function key
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(p3_6==0)
{
if(hibitflag==0)
{
funcount++;
if(funcount==pslen+2)
{
 funcount=0;
cmpflag=1;
}
p1=dispcode[funcount];
}
else
{
second3=0;
}
while(p3_6==0);
}
}
 
if(p3_7==0) //digit key
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(p3_7==0)
{
 if(hibitflag==0)
{
digitcount++;
if(digitcount==10)
{
digitcount=0;
}
 p2=dispcode[digitcount];
if(funcount==1)
{
pslen=digitcount;
templen=pslen;
}
else if(funcount>1)
{
psbuf[funcount-2]=digitcount;
}
}
else
{
second3=0;
}
while(p3_7==0);
}
}
}
else
{
cmpflag=0;
for(i=0;i<pslen;i++)
{
if(ps[i]!=psbuf[i])
{
hibitflag=1;
 i=pslen;
errorflag=1;
rightflag=0;
cmpflag=0;
second3=0;
goto a;
}
}
cc=0;
errorflag=0;
 rightflag=1;
hibitflag=0;
a: cmpflag=0;
}
}
}
 
void t0(void) interrupt 1 using 0
{
th0=(65536-500)/256;
tl0=(65536-500)%256;
 
if((errorflag==1) && (rightflag==0))
{
bb++;
if(bb==800)
{
 bb=0;
alarmflag=~alarmflag;
}
if(alarmflag==1)
{
p0_0=~p0_0;
}
 
aa++;
if(aa==800)
{
aa=0;
p0_1=~p0_1;
}
second3++;
if(second3==6400)
{
second3=0;
hibitflag=0;
errorflag=0;
rightflag=0;
cmpflag=0;
p0_1=1;
alarmflag=0;
bb=0;
aa=0;
}
}
 
if((errorflag==0) && (rightflag==1))
{
 p0_1=0;
cc++;
if(cc<1000)
{
okflag=1;
}
else if(cc<2000)
{
okflag=0;
}
else
{
errorflag=0;
rightflag=0;
hibitflag=0;
cmpflag=0;
p0_1=1;
cc=0;
oka=0;
okb=0;
okflag=0;
p0_0=1;
}
if(okflag==1)
{
oka++;
if(oka==2)
{
oka=0;
p0_0=~p0_0;
}
}
else
{
okb++;
if(okb==3)
{
okb=0;
p0_0=~p0_0;
}
}
}
}

  • 上一篇: 4×4鍵盤及8位數(shù)碼管顯示構(gòu)成的電子密碼鎖
  • 下一篇: 動手制作6位數(shù)顯頻率計數(shù)器
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1