電子密碼鎖課程設計-單片機原理及應用課程設計_第1頁
電子密碼鎖課程設計-單片機原理及應用課程設計_第2頁
電子密碼鎖課程設計-單片機原理及應用課程設計_第3頁
電子密碼鎖課程設計-單片機原理及應用課程設計_第4頁
電子密碼鎖課程設計-單片機原理及應用課程設計_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機原理及應用課程設計渝州科技職業(yè)學院電子密碼鎖院 系: 電子信息工程學院 專業(yè)班級: 學生姓名: 學 號: 指導教師姓名: 指導教師職稱: 目 錄1 緒論 3 1.1電子密碼鎖簡介3 1.2本設計所要實現(xiàn)的目標3 1.3設計方案簡介32 系統(tǒng)總體方案設計 4 2.1設計框圖4 2.2設計原理43 硬件系統(tǒng)構(gòu)成 4 3.1主要源器件4 3.2電路總體構(gòu)成5 3.3電源輸入電路5 3.4鍵盤輸入電路5 3.5密碼存儲電路6 3.6復位電路 6 3.7晶振電路 7 3.8顯示電路 8 3.9報警電路 8 3.10開鎖電路94 軟件系統(tǒng)設計10 4.1主程序流程圖 10 4.2按鍵軟件設計 11

2、4.3密碼設置軟件設計 12 4.4開鎖軟件設計 13結(jié)論15參考文獻15附錄15附錄1硬件原理圖15附錄2 C語言程序15 1 緒論1.1 電子密碼鎖簡介電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關的閉合,完成開鎖、閉鎖任務的電子產(chǎn)品。它的種類很多,有簡易的電路產(chǎn)品,也有基于芯片的性價比較高的產(chǎn)品?,F(xiàn)在應用較廣的電子密碼鎖是以芯片為核心,通過編程來實現(xiàn)的。其性能和安全性已大大超過了機械鎖。其特點如下:1) 保密性好,編碼量多,遠遠大于彈子鎖。隨機開鎖成功率幾乎為零。2) 密碼可變,用戶可以隨時更改密碼,防止密碼被盜,同時也可以避免因人員的更替而使鎖的密級下降。3) 誤

3、碼輸入保護,當輸入密碼多次錯誤時,報警系統(tǒng)自動啟動。4) 無活動零件,不會磨損,壽命長。5) 使用靈活性好,不像機械鎖必須佩帶鑰匙才能開鎖。1.2 本設計所要實現(xiàn)的目標本設計采用單片機為主控芯片,結(jié)合外圍電路,組成電子密碼鎖,用戶想要打開鎖,必先通過提供的鍵盤輸入正確的密碼才能將鎖打開,密碼輸入錯誤有提示,為了提高安全性,當密碼輸入錯誤三次將報警。密碼可以有用戶自己修改設定,鎖打開后才能修改密碼。修改密碼之前必須再次輸入就的密碼,在輸入新密碼的時候要二次確認,以防止誤操作。1.3 設計方案簡介采用以單片機為核心的控制方案由于單片機種類繁多,各種型號都有其一定的應用環(huán)境,因此在選用時要多加比較,

4、合理選擇,以期獲得最佳的性價比。一般來說在選取單片機時從下面幾個方面考慮:性能、存儲器、運行速度、I/O口、定時/計數(shù)器、串行接口、模擬電路功能、工作電壓、功耗、封裝形式、抗干擾性、保密性,除了以上的一些的還有一些最基本的比如:中斷源的數(shù)量和優(yōu)先級、工作溫度范圍、有沒有低電壓檢測功能、單片機內(nèi)有無時鐘振蕩器、有無上電復位功能等。在開發(fā)過程中單片機還受到:開發(fā)工具、編程器、開發(fā)成本、開發(fā)人員的適應性、技術支持和服務等等因素。基于以上因素本設計選用單片機80C51作為本設計的核心元件,利用單片機靈活的編程設計和豐富的I/O端口,及其控制的準確性,實現(xiàn)基本的密碼鎖功能。在單片機的外圍電路外接輸入鍵盤

