基于8086的電子密碼鎖技術報告_第1頁
基于8086的電子密碼鎖技術報告_第2頁
基于8086的電子密碼鎖技術報告_第3頁
基于8086的電子密碼鎖技術報告_第4頁
基于8086的電子密碼鎖技術報告_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目 錄第1章 實驗簡介11.1課題背景11.2 研究意義11.3 本文主要內容1第2章 硬件電路設計12.1相關芯片簡介32.2 仿真電路總體設計5第3章 軟件編程設計63.1系統(tǒng)概述63.2 程序流程圖設計73.3 按鍵控制93.4 字符動態(tài)顯示10第4章 系統(tǒng)實現10第5章 與軍事方面的聯系11第6章 結論116.1 設計總結116.2 收獲與體會116.3 缺點與不足1138 / 40文檔可自由編輯第1章 實驗簡介1.1課題背景在日常的生活和工作中,住宅與部門的安全防范、單位的文件檔案、財務報表以及一些個人資料的保存多以鎖的辦法來解決。這種辦法不僅給不法分子帶來了可乘之機,而且傳統(tǒng)的機械

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

3、在公共場所使用存在容易機械損壞,IC卡還存在容易丟失、損壞等特點。加上其成本較高,一定程度上限制了這類產品的普及和推廣,鑒于目前的技術水平與市場的接收程度,電子密碼鎖是這類電子防盜產品的主流。此外,可以通過編寫匯編語言程序以及硬件電路仿真設計來提高我們分析問題、解決問題的能力。1.3 本文主要內容本文介紹電子密碼鎖的軟硬件設計,下面簡單介紹成品的功能與操作。實現的功能:電子密碼鎖主要由一片8086CPU,一片74LS138譯碼器,三片74LS373,一片74LS245緩沖器,一片8255A及數碼管構成,通過軟件編程以及硬件鏈接可以實現四位密碼的設定、更改以及顯示,通過判斷密碼的正確與否來控制鎖

4、的開關。具體操作:輸入密碼:(1)、開始執(zhí)行時數碼管每一位都顯示“米”,點輸入密碼數碼管只有第一位顯示“米”,點擊數字鍵進行數字選擇;(2)、按下“確認”鍵后跳到第二個數字,操作同第一步;(3)、當四個密碼選中完畢,按下“確認輸入”鍵,顯示輸入的密碼; (4)、按下“開鎖”鍵,若密碼正確,同時顯示*YES,密碼鎖打開;(5)、按下“開鎖”鍵,若密碼錯誤,則顯示ERRO,密碼鎖不能打開,按下“輸入密碼”鍵,即可重新輸入密碼。更改密碼: (1)、在顯示*YES時,按下“更改密碼”鍵后,輸入新的四位密碼; (2)、按下“確認輸入”鍵,顯示新密碼,按下“確認”鍵,即可設定新密碼。錯誤警報: 若輸入錯誤

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

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

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

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

9、重新輸入 N Y顯示E R R O判定 N Y* 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)、密碼鍵入控制整個過程中主要是對是否有按鍵信息輸入進行掃描判斷,并

10、將所得信息與燈管編號進行比對,確定所選擇要鍵入數字的燈管。當目前的燈管數字被選出后,自動跳到下一個燈管,直到四位數字全部選擇完畢。 3.4 字符動態(tài)顯示四位密碼選出后,顯示四位選定數字,然后檢測密碼正確性,8255A通過端口A、B、C讀取指令,根據檢測結果,密碼正確則輸出代碼顯示*YES,錯誤則顯示ERRO。 見附錄:檢測密碼正確性更改密碼,鍵入“更改密碼”控制字后,與輸入密碼的流程相同,先選擇燈管,待選定數字后跳至下一個,直到四位數字全部選定,然后鍵入“確認更改”指令,則密碼更改成功。見附錄:密碼更改第4章 系統(tǒng)實現4.1 proteus仿真實驗圖4-1 Proteus仿真圖如圖4-1,為本

11、實驗的Proteus仿真模擬圖,整個實驗共用到8086CPU一個、74LS245一個、可編程并行接口8255A一個,74LS273鎖存器三個、74LS138譯碼器一個、數碼管一個、與非門兩個、開關八個、電阻八個。第5章 與軍事方面的聯系電子密碼鎖對于軍事方面有很大意義,應用也十分廣泛。部隊的許多地方都比較重要,比如彈藥庫、武器庫,和一些存放有關于軍事機密的地方等,除了要有人看管以外,還要上鎖,而對于普通的鎖來說,電子密碼鎖無疑是較為便捷和安全的。用鑰匙解鎖的話,鑰匙可能丟失,也可能被人偷去復制,安全性較低,而電子密碼鎖不用攜帶鑰匙,只需要記住密碼,也不用擔心丟失和被他人竊取,在更換密碼上電子密

12、碼比較方便;在外面的只有密碼輸入裝置,遇到暴力破解時也能保證物品的安全。第6章 結論6.1 設計總結通過對電子密碼鎖的設計,從設計硬件電路到編寫代碼,再到對程序的調試,在整個的設計過程中學到了很多。例如,我們用到了8255A的并行接口,將二進制的控制信息傳入8086CPU中處理,選擇對密碼是否正確進行調整。與此同時,我們又通過這次產品的設計加深了對硬件知識的理解以及常用芯片功能的掌握。在使用8255A和8253的時候,要對其進行初始化,這初始化程序的編寫,有助于對這些接口芯片的工作原理的理解。總之,在實驗中自己動手,把理論知識用于實踐,從中能夠學到很多。6.2 收獲與體會通過這一個多月以來對電

