電路設(shè)計(jì)密碼鎖_第1頁(yè)
電路設(shè)計(jì)密碼鎖_第2頁(yè)
電路設(shè)計(jì)密碼鎖_第3頁(yè)
電路設(shè)計(jì)密碼鎖_第4頁(yè)
電路設(shè)計(jì)密碼鎖_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

千里之行,始于足下。第2頁(yè)/共2頁(yè)精品文檔推薦電路設(shè)計(jì)密碼鎖題目基于單片機(jī)的電子密碼鎖設(shè)計(jì)

一、設(shè)計(jì)的目的

1.了解單片機(jī)開(kāi)辟系統(tǒng)的組成及結(jié)構(gòu);

2.掌握I/O口的操作辦法;

3.可以熟練使用protues和keil軟件舉行連線和編程,并熟練掌握仿真辦法;

4.掌握數(shù)碼管的顯示原理;

5.掌握C語(yǔ)言編程辦法;

6.培養(yǎng)查找錯(cuò)誤和改正錯(cuò)誤的能力。

二、設(shè)計(jì)的內(nèi)容及要求

本設(shè)計(jì)采納單片機(jī)為主控芯片,結(jié)合外圍電路組成電子密碼操縱系統(tǒng)。設(shè)計(jì)要緊功能有:

1.設(shè)置6位密碼,密碼經(jīng)過(guò)鍵盤(pán)輸入,若密碼正確,則鎖打開(kāi),代表鎖的二極管亮。

2.初始密碼由單片機(jī)內(nèi)部決定,在開(kāi)鎖后20S內(nèi)用戶可對(duì)密碼舉行修改。

3.重設(shè)密碼時(shí)顯示數(shù)字。

4.密碼只能輸入6位數(shù)字,超過(guò)6位的輸入無(wú)效。

5.具有自動(dòng)報(bào)警功能:當(dāng)密碼輸入錯(cuò)誤三次,報(bào)警,蜂鳴器響10S。

6.LED數(shù)碼管顯示輸入密碼,為確保安全性所有密碼均用“—”表示。

基于單片機(jī)的電子密碼鎖設(shè)計(jì)

摘要

電子鎖能夠在日常日子和現(xiàn)代辦公中,住所與辦公室的安全防范、單位的文件檔案、財(cái)務(wù)報(bào)表以及一些個(gè)人資料的保存等多種場(chǎng)合使用。大大提高了主人貨物的安全性,安全能夠代替老式機(jī)械鎖。目前使用的密碼鎖種類繁多,各具特群。

本文從經(jīng)濟(jì)有用的角度動(dòng)身,采納AT89C2051單機(jī),研制了一款具有防盜自動(dòng)報(bào)警功能的電子密碼鎖。結(jié)合外圍的矩陣鍵盤(pán)輸入、數(shù)碼管顯示、開(kāi)鎖、報(bào)警等,用C語(yǔ)言編寫(xiě)程序,并用keil軟件舉行編譯設(shè)計(jì)了一款能夠更改密碼,具有報(bào)警功能的電子密碼操縱系統(tǒng)。

本設(shè)計(jì)采納矩陣鍵盤(pán)對(duì)密碼舉行輸入,具有較高的優(yōu)勢(shì),減少了I/O口的占用數(shù)目。密碼的顯示采納6位數(shù)碼管實(shí)現(xiàn),為確保安全性統(tǒng)一使用“—”顯示密碼。當(dāng)重新設(shè)置密碼時(shí)數(shù)碼管顯示數(shù)字。采納采納蜂鳴器模擬報(bào)警系統(tǒng),增加了密碼鎖的安全能力。軟件使用C語(yǔ)言編程,運(yùn)用自上而下的模塊化設(shè)計(jì)思想,使系統(tǒng)朝著分布式、小型化方向進(jìn)展,增強(qiáng)系統(tǒng)的可擴(kuò)展性和運(yùn)行的穩(wěn)定性。測(cè)試結(jié)果表明,設(shè)計(jì)達(dá)到電子密碼鎖的功能。