5、用于密碼的輸入和一些功能的控制,外接AT24C02芯片用于密碼的存儲,外接LCD1602顯示器用于顯示作用。當用戶需要開鎖時,先按鍵盤開鎖鍵之后按鍵盤的數(shù)字鍵09輸入密碼。密碼輸完后按下確認鍵,如果密碼輸入正確則開鎖,不正確顯示密碼錯誤重新輸入密碼,當三次密碼錯誤則發(fā)出報警;當用戶需要修改密碼時,先按下鍵盤設置鍵后輸入原來的密碼,只有當輸入的原密碼正確后才能設置新密碼。新密碼輸入無誤后按確認鍵使新密碼將得到存儲,密碼修改成功。2 系統(tǒng)總體方案設計2.1設計框圖設計框圖見圖2-1。 80C51鍵盤輸入復位電路密碼存儲電路晶振電路電源輸入顯示電路報警電路開鎖電路圖2-1 系統(tǒng)設計框圖2.2 基本原

6、理本設計主要由單片機、矩陣鍵盤、液晶顯示器和密碼存儲等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進行各種功能的實現(xiàn)。由用戶通過連接單片機的矩陣鍵盤輸入密碼,后經(jīng)過單片機對用戶輸入的密碼與自己保存的密碼進行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報警電路控制開鎖還是報警,實際使用時只要將單片機的負載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可,當然也可以用繼電器的常開觸點去控制電磁鐵吸合線圈。本系統(tǒng)共有兩部分構(gòu)成,即硬件部分與軟件部分。其中硬件部分由電源輸入部分、鍵盤輸入部分、密碼存儲部分、復位部分、晶振部分、顯示部分、報警部分、開鎖部分組成,軟件部分對應的由主程序、初始化

7、程序、LCD顯示程序、鍵盤掃描程序、啟動程序、關閉程序、建功能程序、密碼設置程序、EEPROM讀寫程序和延時程序等組成。3 硬件系統(tǒng)設計3.1 主要源器件1、主控芯片80C512、存儲芯片AT24C023、LCD16022顯示器4、晶體振蕩器3.2 電路總體構(gòu)成 電路總體構(gòu)成圖見圖3-1。圖3-1電路總體構(gòu)成圖3.3 電源輸入電路密碼鎖主要控制部分電源需要用5V直流電源供電,其電路如圖3-2所示,而5V電源輸入時往往伴有雜波,所以加一個2.2uF的電容濾波。這樣輸出的電壓一般能滿足要求。圖3-2 電源輸入電路原理圖3.4 鍵盤輸入電路由于本設計所用到的按鍵數(shù)量較多而不適合用獨立按鍵式鍵盤。采用

8、的是矩陣式按鍵鍵盤,它由行線和列線組成,也稱行列式鍵盤,按鍵位于行列的交叉點上,密碼鎖的密碼由鍵盤輸入完成,與獨立式按鍵鍵盤相比,要節(jié)省很多I/O口。本設計中使用的這個4*4鍵盤不但能完成密碼的輸入還能作特別功能鍵使用,比如清空顯示功能等。鍵盤的每個按鍵功能在程序設計中設置 。其大體功能(看鍵盤按鍵上的標記)及與單片機引腳接法見圖3-3。圖3-3 鍵盤輸入原理圖3.5 密碼存儲電路AT24C02是ATMEL公司的2KB字節(jié)的電可擦除存儲芯片,采用兩線串行的總線和單片機通訊,電壓最低可以到2.5V,額定電流為1mA,靜態(tài)電流10Ua(5.5V),芯片內(nèi)的資料可以在斷電的情況下保存40年以上,而且

9、采用8腳的DIP封裝,使用方便。其電路見圖3-4。圖3-4 AT24C02引腳圖圖中1、2、3腳是三條地址線,用于確定芯片的硬件地址,在80C51上它們都能接地,第5腳和第8腳分別為正、負電源。AT24C02中帶有片內(nèi)地址寄存器,每寫入或讀出一個數(shù)據(jù)字節(jié)后,該地址寄存器自動加1,以實現(xiàn)對下一個儲存單元的讀寫,所有字節(jié)均以單一操作方式讀取。3.6 復位電路單片機復位是使CPU和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài),并從這個狀態(tài)開始工作,例如復位后PC0000H,使單片機從第個單元取指令。無論是在單片機剛開始接上電源時,還是斷電后或者發(fā)生故障后都要復位。在復位期間(即RST為高電平期間),

10、P0口為高組態(tài),P1P3口輸出高電平;外部程序存儲器讀選通信號PSEN無效。地址鎖存信號ALE也為高電平。根據(jù)實際情況選擇如圖2-8所示的復位電路。該電路在最簡單的復位電路下增加了手動復位按鍵,在接通電源瞬間,電容C1上的電壓很小,復位下拉電阻上的電壓接近電源電壓,即RST為高電平,在電容充電的過程中RST端電壓逐漸下降,當RST端的電壓小于某一數(shù)值后,CPU脫離復位狀態(tài),由于電容C1足夠大,可以保證RST高電平有效時間大于24個振蕩周期,CPU能夠可靠復位。增加手動復位按鍵是為了避免死機時無法可靠復位。當復位按鍵按下后電容C1通過R5放電。當電容C1放電結(jié)束后,RST端的電位由R11與R15

