基于51單片機的電子密碼鎖的設計(完整版)資料_第1頁
基于51單片機的電子密碼鎖的設計(完整版)資料_第2頁
基于51單片機的電子密碼鎖的設計(完整版)資料_第3頁
基于51單片機的電子密碼鎖的設計(完整版)資料_第4頁
基于51單片機的電子密碼鎖的設計(完整版)資料_第5頁
已閱讀5頁,還剩99頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

基于51單片機的電子密碼鎖的設計(完整版)資料(可以直接使用,可編輯優秀版資料,歡迎下載)

目錄基于51單片機的電子密碼鎖的設計(完整版)資料(可以直接使用,可編輯優秀版資料,歡迎下載)1.設計的目的和意義1.1設計的目的………………11.2設計內容…………………11.3設計要求…………………12.硬件電路設計2.1總體方案設計……………12.2硬件電路圖………………13.系統軟件設計3.1.密碼的設定………………23.2.密碼的輸入………………2………33.4.原程序清單………………33.5.程序流程圖………………54.電路調試4.1.調試過程……………………7參考文獻………………8

1.設計的目的和意義1.1設計的目的:(二級標題和正文為小四號宋體,行距為固定值20磅)(1).根據要求設計PC機的控制電路和程序(2).熟悉模擬實驗線路(3).掌握程序的系統調試1.2設計的內容:(1).密碼的設定:在此程序中密碼是由我們自己設定的,通過兩個按鍵將三位分別密碼保存在20H,21H,22H單元當中。(2).密碼的輸入:兩個按鍵來完成密碼的輸入,其原理和密碼設定是一樣的,不過就是將他們存貯的單元做了改變,將其分別放入10H,11H,12H單元中。當完成密碼的輸入過程。進入密碼的判斷比較處理狀態并給出相應的處理過程。(3).密碼的判斷與處理:先將設定的密碼20H單元的值與后來用戶輸入的密碼10H單元中的值進行比較,如果正確就進行下一單元的比較,不正確則跳轉到計數子程序計數。如果計數到三次就跳轉到喇叭鳴叫子程序。1.3設計要求:先用兩個按鍵設定好3個初始密碼,再采用二個按鍵實現3個密碼的輸入功能,當密碼輸入正確之后,鎖就打開,相應的LED燈亮。如果輸入的三次的密碼不正確,就立即引發報警聲。2.硬件電路設計:(3).將P1.3口接到喇叭口.3.系統軟件設計:3.1.密碼的設定:在此程序中密碼是3.2.密碼的輸入:兩個按鍵來完成密碼的輸入,其原理和密碼設定是一樣的,不過就是將他們存貯的單元做了改變,將其分別放入10H,11H,12H單元中。其過程也是燈亮輸入密碼燈滅停止輸入.當完成密碼的輸入過程。進入密碼的判斷比較處理狀態并給出相應的處理過程。先將設定的密碼20H單元的值與后來用戶輸入的密碼10H單元中的值進行比較,如果正確就進行下一單元的比較,依次類推.不正確則跳轉到計數子程序計數。如果計數到三次就跳轉到喇叭鳴叫子程序.org0000hclrp1.2clrp1.4movr7,#03h;設定錯誤密碼的次數mov20h,p1.0;存入第一位密碼setbp1.4;置P1.4口燈亮lcallldelay;延時等待輸入clrp1.4;輸入結束lcallldelaymov21h,p1.1setbp1.4lcallldelayclrp1.4lcallldelaymov22h,p1.0start:setbp1.4lcallldelayclrp1.4lcallldelaymov10h,p1.0;輸入第一位密碼setbp1.4lcallldelayclrp1.4lcallldelaymov11h,p1.1setbp1.4lcallldelayclrp1.4mov12h,p1.0mova,20h;密碼比較字程序cjnea,10h,longmova,21hcjnea,11h,longmova,22hcjnea,12h,longsetbp1.2jmpoverldelay:movr1,#50;延時環節t0:movr2,#200t1:movr3,#125t4:djnzr3,t4djnzr2,t1djnzr1,t0retlong:djnzr7,start;錯誤密碼次數記數程序ljmplong1long1:;警報子程序clrp1.3callDelay3setbp1.3callDelay3ljmpLong1Delay3:movr1,#44djnzR1,$retover:end3.5.程序流程圖等待輸入等待輸入存入三位密碼到20H.21H.22H單元.輸入三位密碼到10H.11H.12H單元P1.2接口控制的燈亮.20H=10H?21H=11H?22H=12H?結束R7=0?引發警報器否否是是否定是是是否否是是是是圖1.14.電路調試4.1調試過程通過兩個開關輸入設定初始密碼,三位密碼分別送到各子的單元并保存.接下來再通過開關輸入密碼并保存在相應的單元,再進行密碼比較,如果密碼正確等亮.如果錯誤先記數,夠了3次就發出警報,不夠三次在進行密碼輸入和原始密碼進行比較.

