張鵬騫
(河北省兒童醫院,河北 石家莊 050031)
隨著人們安全意識的不斷提高,防盜問題引起人們的重視,傳統的機械鎖已經很難滿足人們的要求,智能鎖應運而生,它們有著不同的特點,但是也有著智能鎖共同的缺點。例如,手部問題會影響智能指紋鎖識別、應用場景有限以及卡片鑰匙成本高等。這些問題得不到解決,智能鎖在一定程度上很難得到普及應用和推廣。而電子密碼鎖由于保密性高、使用靈活性好、安全系數高,受到了廣大用戶的認可[1]。
AT89C51作為本系統的微控制器,是整個電路的核心部分,晶振頻率采用6 MHz,使單片機的運行速度不至于太快[2]。系統由鍵盤、發光二極管(Light Emitting Diode,LED)顯示電路、開鎖驅動電路及報警電路組成。開始運行工作時,操作員或者用戶可以從鍵盤敲入6位密碼,待按下確認功能鍵后,單片機會將輸入的密碼同原始設定的6位密碼進行判斷校驗。若鍵盤敲入的密碼同設定的6位密碼一致,則發出開鎖指示信號,綠燈閃亮,開門;若密碼錯誤,就會有相應的紅燈亮起,這時需要重新輸入密碼。原程序設計輸入密碼的次數超過3次或者3次以內密碼都提示輸入錯誤,就會觸發報警指示信號。另外,電子密碼鎖成功打開后,程序還設定了對密碼的修改功能,以便于重新設置新密碼。
本設計從系統功能擴展考慮,保留串行通信口,采用單片機外接擴展輸入輸出(Input/Output,I/O)接口芯片8155H實現6位LED顯示和矩陣鍵盤接口電路。8155H的輸入輸出口地址是FF20~F23H,其中PA口是控制鍵盤列線掃描的輸出口,也是6位共陰極顯示器的位掃描口,顯示器的段碼(字碼)口為PB口,鍵盤行線狀態的輸入口為PC口[3]。
因為按鍵比較多,所以在設計上采用了行列式的鍵盤。每1條橫線(行線)與豎線(列線)的交叉點都不是相通的,而是通過1個按鈕連接起來,利用這種行列式矩陣結構只需要M線和N線就可以組成一個鍵盤,上面有M×N個按鈕。此外,顯示電路采用動態方式,將所有位的段碼線對應的段并聯在一起,由1個8位I/O口控制,形成多路復用的段碼線,而每個共陰極分別由對應的I/O線控制,形成各自的分時選通。
AT24C02是電可擦除存儲芯片,限制的最低電壓為2.5 V,限制約束的正常工作電流為1 mA,靜態電流為10 μA(5.5 V)。芯片內的資料可儲存約40年之久,同時以8腳雙列直插式(Dual In-line Package,DIP)的形式封裝,以便使用[4]。其電路如圖1所示。

圖1 AT24C02掉電存儲模塊設計
圖1中的R1、R2為上拉電阻,其設計能夠減少AT24C02芯片的靜態功耗。由于AT24C02芯片的數據線和地址線是復用的,因此采用串口的方式傳輸數據,只用2根串行時鐘線(Serial Clock,SCL)和串行數據線(Serial Data,SDA)與單片機傳送數據,其中SCL用于輸入輸出數據的同步,在上升沿時串行寫入數據,在下降沿時串行讀取數據;SDA用于串行數據的輸入輸出。
一般微處理器/微控制器稱為主器件,產生串行時鐘和起始停止信號。帶電可擦除可編程ROM(Electrically Erasable Programmable Read Only Memory,EEPROM)工作在從機方式,稱為從器件[5]。無論是主器件還是從器件,都可以充當發送器或接收器的角色,由主器件來控制數據的傳輸。
主器件發送啟動信號后,再發送1個8位含有芯片地址的控制字對從器件進行片選[6]。這8位片選地址字由3部分組成:第1部分是8位控制字的高4位(D7~D4),固定1010是集成電路總線(Inter-Integrated Circuit,IIC)的特征編碼;第 2部分是最低位D0,即讀寫選擇位R/W,決定微處理器對EEPROM進行讀寫操作,R/W—=1表示讀操作,R/W—=0表示寫操作;第3部分即A0A1A2,本設計設A0A1A2為000。
AT24CXX EEPROM存儲器采用二線制傳輸,遵循IIC總線協議[7]。SCL和SDA的時鐘關系與IIC協議中規定的相同。加在SDA的數據只有在串行時鐘SCL處于低電平時鐘周期時才會發生變化,如圖2所示。

圖2 AT24CXX SDA和SCL時鐘關系
當SCL處于高電平時,SDA由高電平向低電平轉變時表示啟動信號,由低電平向高電平轉變時表示停止信號,啟動與停止信號如圖3所示。