11、分壓比決定。由于R113?報警程序修改程序YNNY圖4-1主程序流程圖4.2 按鍵軟件設計如圖4-2按鍵功能流程圖,在按鍵當中,有與輸入、開鎖、清除、設置、確認的程序相對應的按鍵,并按順序與輸入的數(shù)相比較,當輸入正確時,進入密碼程序,錯誤時進行清除,輸入兩次新密碼正確時,可進行重新設置密碼,最后確認程序。開始鍵值輸入?鍵值開鎖?鍵值清除?鍵值設置?鍵值確認?密碼輸入程序設置程序清除程序開鎖程序確認程序YYYYYNNNN返回N圖4-2 按鍵功能流程圖4.3 密碼設置軟件設計如圖4-3為密碼設置流程圖,開始按下設置鍵,輸入舊密碼,如果錯誤累計三次,進行報警程序。如果輸入正確,可以修改密碼,確認后再

12、次輸入新密碼,如果兩次輸入一樣,則輸入成功。如果兩次輸入的新密碼不一樣,則修改密碼失敗,重新返回設置新密碼。輸入舊密碼N按下設置鍵開始所輸入舊密碼正確?輸入次數(shù)加1報警程序N返回次數(shù)3?輸新密碼Y再次輸新密碼Y設置成功NY兩次新密碼輸入相同?圖4-3 密碼設置流程圖4.4 開鎖軟件設計如圖4-4開鎖流程圖,開始時按開鎖鍵,輸入密碼,如果輸入正確,則開鎖成功。如果輸入錯誤累計達到三次,則執(zhí)行報警程序。 初始化按開鎖鍵輸入密碼按確認鍵所輸入密碼正確?Y開鎖開始輸入次數(shù)加1次數(shù)3?報警程序返回NYN圖4-4 開鎖流程圖結(jié)論在此次課程設計中,首先是Proteus和Keil軟件使用的不熟練造成了一定的阻

13、礙,經(jīng)過一段時間的使用和練習克服了該困難。其次,對于模塊結(jié)構(gòu)程序要一個個子程序分別調(diào)試。調(diào)試時,一定要符合入口條件和出口條件,調(diào)試可用單步運行和斷點運行方式,通過檢查用者系統(tǒng)的CPU現(xiàn)場情況、RAM的內(nèi)容和IO口的狀態(tài),檢測程序執(zhí)行結(jié)果是否符合設計要求,有無循環(huán)錯誤、有無機器碼錯誤以及轉(zhuǎn)移地址的錯誤,該問題的解決消耗了相當長的時間。同時,還可以發(fā)現(xiàn)系統(tǒng)中存在的硬件設計錯誤和軟件算法錯誤。各程序模塊通過后,則可以把相關功能塊連在一起進行總調(diào)。這個階段若有故障,可以考慮各子程序運行時是否破壞了現(xiàn)場,緩沖單元、工作寄存器是否發(fā)生沖突,標志位的建立和清除是否有誤,堆棧區(qū)是否有溢出,輸入設備的狀態(tài)是否正

14、常等等,若用者系統(tǒng)是在開發(fā)機的監(jiān)控程序下運行時,還要考慮用者緩沖單元是否和監(jiān)控程序的工作單元發(fā)生沖突。 單步和斷點調(diào)試后,還應進行連續(xù)調(diào)試,用以確定定時精度、CPU的實時響應等問題。 當全部調(diào)試和修改完成后,將程序固化到80C51中。進行整機調(diào)試。各功能實現(xiàn)則調(diào)試完成。附錄附錄1硬件原理圖附錄2 C語言程序#include#include#include#define uchar unsigned char#define uint unsigned int#define LCDIO P0#define delay4us() _nop_();_nop_();_nop_();_nop_();uch

15、ar buffer6=0; sbit sda=P34;sbit scl=P33;sbit beep=P37;sbit relay=P23;sbit huifu=P26;bit flag=0,aa;/用戶zi定時溢出標志位uchar DSY_BUFFER16= ;uchar DSY_BUFFER116= ;uchar Userpassword6=0;uchar Mem6=0;sbit rs=P20; sbit rd=P21;sbit lcden=P22;sbit led=P24;sbit led1=P27;uchar code table2=123456;uchar code table=Inp

