電子密碼鎖控制系統(tǒng)設計說明_第1頁
電子密碼鎖控制系統(tǒng)設計說明_第2頁
電子密碼鎖控制系統(tǒng)設計說明_第3頁
電子密碼鎖控制系統(tǒng)設計說明_第4頁
電子密碼鎖控制系統(tǒng)設計說明_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微控制器課程設計手冊電子密碼鎖控制系統(tǒng)的設計基于單片機的電子密碼鎖設計摘要:作為密封裝置,加在門、箱、抽屜等物體上的鎖,可以用指定的鑰匙打開。自古以來,鎖就是一種安全,保障人們的財產(chǎn)安全甚至生命安全。隨著人類歷史的發(fā)展和對財產(chǎn)安全和生命安全的日益重視,各種多功能鎖在世界上隨處可見。人們在生活中使用的傳統(tǒng)機械鎖逐漸被安全性能更好、功能更多的電子密碼鎖所取代。在現(xiàn)代社會,電子密碼鎖是大家耳熟能詳?shù)拿~。小區(qū)門口一般都裝有電子密碼鎖。本文將介紹一種電子密碼鎖。這種鎖通過識別密碼來控制電路和芯片的性能。這樣就可以控制鎖的開閉,完成電子鎖裝置的任務。本設計是關于密碼鎖,以AT89C51單片機為核心控制目標。本設計以AT89C51單片機為控制目標核心,配合相關電路和軟件程序,可實現(xiàn)密碼輸入與修改、信息顯示、鍵盤鎖定、報警系統(tǒng)、門禁開閉等功能。本設計中,開鎖和報警都是根據(jù)密碼識別,密碼修改和存儲是通過AT24C02串行存儲器的功能來實現(xiàn)的。關鍵詞:單片機、密碼鎖、電子鎖、矩陣鍵盤、掉電存儲目錄緒論4電子密碼鎖簡介5電子密碼鎖設計的背景及意義5電子密碼鎖的現(xiàn)狀與發(fā)展趨勢61項目設計目標62總體設計方案62.1設計理念62.2方案制定73硬件電路框圖73.1MCU及其最小系統(tǒng)73.1.1復位電路設計83.1.2時鐘電路設計93.2密碼鎖電路103.2.1關鍵電路設計103.2.2LCD顯示電路113.2.4解鎖機構123.2.5報警機制134編程144.1整體軟件設計144.2鍵盤掃描子程序154.3顯示模塊子程序184.4掉電存儲子程序194.4.1寫操作模式194.4.2讀操作模式204.5定時器中斷子程序214.6密碼輸入子程序214.7報警子程序235課程設計總結(jié)236參考文獻257附錄25附錄1通用電路原理圖26附錄2:電子密碼鎖PCB圖27附件3:電子密碼鎖實物圖27附錄4:零件清單30附錄五源程序列表31介紹電子密碼鎖介紹什么是電子密碼鎖?“通過輸入密碼來控制電路或芯片的運行,從而控制機械開關的閉合,完成開鎖和上鎖任務的電子產(chǎn)品?!?這是百度百科的解釋。簡單來說,電子密碼鎖是一種可以設置、存儲、識別和顯示密碼等信息,以及接收和致報警信號的電子設備。 與傳統(tǒng)機械鎖相比,電子密碼鎖具有以下優(yōu)點: (1)可以更改密碼。用戶可隨時更改密碼,確保密碼鎖的安全可靠。修改密碼的功能也避免了人員的變動,降低了鎖具的安全性,這是傳統(tǒng)鑰匙鎖不具備的功能。 (2)操作簡單。無論是解鎖還是修改密碼,只要識字的人都能直接使用,使用方法簡單,不繁瑣。 (3)能夠報警。報警功能無疑增加了鎖的安全性。 (4)無法“技術上”破解。如果不知道密碼,就無法打開鎖,即使是一個習慣性的小偷,也只能看著“鎖”而嘆息。電子密碼鎖設計的背景及意義現(xiàn)代文明社會,雖然人的道德素質(zhì)越來越高,“梁上君子”、“三只手”等人的數(shù)量比舊社會大為減少,但“XXXX被盜”等新聞在某個社區(qū),居民失去了XXXX”,我們?nèi)匀唤?jīng)常在報紙上看到。隨著人們生活水平和自衛(wèi)意識的提高,人身財產(chǎn)安全和人身安全問題也越來越受到關注。擁有一把能有效保障居民財產(chǎn)安全和人身安全的鎖具越來越重要。鎖的起源可以追溯到人類社會財產(chǎn)私有化的出現(xiàn)。鎖具從出現(xiàn)到今天的高科技、信息化,已有數(shù)年的歷史。經(jīng)過幾年的使用和研究,人們對鎖具的結(jié)構和機理有了非常透徹的了解。因此,不使用鑰匙開鎖的方法是無窮無盡的。尤其是傳統(tǒng)的機械鎖,由于結(jié)構簡單,面對習慣性的小偷,甚至可以只用一根電線直接打開,失去了保護使用者人身財產(chǎn)安全的意義。那么,怎樣才能提高鎖具的有效性,保護用戶的財產(chǎn)安全呢?在信息化現(xiàn)代化的今天,鎖具也應該向高精度、高安全性的智能化、信息化方向發(fā)展。自1970年代德州儀器推出第一顆單片機芯片TMS-1000以來,基于其體積小、價格低、個性突出的特點,越來越多的電子產(chǎn)品開始以單片機芯片為核心??刂撇糠?。在這樣的大環(huán)境下,基于單片機的電子密碼鎖也應運而生。這種電子密碼鎖是以單片機為核心,配以相應的硬件電路和軟件程序,實現(xiàn)密碼的設置、存儲、識別和顯示,以及接收和致報警信號等。.操作簡單、安全性高、功耗低等優(yōu)點。基于單片機的電子密碼鎖的問世,使人們自身的財產(chǎn)安全更加有保障,也促進了安防信息系統(tǒng)的發(fā)展,是安防信息系統(tǒng)的一大進步。基于單片機的電子密碼鎖的出現(xiàn)在一定程度上解決了用戶私人財產(chǎn)的安全問題。然而,時代在發(fā)展,社會在進步。只有不斷進步,才能適應時代發(fā)展的需要。電子密碼鎖雖然具有安全性高、操作簡單等優(yōu)點,但不如機械鎖便宜。因此,市場上的主流產(chǎn)品仍然是機械鎖。為了取代機械鎖成為市場主流,電子密碼鎖必須不斷改進和發(fā)展,使其在功能更多的同時更智能、成本更低。這就需要我們不斷研究電子密碼鎖的設計方法和實現(xiàn)原理。因此,研究基于單片機的電子密碼鎖設計是很有必要和實用的。電子密碼鎖現(xiàn)狀及發(fā)展趨勢目前,與西方發(fā)達國家相比,我國的電子密碼鎖技術還比較落后。在西方發(fā)達國家,電子密碼鎖的種類已經(jīng)很齊全,技術也比較先進,已經(jīng)廣泛應用于各個領域。在我國,電子密碼鎖技術僅相當于1970年代的國際水平,相對落后。1980年代以來,隨著各種電子集成電路的出現(xiàn),特別是單片機的問世,電子密碼鎖有了很大的發(fā)展。與傳統(tǒng)的機械鎖體積大、結(jié)構簡單相比,電子密碼鎖具有體積小、可靠性高的優(yōu)點。但是目前電子密碼鎖的價格比較高,需要電源來提供能量,所以它的使用還局限于一定的區(qū)域,尤其是在中國,各種條件使得電子密碼鎖暫時難以普及. 電子密碼鎖雖然還存在一些缺陷,但其安全性高、方便使用、智能報警等優(yōu)點是傳統(tǒng)鑰匙鎖無法替代的,而且隨著電子信息技術的發(fā)展和各種電子設備價格的上漲不斷減少,電子密碼鎖也將朝著低成本、多功能的方向發(fā)展。1項目設計目標本設計采用MCS-51系列單片機AT89S52作為主控芯片,結(jié)合外圍電路,設計了可以實現(xiàn)的密碼鎖控制系統(tǒng)。2總體設計方案2.1設計思路為核心的單片機控制方案。利用單片機靈活的編程設計和豐富的IO口,以及其控制的準確性,不僅可以實現(xiàn)基本的密碼鎖功能,還可以根據(jù)實際情況增加功率調(diào)節(jié)存儲和聲光提示功能需要。2.2計劃制定(1)為實現(xiàn)密碼的安全性,可采用4×4矩陣鍵盤任意設置用戶密碼,提高密碼的安全性。(2)采用液晶顯示單元,提高了可讀性,提供了良好的人機界面。3硬件電路框圖該電路由兩部分組成:AT89S51單片機及其外圍電路和密碼鎖電路。密碼鎖電路包括:矩陣鍵盤輸入、液晶顯示電路、報警控制電路、AT24C02掉電存儲電路。其原理框圖如圖3-1所示。圖3-1原理框圖3.1MCU及其最小系統(tǒng)單片機的最小系統(tǒng)是單片機正常運行的基礎。任何單片機系統(tǒng)的設計都是在單片機最小系統(tǒng)的基礎上完成的。在單片機系統(tǒng)的物理設計中,最要解決的就是單片機的最小系統(tǒng)。只有保證單片機最小系統(tǒng)的正確性,才能保證后面其他模塊的正確設計。圖3-2是單片機最小系統(tǒng)的完整仿真圖。圖3-2單片機最小系統(tǒng)完整仿真圖3.1.1復位電路設計復位是微控制器的初始化操作。當微控制器開始運行時,需要先復位。它的作用是使系統(tǒng)中的CPU等部件處于一定的初始狀態(tài),并從這個狀態(tài)開始工作。因此,復位是一種非常重要的操作方式。但單片機本身不能自動復位,必須配合相應的外部電路來實現(xiàn)。復位電路采用按鍵級復位復位電路。當單片機已經(jīng)運行時,按下復位鍵S再松開,復位腳RET(9腳)腳上連續(xù)出現(xiàn)24個振蕩脈沖周期(即2個機器周期)的高電平信號會使單片機復位。也可以使RST在一段時間內(nèi)為高電平,從而實現(xiàn)上電或開關復位的操作。如圖3-3所示。圖3-3復位電路3.1.2時鐘電路設計時鐘電路為單片機產(chǎn)生定時脈沖。單片機的所有操作和控制過程均由統(tǒng)一的定時脈沖驅(qū)動。如果單片機的時鐘電路停止工作(晶振停止抖動),那么單片機也停止運行。使用外部時鐘時,連接方法如下圖所示。晶振XTAL1(19腳)和XTAL2(18腳)之間接一個11.0592MHZ晶振,兩腳分別接一個電容到地。可以產(chǎn)生需要的時鐘信號,電容的容量一般為幾十皮法,如20PF。如圖3-4所示。圖3-4時鐘電路3.2密碼鎖電路3.2.1按鍵電路設計為了加強密碼的字符性,可以使用4×4矩陣鍵盤任意設置用戶密碼(長度為1-16位),從而提高密碼的字符性,減少使用時占用的I/O口與微控制器接口。線數(shù)節(jié)省了單片機的寶貴資源。這種方法通常在按鈕較多的情況下使用。示意圖如圖3-5所示。圖3-5矩陣鍵盤電路每一行和每一列的交集是不一樣的,而是通過一個鍵連接起來的。使用這種行列式矩陣結(jié)構,只需要N行行和M列行就可以組成一個N×M鍵的矩陣鍵盤。.在這種行列式矩陣鍵盤編碼的單片機系統(tǒng)中,鍵盤處理程序首先執(zhí)行等待按鍵并確認按鍵是否被按下的程序段。確認按下某個鍵后,下一步就是確定按下了哪個鍵。通常有兩種方法來識別key:一種是一般的組行掃描查詢方法;另一種是更快的線反轉(zhuǎn)方法。在這個系統(tǒng)中,我們使用線反轉(zhuǎn)方法。首先識別鍵盤上是否有按鍵按下,在單片機的I/O口向鍵盤致全掃描字,然后讀取線路狀態(tài)進行判斷。具體方法是:將全掃描字00H輸出到行線,將所有列線置低電平,然后將列線的電平狀態(tài)讀入累加器A。一行電池被拉低,使該行不全為1。確定鍵盤上的哪個鍵被按下,通常是在列線被拉低后,通過檢查行輸入狀態(tài)來完成。方法是:依次向列線致一個低電平,然后檢查所有行線的狀態(tài)。如果都是1,則按下的按鈕不在此列;如果不是全部1,則按下的按鈕必須在此列中。它就是與零線相交處的那把鑰匙。實現(xiàn)功能如圖3-5所示3.2.2LCD顯示電路本系統(tǒng)設計的顯示電路是為了提示用戶而設置的。由于系統(tǒng)有賬戶管理系統(tǒng),使用LCD可以為用戶提供更友好的人機界面,所以選用LCD1602作為顯示器件。解鎖時,按鍵盤上的解鎖鍵后,用鍵盤上的數(shù)字鍵0-9輸入密碼,每按一個數(shù)字鍵,顯示屏上會顯示一個*,多少個*多少個輸入數(shù)字。密碼輸入完成后,按確認鍵,如果輸入密碼正確,LCD顯示“OK”,單片機P3.0引腳輸出低電平,使三極管T2接通,電磁鐵閉合,繼電器開關跳動,電子密碼鎖打開,如果密碼錯誤,液晶顯示屏顯示“你是小偷!”,P3.0輸出高電平,并且電子密碼鎖無法打開。通過液晶顯示屏,可以清楚地判斷密碼鎖的狀態(tài)。圖3-6顯示電路使用LCD1602可以輕松實現(xiàn)所有字母和符號的顯示,顯示功能豐富,驅(qū)動簡單。它可以提高系統(tǒng)的安全性,使系統(tǒng)更加人性化和可擴展性更強。以下圖片是本主題中使用的顯示和提示:圖3-7.1。初始化圖3-7.2密碼輸入正確圖3-7.3第一次密碼輸入錯誤圖3-7.4第二次密碼輸入錯誤圖3-7.5第三次密碼輸入錯誤圖3-7.6更改密碼圖3-7.7輸入新密碼圖3-7.8清屏3.2.3AT24C04存儲電路AT24C02是AtmelCorporation生產(chǎn)的AT24CXX系列串行E2PROM之一。它是一種具有I2C總線接口功能的電可擦除串行存儲器。AT24C02部分包含256字節(jié),通過I2C總線接口進行操作,具有特殊的寫保護功能(WP=1時為寫保護)。電路如圖3-8所示圖3-8AT24C04存儲電路3.2.4解鎖機制 在基于單片機的電子密碼鎖設計中,用戶需要輸入密碼,密碼正確,發(fā)出開鎖信號開鎖。由于電磁鎖在設計中用發(fā)光二極管代替,二極管的亮就表示鎖已開鎖,因此可以設計一個可以點亮二極管的簡單電路系統(tǒng)來代替電磁鎖的開鎖機構。如圖3-9所示。圖3-9解鎖顯示電路 由于單片機的I/O口默認為高電平,二極管初始不亮,表示鎖已關閉。當用戶輸入密碼并驗證正確時,發(fā)出解鎖信號(使P2.4=0)。3.2.5報警機制在基于單片機的電子密碼鎖設計中,通過控制蜂鳴器的聲音來實現(xiàn)系統(tǒng)的報警功能。 蜂鳴器是一種由直流電壓供電的電子發(fā)聲器。圖3-10是蜂鳴器模擬的報警機制的仿真圖。圖3-10告警機制仿真圖當P3.7端口有脈沖信號輸入時,蜂鳴器SPEAKER會響起。蜂鳴器的聲音頻率也可以通過控制輸入脈沖的頻率來控制。 當用戶輸入的密碼錯誤次數(shù)達到預設的警告次數(shù)時,系統(tǒng)調(diào)用報警子程序使蜂鳴器發(fā)出報警聲,同時禁用鍵盤輸入。3.2.6密碼初始化電路密碼初始化是相當于超級用戶的功能電路。當用戶密碼忘記時,可以點擊按鈕初始化密碼:123456。當然,你必須有一定的權限。仿真圖如圖3-11所示圖3-11密碼初始化電氣仿真圖4編程4.1整體軟件設計根據(jù)電子密碼鎖的實際應用需求和應具備的功能,本設計的主程序流程圖如圖4-1所示。初始化初始化顯示輸入密碼界面輸入密碼密碼正確?開鎖掃描功能鍵有鍵輸入?是改密鍵?進行改密操作顯示界面是閉鎖鍵?進行閉鎖操作YNYNNY開啟定時中斷次數(shù)>3?調(diào)用報警子程序YN圖4-1主程序流程圖基于單片機的電子密碼鎖設計軟件設計中的主要問題是如何實現(xiàn)密碼的鍵盤輸入、信息顯示、掉電存儲以及與密碼的比較處理。本設計將逐步解決這些問題。4.2鍵盤掃描子程序矩陣鍵盤掃描子程序應具備以下兩個基本功能:(1)判斷按鍵是否被按下;(2)可以判斷哪個鍵被按下。其軟件管理主要分為以下三個步驟來完成:確定是否整個鍵盤都按下了一個鍵。將所有行設為0,然后讀取列值。如果該列中的值都是1,則沒有按鍵,否則,按鍵。確定按下的鍵的位置。使用逐行掃描的方式,逐行輸出0,然后讀取列值。如果該列的值全為1,則表示按下了不在該行的按鈕,掃描下一行。如果該列的值不全為1,則表示按下的按鈕在該行中。查看key-value表,返回key-value的對應信息,從而確定每個key應該執(zhí)行的功能。使用一定的算法,將按下的鍵的行列信息組合成一個信息,就是這個鍵的鍵值。使用相同的方法來確定每個鍵的鍵值。為key確定key值時必須使用相同的算法,計算出來的key值應該互不相同。 本設計中每個key對應的key值如表4-1所示。表4-1按鍵鍵值表鍵名核心價值鍵名核心價值10x7e90x7d20xbe00xbb30xde一個0xdb40xee乙0xeb50x7dC0x7760xbdD0xb770xdd乙0xd780xedF0xe7鍵盤掃描子程序的流程圖如圖4-2所示:YYN確定被按下的鍵在第二行?YN確定被按下的鍵在第三行?YN確定被按下的鍵在第四行中確定被按下的鍵返回對應的按鍵號在第一行?開始掃描鍵盤有鍵按下?YN圖4-2鍵盤掃描程序流程圖從流程圖中可以看出,這個鍵盤識別程序是通過逐行掃描來判斷一個鍵是否被按下,當確定某一行中某個鍵被按下時,再判斷該行中哪個鍵被按下. 在本設計中,P1.0~P1.3為行輸出端口,P1.4~P1.7為列輸出端口。最初,P1.0~P1.3的值設置為0,P1.4~P1.7的值設置為1。CPU始終掃描P1端口。當P1的值不為0xf0時,有一個按鈕被按下,否則沒有按鈕。被按下。 在實際應用中,為了防止按鍵的抖動導致按鍵被視為2次以上,應設計按鍵去抖程序,只要方法是在出現(xiàn)按鍵時延遲一段時間即可。鑰匙已關閉。是否還有key關閉,如果有,key有效關閉,如果沒有,key無效關閉,返回rescan。 圖4-3為CPU掃描第一行鍵盤的程序流程圖。單行鍵盤掃描可以查明按下鍵的確切位置。開始開始掃描端口YN有鍵閉合?延時有鍵閉合?查表確定按鍵YNI/O口初始化返回按鍵值結(jié)束圖4-3單行鍵盤掃描流程圖 在本設計中,每個按鈕的功能與圖3-5中的相同。詳情請看圖。4.3顯示模塊子程序由于設計需要能夠顯示密碼輸入界面、密碼輸入信息、密碼正確后的提示界面、密碼錯誤后的提示界面、密碼修改相關的界面,所以使用了很多顯示子程序來顯示不同的內(nèi)容。雖然顯示子程序有很多,但是由于顯示原理是一樣的,我就不一一介紹每個子程序了。只要能熟練使用LCD1602的每一條指令,這些小子程序都不會出問題。下面是LCD1602從第一行第一列顯示N(0<N≤16)個字符的程序流程圖。開始開始調(diào)用寫數(shù)據(jù)函數(shù)YN顯示N個字符了嗎?LCD初始化結(jié)束圖4-4顯示字符程序流程圖 顯示模塊子程序主要是根據(jù)LCD1602的命令和引腳功能編寫,程序邏輯比較簡單。4.4掉電存儲子程序掉電存儲子程序是將初始密碼寫入AT24C04。每次復位后,單片機從AT24C04讀取密碼,并與輸入的密碼進行比較,判斷輸入密碼的正確性。修改密碼成功后,將新密碼寫入AT24C04,以便下次單片機復位后使用。 向下存儲器模塊主要涉及AT24C04的寫操作模式和讀操作模式。AT24C04有2種不同的寫操作模式和3種不同的讀操作模式。4.4.1寫操作模式有兩種寫操作:字節(jié)寫和頁寫。(1)字節(jié)寫入。在字節(jié)寫模式下,主機致(R/bit為0)啟動命令和設備地址信息。主機收到AT24C04的響應信號后,致一個1~8位的字節(jié)地址,將AT24C04的地址指針寫入中間。對于高于8位的地址,主機連續(xù)致兩個8位字節(jié)地址寫入AT24C04,主機在收到另一個來自AT24C04的響應信號后,向?qū)ぶ返拇鎯卧聰?shù)據(jù),AT24C04再次響應,并啟動主機致停止信號后進行部分數(shù)據(jù)的擦除和寫入。AT24C04在部分擦除期間不響應主機的任何請求,因此兩次寫入操作之間應有足夠的響應時間。字節(jié)寫入時序如下: 地址只有8位:開始→設備地址→響應→8位字節(jié)地址→響應→數(shù)據(jù)→響應→停止 高于8位的地址:開始→設備地址→響應→高字節(jié)地址→響應→低字節(jié)地址→響應→數(shù)據(jù)→響應→停止(2)要寫的頁面。頁寫和字節(jié)寫的區(qū)別在于,字節(jié)寫一次只能寫一個字節(jié)的數(shù)據(jù),而頁寫一次可以寫8或16個字節(jié)的數(shù)據(jù)。頁面寫入時序如下: 地址只有8位:開始→設備地址→響應→8位字節(jié)地址→響應→數(shù)據(jù)1→響應→...→數(shù)據(jù)N→響應→停止。 高于8位的地址:開始→設備地址→響應→高字節(jié)地址→響應→低字節(jié)地址→響應→數(shù)據(jù)1→響應→...→數(shù)據(jù)N→響應→停止。三種不同的讀取操作模式是:讀取當前地址內(nèi)容(立即地址讀?。?、讀取隨機地址內(nèi)容(隨機地址讀取)和讀取順序地址內(nèi)容(順序地址讀?。?.4.2讀操作模式(1)讀取當前地址內(nèi)容。AT24C04的地址計數(shù)器容量為最后一個操作字節(jié)的地址加1。如果最后一次讀寫操作的地址為N,則讀取當前地址容量的讀地址應從N+1地址開始。AT24C04接收設備地址信號,I2C總線允許接收數(shù)據(jù)(R/=1),它先致一個響應信號,然后輸出數(shù)據(jù)。數(shù)據(jù)輸出完成后,主機發(fā)出停止信號,讀操作完成。 (2)讀取隨機地址內(nèi)容。這種讀操作模式允許主機讀取AT24C04的任何字節(jié)。主機將R/位設置為0,并致起始信號、AT24C04的地址和要讀取的字節(jié)數(shù)據(jù)地址進行偽操作。AT24C04響應后,主機再次致啟動信號和AT24C04的地址。此時,R/位設置為1時,AT24C04響應并確認信號,然后輸出字節(jié)數(shù)據(jù),最后主機以停止信號結(jié)束數(shù)據(jù)讀取。 (3)讀取順序地址內(nèi)容。讀取順序地址內(nèi)容操作模式由立即讀取或隨機地址讀取操作啟動。AT24C04致一個8位數(shù)據(jù)后,主機產(chǎn)生響應信號通知AT24C04主機需要更多數(shù)據(jù)。AT24C04收到主機的響應信號后繼續(xù)致數(shù)據(jù),直到主機不致響應信號而是致停止信號,操作結(jié)束。 下面是三種不同讀操作模式的時序?qū)Ρ龋?讀取當前地址:開始→讀取設備地址→響應→數(shù)據(jù)→無響應→停止。 讀取隨機地址:開始→寫入設備地址→響應→要讀取的字節(jié)地址→響應→開始→讀取設備地址→響應→數(shù)據(jù)→無響應→停止。讀取序列地址內(nèi)容:開始→寫入設備地址→響應→要讀取的字節(jié)地址→響應→開始→讀取設備地址→響應→數(shù)據(jù)1→響應→…→數(shù)據(jù)N→無響應→停止。 本設計采用讀取隨機地址內(nèi)容的操作方式。4.5定時器中斷子程序為防止戶主以外的其他人“借用”戶主密碼,在一段時間內(nèi)(如20S)無按鍵按下時,應立即關閉顯示屏,禁止按鍵輸入.如果戶主忘記退出系統(tǒng),這樣做可以避免給其他人機會。 程序中定時器0每50毫秒產(chǎn)生一次中斷,所以每20次中斷為1秒,當秒數(shù)為20時(每次有按鍵輸入,50毫秒的運算和清零秒數(shù)為執(zhí)行),關閉屏幕并禁用鍵盤輸入。 當定時器/計數(shù)器工作在計時模式時,計時時間的計算公式為:計時時間=(216-計數(shù)初值)×計時周期 當晶振頻率為12MHz時,定時器/計數(shù)器的定時周期為1μs,因此定時為50ms的定時器/計數(shù)器的初始值為:初始計數(shù)值=216—500004.6密碼輸入子程序從鍵盤輸入密碼時,應將輸入的密碼存儲起來,以供與密碼相關的操作(判斷、修改、存儲等)使用,每輸入一個密碼,顯示器上應顯示一個“*”號.圖4-8是密碼輸入子程序的流程圖。開始開始N有鍵輸入?掃描鍵盤Y是數(shù)字鍵?輸入的密碼長度小于6?將輸入的數(shù)放入數(shù)組在顯示器上顯示“*”是取消鍵?輸入的密長度大于0?清除數(shù)組中的最后一位數(shù)清除顯示器上的最后一個“*”是確認鍵?結(jié)束YNNNNYYYNY圖4-5密碼輸入程序流程圖輸入密碼時,當輸入的密碼位數(shù)小于6位時,每按一次數(shù)字鍵,將數(shù)字存入數(shù)組。當輸入的密碼不少于6位時,再次按數(shù)字鍵,程序不做任何處理,繼續(xù)掃描鍵盤。此時,程序只有在按下OK鍵或取消鍵時才會做出相應的響應。取消鍵的功能是退格。當不小心輸入了錯誤的密碼時,可以退格清除錯誤的數(shù)字,密碼的位數(shù)減一,顯示屏上的“*”數(shù)字也減一。當輸入的密碼位數(shù)變?yōu)?,取消鍵不再起作用。4.7報警子程序報警子程序的原理很簡單,就是當密碼輸入錯誤的次數(shù)超過規(guī)定的最大允許次數(shù)時,蜂鳴器會連續(xù)發(fā)出脈沖,使其連續(xù)響起。同時,由于CPU一直在給蜂鳴器提供脈沖,所以來不及處理密碼掃描等事件,即蜂鳴器報警同時屏蔽鍵盤輸入。圖4-6學?!缶映绦蛄鞒虉D本設計中密碼輸入錯誤次數(shù)不得超過3次。5課程設計總結(jié)該系統(tǒng)由單片機系統(tǒng)、矩陣鍵盤、液晶顯示器和報警系統(tǒng)組成。系統(tǒng)可以完成解鎖、錯誤報警、超鎖、修改用戶密碼、恢復初始密碼基本密碼鎖定功能等功能。除了上述基本的密碼鎖功能外,還有語音提示等功能,還可以根據(jù)實際情況增加遙控功能。系統(tǒng)采用單片機控制,液晶顯示,蜂鳴器提示。該系統(tǒng)成本低,功能強大實用。但是在系統(tǒng)調(diào)試的過程中,還是發(fā)現(xiàn)了一些問題,系統(tǒng)時不時出現(xiàn)不穩(wěn)定的情況。反復調(diào)試,發(fā)現(xiàn)如下問題:按鍵效果不好,導致抖動較大,使軟件去抖不徹底;另一種是單片機本身沒有問題,導致系統(tǒng)跑偏或者卡死;由于電路板的生產(chǎn),線路之間也存在干擾,系統(tǒng)出現(xiàn)錯誤,如液晶顯示錯誤等。經(jīng)過反復調(diào)試和修改,最好最終達到滿意的程度。這個系統(tǒng)的設計不是太人性化。比如可以加入語音提示和遠程解鎖功能,可能更重要!6參考文獻[1]天帆.完全手冊--51單片機C語言開發(fā)詳解[M].電子行業(yè),2008[2]群芳.單片機與接口技術[M].:電子工業(yè),2008[3]魏單片機C語言編程培訓100例-基于8051+Proteus仿真[M]:電子工業(yè)2010.6[4]大明。單片機控制實訓指導及綜合應用實例[M].:清華大學,2004[5]齊,朱寧希.單片機應用系統(tǒng)設計技術——基于C51的Proteus仿真[M].:化工,2004。[6]廣斌,董志誠.單片機系統(tǒng)實用抗干擾設計[J].[M].:人民郵電,2004[7]于昌.單片機系統(tǒng)設計與案例分析。[M].:電子科技大學,2007[8]朝陽.單片機MCS-51原理與應用開發(fā)教程[M].:清華大學,2009.[9]黃衛(wèi)功,鄧承忠,王艷。單片機原理與應用技術[M].:中國電子科技大學,2009[10]孟,何翔,斌。單片機應用系統(tǒng)開發(fā)綜合實例[M].:清華大學,20097附錄附錄1通用電路原理圖附錄二:電子密碼鎖PCB圖附件3:電子密碼鎖實物圖附錄四:元件清單姓名模型數(shù)量評論單片機AT89S521包括雙直插式插座反抗10K6反抗2202排除9x10k1液晶顯示器LM16021陶瓷電容器33pF2電解電容器10uF1按鈕觸摸按鈕18晶體振蕩器11.0592MHz1單排插針1x84引領2紅綠各一直流插座1下載端口1記憶At24c021三極管1附錄五源程序列表#include<reg52.h>#include<字符串.h>#include<intrins.h>#defineuchar無符號字符#defineuint無符號整數(shù)#defineLCDIOP0#definedelay4us()_nop_();_nop_();_nop_();_nop_();uchar緩沖區(qū)[6]={0};sbitsda=P3^4;sbitscl=P3^3;sbit嗶=P3^7;sbit中繼=P2^3;sbithuifu=P2^6;位標志=0,aa; //用戶zi定時溢出標志位ucharDSY_BUFFER[16]="";ucharDSY_BUFFER1[16]="";uchar用戶密碼[6]={0};uchar內(nèi)存[6]={0};位rs=P2^0;位rd=P2^1;sbitlcden=P2^2;sbitled=P2^4;sbitled1=P2^7;uchar碼表2[]="123456";ucharcodetable[]="輸入你的代碼:";無效延遲(uintz){單位x,y;對于(x=z;x>0;x--)for(y=110;y>0;y--);}voiddelay() //短延時,兩個機器周期,用于總線延時{;;}無效寫入_(uchar){rs=0;rd=0;lcden=0;P0=;延遲(3);lcden=1;延遲(3);lcden=0;}無效write_date(uchar日期){rs=1;rd=0;lcden=0;P0=日期;延遲(3);lcden=1;延遲(3);lcden=0;}voidDisplay_String(uchar*p,uchar){uchar我;寫_();對于(i=0;i<16;i++){write_date(p[i]);}}無效的init_lcd(){lcden=0;寫_(0x38);寫_(0x0c);寫_(0x06);寫_(0x01);寫_(0x80);顯示字符串(表,0x80);Display_String("===鎖定OK!======",0xc0);}無效的開始(){sda=1;scl=1;延遲4us();sda=0;延遲4us();scl=0;}無效停止(){sda=0;scl=1;延遲4us();sda=1;延遲4us();scl=0;}voidinit() //輸入{sda=1;說謊();scl=1;說謊();}}無效確認(){sda=0;scl=1;延遲4us();scl=0;sda=1;}}}無效諾亞克(){sda=1;scl=1;延遲4us();scl=0;sda=0;}}}設置recbyte(){把i,rd;rd=0x00;sda=1;對于(我=0;我<8;我++);{scl=1;rd<<=1;rd|=sda;延遲4us();scl=0;延遲4us();}}scl=0;延遲4us();返回rd;}uchar致字節(jié)(ucharwd){uchar我;位確認0;對于(i=0;i<8;i++){sda=(位)(wd&0x80);_nop_();_nop_();scl=1;延遲4us();scl=0;wd<<=1;}延遲4us();sda=1;scl=1;延遲4us();ack0=!sda;scl=0;延遲4us();返回確認0;}ucharRecstring(ucharslave,ucharsubaddr,uchar*buffer,ucharn){uchar我;開始();if(!sendbyte(slave))返回0;if(!sendbyte(subaddr))返回0;開始();if(!sendbyte(slave+1))返回0;for(i=0;i<n-1;i++){緩沖區(qū)[i]=recbyte();確認();}緩沖區(qū)[n-1]=recbyte();諾亞克();停止();返回1;}ucharSendstring(ucharslave,ucharsubaddr,uchar*buffer,ucharn){uchar我;開始();if(!sendbyte(slave))返回0;if(!sendbyte(subaddr))返回0;for(i=0;i<n;i++){if(!sendbyte(buffer[i]))返回0;}停止();返回1;}無效清除密碼(){ uchar我;for(i=0;i<6;i++){用戶密碼[i]='';}對于(i=0;i<16;i++){DSY_BUFFER[i]='';}}ucharKeys_Scan(){uchartemp,keynum;P1=0x0F;延誤(5);溫度=P1^0x0F; //掃描行線值開關(溫度){案例1:keynum=1;break;案例2:keynum=4;break;案例4:keynum=7;break;案例8:keynum=10;break;休息;}P1=0xF0;延誤(5);溫度=P1>>4^0x0f;開關(溫度){案例8:keynum+=0;break;案例4:keynum+=1;break;案例2:keynum+=2;break;案例1:keynum+=12;break;休息;}延遲(600);返回鍵號;}無效的主要(){uchartemp,i=0,j=0,k=0,n,m=0,flay,error,ne=1;ucharIS_valid_user;繼電器=1;在里面();初始化液晶顯示器();延誤(5);P1=0x0f;而(1){if(!huifu==1){aa=Sendstring(0xa0,1,table2,6);延誤(10);aa=Recstring(0xa0,1,buffer,6);}別的aa=Recstring(0xa0,1,buffer,6);如果(P1!=0x0f){延遲(10);如果(P1!=0x0f){temp=Keys_Scan();開關(溫度){案例11:溫度=0;案例1:案例2:案例3:案例4:案例5:案例6:案例7:案例8:案例9:if(i<=5)//密碼限制為6個字符或更多{用戶密碼[i]=temp;DSY_BUFFER[i]='*';Display_String(DSY_BUFFER,0xc0);我++;}休息;case19: //按F鍵清除位如果(我!=0){一世-;for(n=0;n<i;n++){DSY_BUFFER1[n]=temp+'*';}}Display_String(DSY_BUFFER1,0xc0);休息;case12://回車解鎖for(k=0;k<6;k++){if(緩沖區(qū)[k]==(用戶密碼[k]+48))標志=1;別的標志=0;}如果(標志==1){ 標志=0;我=0;領導=0;//點亮LED繼電器=0;//開鎖清除密碼();Display_String("打開成功!",0xc0);IS_valid_user=1;j=0;錯誤=0;}別的{j++;錯誤++;領導=1;//關閉LED清除密碼();Display_String("錯誤!重試:",0xc0);寫_(0xcf);write_date(0x30+j);IS_valid_user=0;}我=0;休息;case10://按Lock鍵鎖

溫馨提示

  • 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

提交評論