新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種基于單片機和串行EEPROM的智能密碼鎖

        一種基于單片機和串行EEPROM的智能密碼鎖

        作者: 時間:2008-04-11 來源:網絡 收藏
        摘要本文介紹一種,對系統硬件設計和軟件實現進行了詳細的描述。該系統采用AT89C51和AT24C01,通過AT89C51模擬I2C總線和AT24C01通訊,實現的功能。
        關鍵詞AT89C51AT24C01

        1.引言

        電子技術的飛速發展,給傳統的機械鎖帶來了巨大的變革,現代的電子技術與機械技術相結合,產生了一大批如聲控鎖、電子密碼鎖、遙控鎖,指紋鎖等先進的鎖具。雖然這類產品安全性高,但因其生產成本高,安裝使用不方便,在一定程度上限制了這類產品的普及和推廣。本文介紹的是一種AT89C51單片機和AT24C01串行EEPROM的密碼鎖的硬件設計和軟件實現方法,這種電路設計具有防試探按鍵輸入、智能控制上鎖、開鎖、報警、修改密碼等多種功能。密碼長度可變,保密性強,靈活性高,外接各種執行機構,可廣泛用于車輛、大門、保險柜等各種需上鎖的場合。

        2.設計思路

        本設計中,智能密碼鎖工作時分為兩種工作狀態,分別是正常狀態和鎖定狀態。鎖定狀態時,輸出鎖定信號,供外部執行機構使用,實現上鎖功能;正常狀態時,鎖定信號消失,供外部執行機構使用,實現開鎖功能。初始密碼存儲在AT24C01中,開鎖時,將從面板上的微鍵盤輸入的數字序列與AT24C01中存儲的密碼相比較,如果位數及每一位上的數都相吻合,則進行開鎖動作,轉入正常狀態,否則仍將鎖定。

        為安全起見,密碼可以進行更改。在正常狀態時,程序允許用戶隨時進行密碼修改,密碼長度和數字可隨意進行組合。

        為防止程序“跑飛”等異常情況,本設計在軟件中使用了簡單的“程序陷阱”技術,根據實際需要,可酌情增加“看門狗”電路。無論是硬件復位還是軟件復位后,自動進入鎖定狀態,保證異常情況下的安全。

        鎖定狀態時,自動開啟報警功能。如遇非法情況(如車輛鎖定下仍萬一發生移動等,可將這些情況轉換為計數脈沖形式輸入),計數若干次后報警(計數值可通過程序調整)。另外,為防止非法用戶進行惡意多次試探開鎖,連續三次輸錯密碼,將進行報警。直至開鎖后,所有報警消失。

        3. AT89C51單片機和AT24C01串行EEPROM及其通訊

        AT89C51是一個低電壓,高性能CMOS 8位單片機,片內含4k bytes的可反復擦寫的Flash只讀程序存儲器和128 bytes的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統,內置8位中央處理器和Flash存儲單元的AT89C51為智能密碼鎖提供了高性價比的解決方案。

        AT89C51是一個低功耗高性能單片機,40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內含2個外中斷口,2個16位可編程定時計數器,2個全雙工串行通信口。AT89C51具有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應不同產品的需求。下圖是PDIP封裝的AT89C51引腳圖:

        AT24C01是美國ATMEL公司的低功耗CMOS串行EEPROM,它內含1288位存儲空間,具有工作電壓寬(2.5~5.5V)、擦寫次數多(大于10000次)、寫入速度快(小于10ms)等特點。AT24C01具有PDIP、MSOP/TSSOP及SOIC等三種封裝形式,以適應不同產品的需求。下圖是PDIP封裝的AT24C01引腳圖:

        AT24C01與外部通訊采用I2C總線。I2C(Inter-Integrated Circuit)總線是一種由PHILIPS公司開發的兩線式串行總線,用于連接微控制器及其外圍設備。I2C總線最主要的優點是其簡單性和有效性。由于接口直接在組件之上,因此I2C總線占用的空間非常小,減少了電路板的空間和芯片管腳的數量,降低了互聯成本。I2C總線的另一個優點是,它支持多主控(multimastering),其中任何能夠進行發送和接收的設備都可以成為主控。一個主控能夠控制信號的傳輸和時鐘頻率。當然,在任何時間點上只能有一個主控。

        I2C總線是由數據線SDA和時鐘SCL構成的串行總線,可發送和接收數據。在CPU與被控IC之間、IC與IC之間進行雙向傳送,最高傳送速率100kbps。總線必須由主器件(通常為微控制器)控制,主器件產生串行時鐘(SCL)控制總線的傳輸方向,并產生起始和停止條件。SDA線上的數據狀態僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA狀態的改變被用來表示起始和停止條件。時序如下圖:

        接收數據的IC在接收到8bit數據后,應向發送數據的IC發出特定的低電平脈沖(應答信號),表示已收到數據。時序如下圖:

        在開始條件之后,必須是器件的控制字節,其中高四位為器件類型識別符(不同的芯片類型有不同的定義,EEPROM一般應為1010),接著三位為片選,最后一位為讀寫位,當為1時為讀操作,為0時為寫操作。控制字節如下圖所示:

        AT24C01寫操作分為字節寫和頁面寫兩種操作,讀操作分為當前地址讀、隨機讀和順序讀等三種操作,每種讀寫操作都有規定的時序,可參考AT24C01用戶手冊。本系統采用字節寫和隨機讀兩種操作方式,具體時序由軟件模擬。

        4.硬件連接

        AT89C51內含4k bytes程序存儲器和128 bytes數據存儲器,可以滿足設計需要,因此外部無需擴展,節省了很多I/O口線。

        系統輸入部分主要有:“設置密碼”鍵、“上鎖”鍵、“開鎖”鍵、34微鍵盤陣列(數字0~9以及“確定”和“取消”鍵)、異常情況下的計數脈沖輸入等。系統輸出部分主要是鎖定信號的輸出和報警信號的輸出。

        AT89C51與AT24C01的連接,通過RxD充當時鐘信號線SCL,TxD充當數據線SDA來實現,I2C總線的時序由軟件模擬。由于AT24C01是I2C總線上與CPU相連的唯一的一個芯片,因此可將AT24C01的地址置為000,即將A0、A1、A2接地。

        具體硬件連接圖如下:

        5.軟件實現

        程序復位后,先將AT24C01中保存的密碼取出,放入RAM緩沖區1中暫存,將定時器、堆棧等進行初始化,為報警系統作好準備,將RAM緩沖區2中的密碼初值設置為和RAM緩沖區1中的密碼不同,保證程序復位后比較密碼不會相同,這時,進入RAM緩沖區1和RAM緩沖區2的密碼比較程序,只有當兩者位數相同而且每一位數字都相同時,執行開鎖動作、輸出開鎖信號、進入正常狀態,否則執行上鎖動作、輸出上鎖信號、進入鎖定狀態。在正常狀態時,可以進行重新設置密碼、上鎖等操作,重新設置密碼時,首先驗證原始密碼,如相同則可進行密碼更改,然后將新密碼保存至AT24C01中,同時更新RAM緩沖區1。在鎖定狀態時,系統啟動報警功能,同時等待用戶開鎖,如發現用戶按下“開鎖”鍵,則讀入從微鍵盤輸入的數字序列,用其更新RAM緩沖區2,轉入密碼比較程序,如密碼相同則開鎖,否則繼續等待用戶開鎖,為防止非法用戶惡意多次試探密碼,可在程序中設置當連續三次輸入錯誤密碼后自動報警,直至開鎖后解除。

        報警系統由AT89C51內置的定時/計數器實現,鎖定狀態時開啟,正常狀態時關閉。如遇異常情況,如車輛鎖定下仍萬一發生移動、門鎖定下仍被強行打開等,可將這些情況轉換為計數脈沖形式輸入,計數若干次后報警,計數值可通過程序調整。

        按鍵和微鍵盤的“去抖”,為簡單起見,采用軟件延時的方法。為防止程序“跑飛”等異常情況,在軟件中使用簡單的“程序陷阱”技術,即在多余程序空間內設置一些長轉移指令LJMP 0000H,進行程序復位。

        程序流程圖如下:

        6.總結

        本文作者創新點:采用串行EEPROM保存密碼,用單片機實現密碼鎖的控制功能,克服了機械密碼鎖密碼量少,安全性差的缺點,具有更高的安全性、可靠性。本設計中,輸入采用34微鍵盤陣列,根據需要,可將其改為與電子表更改時間類似的裝置。另外,可以與PC機聯網,實施遠距離監控、報警等功能,可廣泛用于樓宇智能系統中。

        參考文獻

        [1]劉文濤,MCS-51單片機培訓教程,電子工業出版社,2005.8

        [2]鄔寬明,單片機外圍器件實用手冊,北京航空航天大學出版社,1998.12

        [3]趙曉玲,單片機在指紋保險柜中的應用[J],微計算機信息,2006.7-2:134-136



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 盐边县| 崇礼县| 电白县| 宣威市| 桐柏县| 镶黄旗| 修文县| 鄂托克前旗| 武山县| 亳州市| 北碚区| 大足县| 自治县| 昆明市| 宣汉县| 汕头市| 珠海市| 潮州市| 乐陵市| 团风县| 军事| 金堂县| 卫辉市| 房山区| 余庆县| 安仁县| 灌南县| 三都| 大英县| 长兴县| 沾益县| 汉沽区| 兴国县| 会理县| 连江县| 鹤峰县| 平塘县| 龙陵县| 乐山市| 丰都县| 海南省|