proteus基于8086的電子密碼鎖技術(shù)報(bào)告_第1頁
proteus基于8086的電子密碼鎖技術(shù)報(bào)告_第2頁
proteus基于8086的電子密碼鎖技術(shù)報(bào)告_第3頁
proteus基于8086的電子密碼鎖技術(shù)報(bào)告_第4頁
proteus基于8086的電子密碼鎖技術(shù)報(bào)告_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選文檔目 錄第1章 實(shí)驗(yàn)簡介11.1課題背景11.2 研究意義11.3 本文主要內(nèi)容1第2章 硬件電路設(shè)計(jì)12.1相關(guān)芯片簡介32.2 仿真電路總體設(shè)計(jì)5第3章 軟件編程設(shè)計(jì)63.1系統(tǒng)概述63.2 程序流程圖設(shè)計(jì)73.3 按鍵控制93.4 字符動(dòng)態(tài)顯示10第4章 系統(tǒng)實(shí)現(xiàn)10第5章 結(jié)論115.1 設(shè)計(jì)總結(jié)115.2 收獲與體會(huì)115.3 缺點(diǎn)與不足11第1章 實(shí)驗(yàn)簡介1.1課題背景在日常的生活和工作中,住宅與部門的安全防范、單位的文件檔案、財(cái)務(wù)報(bào)表以及一些個(gè)人資料的保存多以鎖的辦法來解決。這種辦法不僅給不法分子帶來了可乘之機(jī),而且傳統(tǒng)的機(jī)械式開鎖也給人們的出行帶來了不便,最重要的是一旦鑰

2、匙丟失后安全性也大打折扣。隨著科學(xué)技術(shù)的不斷發(fā)展,人們對(duì)日常生活中的安全保險(xiǎn)器件的要求越來越高。為滿足人們對(duì)鎖的使用需要,增加其安全性,用電子密碼鎖代替鑰匙鎖應(yīng)運(yùn)而生。密碼鎖具有安全性高、成本低、功耗低、易操作等優(yōu)點(diǎn)。1.2 研究意義在安全技術(shù)防范領(lǐng)域,具有防盜換碼功能的電子密碼鎖逐漸代替?zhèn)鹘y(tǒng)的機(jī)械式密碼鎖,克服了機(jī)械式密碼鎖密碼量少、安全性能差等缺點(diǎn),使密碼鎖無論在技術(shù)上還是在性能上都大大提高一步。隨著人們對(duì)安全的重視和科技的發(fā)展,許多電子智能鎖。但是這些產(chǎn)品的特點(diǎn)是針對(duì)特定的指紋和有效磁卡的,只能適用于保密要求的箱、柜、門等。而且指紋識(shí)別器若在公共場所使用存在容易機(jī)械損壞,IC卡還存在容易

3、丟失、損壞等特點(diǎn)。加上其成本較高,一定程度上限制了這類產(chǎn)品的普及和推廣,鑒于目前的技術(shù)水平與市場的接收程度,電子密碼鎖是這類電子防盜產(chǎn)品的主流。此外,可以通過編寫匯編語言程序以及硬件電路仿真設(shè)計(jì)來提高我們分析問題、解決問題的能力。1.3 本文主要內(nèi)容本文介紹電子密碼鎖的軟硬件設(shè)計(jì),下面簡單介紹成品的功能與操作。實(shí)現(xiàn)的功能:電子密碼鎖主要由一片8086CPU,一片74LS138譯碼器,三片74LS373,一片74LS245緩沖器,一片8255A及數(shù)碼管構(gòu)成,通過軟件編程以及硬件鏈接可以實(shí)現(xiàn)四位密碼的設(shè)定、更改以及顯示,通過判斷密碼的正確與否來控制鎖的開關(guān)。具體操作:輸入密碼:(1)、開始執(zhí)行時(shí)數(shù)

