基于A(yíng)T89C51的密碼電源開(kāi)關(guān)設計
隨著(zhù)現代技術(shù)的發(fā)展,電與我們生活的關(guān)系越來(lái)越密切,從工業(yè)生產(chǎn)到居家生活的每一個(gè)細節都離不開(kāi)電。但令人頭疼的是卻有許多人在偷電漏電,盜用別人的電源使用,給別人造成了經(jīng)濟上的損失?,F在,在同一間辦公室辦公的情況越來(lái)越普遍了,為了使非法用戶(hù)在不知道密碼的情況下,無(wú)法使用電源,筆者在這里設計了一個(gè)密碼電源開(kāi)關(guān),它是基于微控制芯片A T89C51 的一項新的具有實(shí)用價(jià)值的系統。這個(gè)系統結構簡(jiǎn)單,保密性好,可以同時(shí)控制多路電源,具有輸入錯誤密碼告警,輸入正確密碼開(kāi)、關(guān)電源,用電器關(guān)電后自動(dòng)啟動(dòng)保護延時(shí)等功能。
本文引用地址:http://dyxdggzs.com/article/179086.htm工作原理及硬件結構
利用89C51 設計的密碼電源開(kāi)關(guān)原理如圖1所示,系統以89C51 為核心,89C51 是Intel 公司的一款集CPU 、RAM、ROM、I/ O 接口、定時(shí)器/ 計數器、中斷系統為一體的單片機, 片上帶有4 K 的ROM 和128 ×8 位的RAM。系統中按鍵采用查詢(xún)方法與單片機連接,可以實(shí)現輸入正確密碼開(kāi)電源,輸入正確密碼關(guān)電源,修改密碼,修改延時(shí)等功能。8 路繼電器全部連接在P0口,通過(guò)P0口的電平變化來(lái)控制繼電器,進(jìn)而控制電源的開(kāi)關(guān),為了節省端口,L ED 顯示連在普通口,因為要在關(guān)電后保證密碼不丟失,利用I2 C 技術(shù)在單片機外部擴展了一個(gè)E2 PROM(A T24C02) ,來(lái)存儲正確的密碼。
單片機最小系統
如圖2 所示,89C51 的外部通過(guò)18 ,19 腳連接一個(gè)晶振和兩個(gè)電容,構成振蕩電路,可以為單片機提供時(shí)鐘頻率。9 腳通過(guò)一個(gè)10kΩ 電阻和一個(gè)10μF 的電容構成了一個(gè)簡(jiǎn)單的復位電路, EA 接高電平,AL E、PSEN 信號不用,這樣就構成了一個(gè)單片機最小系統。這個(gè)最小系統未設復位鍵,系統加電時(shí)自動(dòng)復位。
繼電器電路
本系統中要實(shí)現用弱電去控制強電,所以我們使用了繼電器,用以對電源通斷的控制,如圖3 所示,繼電器通過(guò)一個(gè)三極管直接連接到P0 口,當P0口為高電平時(shí),繼電器導通,接通外部電源,反之,斷開(kāi)外部電源。
外部存儲器的擴展
為了把修改后的正確密碼保存起來(lái),不至于在斷電后密碼丟失,所以在設計中通過(guò)I2 C 技術(shù)擴展了一個(gè)外部存儲器。I2 C 總線(xiàn)是一種串行數據總線(xiàn),只有二根信號線(xiàn),一根是雙向的數據線(xiàn)SDA ,另一根是時(shí)鐘線(xiàn)SCL 。如圖4 所示,因為89C51 沒(méi)有直接的I2 C 接口,所以使用模擬I2 C 技術(shù),SDA 連接在P2. 3 口,SCL 連接在P2. 2 口,用軟件程序控制數據的輸入輸出。
在I2 C 總線(xiàn)上傳送的一個(gè)數據字節由8 位組成??偩€(xiàn)對每次傳送的字節數沒(méi)有限制,但每個(gè)字節后必須跟一位應答位。數據傳送首先傳送最高位(MSB) ,首先由主機發(fā)出啟動(dòng)信號“S”(SDA 在SCL高電平期間由高電平跳變?yōu)榈碗娖? ,然后由主機發(fā)送一個(gè)字節的數據。啟動(dòng)信號后的第一個(gè)字節數據具有特殊含義:高7 位是從機的地址,第8 位是傳送方向位,0 表示主機發(fā)送數據(寫(xiě)) ,1 表示主機接收數據(讀) 。被尋址到的從機設備按傳送方向位設置為對應工作方式。標準I2 C 總線(xiàn)的設備都有一個(gè)七位地址,所有連接在I2 C 總線(xiàn)上的設備都接收啟動(dòng)信號后的第一個(gè)字節,并將接收到的地址與自己的地址進(jìn)行比較,如果地址相符則為主機要尋訪(fǎng)的從機,應在第9 位應答時(shí)鐘脈沖時(shí)向SDA 線(xiàn)送出低電平作為應答。除了第一字節是通用呼叫地址或十位從機地址之外,第二字節開(kāi)始即數據字節。數據傳送完畢,由主機發(fā)出停止信號“P”( SDA 在SCL 高電平期間由低電平跳變?yōu)楦唠娖? 。A T24CX 系列串行E2 PROM 具有I2 C 總線(xiàn)接口功能,功耗小,寬電源電壓(根據不同型號2. 5V~6. 0V) ,工作電流約為3mA ,靜態(tài)電流隨電源電壓不同為30μA~110μA ,所以在本系統中使用A T24C02 作為外部存儲器。
其他硬件電路
本系統中的使用到的按鍵較少,只有4 個(gè),分別是通道選擇,功能切換,數字切換/ 修改延時(shí),確認/修改密碼。為了簡(jiǎn)化電路結構,節省成本,在系統中未使用掃描鍵盤(pán)的連接思路,而是采用了圖5 的連接方法。
按鍵一端接P3 口,一端接地,當有按鍵按下時(shí),相應口的電平就會(huì )被拉低。然后用軟件程序就可以檢查出是哪個(gè)鍵按下,隨后執行相應的功能。因為P3 口全做了I/ O 口使用,所以在連接硬件的時(shí)候,每一個(gè)口上都接了一個(gè)上拉電阻。L ED 顯示部分通過(guò)模擬串行口來(lái)進(jìn)行顯示,時(shí)鐘線(xiàn)和數據線(xiàn)連接到單片機的普通口。電源電路使用典型的電源電路,一個(gè)整流橋加一個(gè)穩壓管,就可以構成一個(gè)電源電路。為了增加系統的可操作性,特加了三個(gè)L ED 指示燈,分別是修改延時(shí)指示燈、修改密碼指示燈、告警燈,都直接連接在P1 口,用程序控制。
控制軟件設計
結合設計的要求和電路要實(shí)現的功能,系統的主要程序流程如下:
主程序
這個(gè)程序采用了數枝狀的結構,這樣比較適合于此硬件電路,也容易實(shí)現系統的功能。在主程序中,反復查詢(xún)與按鍵相連的端口,一但發(fā)現有按鍵按下,迅速判斷出來(lái)是哪個(gè)按鍵按下,然后調用相應的子程序,并執行功能,待執行完后,又返回主程序等待。
輸入數字子程序
輸入數字鍵可以實(shí)現兩個(gè)功能,一個(gè)是單純的輸入數字,從0 到9 循環(huán),每修改一次,數字都要保存到顯示緩沖區中,以便打開(kāi)電源,關(guān)閉電源,修改密碼時(shí)使用。輸入數字鍵一般是和確認鍵配合使用的,因為在這個(gè)系統中采用的是串行顯示,所以每次只能顯示一位,共有四位數字,從低位到高位顯示的時(shí)候,當每一位上的數字選好后,都要確認一下,才能移到下一位顯示。如圖7 所示在每一次輸入完數字以后,都要查詢(xún)一下是否有修改延時(shí)的要求,如果有,那么就要執行修改延時(shí)的功能,在本系統中,最大延時(shí)取了5 分鐘,這個(gè)值到實(shí)際中是可以修該的。修改后的延時(shí)值存在一個(gè)特定的存儲區中,以備觸發(fā)定時(shí)器時(shí)使用。本系統中采用延時(shí)的功能主要是為了保護用電器,例如冰箱之類(lèi)的大功率用電器,它要求在每次關(guān)電和開(kāi)電之間應該有一定的延時(shí),以保護用電器,延長(cháng)壽命。而這個(gè)設計就恰恰滿(mǎn)足了這種要求,它可以在你關(guān)閉電源時(shí)自動(dòng)啟動(dòng)定時(shí)器延時(shí),如果定時(shí)時(shí)間未結束,即使密碼輸入正確,也無(wú)法開(kāi)機。
選路子程序
選路子程序比較簡(jiǎn)單,通過(guò)反復循環(huán)來(lái)實(shí)現路數的選擇,選好的路數存到特定的存儲單元中,作為判斷條件供其他程序使用。
確認子程序
確認程序主要實(shí)現對輸入數字的確認及判斷系統是否有延時(shí)要求。
修改延時(shí)/ 修改密碼子程序
程序主要作用就是實(shí)現修改密碼和修改延時(shí),可以通過(guò)外部按鍵來(lái)切換,在外部各有一個(gè)指示燈,來(lái)顯示現在處于什么狀態(tài)。修改延時(shí)時(shí)只要修改延時(shí)燈點(diǎn)亮,就可以通過(guò)輸入數字鍵來(lái)修改延時(shí)。當修改密碼指示燈亮時(shí),就可以修改密碼。修改好的密碼通過(guò)特定的端口送到外部存儲器AT24C02 保存起來(lái)。
比較子程序
比較子程序主要實(shí)現對輸入的密碼和原始密碼進(jìn)行比較的作用,可以實(shí)現對繼電器的開(kāi)與關(guān)的控制及控制延時(shí)的打開(kāi)的控制。延時(shí)的關(guān)閉是在定時(shí)器里完成的,在這里就不再過(guò)多的闡述了。
部分程序如下:
MAIN :
MOV SP , # 60H
MOV TMOD , # 01H ;設置定時(shí)器T0
MOV TH0 , # 3CH
MOV TL0 , # 0B0H ;100 毫秒初值
SETB EA
MOV DINGSHI_CZ , # 01H ;存計數次數
MOV XGMM_PASS , # 00H ;修改密碼允許標志清0
MOV 0CH , # 0C8H ;循環(huán)200 次
MOV 0DH , # 0C8H ;循環(huán)200 次
MOV 0EH , # 0C8H ;循環(huán)200 次
; ....................
MOV 4AH , # 00H
MOV 4BH , # 00H
MOV 4CH , # 00H
MOV 4DH , # 00H ;清顯示屏的代碼
LCALL CL EAR ;清顯示器
MOV A , # 00H
MOV P0 ,A
MOV R4 , # 08H ;控制路數的次數
MOV R3 , # 00H ;控制路數,默認第1 路
MOV R0 , # 30H ;密碼緩存首地址
MOV R5 , # 00H
MOV R7 , # 05H ;控制定時(shí)次數,最大5 分鐘
MOV A , # 01H
MOV 38H ,A
MOV OPEN_SHU T1 , # 00H ;控制各路的開(kāi)與關(guān)
MOV OPEN_SHU T2 , # 00H
MOV OPEN_SHU T3 , # 00H
MOV OPEN_SHU T4 , # 00H
MOV OPEN_SHU T5 , # 00H
MOV OPEN_SHU T6 , # 00H
MOV OPEN_SHU T7 , # 00H
MOV OPEN_SHU T8 , # 00H
MOV YANSHI , # 00H ;關(guān)延時(shí)標志位
; ........查詢(xún)是否有鍵按下........
START :
SETB P3. 2
SETB P3. 3
SETB P3. 4
SETB P3. 5
LCALL DL10_MS
MOV A ,P3
JNB ACC. 2 ,FUN0
JNB ACC. 3 ,FUN1
JNB ACC. 4 ,FUN2
JNB ACC. 5 ,FUN3
LCALL DL10_MS
LJMP START ;查詢(xún)是否有鍵按下
FUN0 : LJMP XUANLU ;調用選路子程序
FUN1 : LJMP INPU T_SZ ;調用輸入數字子程序
FUN2 : LJMP YES_MOVE ;調用確認子程序
FUN3 : LJMP GNQH ;調用功能切換子程序
結束語(yǔ)
本文較為詳細地介紹了以單片機為核心的密碼電源開(kāi)關(guān)的設計,使51 系列單片機充分應用在了控制系統中。該系統實(shí)現簡(jiǎn)單,結構靈活(按鍵部分也可以采用中斷的連接方法) ,開(kāi)發(fā)經(jīng)濟,具有一定的市場(chǎng)前景。
評論