參考文獻目錄目錄 I基于單片機密碼鎖的設計 II摘要 IIAbstract II前言 I第1章緒論 11.1課題背景 11.2課題設計目標 1第2章系統方案論證 22.1主控部分的選擇 22.2密碼輸入方式的選擇 2第3章系統總體設計和主要芯片介紹 33.1系統總體設計 33.2主要芯片介紹 4AT89S52 4存儲芯片AT24C02 5顯示器 6第4章硬件設計 84.1鍵盤輸入模塊 84.2密碼存儲模塊 94.3復位部分 104.4晶振部分 114.5顯示模塊 124.6報警部分 124.7開鎖部分 13第5章系統軟件設計 145.1系統程序流程圖 14主程序流程圖 14鍵功能程序流程圖 15開鎖程序流程圖 165.2子程序舉例 17開鎖子程序 17按鍵掃描子程序 19密修改碼子程序 21結論 24致謝 25參考文獻 26附錄A 27TESTSOFTWARE 27附錄B 29附錄C 30附錄D 31基于單片機密碼鎖的設計摘要隨著人們生活水平的提高,如何實現家庭防盜這一問題也變得尤為突出,傳統的機械鎖,由于其構造的簡單,安全性能低,無法滿足人們的需要。在科學技術不斷發展的今天,電子密碼防盜鎖作為防盜衛士的作用顯得日趨重要[1]。本次設計的題目是基于單片機的電子密碼鎖的設計,系統由AT89S52與低功耗CMOS型E2PROMAT24C02作為主控芯片與數據存儲器單元,結合外圍的鍵盤輸入、LCD顯示、報警、開鎖等電路模塊。它能完成以下功能:正確輸入密碼前提下,開鎖;錯誤輸入密碼情況下,報警;密碼可以根據用戶需要更改。本密碼鎖具有設計方法合理,簡單易行,成本低,安全實用等特點,具有一定的推廣價值。關鍵詞電子密碼鎖報警液晶顯示AT89S52

THEDESIGNELECTRONICCODELOCKBASEDONTHEMCU AbstractWiththedevelopmentofthepeople'slivingstandard,howtoachievethefamilysecurityisbecomingimportantinparticular.Thetraditionalmechanicallockisunabletomeetthepeople'sneedsbecauseofitssimplestructure,lowsecurity.Nowadays,withthecontinuousdevelopmentofthescienceandtechnology,Electronicpasswordanti-theftlockplaysamoreimportantroleasthesecurityguards.ThemainpaperisaboutthedesignelectroniccodelockbasedontheMCU.ThesystemiscomposedwithAT89S52,E2PROMAT24C02,datamemoryelementandtheperipheralcircuitssuchasLCDdisplay,alarmingcircuit.Itcanaccomplishthefollowingfunction:openthelockwithacorrectlypassword,giveanalarmwiththemistakepassword,changethepasswordifthehostwant.Thelockhassomefeatureslikeareasonabledesignmethods,simpletowork,lowcostandsecurity.Italsohassomepromotionvalue.KeywordsElectroniccodelockAlarmLCDdisplayAT89S52前言隨著科學技術的不斷發展,人們對日常生活的安全保險器件的要就越來越高,電子安全密碼鎖是基于這一要求的保險器件,其設計概念及應用與常見的保安密碼鎖有所不同。從系統設計觀點看,電子安全密碼鎖是一個實體域定義的概念,比較機械安全密碼鎖,具有設計/實現簡便,密碼裝定靈活制造成本低廉等優點,每一位解鎖意圖碼在安全密碼鎖內部引發的試圖解鎖動作,可稱為安全密碼的“解鎖事件”一個解鎖事件序列包含一系列有序的解鎖事件。電子安全密碼鎖完全匹配時方可逐步開啟密碼鎖。當今智能電子密碼鎖發展已經到了非常高的境界,由于電子元件特別是單片機應用在這幾年得到空前發展,無論功能性,穩定性都比較全面,在保密方面已做到人眼識別,指紋識別,人聲識別基本上電影上有的現實也有。在國外發展比較早,所以應用也比較廣泛,主要在家庭裝較貴重地方,銀行,保險柜等應用較多,在國內這方面發展也較快,不管自己開發或是引進都有,在重要地方應用也較多,由于價錢比普通彈子鎖較貴,早幾年應用較少,現在越來越普及到平常化,未來的發展也會越來越被大眾采用,由于它的功能、安全是彈子鎖無法相比的。發展前境是非常大的。第1章緒論1.1課題背景隨著人們生活水平的提高和安全意識的加強,對安全的要求也就越來越高。鎖自古以來就是把守護門的鐵將軍,人們對它要求甚高,既要安全可靠的防盜,又要使用方便,這也是制鎖者長期以來研制的主題[2]。隨著電子技術的發展,各類電子產品應運而生,電子密碼鎖就是其中之一。據有關資料介紹,電子密碼鎖的研究從20世紀30年代就開始了,在一些特殊場所早就有所應用。這種鎖是通過鍵盤輸入一組密碼完成開鎖過程。研究這種鎖的初衷,就是為提高鎖的安全性。由于電子鎖的密鑰量(密碼量)極大,可以與機械鎖配合使用,并且可以避免因鑰匙被仿制而留下安全隱患。電子鎖只需記住一組密碼,無需攜帶金屬鑰匙,免除了人們攜帶金屬鑰匙的煩惱,而被越來越多的人所欣賞。電子鎖的種類繁多,例如數碼鎖,指紋鎖,磁卡鎖,IC卡鎖,生物鎖等。但較實用的還是按鍵式電子密碼鎖[3]。

20世紀80年代后,隨著電子鎖專用集成電路的出現,電子鎖的體積縮小,可靠性提高,成本較高,是適合使用在安全性要求較高的場合,且需要有電源提供能量,使用還局限在一定范圍,難以普及,所以對它的研究一直沒有明顯進展。

