廣東 楊旭方
隨著科學(xué)技術(shù)的迅速發(fā)展和人們生活水平的不斷提高,人們的安全意識(shí)也越來越強(qiáng),傳統(tǒng)機(jī)械鑰匙不僅攜帶不方便、容易損壞,而且安全性能低,被撬事件屢見不鮮,機(jī)械鎖已不能滿足人們?nèi)粘I钚枰k娮用艽a鎖利用軟件加密、解密功能,從根本上克服了傳統(tǒng)機(jī)械鎖安全性能低的缺點(diǎn),不僅使用方便、成本低,而且不用攜帶鑰匙,壽命長,逐步成為現(xiàn)代家庭門鎖的首要選擇。
I2C總線 (Inter Integrate Circuit BUS)全稱為芯片間總線,它是由PHILIPS公司開發(fā)的兩線式串行總線,用于連接CPU及其外圍設(shè)備。I2C總線產(chǎn)生于上世紀(jì)80年代,最初為音頻和視頻設(shè)備開發(fā),現(xiàn)主要用在服務(wù)器管理中,其中包括單個(gè)組件狀態(tài)的通信。I2C總線利用兩根線實(shí)現(xiàn)全雙工同步數(shù)據(jù)傳送,具有連線少、可靠性高、成本低、不需要片選信號(hào)、支持熱插拔等優(yōu)點(diǎn)。
I2C總線支持主從和多主兩種工作方式。在主從方式中,系統(tǒng)只有一個(gè)處理器,從器件的地址由I2C總線委員會(huì)分配,引腳地址決定芯片引腳外接電平。在主從方式的I2C總線系統(tǒng)中只需考慮主方式的I2C總線操作,沒有總線的競爭等問題,系統(tǒng)相對簡單,成本也較低,因此,密碼鎖采用主從工作方式設(shè)計(jì)。
I2C總線傳送的數(shù)據(jù)每一個(gè)字節(jié)為8位,且高位在前,如圖一所示。首先由起始信號(hào)啟動(dòng)I2C總線,其后為尋址字節(jié),尋址字節(jié)由高7位地址和最低1位方向位組成,方向位表明主控器與被控器數(shù)據(jù)傳送方向,方向位為“0”時(shí),表明主控器對被控器進(jìn)行寫操作,為“1”時(shí),表明主控器對被控器進(jìn)行讀操作,其后的數(shù)據(jù)傳輸字節(jié)數(shù)是沒有限制的,每傳送一個(gè)字節(jié)后都必須跟隨一個(gè)應(yīng)答位或非應(yīng)答位,在全部數(shù)據(jù)傳送結(jié)束后主控制器發(fā)送終止信號(hào)。
圖一 I2C總線一次完整數(shù)據(jù)傳輸過程
密碼鎖硬件電路主要由AT89C51單片機(jī)、密碼正誤顯示、AT24C02掉電存儲(chǔ)、密碼設(shè)置與輸入、開鎖驅(qū)動(dòng)、報(bào)警以及電源等電路組成,如圖二所示。
圖二 密碼鎖硬件電路組成框圖
圖中,AT 89C51單片機(jī)是整個(gè)密碼鎖的控制中心,主要承擔(dān)密碼識(shí)別任務(wù),并根據(jù)識(shí)別結(jié)果開鎖或報(bào)警。AT24C02為E2PROM器件,既具有ROM掉電不丟失數(shù)據(jù)特點(diǎn),又具有RAM隨機(jī)讀寫特點(diǎn),從而實(shí)現(xiàn)掉電保護(hù)功能。
在標(biāo)準(zhǔn)I2C總線中,總線狀態(tài)監(jiān)測由硬件完成,用戶無須介入,但是具有I2C總線接口的MCS-51單片機(jī)畢竟不多,雖然AT89C51不帶I2C總線,但只要通過軟件模擬,即可達(dá)到I2C總線接口單片機(jī)功能。
在密碼鎖設(shè)計(jì)中,將AT 89C51的P3.4、P3.5分別作為時(shí)鐘線SCL和數(shù)據(jù)線SDA,分別與E2PROM器件AT24C02的時(shí)鐘線和數(shù)據(jù)線相連,根據(jù)I2C總線一次完整數(shù)據(jù)傳輸過程特點(diǎn),通過軟件模擬,調(diào)用啟動(dòng)(START)、停止(STOP)、發(fā)送應(yīng)答位(ACK)、發(fā)送非應(yīng)答位(NACK)、應(yīng)答位檢查(CACK)、發(fā)送一個(gè)字節(jié)數(shù)據(jù)(WRBYT)、接收一個(gè)字節(jié)數(shù)據(jù)(RDBYT)、發(fā)送 n個(gè)字節(jié)數(shù)據(jù)(WRNBYT)、接收 n個(gè)字節(jié)數(shù)據(jù)(RDNBYT)九個(gè)子程序,完成I2C總線數(shù)據(jù)傳輸過程。
密碼鎖主程序主要由單元地址定義、預(yù)置密碼、用戶密碼輸入、讀設(shè)置密碼、識(shí)別密碼、密碼正誤顯示等組成,如圖三所示。
密碼鎖首先要進(jìn)行初始化,主要用于定義I2C總線的數(shù)據(jù)線與時(shí)鐘總線、讀/寫控制字節(jié)存放單元、發(fā)送/接收數(shù)據(jù)緩沖區(qū)首址以及設(shè)置密碼與用戶密碼存放單元等。然后,系統(tǒng)調(diào)用預(yù)置密碼子程序和輸入用戶密碼子程序,并將兩個(gè)密碼進(jìn)行比較,若密碼一致,則驅(qū)動(dòng)開鎖電路實(shí)現(xiàn)開鎖,同時(shí)通過顯示器顯示密碼正確字符“Y”,否則,顯示密碼錯(cuò)誤字符“N”,并報(bào)警提示。
圖三 密碼鎖主程序流程圖
電子密碼鎖作為一種新型的鎖具,越來越受到人們的青睞。本文以AT89C51為主控芯片,結(jié)合AT24C02掉電存儲(chǔ)、密碼正誤顯示、密碼設(shè)置與輸入、開鎖驅(qū)動(dòng)等外圍電路,設(shè)計(jì)了一款多種功能電子密碼鎖,克服了傳統(tǒng)機(jī)械密碼鎖安全性能差、攜帶不方便的缺點(diǎn),具有較高的推廣價(jià)值。
[1]李建波.基于STC89C52單片機(jī)的電子密碼鎖.現(xiàn)代電子技術(shù),2008(23).
[2]鄭棣,徐迎春.基于單片機(jī)的電子密碼鎖設(shè)計(jì).福建電腦,2012(9).
[3]劉振海.一種基于單片機(jī)和串行EEPROM的智能密碼鎖.微計(jì)算機(jī)信息,2007(23).
[4]朱璇,唐曉茜,殷建軍.基于單片機(jī)的智能加密電子密碼鎖設(shè)計(jì).輕工機(jī)械,2009(8).