13、子密碼鎖的硬件電路的設計,以及對軟件程序的編寫,我們又對計算機硬件技術基礎這門課程有了更深一層的理解。與此同時,我們還有如下收獲:首先,我們能熟練掌握計算機硬件技術知識,其中包括硬件電路設計和軟件編程設計等內容。計算機硬件技術基礎是比較難學的科目,尤其是對那些沒有過編程基礎的學員來說,剛開始接觸時感覺力不從心。但是,通過設計這個電子密碼鎖,我組成員都能對硬件設計以及軟件編程熟練掌握,并且能實現原計劃的功能,效果比較顯著。其次,增強了我們組員之間的團結協(xié)作的能力。通過實驗,我們明白了團隊力量的強大,只有一個團隊能夠齊心協(xié)力、合理分工,工作才能有條不紊的高效開展。最后,我們能夠將自己設計的東西應用

14、于實際生活當中,充分體現了它的價值。作為軍校學員,我們有責任去開發(fā)設計有利于部隊生活實際的東西,這也是我們每一個學員的義務所在。6.3 缺點與不足雖然在這次電子密碼鎖的制作中我們收獲了很多,但是也不乏問題存在。首先,剛開始的時候分工不明確,導致制作進程比較緩慢。由于剛接觸一門全新的課程,再加上對程序的編寫不是很熟悉,所以大家都不知道從何入手,沒有明確的分工。隨著教員對硬件知識的講解,再結合平時的小組討論與自我學習,大家對C語言基本理解。于是開始分配任務,有主攻硬件設計的,有軟件編程的,也有PPT制作和論文編寫的,以此提高了我們的效率。其次,由于我們知識積累不足,導致大家在制作中遇到很多困難,期

15、出現厭煩心理,抱怨聲音較多,甚至出現了分歧與爭吵。當然,對于一個團隊來說,出現矛盾是在所難免的,這時候作為組長更應該起到穩(wěn)定軍心的作用。大家在一起,從頭來過,尋找解決問題的辦法,一起攻克難關。最后,是制作時間比較少。由于我們身處軍校這個特殊的環(huán)境,平時白天進行文化課的學習,下午又有體能訓練,所以自主時間比較少。我們平時的制作也只能利用晚自習、晚加班的時間進行,這同樣也是影響制作進程的原因之一。程序:#define GATE0 0x8000 #define GATE1 0x8002 #define GATE2 0x8004 #define GATECOM 0x8006#define IOA1 0

16、xc000#define IOB1 0xc002#define IOC1 0xc004#define IOCC1 0xc006#define IOA2 0xD000#define IOB2 0xD002#define IOC2 0xD004#define IOCC2 0xD006char 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;

17、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, 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,

18、 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 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;is;i+) for(j=0;j1000;j+); /

19、大約s=20 延時1s /* void yes() char tmp; int i; char yes1=0FFH,0FFH,0CH,44h,; char yes2=00H, 0DAH,77H,77h; char cs=0b00000000,0b00000001,0b00000010,0b00000011; tmp=inp(IOA2);while(tmp=0xffed) tmp=inp(IOA2); for(i=0;i4;i+) outp(IOC1,csi); outp(IOA1,yes1i); outp(IOB1,yes2i); delay(1); /* void fun82551() _a

20、sm mov dx, 0xc006 mov al, 0x80 out dx, al void fun82552() _asm mov dx, 0xD006 mov al, 0x9b out dx, al /*void err() / 密碼錯誤 char 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

21、(i=0;i4;i+) outp(IOC1,csi); outp(IOA1,err1i); outp(IOB1,err2i); delay(1); /* void chushihua(int r) / 復位 int i; if(r=1) for(i=0;i4;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)

22、; result=0; if(tmp=0xfffd)/1 outp(IOA1,num11); outp(IOB1,num21); result=1; if(tmp=0xfffb) outp(IOA1,num12); outp(IOB1,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

23、,num25); result=5; if(tmp=0xffbf) outp(IOA1,num16); outp(IOB1,num26); result=6; if(tmp=0xff7f) outp(IOA1,num17); outp(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

24、 change(int c) / 單純的更改密碼的函數 char result; char tmp; outp(IOC1,csc); outp(IOA1,yes10); outp(IOB1,yes20); tmp=inp(IOA2); while(tmp!=0xfff5) tmp=inp(IOA2);result= xianshi(); return result; /直接傳出去改過之后的哪位數字,不管是更改密碼還是輸入密碼,只管輸出 /*char genggaimima() /更改密碼 int c=0; char i1; i1= change(c); return i1; / 要求更改密碼,

25、直接更改第一位,并輸出更改之后的第一位密碼是多少 i=1,可以更改密碼 /*char huanwei(char c) /換位 c+; delay(50); return c; /傳出去換位之后的位 /* /*char shurumima() /第一位輸入密碼 輸入密碼 int c=0; char s1;/輸入的第一位密碼 s1= change(c); return s1; /傳出去第一位輸入的密碼 / void querengg(char shuru) / 顯示輸入之后的密碼 ffdf int i,j,m; for(j=0;j7;j+) for(i=0;i4;i+) m=shurui; out

26、p(IOC1,csi); outp(IOA1,num1m); outp(IOB1,num2m); delay(1); int panduan1(char shuru,char mima)/判斷 開鎖 I為1,可以更改密碼 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)/判斷 錯誤超過6次,警報 t為 錯誤密碼次數 if(shuru0=mima0&shuru1=mima1&shuru2=mima2&shuru3=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非常重要,只

溫馨提示

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

評論

0/150

提交評論