圖3 AT24CXX啟動和停止信號
應答信號由接收數據的存儲器發出,每個正在接收數據的EEPROM收到1B數據后,需發出1個“0”應答信號ACK,單片機接收完存儲器的數據后也需發出1個應答信號。ACK信號在主器件SCL時鐘線的第9個周期出現。
在應答時鐘到達第9個周期時,SDA線變為低電平,表示1個8位數據已經收到。若主器件沒有發送1個應答信號,則器件將停止數據的發送,且等待1個停止信號。應答信號如圖4所示。

圖4 應答信號
采用順序讀操作來得到用戶設定的密碼。順序讀存在2種地址讀的情況,一是立即地址讀,二是隨機地址讀,無論采用哪種地址讀的方式都可操作啟動。隨機地址讀通過1個“偽寫入”操作形式對要尋址的EEPROM存儲單元進行定位,然后執行讀出。要想達到主器件對存儲器無限制、無順序的字節進行讀操作,可以采取隨機地址讀的方式,器件和信號流即主器件首先發送起始信號、從器件地址、讀取字節數據的地址,執行1個“偽寫入”操作。在從器件應答之后,主器件重新發送起始信號、從器件地址,此時。從器件發送1個應答信號之后,輸出所需讀取的1個8位數據,主器件發出應答信號,告訴從器件需發送更多的數據,與每個應答信號相對應。當確認器件為主器件時,發出的信號收到至確認是停止信號時,運行結束。從器件輸出的數據按順序從N到N+I,地址計數器的內容相應相加,計數器也會產生翻轉繼續輸出數據。
采用頁面寫操作將修改后的密碼保存到EEPROM中。主器件發出啟動信號和從器件地址給從器件,從器件收到信號確認為應答信號后,主器件再選擇從某個指定的器件中以字節地址的形式傳輸發送信號,從器件將再發送另一個相應的應答信號,主器件收到信號后向被尋址的存儲單元發送數據,傳送1B后,主器件并不產生停止信號,而是發送15個額外字節。每發送1個數據后,從器件發送1個應答位,并將地址低位自動加1,高位不變。
當存儲器的WP引腳接高電平時,將存儲器區全部保護起來,可以避免用戶操作不當對存儲器數據的改寫,將存儲器變為只讀狀態。
本系統密碼輸入錯誤超過3次以上將啟動延時報警模塊。由單片機的P1.4端控制壓電蜂鳴器的發音。P1.4端輸出高電平時,晶體管導通,壓電蜂鳴器兩端獲得約+5 V電壓而鳴叫;當P1.4端輸出低電平時,晶體管截止,蜂鳴器停止發音。三極管驅動的蜂鳴器報警電路如圖5所示。

圖5 三極管驅動的蜂鳴器報警電路
指示燈的作用是判別效驗提示密碼輸入的正誤。設計時使用發光二極管作為指示燈,當密碼輸入錯誤時,單片機P3.0端口通過三極管放大發出信號控制紅燈亮,提示再次輸入密碼;當密碼輸入正確時,單片機P3.1端口通過三極管放大發出信號控制綠燈亮起,同時開鎖。
電子密碼鎖軟件采用51系列單片機,使用匯編語言編程實現密碼識別、智能報警等程序設計。各功能的實現采用模塊化程序設計,主要程序是對中斷向量和各子程序進行初始化、設置管理與調用。
鍵盤采用編程掃描的工作方式,主要是判別鍵盤有無鍵閉合,防止鍵盤的鍵發生機械抖動或者檢驗鍵號有無閉合的情況,這樣中央處理器(Central Processing Unit,CPU)就只處理1次按鍵的閉合。
在89C51內部隨機存取存儲器(Random Access Memory,RAM)中設置了6個40~45 h的顯示緩沖單元,顯示器分別存儲顯示6位數據。其中總有1位高電平在8155H的PA口,經過74LS04反相后,即顯示器的6個顯示位元中只有一位共陰極為低電平,反之則為其他電平。8155H的PB口輸出對應位元的顯示數據段碼,使某一位元顯示1個字碼,其他位元則不顯示。依次改變PA口輸出為高位,PB口輸出對應的段碼,顯示器的6位將顯示數據所確定的字符動態地在緩沖區顯示。
為了防止系統掉電時數據存儲器RAM中的數據丟失,比較密碼時需要讀串行存儲程序,再將芯片中儲存的數據讀取到RAM中,然后和輸入的密碼相比較。而修改密碼時,需要把新輸入的密碼存儲在AT24C02芯片中。
根據功能要求和系統設計共包含了硬件電路與軟件程序2個部分,其中采納的AT24C02芯片用于存儲和密碼的掉電保護策略,軟件成分較高,而在實際設計中也可以采用諸如掉電保護電路等硬件電路。該電子密碼鎖的系統電路設計使用簡便、消耗小、運行平穩,同時具備較好的網絡擴展能力及安全防范技術措施。