關(guān)鍵字:密碼鎖、AT89C51、矩陣鍵盤(pán)、報(bào)警

一背景

隨著社會(huì)科技的進(jìn)步,鎖已進(jìn)展到了密碼鎖、磁性鎖、電子鎖、激光鎖、聲控鎖等等。在傳統(tǒng)鑰匙的基礎(chǔ)上,加了一組或多組密碼,別同聲音,別同磁場(chǎng),別同聲波,別同光束光波,別同圖像。

(如指紋、眼底視網(wǎng)膜等)來(lái)操縱鎖的開(kāi)啟。從而大大提高了鎖的安全性,使別法之徒無(wú)從下手,人們也就能對(duì)自身財(cái)產(chǎn)安全有了更多的保障。當(dāng)今安全信息系統(tǒng)應(yīng)用越來(lái)越廣泛,特殊在愛(ài)護(hù)機(jī)密、維護(hù)隱私和財(cái)產(chǎn)愛(ài)護(hù)方面起到重大作用,而基于電子密碼鎖的安全系統(tǒng)是其中的組成部分,所以研究它具有重大的現(xiàn)實(shí)意義。

二設(shè)計(jì)目的

了解單片機(jī)開(kāi)辟系統(tǒng)的組成及結(jié)構(gòu);

掌握I/O口的操作辦法;

可以熟練使用protues和keil軟件舉行連線和編程,并熟練掌握仿真辦法;

掌握數(shù)碼管的顯示原理;

掌握C語(yǔ)言編程辦法;

培養(yǎng)查找錯(cuò)誤和改正錯(cuò)誤的能力。

三本設(shè)計(jì)所要實(shí)現(xiàn)的目標(biāo)

本次設(shè)計(jì)使用ATMEL公司的AT89S51實(shí)現(xiàn)一基于單片機(jī)的電子密碼鎖的設(shè)計(jì),其要緊具有如下功能:

(1)密碼經(jīng)過(guò)鍵盤(pán)輸入,若密碼正確,LED燈亮,則將密碼鎖打開(kāi)。

(2)報(bào)警、鎖定鍵盤(pán)功能。密碼輸入錯(cuò)誤數(shù)碼顯示器會(huì)浮現(xiàn)錯(cuò)誤提示,若密碼輸入錯(cuò)誤次數(shù)超過(guò)

3次,蜂鳴器報(bào)警同時(shí)鎖定鍵盤(pán)。

電子密碼鎖的設(shè)計(jì)要緊由三部分組成:4×4矩陣鍵盤(pán)接口電路、密碼鎖的操縱電路、輸出八段顯示電路。另外系統(tǒng)還有LED提示燈,報(bào)警蜂鳴器等。

四設(shè)計(jì)原理和硬件仿真方案

4.1矩陣鍵盤(pán)

密碼的輸入用矩陣鍵盤(pán)實(shí)現(xiàn),包括數(shù)字鍵和功能鍵。

具體功能設(shè)計(jì)如表一:

表一鍵盤(pán)具體功能設(shè)計(jì)表

按鍵鍵名功能

0~9鍵數(shù)字鍵輸入密碼

A鍵重設(shè)密碼鍵設(shè)定新密碼

C鍵清除鍵使顯示器清零

D鍵確定鍵比較密碼如圖一所示,矩陣鍵盤(pán)的每一條水平(行線)與垂直線(列線)的交叉處別相通,而是經(jīng)過(guò)一具按鍵來(lái)連通,利用這種行列式矩陣結(jié)構(gòu)只需要N條行線和M條列線即可組成有M

N個(gè)按鍵的鍵盤(pán)。

圖一矩陣鍵盤(pán)

本次設(shè)計(jì)需要0~9十個(gè)數(shù)字按鍵、一具清零鍵、一具確認(rèn)鍵和一具重置密碼鍵共13個(gè)按鍵,因此選用4X4的矩陣按鍵。