16、ut your code:;void delayms(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void delay()/短延時,兩個機器周期,做總線的延時用;void write_com(uchar com)rs=0;rd=0;lcden=0;P0=com;delayms(3);lcden=1;delayms(3);lcden=0;void write_date(uchar date)rs=1;rd=0;lcden=0;P0=date; delayms(3);lcden=1;delayms(3);lcden=0;void Display_S

17、tring(uchar *p,uchar com) uchar i; write_com(com); for(i=0;i16;i+) write_date(pi);void init_lcd()lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80); Display_String(table,0x80);Display_String(=Lock OK! = ,0xc0);void start()sda=1;scl=1;delay4us();sda=0;delay4us();s

18、cl=0;void stop()sda=0;scl=1;delay4us();sda=1;delay4us();scl=0;void init()/初始化sda=1;delay();scl=1;delay();void ack()sda=0;scl=1;delay4us();scl=0;sda=1;void noack()sda=1;scl=1;delay4us();scl=0;sda=0;uchar recbyte()uchar i,rd;rd=0x00;sda=1;for(i=0;i8;i+)scl=1;rd=1;rd|=sda;delay4us();scl=0;delay4us();sc

19、l=0;delay4us();return rd;uchar sendbyte(uchar wd)uchar i;bit ack0;for(i=0;i8;i+)sda=(bit)(wd&0x80);_nop_();_nop_();scl=1;delay4us();scl=0;wd=1;delay4us();sda=1;scl=1;delay4us();ack0=!sda;scl=0;delay4us();return ack0;uchar Recstring(uchar slave,uchar subaddr,uchar *buffer,uchar n) uchar i; start(); i

20、f(!sendbyte(slave) return 0; if(!sendbyte(subaddr) return 0; start(); if(!sendbyte(slave+1) return 0; for(i=0;in-1;i+) bufferi=recbyte();ack(); buffern-1=recbyte(); noack(); stop(); return 1;uchar Sendstring(uchar slave,uchar subaddr,uchar *buffer,uchar n)uchar i;start();if(!sendbyte(slave) return 0

21、;if(!sendbyte(subaddr) return 0;for(i=0;in;i+)if(!sendbyte(bufferi) return 0;stop();return 1;void clear_password()uchar i;for(i=0;i6;i+) Userpasswordi= ;for(i=0;i40x0f;switch(temp)case 8:keynum+=0;break;case 4:keynum+=1;break;case 2:keynum+=2;break;case 1:keynum+=12;break;break;delayms(600); return

22、keynum;void main() uchar temp,i=0,j=0,k=0,n,m=0,flay,error,ne=1;uchar IS_valid_user;relay=1;init(); init_lcd();delayms(5);P1=0x0f; while(1) if(!huifu=1)aa=Sendstring(0xa0,1,table2,6); delayms(10); aa=Recstring(0xa0,1,buffer,6); else aa=Recstring(0xa0,1,buffer,6); if(P1!=0x0f)delayms(10); if(P1!=0x0f

23、) temp=Keys_Scan(); switch(temp) case 11:temp=0; case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: if (i=5) /密碼限制在6位以內(nèi) Userpasswordi=temp; DSY_BUFFERi=*; Display_String(DSY_BUFFER,0xc0); i+; break; case 19: /按F鍵清除一位 if(i!=0)i-; for(n=0;ni;n+) DSY_BUFFER1n=temp+*; Display_String

24、(DSY_BUFFER1,0xc0); break; case 12: /按Enter鍵開鎖for(k=0;k0) /在第二次輸入密碼 for(k=0;k6;k+) flay=flay&(Memk=(Userpasswordk+48);/將第二次的密碼與第一次的密碼進行比較 if(flay)/如果校驗位為1則第二次密碼放入存儲器 for(k=0;k6;k+) Userpasswordk=Userpasswordk+48; for(k=0;k6;k+) Memk=Userpasswordk; /密碼放入緩沖區(qū)便于比對 ne=ne&(Userpasswordk+1=Memk); if(ne) Display_String(Code is same num,0x80); / Display_String( ,0xc0); delayms(1000); Mem6=0; DSY_BUFFER6=0; m=0; goto newcode; else clear_password(); Display_String(table,0x00); Display_String(Password Saved! ,0xc0); delayms(1000);

溫馨提示

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

評論

0/150

提交評論