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