在這種行列式矩陣鍵盤(pán)編碼的單片機(jī)系統(tǒng)中,鍵盤(pán)處理程序首先執(zhí)行等待按鍵并確認(rèn)有無(wú)按鍵按下的程序段,還要對(duì)按鍵舉行消抖處理。

當(dāng)確認(rèn)有按鍵按下后,就要識(shí)不是哪一具按鍵被按下。本次設(shè)計(jì)使用的是線反轉(zhuǎn)法。給行線置為0x0f,給列線置為0xf0,再將行列舉行邏輯或結(jié)果為0xff,當(dāng)有按鍵按下時(shí)相應(yīng)的按鍵位行列

均為0,行列邏輯或別為0xff,由此可利用行列邏輯或后的值是否為0xff來(lái)推斷是否有按鍵按下。再依照掃描結(jié)果推斷按下鍵的位置。給相應(yīng)的按鍵賦值即可實(shí)現(xiàn)數(shù)字鍵和功能鍵。對(duì)功能鍵舉行相應(yīng)的軟件編程即可實(shí)現(xiàn)按鍵功能。

使用矩陣鍵盤(pán)能減少鍵盤(pán)和單片機(jī)接口所占用的I/O線數(shù)目,當(dāng)按鍵較多的時(shí)候通常采納這種辦法。

4.2開(kāi)鎖電路

在本次設(shè)計(jì)中用發(fā)光二極管代替電磁鎖,二極管亮表示鎖開(kāi),二極管滅表示沒(méi)有開(kāi)鎖。如圖二所示,當(dāng)輸入密碼與內(nèi)置密碼相配合時(shí)將P3.0置0,二極管亮。否則LED燈別亮。

圖二發(fā)光二極管電路

4.3報(bào)警電路

報(bào)警電路由單片機(jī)和蜂鳴器組成,如圖三所示,當(dāng)P3.1為高電平常蜂鳴器發(fā)出聲音報(bào)警。每次輸入的密碼與正確密碼舉行比較,假如相同,鎖開(kāi)燈亮。假如輸入錯(cuò)誤則用一具變量來(lái)記錄輸入錯(cuò)誤的次數(shù),當(dāng)輸入密碼錯(cuò)誤達(dá)到三次時(shí),蜂鳴器工作發(fā)出報(bào)警聲音,本次設(shè)計(jì)使用的是聲音間斷蜂鳴器聲音報(bào)警來(lái)報(bào)警,即聲音持續(xù)時(shí)刻20ms后又將P3.1置0時(shí)刻為20ms,這樣循環(huán),即可聽(tīng)見(jiàn)“嘟嘟嘟”的間斷響聲。設(shè)置報(bào)警總時(shí)刻為10S。

圖三

4.4數(shù)碼管顯示電路

密碼顯示電路由單片機(jī)、電阻排和6位數(shù)碼管組成。顯示電路如圖四所示。P0口操縱段選,P2口操縱位選。

為保證密碼的保密性,本設(shè)計(jì)采納“—”顯示所有輸入密碼,如圖四所示。當(dāng)重設(shè)密碼時(shí),為了防止手動(dòng)錯(cuò)誤,數(shù)碼管顯示數(shù)字,如圖五所示。本設(shè)計(jì)只允許輸入數(shù)字密碼6位,超過(guò)6位往后的數(shù)字無(wú)效,在C語(yǔ)言程序中以一具while循環(huán)實(shí)現(xiàn)。

數(shù)碼管顯示原理:

(1)“—”顯示原理:在挑選位選的事情下,段選僅點(diǎn)亮“g”管即可顯示當(dāng)位為“—”;

(2)實(shí)現(xiàn)右移逐漸點(diǎn)亮原理:

當(dāng)輸入一具數(shù)字時(shí),第五位(從左往右數(shù))賦值給第六位,第四位的值賦給第五位,第三位的值賦給第四位,第二位的值賦給第三位,第一位的值賦給第二位,輸入的值賦給第一位,并且點(diǎn)亮第一位數(shù)碼管。當(dāng)輸入第二個(gè)數(shù)字時(shí),每一位與輸入第一位時(shí)相同均向左移一位,將輸入的值賦給第一位,并且點(diǎn)亮第一位和第二位數(shù)碼管。這樣每輸入一具數(shù)字?jǐn)?shù)碼管就向右挪移了一位,輸入的數(shù)字賦值給第一位數(shù)碼管,并相應(yīng)點(diǎn)亮左邊的數(shù)碼管。

(3)當(dāng)按下功能鍵時(shí),相應(yīng)的功能鍵實(shí)現(xiàn)相應(yīng)的功能,而數(shù)碼管全部回零熄滅。直到再一次輸入數(shù)字。

圖四數(shù)碼管顯示電路

圖五重設(shè)密碼數(shù)碼管顯示數(shù)字

圖六密碼正確顯示黃燈

五軟件程序設(shè)計(jì)

本系統(tǒng)軟件設(shè)計(jì)由主程序、初始化程序、鍵盤(pán)掃描程序、密碼輸入程序、功能鍵定義程序、重置密碼程序、數(shù)碼管顯示程序、中斷延時(shí)程序、報(bào)警程序、延時(shí)程序組成。

5.1主程序流程圖

如圖六所示為主程序流程圖,開(kāi)始接上電源,程序舉行初始化設(shè)置,然后在鍵盤(pán)上輸入密碼,此系統(tǒng)舉行鍵盤(pán)掃描,推斷密碼是否正確,密碼正確開(kāi)鎖,密碼別正確統(tǒng)計(jì)錯(cuò)誤密碼次數(shù)加1。在開(kāi)鎖事情下舉行修改密碼,XXX確認(rèn)密碼修改成功,否則結(jié)束返回。若密碼修改成功則再執(zhí)行之前的操作。

圖六主程序流程圖

5.2鍵盤(pán)掃描程序

鍵盤(pán)掃描要緊算是對(duì)按鍵舉行掃描、消抖并被定位。鍵盤(pán)掃描流程圖如圖七所示。

圖七鍵盤(pán)掃描流程圖

鍵盤(pán)掃描C語(yǔ)言程序?yàn)椋?/p>

voidget_key()

{P1=0xf0;

lie=P1;

P1=0x0f;

hang=P1;

addres=hang|lie;//行列寄存器中的值相或得到按鍵值while(addres!=0xff)

//推斷是否有鍵按下,若adres的值別為0xff則有鍵按下{delay(5);//延時(shí)消抖

P1=0xf0;

lie=P1;

P1=0x0f;

hang=P1;

addres=hang|lie;

if(addres!=0xff)

{flag++;

switch(addres)//讀取鍵值

{

case0xee:num=1;break;//按鍵1動(dòng)作,設(shè)num=1

case0xde:num=2;break;//按鍵2動(dòng)作,設(shè)num=2

case0xbe:num=3;break;//按鍵3動(dòng)作,設(shè)num=3

case0x7e:num='A';break;//按鍵A動(dòng)作,設(shè)num=Acase0xed:num=4;break;//按鍵4動(dòng)作,設(shè)num=4

case0xdd:num=5;break;//按鍵5動(dòng)作,設(shè)num=5case0xbd:num=6;break;//按鍵6動(dòng)作,設(shè)num=6

case0x7d:num='B';break;//按鍵B動(dòng)作,設(shè)num=B

case0xeb:num=7;break;//按鍵7動(dòng)作,設(shè)num=7case0xdb:num=8;break;//按鍵8動(dòng)作,設(shè)num=8

case0xbb:num=9;break;//按鍵9動(dòng)作,設(shè)num=9

case0x7b:num='C';break;//按鍵C動(dòng)作,設(shè)num=C

case0xd7:num=0;break;//按鍵0動(dòng)作,設(shè)num=0

case0x77:num='D';break;//按鍵D動(dòng)作,設(shè)num=D

}

}

}

}