4、碼管每一位都顯示“米”,點(diǎn)輸入密碼數(shù)碼管只有第一位顯示“米”,點(diǎn)擊數(shù)字鍵進(jìn)行數(shù)字選擇;(2)、按下“確認(rèn)”鍵后跳到第二個(gè)數(shù)字,操作同第一步;(3)、當(dāng)四個(gè)密碼選中完畢,按下“確認(rèn)輸入”鍵,顯示輸入的密碼; (4)、按下“開鎖”鍵,若密碼正確,同時(shí)顯示*YES,密碼鎖打開;(5)、按下“開鎖”鍵,若密碼錯(cuò)誤,則顯示ERRO,密碼鎖不能打開,按下“輸入密碼”鍵,即可重新輸入密碼。更改密碼: (1)、在顯示*YES時(shí),按下“更改密碼”鍵后,輸入新的四位密碼; (2)、按下“確認(rèn)輸入”鍵,顯示新密碼,按下“確認(rèn)”鍵,即可設(shè)定新密碼。錯(cuò)誤警報(bào): 若輸入錯(cuò)誤密碼超過5次,警報(bào)會(huì)自動(dòng)響起,只有再次輸入正確密

5、碼后方可解除警報(bào)。第2章 硬件電路設(shè)計(jì)2.1相關(guān)芯片簡介1. 8255第一片8255定義A.B.C口都為輸出狀態(tài),A.B口控制數(shù)碼管的輸入口,對(duì)應(yīng)相應(yīng)的段碼表,來顯示。C口的PC0,PC1經(jīng)過2-4譯碼器,來激活數(shù)碼管1,2,3,4通道,并采用00,01,10,11,循環(huán)輸出的方式,使數(shù)碼管通道循環(huán)激活,實(shí)現(xiàn)動(dòng)態(tài)顯示。第二片8255定義A,B,C口都為輸入狀態(tài),對(duì)應(yīng)輸入相應(yīng)的按鈕狀態(tài),對(duì)應(yīng)相應(yīng)的程序,實(shí)現(xiàn)相應(yīng)功能。2. 8253使用0通道,方式3,對(duì)輸入的始終信號(hào)分頻,當(dāng)輸入密碼次數(shù)大于5次時(shí),初始化8253,并發(fā)出警報(bào)提示聲。當(dāng)輸入密碼正確后,激活1通道,警報(bào)提示聲接觸。3. 2-4譯碼器由

6、于8086運(yùn)行速度過快,數(shù)碼管動(dòng)態(tài)顯示出現(xiàn)顯示不全的現(xiàn)象,因此PC0,PC1輸出經(jīng)過2-4譯碼器之后,再激活數(shù)碼管,起到緩沖作用。4. 16位數(shù)碼管16位數(shù)碼管的數(shù)碼管,由16個(gè)引腳控制,低電平有效,其中A-H控制外圈0,K-M控制內(nèi)部* S1-s4是通道控制,高電平有效。2.2 仿真電路總體設(shè)計(jì) 8086CPU輸出可編程并行接口8255A總線連接數(shù)碼管控制連接警報(bào)器控制按鈕本實(shí)驗(yàn)設(shè)計(jì)中,硬件部分涉及到了8086CPU、可編程并行接口8255A,并配合74LS373鎖存器、74LS245緩沖器、74LS138譯碼器等基本元器件,實(shí)現(xiàn)了設(shè)想的電子密碼鎖。8255A:如圖2-6,8255A的D0D

7、7端口與CPU數(shù)據(jù)線ADOAD7相接,CPU通過控制線的片選、讀、寫信號(hào)接口對(duì)8255A進(jìn)行讀、寫與片選操作。外設(shè)接口端的A0-A7八個(gè)開關(guān)連接245的A0-A7端口,將外設(shè)信息傳送到245中,鍵入密碼輸入、密碼確定、修改密碼等多種功能。圖2-6 開關(guān)功能如圖2-7,A口的PA0-PA7端口通過鎖存器與數(shù)碼管相連用于外圈顯示,B口的PB0-PB7端口通過74LS373鎖存器與數(shù)碼管進(jìn)行連接用于內(nèi)部“米”字格的顯示。第3章 軟件編程設(shè)計(jì)3.1系統(tǒng)概述密碼鎖是一種通過密碼輸入來控制電路或芯片工作,從而控制機(jī)械的開關(guān)和閉合,完成開鎖閉鎖任務(wù)的電子產(chǎn)品。它的種類很多,有簡易的電路產(chǎn)品,也有基于芯片的性