目前,在西方發達國家,密碼鎖技術相對先進,種類齊全,電子密碼鎖已被廣泛應用于智能門禁系統中,通過多種更加安全,更加可靠的技術實現大門的管理。在我國密碼鎖整體水平尚處于國際上70年代左右,電子密碼鎖的成本還很高,市場上仍以按鍵電子鎖為主,按鍵式和卡片鑰匙式電子鎖已引進國際先進水平,現國內有幾個廠生產供應市場。但國內自行研制開發的電子鎖,其市場結構尚未形成,應用還不廣泛。國內的不少企業也引進了世界上先進的技術,發展前景非??捎^。希望通過不斷的努力,使電子密碼鎖在我國也能得到廣泛應用。1.2課題設計目標本設計采用AT89C51單片機為主控芯片,結合外圍電路,通過軟件程序組成電子密碼鎖系統,能夠實現:1.正確輸入密碼前提下,開鎖并有正確提示;2.錯誤輸入密碼情況下,蜂鳴器報警并短暫鎖定鍵盤;3.密碼可以根據用戶需要更改。4.為防止誤操作,更改密碼需有兩次確認。5.輸出密碼錯誤三次鎖死鍵盤。6.密碼掉電保存功能。第2章系統方案論證2.1主控部分的選擇方案一:采用數字電路控制用以74LS112雙JK觸發器構成的數字邏輯電路作為密碼鎖的核心控制,將密碼保存在JK觸發器中,與輸入密碼通過比較器比較,判斷結果是否相符合[4]。采用數字電路設計的方案好處就是設計簡單,但控制的準確性和靈活性差,故不采用。方案二:采用以單片機為核心的控制方案選用單片機作為系統的核心部件,實現控制與處理的功能。單片機具有資源豐富、速度快、編程容易等優點。利用單片機內部的隨機存儲器(RAM)和只讀存儲器(ROM)及其引腳資源,外接液晶顯示(LCD),鍵盤輸入等實現數據的處理傳輸和顯示功能,基本上能實現設計指標,因此綜合考慮,本系統采用方案二。2.2密碼輸入方式的選擇方案一:指紋輸入識別指紋識別技術主要涉及四個功能:讀取指紋圖像、提取特征、保存數據和比對。通過指紋讀取設備讀取到人體指紋的圖像,然后要對原始圖像進行初步的處理,使之更清晰,再通過指紋辨識軟件建立指紋的特征數據。軟件從指紋上找到被稱為“節點”(minutiae)的數據點,即指紋紋路的分叉、終止或打圈處的坐標位置,這些點同時具有七種以上的唯一性特征。通常手指上平均具有70個節點,所以這種方法會產生大約490個數據。這些數據,通常稱為模板。通過計算機模糊比較的方法,把兩個指紋的模板進行比較,計算出它們的相似程度,最終得到兩個指紋的匹配結果,從而判斷輸入結果的正確與否[5]??紤]到本方案軟硬件太過復雜,而且成本也高,故不采用。方案二:矩陣鍵盤輸入識別由各按鍵組成的矩陣鍵盤每條行線和列線都對應一條I/O口線,鍵位設在行線和列線的交叉點,當一個鍵按下就會有某一條行線與某一條列線接觸,只要確定接觸的是哪兩條線,即哪兩個I/O口線,就可以確定哪一個鍵被觸動。行線設計成上拉口線,初始時被置高電位,列線懸空,初始置低。通過不斷讀行線口線,或者中斷方式觸發鍵位掃描。當發現有鍵按下,將列線逐一置低,其他列線置高,讀行線口線。當某條列線置低時,某條行線也被拉低,則確定這兩條線的交點處的按鈕被按下。每個按鍵都可通過程序賦予功能,從而完成密碼識別[6]。本方案簡單易行,故采用。

