電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關的閉合,完成開鎖、閉鎖任務的電子產品。它的種類很多,有簡易的電路產品,也有基于芯片的性價比較高的產品。電子密碼鎖的出現給人們帶來了極大的方便,有很廣闊的市場前景。現在應用較廣的電子密碼鎖是以芯片為核,通過編程來實現的。其性能和安全性已大大超過了機械鎖,特點有:保密性好,編碼量多。 隨機開鎖成功率幾乎為零。 密碼可變。用戶可以經常更改密碼,防止密碼被盜,同時也可以避免因人員的更替而使鎖的密級下降。 誤碼輸入保護。當輸入密碼多次錯誤時,報警系統自動啟動。 操作簡單易行,一學即會。
2 總體方案設計
2.1方案的提出與論證方案一:采用數字電路控制。 數字電路是用數字信號完成對數字量進行算術運算和邏輯運算的電路稱為數字電路,或數字系統。由于它具有邏輯運算和邏輯處理功能,所以又稱數字邏輯電路。現代的數字電路由半導體工藝制成的若干數字集成器件構造而成。邏輯門是數字邏輯電路的基本單元。存儲器是用來存儲二值數據的數字電路。 優點: 1.穩定性號。數字電路不像模擬電路那樣易受噪聲的干擾。 2.可靠性高。數字電路中只需分辨出信號的有與無,故電路的組件參數,可以允許有較大的變化(漂移)范圍。 3.能長期存儲。數字信息可以利用某種媒介,如磁帶、磁盤、光盤等進行長 時期的存儲。 4.便于計算機處理。數字信號的輸出除了具有直觀、準確的優點外,最主要的還是便于利用電子計算機來進行信息的處理。 5.便于高度集成化。由于數字電路中基本單元電路的結構比較簡單,而且又允許組件有較大的分散性,這就使我們不僅可把眾多的基本單元做在同一塊硅片上,同時又能達到大批量生產所需要的良率。 缺點: 1.數字電路實現成本太高。 2.數字電路的靈活性較差。 3.控制的準確性較差。 方案二:以AT89S52為核心的單片機控制方案。 選用單片機AT89S52 作為本設計的核心元件,利用單片機靈活的編程設計和豐富的IO端口,及其控制的準確性,實現基本的密碼鎖功能。在單片機的外圍電路外接輸入鍵盤用于密碼的輸入和一些功能的控制,外接LCD1602顯示器用于顯示作用。其原理如下圖2.1所示: 
圖2.1單片機控制密碼鎖原理圖 2.2 方案論證選擇方案一設計簡單但控制的準確性和靈活性差。方案二控制靈活準確性好且保密性強還具有擴展功能,根據現實生活的需要此次設計采用此方案二。
3 單元模塊設計3.1 各單元模塊電路設計本設計以單片機 AT89C52 為控制核心,采用模塊化設計,共分以下幾個功能模塊: 單片機最小系統、矩陣按鍵電路、AT24C02 密碼存儲電路、LCD1602 液晶顯示電路、蜂鳴器模塊、繼電器驅動模塊、 LED“模擬鎖”電路組成。該密碼鎖主要有修改密碼,存儲密碼等功能。 3.1.1 最小模塊設計單片機最小系統一般指晶振電路和復位電路,晶振電路一般由晶體振蕩器和電容組成。本次設計晶振采用12MHz,電容采用30pF。晶振部分的原理圖如圖所示。復位電路,單片機的復位操作有上電自動復位和手動按鍵復位兩種方式。手動按鍵復位是在電源接通的條件下,用按鍵操作使單片機復位,其工作原理為:復位鍵按下后電容C3通過按鍵進行放電,RST引腳變為高電平,單片機RST引腳接收到一段高電平脈沖后,會進行一次復位。松開按鍵后,電容充電,RST引腳電位降低。本設計中 R=100R,C=1uF。保證高電平脈沖維持2個機器周期以上。最小模塊繪制結果如圖所示: 圖 3.1 最小模塊電路 圖 3.2晶振電路模塊 圖 3.3 復位電路模塊 3.1.2 矩陣按鍵電路設計本設計中采用的4*4矩陣共有16個鍵位,4根行線連PI口低4位,4根列線連PI口高4位。在按鍵未被按下時,每條行線與列線的交叉處互不相通,當莫格按鍵被按下后,該鍵所在的行線和列線連通。這樣PI口的高4位和低4位中各有一位互相連通。通過行列掃描檢測出這兩位,即可識別出被按下的鍵。矩陣按鍵的原理圖如圖所示: 圖 3.4 矩陣按鍵電路設計 3.1.3 AT24C02密碼存儲器電路設計使用AT24C02保存密碼,使密碼在單片機掉電之后仍能保存。AT24C02只需要串行時鐘SCL引腳接P3.4,串行數據哋址SDA引腳接P3.5,即可完成數據和指令的傳送,比起并行傳輸節省I/O 目資源。SCL和SDA各需接一個10K的上拉電陽。寫保護WP接地,使AT24C02 可進行正常讀寫。 系統初始化時,從AT24C02中讀出密碼信息存儲到單片機中,用戶修改密碼后再將新密碼寫入AT24C02。這樣即便單片機掉電,重啟后仍能讀取用戶密碼,從而達到掉電存儲的目的
圖 3.1.5 矩陣按鍵電路設計 3.1.4 LCD1602液晶顯示LCD1602液晶顯示器是廣泛使用的一種字符型液晶顯示模塊。它是由字符型液晶顯示屏(LCD)、控制驅動主電路HD44780及其擴展驅動電路HD44100,以及少量電阻、電容元件和結構件等裝配在PCB板上而組成。本次實驗中,因為需要顯示較多的內容,所以使用了一個LCD1602液晶,用于顯示密碼和系統操作提示。 圖 3.6 LCD1602液晶顯示設計 3.1.5 蜂鳴器模塊蜂鳴器模塊部分的電路如圖,就是用P2.1口控制一個有源蜂鳴器發聲,作為提示音或報警音。程序設定為每當識別到有一位按鍵被按下時,蜂鳴器發聲0.1S;開鎖時停頓2S發聲2S,發聲3次;密碼錯誤時每次停頓0.5S發聲IS,錯誤5 次以內時錯N次發N聲,錯誤5次及以上發聲10次。 蜂鳴器有兩個引腳,其中長腳為正極,短腳為負極。其發聲原理是電流通過電磁線圈,使電磁線圈產生磁場來驅動振動膜發聲的,因此需要一定的電流才能驅動它。由于單片機I/O引腳輸出的電流較小,基本上驅動不了蜂鳴器,因此需要增加一個電流放大的電路,一般使用三極管來放大電流就可以了。本設計中使用三極管9012,P2.1口高電平時三極管截至,蜂鳴器不發聲;P2.1口低電平時,三極管導通,這樣蜂鳴器的電流形成回路,發出聲音。因此,我們可以通過程序控制P2.1腳的電平來使蜂鳴器發出聲音和關閉。 圖 3.7 蜂鳴器模塊設計 3.1.6 繼電器驅動模塊開鎖控制電路如圖,電路的功能就是在輸入正確的密碼后開鎖。系統使用單片機P2.0引腳發出信號,經三極管放大之后,由繼電器驅動電磁閥將鎖打開。設計中用一個發光二極管模擬表現鎖的開關,只有鎖打開之后,繼電器吸合至常開觸電,發光二極管才會亮起;實際應用中用繼電器控制開鎖電路的開關。 在現代自動控制設備中,都存在電子電路(弱電)與電氣電路(強電)的相互連接問題,一方面要使電子電路的控制信號能夠控制電氣電路的執行元件(如電動機、電磁鐵、電燈等),另一方面又要為電子線路的電氣電路提供良好的電隔離,以保護電子電路和工作人員的人身的安全。繼電器便能完成這一橋梁作用。繼電器實際上是用較小的電流去控制較大電流的一種“自動開關”,在電路中起著自動調節、安全保護、轉換電路等作用。在大多數情況下,繼電器就是一個電磁鐵,這個電磁鐵的銜鐵可以閉合或斷開一個、數個觸點。當電磁鐵的繞組中有電流通過時,銜鐵被電磁鐵吸引,因而就改變了觸點的狀態。 繼電器也是感性器件,所以不能用單片機的I/O口直接控制,而且必須在三極管等控制器件上加反相保護電路。本設計中單片機通過P2.0引腳連接一只作為電子開關的PNP型三極管9012來驅動繼電器,繼電器的開、關完全由三極管的基極電平進行控制。當P2.0為高電平時,PNP型三極管截止,繼電器不工作反之P2.0為低電平時,三極管導通,繼電器得電吸合。 圖 3.8 繼電器驅動模塊設計 3.1.7 LED“模擬鎖”電路本次設計目的是密碼鎖,使用 LED 的亮滅兩種狀態代表鎖的開關狀態,原理圖如圖: 圖 3.9 LED“模擬鎖”電路模塊設計
4 軟件設計
4.1系統主程序主程序是整個程序運行的中心,單片機始終運行在主程序中,單片機開始運行后,對LCD1602液晶初始化,程序中用的的數據變量進行初始 化,同時讀取 AT24C02 中保存的密碼及密碼標志位,判斷是否需要密碼初始化等操作。再之后,為主函數的循環部分,這個部分是單片機一致循環運行的程序,主要是矩陣按鍵的檢測和 LCD1602 的顯示刷新,關于密碼的相關函數,是放在矩陣按鍵函數內進行處理的,因為只有我們按下按鍵后,去判斷密碼才有實際作用,因此暫未體現在主函數中。主程序流圖如圖4.1所示: 圖4.1 主程序流程圖 4.1.1 初始化及按鍵識別系統的初始化包括堆棧起始地址的設定,兩個定時/計數器的設定,液晶顯示模式的設定,密碼緩沖區的初始化,一些自定義數據空間的初始化,蜂鳴器初始化發聲等操作。 如果AT24C02里沒有存儲密碼,或者讀取AT24C02失敗,則載入系統初始化密碼;如果AT24C02里有掉電存儲的密碼,則會讀出該密碼。 系統初始化并讀取密碼完成后,液晶顯示"Password:”,提示用戶可以輸入密碼。此時程序即不斷測試按鍵,檢査是否有按鍵被按下。如果有,則進行按鍵識別:行列掃描法識別出的鍵位與對應BUFF的值。 如果沒有按鍵按下,或者按下的按鍵沒有被識別,BUFF賦值0FFH,并跳轉至按鍵測試。實際程序運行時,絕大部分時間都在測試按鍵,等待用戶輸入。 圖4.2初始化及按鍵識別流程圖 4.1.2 按鍵重復位之所以要進行按鍵重定位,是因為按鍵識別子程序的功能只限于確認某個按鍵被按下,不包括確認按鍵的意義。識別出的按鍵排列不符合用戶使用習慣,也不利于程序的后續處理,需要重新定位。對BUFF重新賦值,按鍵左3列仿照手機的9空格按鍵,便于用戶輸入密碼。根據不同的按鍵,程序跳轉至不同的程序段,進行對應按鍵處理,具體流程可見圖4.3。 程序開始時,先驅動蜂鳴器發聲0.1秒,提示用尸程序已經檢測到剛才的按鍵。然后根據BUFF的初始值進行一系列的對比。 如果BUFF的值是0,1,2,4,5,6,8,9,D中的一個,則按鍵是屬于數字噩。分別將BUFF重賦值為1,2,3,4,5,6,7,8,9,0。然后程序跳轉至保存密碼部分,將數字密碼保存至密碼緩沖區。 圖4.3按鍵重復位流程圖 4.1.3 保存密碼該程序段的功能是將密碼信息保存至對應的緩沖區。程序設置了一個16字節的密碼緩沖區(PS1~PS16)和一個16字節緩沖區存儲正確的密碼(AT1~AT16)°為便于比較,第一次輸入的密碼保存至PS1,第二次輸入的密碼保存至PS2,依此類推。后面沒有輸入的側充默認值OFFH。 為保密起見,輸入的密碼不能在液晶顯示器上顯示出來,而以“*”號代替。每輸入一位密碼,增加一位星號,便于用戶直觀察覺已經輸入的密碼位數。 圖4.4保存密碼流程圖 4.1.4 改密鍵處理如圖4.1.6可以看出,改密鍵的處理流程跟開鎖鍵類似,都需檢査密碼i腳的標志位只有PSW_F被置1才可以進行改密。不同之處在于,如果密碼正確,程序會將新密碼第一次的標志位PS_NEW1置位,這樣在下一次按確認鍵時,程序可以判別出此次輸入的密碼是新密碼第一次。
圖4.5 改密鍵處理流程圖 4.2 系統相關子程序4.2.1 按鍵識別子程序按鍵識別子程序的功能是行列掃描矩陣鍵盤并識別按鍵送入BUFF值,如圖 4.2.1所示。盡管進入子程序的前提條件是按鍵檢測子程序檢測到有按鍵被按下,但掃描前仍再次調用按鍵檢測子程序:因為人為按鍵的速度再快也會持續幾十毫秒,遠遠低于程序的處理速度,所以若是用戶正常按下按鍵,此處的按鍵檢測子程序仍可檢測到。此處調用按鍵檢測子程序可以防止因按鍵抖動產生的不必要識別。 圖4.6 按鍵識別子程序 4.2.2 液晶顯示子程序液晶顯示子程序在每次更新顯示內容時都會被調用,其流程如圖4-2-2所示。 每次更新顯示內容前,需清顯示清空LCD原先的顯示內容,淸屏指令的指令碼為01H,即將P0口賦值01H,然后寫入指令寄存器IR。 LCD1602要顯示的內容是根據其控制器內置的字符碼表,事先列出要顯示的ASCII字符串。每次送一個字符的ASCII碼入P0口,然后寫入數據寄存器DR,最后將字符地址加一,LCD1602會將寫入的ASCII碼對應的字符依次顯示出來。由于顯示字符串的長度不盡相同,約定每串字符以00H結尾;程序檢測到字符碼為00H時,即停止寫入,返回。LCD顯示的內容在下次更新前會一直保持。 圖4.7 液晶顯示子程序 4.2.3 AT24C02子程序AT24C02的子程序包括從AT24C02中讀取信息和將信息寫入AT24C02,首先介紹AT24C02的讀程序。 如圖4.2.3所示,單片機作為主器件,發送起始信號和要尋址的從器件的地址:因為此時即隨后的發送讀取地址操作都是單片機往AT24C02寫入控制信息,所以R/W要置0。本設計中只用一個AT24C02,從器件地址為0,對應代碼為0A0H。AT24C02接收到信號后,發送應答信號。單片機接收到應答信號后,再發送要讀取信息在從器件上的地址:本設計中從0地址開始讀,則送00H。再次接收到從器件的應答信號后,單片機重新發送起始信號和讀模式信號,將R/W位置1,對應代碼為0AIH.正式開始讀取信息。本設計中需要連續讀取16字節的信息,所以選擇連續讀方式即是單片機每接收到一字節的信息后,存入正確密碼緩沖區(AT1~AT16),然后產生一個應答信號,告知AT24C02要求更多的數據。當單片機不發送應答信號而發送停止信號時表示讀取結束。 圖4.8 讀AT24C02子程序流程圖 寫入AT24C02的子程序流程如圖4-2-3所示。單片機發送起始信號,接著發送從器件AT24C02所在地址(OAOH)。這里與讀AT24C02子程序不同的是,從開始到結束都是單片機控制AT24C02寫入信息,所以R/W置1無需更改。對應地址上的從器件AT24C02接收到地址信號后發送應答信號。主器件在接收到應答信號后,發送要寫入信息欲保存在從器件上的地址,本設計中從0地址開始保存,故地址為00H。單片機再次接收到從器件的應答信號后即可開始寫入信息。本設計中采用字節寫模式,即AT24C02在每接收一個8位字節之后響應一個應答信號,單片機在接收到應答信號后認為該字節成功寫入,便準備下一字節的數據。直到所有數據發送完畢,單片機發送停止信號,結束寫操作。 5 系統調試與驗證5.1 系統仿真平臺及功能單片機應用系統仿真平臺有兩個常用的工具軟件:Keil uVision4和Proteus 7.8。前者主要用于單片機C語言源程序的編輯、編譯、鏈接以及調試;后者主要用于單片機硬件電路原理的設計以及單片機應用系統的硬、軟件聯合仿真調試。 1.單片機軟件仿真工具Keil C51 與匯編語言相比,C 語言在功能、結構性、可讀性、可維護性上都具有明顯的優勢,因而易學易用。用過匯編語言在使用C語言開發,體會更加深刻。Keil uVision4是美國Keil Software公司推出的51系列兼容單片機C語言軟件開發系統,它具有豐富的庫函數和功能強大的集成開發調試工具,全Windows界面,可以完成從工程建立和管理、編譯、鏈接、目標代碼生成、軟件仿真調試等完整的開發流程。 利用Keil uVision4編譯后生成的代碼,在準確性和效率方面都達到了較高的水平,是單片機C語言軟件開發的理想工具。尤其是在開發大型軟件時更能體現高級語言的優勢。 2.單片機原路圖作圖工具Altium Designer Altium Designer是原Protel軟件開發商Altium公司推出的一體化的電子產品開發系統,主要運行在Windows操作系統。這套軟件通過把原理圖設計、電路仿真、PCB繪制編輯、拓撲邏輯自動布線、信號完整性分析和設計輸出等技術的完美融合,為設計 者提供了全新的設計解決方案,使設計者可以輕松進行設計,熟練使用這一軟件使電路 設計的質量和效率大大提高。ltium Designer除了全面繼承包括Protel 99SE、Protel DXP 在內的先前一系列版本的功能和優點外,還增加了許多改進和很多高端功能。該平臺拓寬了板級設計的傳統界面,全面集成了FPGA設計功能和SOPC設計實現功能,從而允許工程設計人員能將系統設計中的FPGA與PCB設計及嵌入式設計集成在一起。由于Altium Designer在繼承先前Protel軟件功能的基礎上,綜合了FPGA設計和嵌入式系統軟件設計功能,Altium Designer對計算機的系統需求比先前的版本要高一些。 3.單片機硬件仿真工具Proteus 7.8 Proteus 7.8是英國Lab Center Electronics公司推出的用于仿真單片機及其外圍設備的EDA工具軟件。Proteus和Keil uVision4配合使用,可以在不需要硬件投入的情況下,完成單片機C語言應用系統的仿真開發,從而縮短實際系統的研發周期,降低開發成本。Proteus具有高級原理布圖。混合模式仿真(PROSPICE)、PCB設計以及自動布線(ARES)等功能,Proteus的虛擬仿真技術(VSM)第一次真正實現了在物理原型出來之前對單片機應用系統進行設計開發和測試。 5.2 仿真調試1.開啟電路 點擊proteus軟件下方最左邊按鈕,使電路開始運行,如圖5.3.1所示。圖5.3.2為電路運行后狀態,LCD1602液晶顯示出正確密碼(可以程序設計不顯示),右上角顯示的輸入密碼數字的個數。同時 LED“鎖”沒有亮,代表處于上鎖狀態。 圖5.2.1電路運行指示圖 圖5.2.2 開啟電路 2.輸入錯誤密碼 通過矩陣按鍵,輸入數據,會顯示在LCD液晶上,按C按鍵可以刪除上個輸入數字。連續輸入6個數后,按“#”系統自動判斷密碼的對錯,如圖 5.3.3,輸入錯誤密碼后,會提示密碼錯誤,并提示點擊任意按鍵退出,返回輸入密碼界面,如圖 5.3.4,是點擊任意按鍵后,回到了主界面。 圖 5.2.3 輸入密碼錯誤提示 3.輸入正確密碼 按鍵輸入123456后,LCD液晶會顯示密碼正確,同時LED“鎖”被打開,LED發光,如圖5.3.5所示。 圖5.2.5 輸入正確密碼提示 4.修改密碼 在開鎖狀態下,再次輸入正確的密碼并按下“#”(確認)鍵,此時聽到兩聲提示,輸入新的六位密碼并按“D”(重設)鍵,再重復輸入一次新密碼并按“D”,會聽到兩聲提示音,表示重設密碼成功,內部保存新密碼并存儲到AT24C02。(如兩次輸入的新密碼不一樣,則重設密碼失敗)。 圖 5.2.6 修改密碼界面 圖 5.2.7 修改密碼成功提示
附錄1 設計原理圖附錄2 設計仿真圖
以上內容的Word格式文檔51黑下載地址(和網頁上一模一樣,不含仿真與程序):
|