8、價(jià)比較高的產(chǎn)品。現(xiàn)在運(yùn)用較廣的電子密碼鎖是以芯片為核心,通過編程來實(shí)現(xiàn)的,其性能和安全性已大大超過機(jī)械鎖。其特點(diǎn)是保密性好,隨機(jī)開鎖成功率幾乎為零。密碼可變,用戶可隨時(shí)更改密碼,防止密碼被盜,同時(shí)也可以避免因人員的更替而使鎖的密級(jí)下降。無活動(dòng)零件,不會(huì)磨損,壽命長。使用靈活性好,不像機(jī)械鎖必須佩帶鑰匙才能開鎖。3.2 程序流程圖設(shè)計(jì)密碼的輸入與判定初始化更改密碼按數(shù)字按鈕確定 換位 位數(shù)+1 位數(shù)=4重新輸入 N Y顯示E R R O判定 N Y* Y E S開鎖圖3-1 密碼的輸入與判定密碼的更改更改密碼按數(shù)字按鈕確定 換位 位數(shù)+1 位數(shù)=4重新輸入 N Y顯示E R R O判定 N Y*

9、 Y E S開鎖圖3-2 密碼的更改3.3 按鍵控制(1)、控制字 給8255A輸入端口控制字:void fun82531() _asm mov dx, 0x8006 mov al, 0x37 out dx, al outp(GATE0,0x02); outp(GATE0,0x00); void fun82532() _asm mov dx, 0x8006 mov al, 0x77 out dx, al outp(GATE0,0x99); outp(GATE0,0x99); (2)、密碼鍵入控制整個(gè)過程中主要是對(duì)是否有按鍵信息輸入進(jìn)行掃描判斷,并將所得信息與燈管編號(hào)進(jìn)行比對(duì),確定所選擇要鍵入數(shù)

10、字的燈管。當(dāng)目前的燈管數(shù)字被選出后,自動(dòng)跳到下一個(gè)燈管,直到四位數(shù)字全部選擇完畢。 3.4 字符動(dòng)態(tài)顯示四位密碼選出后,顯示四位選定數(shù)字,然后檢測密碼正確性,8255A通過端口A、B、C讀取指令,根據(jù)檢測結(jié)果,密碼正確則輸出代碼顯示*YES,錯(cuò)誤則顯示ERRO。 見附錄:檢測密碼正確性更改密碼,鍵入“更改密碼”控制字后,與輸入密碼的流程相同,先選擇燈管,待選定數(shù)字后跳至下一個(gè),直到四位數(shù)字全部選定,然后鍵入“確認(rèn)更改”指令,則密碼更改成功。見附錄:密碼更改第4章 系統(tǒng)實(shí)現(xiàn)4.1 proteus仿真實(shí)驗(yàn)圖4-1 Proteus仿真圖如圖4-1,為本實(shí)驗(yàn)的Proteus仿真模擬圖,整個(gè)實(shí)驗(yàn)共用到8

11、086CPU一個(gè)、74LS245一個(gè)、可編程并行接口8255A一個(gè),74LS273鎖存器三個(gè)、74LS138譯碼器一個(gè)、數(shù)碼管一個(gè)、與非門兩個(gè)、開關(guān)八個(gè)、電阻八個(gè)。第6章 結(jié)論6.1 設(shè)計(jì)總結(jié)通過對(duì)電子密碼鎖的設(shè)計(jì),從設(shè)計(jì)硬件電路到編寫代碼,再到對(duì)程序的調(diào)試,在整個(gè)的設(shè)計(jì)過程中學(xué)到了很多。例如,我們用到了8255A的并行接口,將二進(jìn)制的控制信息傳入8086CPU中處理,選擇對(duì)密碼是否正確進(jìn)行調(diào)整。與此同時(shí),我們又通過這次產(chǎn)品的設(shè)計(jì)加深了對(duì)硬件知識(shí)的理解以及常用芯片功能的掌握。在使用8255A和8253的時(shí)候,要對(duì)其進(jìn)行初始化,這初始化程序的編寫,有助于對(duì)這些接口芯片的工作原理的理解??傊?,在實(shí)