第3章系統總體設計和主要芯片介紹3.1系統總體設計本設計主要由單片機、矩陣鍵盤、液晶顯示器和密碼存儲等部分組成。其中矩陣鍵盤用于輸入數字密碼和進行各種功能的實現。由用戶通過連接單片機的矩陣鍵盤輸入密碼,后經過單片機對用戶輸入的密碼與自己保存的密碼進行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報警電路控制開鎖還是報警,實際使用時只要將單片機的負載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可。系統整體框圖如圖3-1所示。顯示模塊鍵盤輸入模塊顯示模塊鍵盤輸入模塊AT89S52報警電路復位電路報警電路復位電路開鎖電路密碼存儲模塊開鎖電路密碼存儲模塊圖3-1系統結構框圖各模塊功能如下:1.鍵盤輸入模塊:分為密碼輸入按鍵與幾個功能按鍵,用于完成密碼鎖輸入功能。2.顯示模塊:用于完成對系統狀態顯示及操作提示功能。3.復位電路:完成系統的復位。4.報警電路:用于完成輸錯密碼時候的警報功能。5.密碼存儲模塊:用于完成掉電存儲功能,使修改的密碼斷電后仍能保存。6.開鎖電路:應用繼電器及發光二極管模擬開鎖,完成開鎖及開鎖提示。3.2主要芯片介紹AT89S52AT89S52單片機是一個低功耗,高性能CMOS8位單片機,片內含8KBytesISP(In-systemprogrammable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統及80C51引腳結構,芯片內集成了通用8位中央處理器和ISPFlash存儲單元,功能強大的微型計算機的AT89C51可為許多嵌入式控制應用系統提供高性價比的解決方案[7]。AT89C51具有以下標準功能:8k字節Flash,256字節RAM,32位I/O口線,看門狗定時器,2個數據指針,三個16位定時器/計數器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路。另外,AT89C51可降至0Hz靜態邏輯操作,支持2種軟件可選擇節電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。AT89S52的管腳分布如圖3-2所示。圖3-2AT89S52芯片管腳P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P3口作為AT89S52的一些特殊功能管腳備選功能,P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3.4T0(記時器0外部輸入)P3.5T1(記時器1外部輸入)P3.6/WR(外部數據存儲器寫選通)P3.7/RD(外部數據存儲器讀選通)AT89S52主要特性如表3-1所示。表3-1AT89S52主要特性兼容MCS-51指令系統8k可反復擦寫(>1000次)ISPFlashROM32個雙向I/O口4.5-5.5V工作電壓3個16位可編程定時/計數器時鐘頻率0-33MHz全雙工UART串行中斷口線256x8bit內部RAM2個外部中斷源低功耗空閑和省電模式中斷喚醒省電模式3級加密位看門狗(WDT)電路軟件設置空閑和省電功能靈活的ISP字節和分頁編程雙數據寄存器指針存儲芯片AT24C02AT24C02是美國Atmel公司的低功耗CMOS型E2PROM,內含256×8位存儲空間,具有工作電壓寬(2.5~5.5V)、擦寫次數多(大于10000次)、寫入速度快(小于10ms)、抗干擾能力強、數據不易丟失、體積小等特點。而且他是采用了I2C總線式進行數據讀寫的串行器件,占用很少的資源和I/O線,并且支持在線編程,進行數據實時的存取十分方便。AT24C02中帶有的片內地址寄存器。每寫入或讀出一個數據字節后,該地址寄存器自動加1,以實現對下一個存儲單元的讀寫。所有字節均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達8個字節的數據。I2C總線是一種用于IC器件之間連接的二線制總線。他通過SDA(串行數據線)及SCL(串行時鐘線)兩根線在連到總線上的器件之間傳送信息,并根據地址識別每個器件。AT24C02正是運用了I2C規程,使用主/從機雙向通信,主機(通常為單片機)和從機(AT24C02)均可工作于接收器和發送器狀態。主機產生串行時鐘信號(通過SCL引腳)并發出控制字,控制總線的傳送方向,并產生開始和停止的條件。無論是主機還是從機,接收到一個字節后必須發出一個確認信號ACK。AT24C02的控制字由8位二進制數構成,在開始信號發出以后,主機便會發出控制字,以選擇從機并控制總線傳送的方向。管腳描述:SCL為串行時鐘:串行時鐘輸入管腳用于產生器件所有數據發送或接收的時鐘這是一個輸入管腳。SDL為串行數據/地址:雙向串行數據/地址管腳用于器件所有數據的發送或接收SDL,是一個開漏輸出管腳可與其它開漏輸出或集電極開路輸出進行線或。A0、A1、A2為器件地址輸入端:當使用24C02時最大可級聯8個器件,如果只有一個24C02被總線尋址,這三個地址輸入腳A0、A1、A2可懸空或連接到Vss。WP為寫保護:如果WP管腳連接到Vcc所有的內容都被寫保護只能讀當WP,管腳連接到Vss或懸空,允許器件進行正常的讀/寫操作[8]。管腳圖如圖3-3所示。圖3-3AT24C02引腳圖LCD1602顯示器現在的字符型液晶模塊已經是單片機應用設計中最常用的信息顯示器件了。1602型LCD顯示模塊具有體積小,功耗低,顯示內容豐富等特點。1602型LCD可以顯示2行16個字符,有8位數據總線D0~D7和RS,R/W,EN三個控制端口,工作電壓為5V,并且具有字符對比度調節和背光功能。接口信號說明:1602型LCD的接口信號說明如表3-2所示。表3-21602型LCD的接口信號說明第1腳VSS電源地第9腳D2雙向數據線第2腳VDD+5V電源第10腳D3雙向數據線第3腳VEE液晶顯示偏壓信號第11腳D4雙向數據線第4腳RS數據/命令選擇端第12腳D5雙向數據線第5腳R/W讀/寫選擇端第13腳D6雙向數據線第6腳E使能端第14腳D7雙向數據線第7腳D0雙向數據線第15腳BLA背光源正極第8腳D1雙向數據線第16腳BLK背光源負極主要技術參數:1602型LCD的主要技術參數如表3-3所示。表3-31602型LCD的主要技術參數顯示容量16×2個字符芯片工作電壓4.5~5.5V工作電流2.0mA(5.0V)模塊最佳工作電壓5.0V字符尺寸2.95×4.35(WXH)mm基本操作程序:讀狀態:令RS=L,RW=L,E=H 輸出:D0~D7=狀態字讀數據:令RS=H,RW=H,E=H 輸出:無寫指令:令RS=L,RW=L,D0~D7=指令碼,E=高脈沖輸出:D0~D7=數據寫數據:令RS=H,RW=L,D0~D7=數據,E=高脈沖輸出:無第4章硬件設計本系統外圍電路包括鍵盤輸入部分、密碼存儲部分、復位部分、顯示部分、報警部分、開鎖部分組成,根據實際情況鍵盤輸入部分選擇4×4矩陣鍵盤,顯示部分選擇字符型液晶顯示LCD1602,密碼存儲部分選用AT24C02芯片來完成。其原理圖如圖4-1所示。圖4-1電路原理圖4.1鍵盤輸入模塊由于本設計所用到的按鍵數量較多而不適合用獨立按鍵式鍵盤。采用的是矩陣式按鍵鍵盤,它由行和列組成,也稱行列式鍵盤,按鍵位于行列的交叉點上,密碼鎖的密碼由鍵盤輸入完成,與獨立式按鍵鍵盤相比,要節省很多I/O口。本設計中使用的這個4×4鍵盤不但能完成密碼的輸入還能作特別功能鍵使用。鍵盤的每個按鍵功能在程序設計中設置。它與單片機的連接如圖4-2所示。圖4-2鍵盤輸入模塊4.2密碼存儲模塊圖4-3所示AT24C02的1、2、3腳是三條地址線,用于確定芯片的硬件地址。在AT89S52試驗開發板上它們都接地,第5腳和第8腳分別為正、負電源。第8腳SDL為串行數據輸入/輸出,數據通過這條雙向I2C總線串行傳送,在AT89S52試驗開發板上和單片機的P3.6連接。第6腳SCL為串行時鐘輸入線,在AT89S52試驗開發板上和單片機的P3.7連接。SDL和SCL都需要和正電源間各接一個5.1K的電阻上拉。第6腳接P3.5。AT24C02中帶有片內地址寄存器。每寫入或讀出一個數據字節后,該地址寄存器自動加1,以實現對下一個存儲單元的讀寫。所有字節均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達8個字節的數據。圖4-3密碼存儲電路4.3復位部分單片機復位是使CPU和系統中的其他功能部件都處在一個確定的初始狀態,并從這個狀態開始工作。在接通電源瞬間,電容C2上的電壓很小,復位下拉電阻上的電壓接近電源電壓,即RST為高電平,在電容充電的過程中RST端電壓逐漸下降,當RST端的電壓小于某一數值后,CPU脫離復位狀態,由于電容C2足夠大,可以保證RST高電平有效時間大于24個振蕩周期,CPU能夠可靠復位。其電路如圖4-4所示。圖4-4復位電路4.4晶振部分AT89S52引腳XTAL1和XTAL2與晶體振蕩器及電容C2、C3按圖4-5所示方式連接。晶振、電容C2/C3及片內與非門(作為反饋、放大元件)構成了電容三點式振蕩器,振蕩信號頻率與晶振頻率及電容C2、C3的容量有關,但主要由晶振頻率決定,范圍在0~33MHz之間,電容C2、C3取值范圍在5~30pF之間。根據實際情況,本設計中采用12MHZ作為系統的外部晶振。電容取值為30pF。其電路圖如圖4-5所示。圖4-5晶振電路4.5顯示模塊顯示部分由液晶顯示器LCD1602取代普通的數碼管完成。開鎖時,按下鍵盤上的開鎖按鍵后,利用鍵盤上的數字鍵0-9輸入密碼,每按下一個數字鍵后在顯示器上顯示一個*,輸入多少位就顯示多少個*。當密碼輸入完成時,按下確認鍵,如果輸入的密碼正確的話,LCD顯示“DOOROPEN”,單片機其中P2.0引腳會輸出低電平,使三極管T2導通,電磁鐵吸合,繼電器開關跳轉,電子密碼鎖被打開,如果密碼不正確,LCD顯示屏會顯示“CODEWRONG”,P2.0輸出的是高電平,電子密碼鎖不能打開。通過LCD顯示屏,可以清楚地判斷出密碼鎖所處的狀態。電路圖如圖4-6所示。圖4-6顯示電路4.6報警部分報警部分由陶瓷壓電發聲裝置及外圍電路組成,加電后不發聲,當有鍵按下時,“?!甭?,每按一下,發聲一次,密碼正確時,響兩聲并開鎖,當密碼輸入錯誤時,單片機的P2.1引腳為低電平,三極管T3導通蜂鳴器發出噪聲報警。如圖4-7所示。圖4-7報警電路4.7開鎖部分開鎖控制電路的功能是當輸入正確的密碼后將鎖打開。系統使用單片機其中一引腳線發出信號,經三極管放大后,由繼電器驅動電磁閥動作將鎖打開。用戶通過鍵盤任意設置密碼,并儲存在E2PROM中作為鎖碼指令。只有用戶操作鍵盤時,單片機的電源端才能得到3V電源,否則,單片機處于節電工作方式。開鎖步驟如下:首先按下鍵盤上的開鎖按鍵,然后利用鍵盤上的數字鍵0-9輸入密碼,最后按下確認鍵。當用戶輸入密碼后,單片機自動識別密碼,如果密碼不符,則報警。只有當密碼正確,單片機才能使繼電器處于開鎖狀態。具體電路如圖4-8所示。圖4-8開鎖電路第5章系統軟件設計5.1系統程序流程圖主程序流程圖主程序設計流程圖如圖5-1所示。開始開始初始化初始化修改開鎖修改開鎖密碼正確密碼正確輸入舊密碼輸入舊密碼 N原密碼相同Y原密碼相同開鎖出錯報警NN Y開鎖出錯報警設新密碼設新密碼返回返回圖5-1主程序流程圖鍵功能程序流程圖鍵功能程序流程圖如圖5-2所示。鍵功能程序鍵功能程序鍵值=0~9?鍵值=開鎖?鍵值=確認?鍵值=設置?返回密碼輸入程序確認程序設置程序開鎖程序 Y N Y N Y N Y N圖5-2鍵功能流程圖開鎖程序流程圖開鎖程序流程圖如圖5-3所示。LCD初始化LCD初始化按開鎖鍵按開鎖鍵輸入密碼輸入密碼確認程序開鎖確認程序開鎖N輸入密碼正確?N輸入密碼正確?報警程序報警程序 開鎖成功返回 Y 開鎖成功返回圖5-3開鎖流程圖5.2子程序舉例開鎖子程序 if(N==6) { if(ReInputEn==0) //重置密碼功能未開啟 { for(i=0;i<6;) { if(CurrentPassword[i]==InputData[i]) { i++; } else { ErrorCont++; if(ErrorCont==3) //錯誤輸入計數達三次時,報警并鎖定鍵盤 { write_1602com(er); for(i=0;i<16;i++) { write_1602dat(Error[i]); } do Alam_KeyUnable(); while(1); } else { TR0=1; //開啟定時 key_disable=1; //鎖定鍵盤 pass=0; break; } } } if(i==6) { CorrectCont++; if(CorrectCont==1) //正確輸入計數,當只有一次正確輸入時,開鎖, { //DisplayListChar(0,1,LockOpen); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(LockOpen[j]); } TwoAlam(); //操作成功提示音 KEY=0; //開鎖 pass=1; //置正確標志位 TR0=1; //開啟定時 open_led=0; //開鎖指示燈亮 for(j=0;j<6;j++) //將輸入清除 { InputData[i]=0; } } else //當兩次正確輸入時,開啟重置密碼功能 { //DisplayListChar(0,1,SetNew); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(SetNew[j]); } TwoAlam(); //操作成功提示 ReInputEn=1; //允許重置密碼輸入 CorrectCont=0; //正確計數器清零 } } 按鍵掃描子程序//==============將按鍵值編碼為數值=========================unsignedcharcoding(unsignedcharm) { unsignedchark; switch(m) { case(0x18):k=1;break; case(0x28):k=2;break; case(0x48):k=3;break; case(0x88):k='A';break; case(0x14):k=4;break; case(0x24):k=5;break; case(0x44):k=6;break; case(0x84):k='B';break; case(0x12):k=7;break; case(0x22):k=8;break; case(0x42):k=9;break; case(0x82):k='C';break; case(0x11):k='*';break; case(0x21):k=0;break; case(0x41):k='#';break; case(0x81):k='D';break; } return(k);}//====================按鍵檢測并返回按鍵值==========================unsignedcharkeynum(void){ unsignedcharrow,col,i; P1=0xf0; if((P1&0xf0)!=0xf0) { Delay5Ms();Delay5Ms(); if((P1&0xf0)!=0xf0) { row=P1^0xf0;//確定行線 i=0; P1=a[i]; //精確定位 while(i<4) { if((P1&0xf0)!=0xf0) { col=~(P1&0xff); //確定列線 break;//已定位后提前退出 } else { i++; P1=a[i]; } } } else { return0; } while((P1&0xf0)!=0xf0); return(row|col); //行線與列線組合后返回 } elsereturn0; //無鍵按下時返回0}密修改碼子程序//========================重置密碼=================================voidResetPassword(void){ unsignedchari; unsignedcharj; if(pass==0) { pass=0; DisplayChar(); ThreeAlam(); } else { if(ReInputEn==1) { if(N==6) { ReInputCont++; if(ReInputCont==2) { for(i=0;i<6;) { if(TempPassword[i]==InputData[i])//將兩次輸入的新密碼作對比 i++; else { //DisplayListChar(0,1,Error); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(Error[j]); } ThreeAlam(); //錯誤提示 pass=0; ReInputEn=0; //關閉重置功能, ReInputCont=0; DisplayChar(); break; } } if(i==6) { //DisplayListChar(0,1,ResetOK); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(ResetOK[j]); } TwoAlam(); //操作成功提示 WrToROM(TempPassword,0,6); //將新密碼寫入24C02存儲 ReInputEn=0; } ReInputCont=0; CorrectCont=0; } else { OneAlam(); //DisplayListChar(0,1,again); //顯示再次輸入一次 write_1602com(er); for(j=0;j<16;j++) { write_1602dat(again[j]); } for(i=0;i<6;i++) { TempPassword[i]=InputData[i];//將第一次輸入的數據暫存起來 } } N=0; //輸入數據位數計數器清零 } } }}

結論在著手本次畢業設計時,通過查閱網絡與圖書館搜集到的資料,再加上指導老師指點,結合生活中對密碼鎖的功能特性要求,設計出了這一套電子密碼鎖系統的主要硬件結構和軟件結構,基本完成了課題的要求。不過由于了解的專業知識尚淺,對課題的研究經驗的不足,使得在技術的解決與運用上顯得粗糙了一些,特別是功能按鍵的設定。所幸該系統能基本上完成一個電子密碼鎖應有的功能特性:開鎖提示,輸錯報警,密碼修改,掉電存儲。本系統用的是6位密碼輸入,有106種密碼輸入方案,相較于機械鎖具,防盜能力已經相當不俗。這個系統軟硬件設計簡單,易于開發,成本較低,安全可靠,操作方便。本次設計的電子密碼鎖是以手動鍵盤輸入密碼的,通過這幾個月對電子密碼鎖的研究學習,發覺這種密碼輸入方式可以進行改革。在越來越高科技化的今天,遙控控制顯的愈發重要,今后的電子密碼鎖應該具有以紅外技術或無線電技術為輔助的密碼按鍵輸入遠程交互技術,這樣就能遠程輸入密碼完成操作。也可以放棄傳統的按鍵輸入密碼模式,借助傳感器技術運用聲控來實現密碼輸入,又或者人臉識別技術,還有一種就是用戶指紋輸入方式,這些都可以使開鎖的時間更短更方便。電子密碼鎖產業將向靜態功耗更低,外圍電路更簡化,可提供的功能或控制口更多,更人性化高科技化的方向發展。通過本次畢業設計的鍛煉,我學到了很多有關電子密碼鎖的設計方法與工作原理,鞏固了單片機知識。期間也碰到不少問題,比如如何去模擬實現開鎖這一功能,解決辦法是找了個微型電磁繼電器作為鎖具,其內部電磁開關特性符合開鎖的現象。再到后來的焊接工作,由于粗心大意,焊接出錯的情況不在少數,往往在調試的時候才得以發現,特別是4×4矩陣鍵盤的焊接,改了不下10次。系統調試時碰到過按鍵不靈敏的問題。后來增加了鍵盤列位置上的電阻,增加了電平,效果得到改善。慢工出細活,過程是很重要的,只有耐心細心努力地去把握過程,才能得到可喜的結果。

致謝在這大學的最后一頁里,我要感謝的人很多,首先要感謝我的指導老師***老師,在整個畢業設計過程中,王老師多次詢問研究進程,并為我指點迷津,幫助我開拓研究思路,心點撥、熱忱鼓勵。王老師一絲不茍的作風,嚴謹求實的態度,踏踏實實的精神,深深地感動了我,當我遇到難題無從下手時,王老師總能給予我中肯的意見,我從心底里感謝他。還要感謝的是我們各課任課老師,沒有你們的諄諄教誨,就沒有我們學有所長的今天。當然,還要感謝寢室的兄弟們在我完成論文的過程中給予我的幫助和鼓勵,也是他們陪我度過這四年的生活。最后要感謝的就是我的父母,謝謝你們對我的支持?,F在即將揮別我的學校、老師、同學,還有我四年的大學生活,雖然依依不舍,但是對未來的路,我充滿了信心。最后,感謝在大學期間認識我和我認識的所有人,有你們伴隨,才有我大學生活的豐富多彩,絢麗多姿!參考文獻[1]葉啟明.單片機制作的新第型安全密碼鎖[J].家庭電子.2000,六期[2]郭海英.基于單片機的電子安全密碼鎖的設計[J].現代電子技術.2005,第三期[3]李明喜.新型電子密碼鎖的設計[J].機電產品開發與創新.2004,第八期[4]董繼成.一種新型安全的單片機密碼鎖[J].電子技術.2004,第三期[5]電子世界.2001,第六期[6]李明喜.新型電子密碼鎖的設計[J].機電產品開發與創新.2004,第五期[7]瞿貴榮.實用電子密碼鎖[J].家庭電子.2000,第三期[8]楊茂濤.一種電子密碼鎖的實現[J].福建電腦.2004,第九期[9]張俊謨.單片機中級教程—原理與應用[M].北京:北京航空航天大學出版社[10]肖洪兵.跟我學用單片機[M].北京:北京航空航天大學出版社[11]Richard:“Park.ElectronicPassword-lockDesign”

附錄ATESTSOFTWAREThe8051testsoftwareconceptisstraightforward.ItwasdesignedtobeamodularseriesofsmalltestprogramseachexercisingaspecificpartoftheDUT.Sinceeachtestwasstandalone,theywereloadedindependentlyofeachotherforexecutionontheDUT.Thisensuredthatonlythedesiredportionofthe8051DUTwasexercisedduringthetestandhelpedpinpointlocationoferrorsthatoccurduringtesting.AlltestprogramsresidedonthecontrollerPCuntilloadedviatheserialinterfacetotheDUTcomputer.Inthisway,individualtestscouldhavebeenmodifiedatanytimewithoutthenecessityofburningPROMs.Additionaltestscouldhavealsobeendevelopedandaddedwithoutimpactingtheoveralltestdesign.Theonlypermanentcode,whichwasresidentontheDUT,wasthebootcodeandserialcodeloaderroutinesthatestablishedcommunicationsbetweenthecontrollerPCandtheDUT.Alltestprogramsimplemented:?AnexternalUniversalAsynchronousReceiveandTransmitdevice(UART)fortransmissionoferrorinformationandcommunicationtocontrollercomputer.?Anexternalreal-timeclockfordataerrortag.?Awatchdogroutinedesignedtoprovidevisualverificationof8051healthandrestarttestcodeifnecessary.?A"foul-up"routinetoresetprogramcounterifitwandersoutofcodespace.?Anexternaltelemetrydatastoragememorytoprovidebackupofdataintheeventofaninterruptionindatatransmission.Thebriefdescriptionofeachofthesoftwaretestsusedisgivenbelow.Itshouldbenotedthatforeachtest,thereturnedtelemetry(includingtimetag)wassenttoboththetestcontrollerandthetelemetrymemory,givingthehighestreliabilitythatalldataiscaptured.Interrupt–Thistestused4of6availableinterruptvectors(Serial,External,Timer0Overflow,andTimer1Overflow)totriggerroutinesthatsequentiallymodifiedavalueintheaccumulatorwhichwasperiodicallycomparedtoaknownvalue.Unexpectedvaluesweretransmittedwithregisterinformation.Logic–Thistestperformedaseriesoflogicandmathcomputationsandprovidedthreetypesoferroridentifications:1)addition/subtraction,2)logicand3)multiplication/division.Allmiscomparesofcomputationsandexpectedresultsweretransmittedwithotherrelevantregisterinformation.Memory–ThistestloadedinternaldatamemoryatlocationsD:0x20throughD:0xff(orD:0x20throughD:0x080fortheCULPRiTDUT),indirectly,withan0x55pattern.Compareswereperformedcontinuouslyandmiscompareswerecorrectedwhileerrorinformationandregistervaluesweretransmitted.ProgramCounter-Theprogramcounterwasusedtocontinuouslyfetchconstantsatvariousoffsetsinthecode.Constantswerecomparedwithknownvaluesandmiscomparesweretransmittedalongwithrelevantregisterinformation.Registers–Thistestloadedeachoffour(0,1,2,3)banksofgeneral-purposeregisterswitheither0xAA(forbanks0and2)or0x55(forbanks1and3).ThepatternwasalternatedinordertotesttheProgramStatusWord(PSW)specialfunctionregister,whichcontrolsgeneral-purposeregisterbankselection.General-purposeregisterbankswerethencomparedwiththeirexpectedvalues.Allmiscompareswerecorrectedanderrorinformationwastransmitted.SpecialFunctionRegisters(SFR)–Thistestusedlearnedstaticvaluesof12out21availableSFRsandthenconstantlycomparedthelearnedvaluewiththecurrentone.Miscompareswerereloadedwithlearnedvalueanderrorinformationwastransmitted.Stack–Thistestperformedarithmeticbypushingandpoppingoperandsonthestack.Unexpectedresultswereattributedtoerrorsonthestackortothestackpointeritselfandweretransmittedwithrelevantregisterinformation.附錄B總電路原理圖:

附錄C元器件清單:序號元件名稱型號與規格單位數量1電阻4.7K個610K個12三極管8550個23發光二極管LED個24晶振12M個15電容10uf個122pf個26按鍵個177芯片AT24C02片1AT89S52片18蜂鳴器5V個19繼電器5V個110液晶顯示器1602塊111實驗板塊1

基于單片機的電子密碼鎖設計摘要為了提高個人資料、部門文件檔案的保密性和安全性,設計了一種應用AT89C52單片機設計的密碼鎖。用戶可以自行寫入文檔、設置密碼,并可以防止嘗試去破譯密碼。硬件設計采用鍵盤輸入的電子密碼鎖具有較高的優勢,軟件設計采用自上而下的模塊化設計思想,以使系統朝著分布式、小型化方向發展,增強系統的可擴展性和運行的穩定性。測試結果表明,本系統各項功能已達到本設計的所有要求。關鍵詞:密碼鎖;延時輸入;防止暴力破解DesignofelectronictricklockbasedonsinglechipdeviceAbstractInordertoimprovethesecurityandsafetyofpersonaldata,thispaperintroducedanewdesigningmethodofelectroniccipherlocksbytheuseofAT89C52single-chipprocessor.Itcanbesetupsomeciphercode,savedfilesandpreventfromdecodedthecode.Thesoftwaredesignadoptionthedesignthoughtfromtoptobottom,tomakethesystemtowardweardistributetypeturntothedirectiondevelopmentofsmall,strengthenthesystemandcanexpandthestabilityandcirculateTesttheresultenunciation,variousfunctionsofthissystemarealreadyallrequestofthisdesign.Keywords:tricklock;delayinput;unencryptable目錄TOC\o"1-3"\u摘要 1Abstract 1目錄 2第1章單片機應用課程設計的目的和意義 3第2章單片機的基本原理 4第3章系統的硬件電路設計 83.1系統的整體設計框架 83.2單元電路的設計 8 8 93.3整體電路 10第4章系統的軟件設計 114.1系統軟件設計思路 114.2系統軟件設計流程圖 114.3軟件中的功能函數 124.4軟件設計中狀態標志位 134.5軟件調試 13第5章結論和展望 14第6章心得體會 16參考文獻 19附錄 20第1章單片機應用課程設計的目的和意義在日常的生活和工作中,住宅與部門的安全防范、單位的文件檔案、財務報表以及一些個人資料的保存多以加鎖的辦法來解決。若使用傳統的機械式鑰匙開鎖極不方便,安全性也得不到保證。[1]基于單片機的密碼鎖在許多行業有著廣泛的應用,而文檔加密是其中最基本,也是最具有代表性的一個例子。通過本次課程設計可以靈活運用單片機的基礎知識,依據課程設計內容,能夠完成從硬件電路圖設計,到軟件編程及系統調試實現系統功能,完成課程設計,加深對單片機基礎知識的理解,并靈活運用,將各門知識綜合應用。本次課程設計還可以通過上網查詢器件資料,培養對新知識新技術的獨立的學習能力和應用能力。在這次課程設計中,我們運用到了很多一切所學的知識和一些很有用的軟件和工具,如AltiumDesigner制圖、Keil軟件、STC-ISP等。通過完成一個文檔加密系統設計,從硬件設計到軟件設計,增強分析問題、解決問題的能力,為日后的畢業設計及科研工作奠定良好的基礎。第2章單片機的基本原理AT89C51是一種帶4K字節閃爍可編程可擦除只讀存儲器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。1.主要特性:·與MCS-51兼容·4K字節可編程閃爍存儲器壽命:1000寫/擦循環數據保留時間:10年·全靜態工作:0Hz-24Hz·三級程序存儲器鎖定·128*8位內部RAM·32可編程I/O線·兩個16位定時器/計數器·5個中斷源·可編程串行通道·低功耗的閑置和掉電模式·片內振蕩器和時鐘電路2.管腳說明:VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲

溫馨提示

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

評論

0/150

提交評論