5.3數(shù)碼管顯示子程序

數(shù)碼管顯示流程圖如圖八所示:

數(shù)碼管顯示程序?yàn)椋?/p>

voiddisplay(ucharN)//顯示

{if(N==1)//推斷輸入密碼個(gè)數(shù)是否為1{temp=0xfe;

P0=0x40;//點(diǎn)亮g段使顯示為“—”

P2=temp;

delay(1);//延時(shí)使左邊第一位別停閃耀

P2=0xff;//點(diǎn)亮數(shù)碼管右邊N位}

if(N==2)//推斷輸入密碼個(gè)數(shù)是否為2

{temp=0xfe;

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);//帶循環(huán),使其挨個(gè)點(diǎn)亮

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

}

if(N==3)//推斷輸入密碼個(gè)數(shù)是否為3

{temp=0xfe;

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

}

if(N==4)//推斷輸入密碼個(gè)數(shù)是否為4

{temp=0xfe;

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

}

if(N==5)//推斷輸入密碼個(gè)數(shù)是否為5{temp=0xfe;

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

}

if(N==6)//推斷輸入密碼個(gè)數(shù)是否為6

{temp=0xfe;

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

P0=0x40;

P2=temp;

delay(1);

P2=0xff;

temp=_crol_(temp,1);

}

}

5.4報(bào)警電路

報(bào)警電路流程圖如圖九所示:

圖九報(bào)警電路流程圖

報(bào)警電路C語(yǔ)言程序:

voidalarm()

{if(km==3)推斷輸入錯(cuò)誤密碼的次數(shù){ucharn,m;

km=0;

for(m=50;m>0;m--)

{for(n=200;n>0;n--)

{K=~K;p3.1口取反

delay_us(1000);調(diào)用延時(shí)函數(shù)

}

K=0;p3.1口置零

delay(100);調(diào)用延時(shí)函數(shù)}}

}

5.6密碼重置子程序

密碼重置的條件是在鎖開(kāi),即燈亮的事情下舉行的,因此調(diào)用密碼子程序開(kāi)始必須對(duì)顯示器舉行清零并熄滅,關(guān)閉發(fā)光二極管。然后再調(diào)用輸入密碼子程序、鍵盤(pán)掃描子程序舉行密碼修改。密碼重置程序流程圖如圖十所示:

圖十密碼重置流程圖

重置密碼C語(yǔ)言程序:

voidrest_cipher()

{a=b=c=d=e=f=0;//熄滅數(shù)碼管N=0;//輸入密碼個(gè)數(shù)清零

D0=1;//p3.0口置1,led燈熄滅

while(con)

{get_key();//調(diào)用鍵盤(pán)掃描程序

if(N

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f};//字模定義

voiddelay(uintz);//延時(shí)函數(shù)

voidget_key();//鍵盤(pán)掃描子程序voidfun_key();//按鍵C,D子程序

voidinit();//初始化設(shè)置voidexter0();//定時(shí)器T0中斷服務(wù)voiddisp(uchara,ucharb,ucharc,uchard,uchare,ucharf);

//6位數(shù)字顯示子函數(shù)voidrest_cipher();//重置密碼子程序ucharcou_dis(uchar);//數(shù)字右移函數(shù)

voiddisplay(uchar);//數(shù)碼管顯示程序voidalarm();//報(bào)警電路程序voiddelay_us(uchar);//延時(shí)函數(shù)

ucharhang,lie,addres,num,temp,flag,sum,fun,mark,con,N,km;

uintto,aa;

uchara,b,c,d,e,f;//數(shù)碼管顯示位數(shù)

uchara1,b1,c1,d1,e1,f1;

sbitD0=P3^0;

sbitK=P3^1;

voidmain()

{init();//初始化設(shè)置while(1)

{

get_key();//鍵盤(pán)掃描子程序

if(N<6)

cou_dis

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論