12、驗(yàn)中自己動(dòng)手,把理論知識(shí)用于實(shí)踐,從中能夠?qū)W到很多。6.2 收獲與體會(huì)通過這一個(gè)多月以來對(duì)電子密碼鎖的硬件電路的設(shè)計(jì),以及對(duì)軟件程序的編寫,我們又對(duì)計(jì)算機(jī)硬件技術(shù)基礎(chǔ)這門課程有了更深一層的理解。與此同時(shí),我們還有如下收獲:首先,我們能熟練掌握計(jì)算機(jī)硬件技術(shù)知識(shí),其中包括硬件電路設(shè)計(jì)和軟件編程設(shè)計(jì)等內(nèi)容。計(jì)算機(jī)硬件技術(shù)基礎(chǔ)是比較難學(xué)的科目,尤其是對(duì)那些沒有過編程基礎(chǔ)的學(xué)員來說,剛開始接觸時(shí)感覺力不從心。但是,通過設(shè)計(jì)這個(gè)電子密碼鎖,我組成員都能對(duì)硬件設(shè)計(jì)以及軟件編程熟練掌握,并且能實(shí)現(xiàn)原計(jì)劃的功能,效果比較顯著。其次,增強(qiáng)了我們組員之間的團(tuán)結(jié)協(xié)作的能力。通過實(shí)驗(yàn),我們明白了團(tuán)隊(duì)力量的強(qiáng)大,只有一

13、個(gè)團(tuán)隊(duì)能夠齊心協(xié)力、合理分工,工作才能有條不紊的高效開展。6.3 缺點(diǎn)與不足雖然在這次電子密碼鎖的制作中我們收獲了很多,但是也不乏問題存在。首先,剛開始的時(shí)候分工不明確,導(dǎo)致制作進(jìn)程比較緩慢。由于剛接觸一門全新的課程,再加上對(duì)程序的編寫不是很熟悉,所以大家都不知道從何入手,沒有明確的分工。隨著教員對(duì)硬件知識(shí)的講解,再結(jié)合平時(shí)的小組討論與自我學(xué)習(xí),大家對(duì)C語言基本理解。于是開始分配任務(wù),有主攻硬件設(shè)計(jì)的,有軟件編程的,也有PPT制作和論文編寫的,以此提高了我們的效率。其次,由于我們知識(shí)積累不足,導(dǎo)致大家在制作中遇到很多困難,期出現(xiàn)厭煩心理,抱怨聲音較多,甚至出現(xiàn)了分歧與爭吵。當(dāng)然,對(duì)于一個(gè)團(tuán)隊(duì)來

14、說,出現(xiàn)矛盾是在所難免的,這時(shí)候作為組長更應(yīng)該起到穩(wěn)定軍心的作用。大家在一起,從頭來過,尋找解決問題的辦法,一起攻克難關(guān)。程序:#define GATE0 0x8000 #define GATE1 0x8002 #define GATE2 0x8004 #define GATECOM 0x8006#define IOA1 0xc000#define IOB1 0xc002#define IOC1 0xc004#define IOCC1 0xc006#define IOA2 0xD000#define IOB2 0xD002#define IOC2 0xD004#define IOCC2 0xD

15、006char err1=0CH, 38H,38H,00H;char err2=77H, 67H,67H,0FFH;char cs=0b00000000,0b00000001,0b00000010,0b00000011;char num1=00H,0f3h,88h,0c0h,73h,44H,04H,0F0H,00H,40H;char num2=0ffh,0ffh,77h,77h,77h,77h,77h,0ffh,77h,77h;char yes1=0FFH,0FFH,0CH,44h,;char yes2=00H, 0DAH,77H,77h;void outp(unsigned int addr

16、, char data)/ Output byte to port _asm mov dx, addr mov al, data out dx, al char inp(unsigned int addr)/ Input byte from port char result; _asm mov dx, addr in al, dx mov result, al return result; / void fun82531() _asm mov dx, 0x8006 mov al, 0x37 out dx, al outp(GATE0,0x02); outp(GATE0,0x00); void

17、fun82532() _asm mov dx, 0x8006 mov al, 0x77 out dx, al outp(GATE0,0x99); outp(GATE0,0x99); void delay(int s) unsigned int i,j; for(i=0;i<s;i+) for(j=0;j<1000;j+); / 大約s=20 延時(shí)1s /* void yes() char tmp; int i; char yes1=0FFH,0FFH,0CH,44h,; char yes2=00H, 0DAH,77H,77h; char cs=0b00000000,0b000000

18、01,0b00000010,0b00000011; tmp=inp(IOA2);while(tmp=0xffed) tmp=inp(IOA2); for(i=0;i<4;i+) outp(IOC1,csi); outp(IOA1,yes1i); outp(IOB1,yes2i); delay(1); /* void fun82551() _asm mov dx, 0xc006 mov al, 0x80 out dx, al void fun82552() _asm mov dx, 0xD006 mov al, 0x9b out dx, al /*void err() / 密碼錯(cuò)誤 cha

19、r tmp; int i; char err1=0CH, 38H,38H,00H; char err2=77H, 67H,67H,0FFH; char cs=0b00000000,0b00000001,0b00000010,0b00000011; tmp=inp(IOA2); while(tmp=0xffed) tmp=inp(IOA2); for(i=0;i<4;i+) outp(IOC1,csi); outp(IOA1,err1i); outp(IOB1,err2i); delay(1); /* void chushihua(int r) / 復(fù)位 int i; if(r=1) fo

20、r(i=0;i<4;i+) outp(IOC1,csi); outp(IOA1,num10); outp(IOB1,num20); delay(1); char xianshi() char tmp; char result; tmp=inp(IOB2); if(tmp=0xfffe)/0 outp(IOA1,num10); outp(IOB1,num20); result=0; if(tmp=0xfffd)/1 outp(IOA1,num11); outp(IOB1,num21); result=1; if(tmp=0xfffb) outp(IOA1,num12); outp(IOB1

21、,num22); result=2; if(tmp=0xfff7) outp(IOA1,num13); outp(IOB1,num23); result=3; if(tmp=0xffef) outp(IOA1,num14); outp(IOB1,num24); result=4; if(tmp=0xffdf) outp(IOA1,num15); outp(IOB1,num25); result=5; if(tmp=0xffbf) outp(IOA1,num16); outp(IOB1,num26); result=6; if(tmp=0xff7f) outp(IOA1,num17); outp

22、(IOB1,num27); result=7; tmp=inp(IOC2); if(tmp=0xfffe) outp(IOA1,num18); outp(IOB1,num28); result=8; if(tmp=0xfffd) outp(IOA1,num19); outp(IOB1,num29); result=9; return result; /* char change(int c) / 單純的更改密碼的函數(shù) char result; char tmp; outp(IOC1,csc); outp(IOA1,yes10); outp(IOB1,yes20); tmp=inp(IOA2);

23、 while(tmp!=0xfff5) tmp=inp(IOA2);result= xianshi(); return result; /直接傳出去改過之后的哪位數(shù)字,不管是更改密碼還是輸入密碼,只管輸出 /*char genggaimima() /更改密碼 int c=0; char i1; i1= change(c); return i1; / 要求更改密碼,直接更改第一位,并輸出更改之后的第一位密碼是多少 i=1,可以更改密碼 /*char huanwei(char c) /換位 c+; delay(50); return c; /傳出去換位之后的位 /* /*char shurumim

24、a() /第一位輸入密碼 輸入密碼 int c=0; char s1;/輸入的第一位密碼 s1= change(c); return s1; /傳出去第一位輸入的密碼 / void querengg(char shuru) / 顯示輸入之后的密碼 ffdf int i,j,m; for(j=0;j<7;j+) for(i=0;i<4;i+) m=shurui; outp(IOC1,csi); outp(IOA1,num1m); outp(IOB1,num2m); delay(1); int panduan1(char shuru,char mima)/判斷 開鎖 I為1,可以更改密

25、碼 I為0不允許更改密碼 int i; if(shuru0=mima0&&shuru1=mima1&&shuru2=mima2&&shuru3=mima3) /判斷輸入的密碼和更改的密碼是否一樣 yes(); i=1; else err(); i=0; return i; int panduan2(char shuru,char mima,int t)/判斷 錯(cuò)誤超過6次,警報(bào) t為 錯(cuò)誤密碼次數(shù) if(shuru0=mima0&&shuru1=mima1&&shuru2=mima2&&shuru3

26、=mima3) /判斷輸入的密碼和更改的密碼是否一樣 yes(); t=0; else err(); t+; return t; / void main(void) int i1=0,i2=1,i3=2,i4=3; int s1=0,s2=1,s3=2,s4=3; int r=1; /變量R非常重要,只有當(dāng)R=1時(shí),才可以修改密碼,初始化密碼,在判斷密碼中,會(huì)返回一個(gè)R,得知R=1or0. !亮點(diǎn) int t=0; char mima100=0,0,0,0; /這兩個(gè)數(shù)組是亮點(diǎn) char shuru100=0,0,0,0; char tmp; int c1=0; /更改密碼的led位置 !亮點(diǎn) int c2=0; /輸入密碼的led位置 fun82551(); fun82552(); while(1) tmp=inp(IOA2); if(tmp=0xfffC

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論