基于單片機(jī)的簡(jiǎn)易紅外遙控密碼鎖設(shè)計(jì)與實(shí)現(xiàn)
0引言
隨著科學(xué)技術(shù)的進(jìn)步和社會(huì)經(jīng)濟(jì)的發(fā)展,電子密碼鎖取代傳統(tǒng)的機(jī)械鎖已成為一種必然的趨勢(shì)。以往基于單片機(jī)的密碼鎖系統(tǒng),直接將編好的密碼程序存儲(chǔ)在片內(nèi)EPROM中,但不易實(shí)現(xiàn)密碼的修改;如要完成修改密碼功能,多采用片外串行E2PROM實(shí)現(xiàn)。本文研究并設(shè)計(jì)的一種基于單片機(jī)的紅外遙控電子密碼鎖,不但具有普通密碼鎖智能控制上鎖、*、報(bào)警等特點(diǎn),而且在不擴(kuò)展E2PROM的情況下,可以實(shí)現(xiàn)8位密碼任意修改的功能,節(jié)省了硬件資源,減小了系統(tǒng)體積,這是本設(shè)計(jì)的一個(gè)創(chuàng)新點(diǎn)。另外還增加了遙控*的特點(diǎn)。所以該系統(tǒng)不但成本低、保密性強(qiáng),更適用于那些正常人體不宜接近的特殊場(chǎng)合,比如高輻射區(qū)、高傳染區(qū)等。
1 系統(tǒng)硬件設(shè)計(jì)方案
1.1 系統(tǒng)總體設(shè)計(jì)
系統(tǒng)主要由紅外發(fā)射模塊和本機(jī)處理接收模塊兩部分構(gòu)成,系統(tǒng)總體設(shè)計(jì)框圖如圖1所示。發(fā)射模塊和本機(jī)處理接收模塊的核心分別采用AT89C2051和AT89S52單片機(jī)。紅外信號(hào)的收發(fā)通過(guò)串口進(jìn)行通信,兩部分的串口工作方式及通信波特率的設(shè)置相同。
AT89C2051單片機(jī)是AT89C51的一種精簡(jiǎn)版本,只有20個(gè)引腳,體積小;具有2.7~6 V的寬電壓工作范圍;具備低功耗空閑和掉電模式。該單片機(jī)滿(mǎn)足本系統(tǒng)低電壓供電、低功耗、方便隨身攜帶的要求。
在本機(jī)處理接收模塊中,采用了AT89S52單片機(jī),該單片機(jī)有3個(gè)定時(shí)器。設(shè)置密碼和按鍵*時(shí),均設(shè)計(jì)了按鍵間隔超過(guò)3s自動(dòng)復(fù)位的功能,分別采用定時(shí)器T0和T1定時(shí)實(shí)現(xiàn);定時(shí)器T2設(shè)置串口通信波特率。
1.2 紅外發(fā)射模塊的設(shè)計(jì)
紅外發(fā)射模塊僅僅是一手持遙控器,由AT89C2051單片機(jī)及鍵盤(pán)電路、按鍵K及紅外發(fā)光二極管組成。發(fā)射電路原理圖如圖2所示。
發(fā)射模塊設(shè)置的密碼必須與本機(jī)接收模塊相同(設(shè)置密碼方法見(jiàn)2.2.1節(jié)),所設(shè)密碼保存在RAM存儲(chǔ)器的31H~38H單元。在待機(jī)狀態(tài)下,系統(tǒng)工作在空閑方式,當(dāng)按鍵K按下時(shí),系統(tǒng)上電工作,依次發(fā)送密碼信號(hào)。這樣做的優(yōu)點(diǎn)是,密碼不但能跟隨主機(jī)任意改動(dòng),而且遙控*時(shí),僅按一鍵就可完成*,方便了用戶(hù)。
1.3 本機(jī)處理接收電路的設(shè)計(jì)
本機(jī)處理接收電路的控制核心是AT89S52單片機(jī)。外接鍵盤(pán)電路、紅外接收電路、*電路、報(bào)警電路和按鍵指示電路等,電路原理圖如圖3所示。
1.3.1 紅外接收電路的設(shè)計(jì)
紅外接收電路中使用一體化紅外接收頭TLl838接收紅外信號(hào)。TLl838集紅外接收和放大于一體,不需任何外接元件,就能完成從紅外接收到輸出與TTL電平兼容的所有工作,而體積和普通的塑封三極管大小一樣。TL1838的輸出波形如圖4所示。當(dāng)接收到頻帶內(nèi)的紅外信號(hào)時(shí),TLl838會(huì)輸出低電平,否則數(shù)據(jù)高電平,從而將“時(shí)斷時(shí)續(xù)”的紅外信號(hào)解調(diào)成原來(lái)的連續(xù)方波信號(hào)。
1.3.2 報(bào)警電路的設(shè)計(jì)
報(bào)警電路采用了蜂鳴器發(fā)聲模擬報(bào)警,蜂鳴器接在CPU的引腳P2.1上,通過(guò)NPN型三極管做電流放大,通過(guò)單片機(jī)控制蜂鳴器的頻率及蜂鳴時(shí)間。當(dāng)輸入錯(cuò)誤的密碼進(jìn)行*時(shí),由P2.1口輸出高電平使得NPN型三極管9014導(dǎo)通,蜂鳴器兩端加電,由蜂鳴器發(fā)出3 s的報(bào)警聲,當(dāng)連續(xù)三次出現(xiàn)密碼錯(cuò)誤時(shí),系統(tǒng)將長(zhǎng)時(shí)間報(bào)警,有效起到了防盜作用。
1.3.3 電源電路的設(shè)計(jì)
電源部分使用LM7805芯片進(jìn)行穩(wěn)壓后提供單片機(jī)5 V的電壓,其電路如圖5所示。主要采用家用交流電,同時(shí)采用9 V電池作為備用電源。這樣做的優(yōu)點(diǎn)是,即使斷電也不至于無(wú)法*。
1.3. 4 其他外圍電路的設(shè)計(jì)
由于AT89S52單片機(jī)有4個(gè)并行輸入輸出口,硬件資源比較充足,鍵盤(pán)電路采用了相對(duì)簡(jiǎn)單的獨(dú)立式按鍵;電路中用一繼電器控制一綠色發(fā)光二極管代替具體的鎖,當(dāng)密碼正確時(shí),*5 s,然后自動(dòng)上鎖;P2.O口接一紅色發(fā)光二極管,用其亮與滅來(lái)提醒用戶(hù)按鍵是否按下。這樣既巧妙地提醒了用戶(hù)又有效地保護(hù)了密碼。
2 系統(tǒng)軟件設(shè)計(jì)及實(shí)現(xiàn)
軟件部分的設(shè)計(jì)基于匯編語(yǔ)言,采用模塊化設(shè)計(jì)思想,以主程序?yàn)楹诵脑O(shè)置了多個(gè)功能模塊子程序。主程序主要起到一個(gè)導(dǎo)向和決策功能,決定什么時(shí)候系統(tǒng)該做什么,系統(tǒng)的各種功能主要是通過(guò)調(diào)用具體的子程序來(lái)實(shí)現(xiàn)。
2.1 紅外發(fā)射模塊程序的設(shè)計(jì)
發(fā)射模塊的編碼與調(diào)制工作是由軟件編程實(shí)現(xiàn)的。當(dāng)按鍵K按下時(shí),密碼信號(hào)依次送往數(shù)據(jù)緩沖器SBUF,然后利用“0”電平調(diào)制、“1”電平不調(diào)制的方法,將二進(jìn)制信號(hào)調(diào)制成頻率為38.5 kHz的間斷脈沖串信號(hào),通過(guò)P3.O口輸出,驅(qū)動(dòng)紅外發(fā)光二極管,最后以波長(zhǎng)940 nm的紅外光發(fā)出紅外遙控信號(hào)。紅外發(fā)射模塊程序流程圖如圖6所示。
38.5 kHz已調(diào)波的實(shí)現(xiàn)是依據(jù)匯編語(yǔ)言具有嚴(yán)格的指令周期來(lái)實(shí)現(xiàn)的,低電平與高電平均持續(xù)13個(gè)機(jī)器周期,這里采用的時(shí)鐘晶振是12 MHz,所以產(chǎn)生的調(diào)制波的精確頻率為38.46 kHz。
2.2 本機(jī)接收處理模塊程序的設(shè)計(jì)
本機(jī)處理部分可以實(shí)現(xiàn)密碼設(shè)置和修改、本機(jī)按鍵*、按鍵提示、密碼錯(cuò)誤報(bào)警、超次提示、遙控*和按鍵之間超過(guò)3 s自動(dòng)復(fù)位等所有的功能。本機(jī)處理的主程序流程圖如圖7所示。
2.2.1 密碼設(shè)置子程序的設(shè)計(jì)
系統(tǒng)只有內(nèi)部上電復(fù)位的時(shí)候才能設(shè)置或者修改密碼。當(dāng)系統(tǒng)復(fù)位時(shí),即進(jìn)入了等待用戶(hù)按鍵設(shè)置新密碼狀態(tài),用戶(hù)輸入的8位密碼依次保存在RAM存儲(chǔ)單元的41H~48H單元。當(dāng)8位密碼設(shè)置完成后,蜂鳴器鳴響1 s提示密碼已成功設(shè)置。當(dāng)按鍵*時(shí),輸入的密碼依次和RAM存儲(chǔ)器中41H~48H單元的數(shù)相比較,只要有1位不相同,門(mén)鎖不但不能打開(kāi),而且還發(fā)出報(bào)警信號(hào)。
2.2.2 按鍵間隔超時(shí)的判斷及復(fù)位
前文提到了當(dāng)按鍵間隔超過(guò)3 s有自動(dòng)復(fù)位的功能,設(shè)置密碼和按鍵*時(shí)分別采用定時(shí)器T0和T1來(lái)實(shí)現(xiàn)。兩定時(shí)器均設(shè)為50 ms定時(shí)中斷,連續(xù)產(chǎn)生60次中斷的時(shí)間是3 s。當(dāng)確實(shí)有鍵按下并彈起時(shí),打開(kāi)相應(yīng)定時(shí)器中斷并允許其計(jì)數(shù)。假如在下一按鍵按下時(shí),發(fā)生定時(shí)中斷還不到60次,則定時(shí)器停止計(jì)數(shù)并重設(shè)計(jì)數(shù)初值及定時(shí)中斷次數(shù);如果在下一按鍵按下之前,定時(shí)器已發(fā)生60次中斷,表示3 s已到,則系統(tǒng)自動(dòng)進(jìn)行軟件復(fù)位。設(shè)置密碼時(shí)按鍵間隔超時(shí)的復(fù)位程序代碼如下:
以上程序當(dāng)執(zhí)行完RETI指令后,PC指針指向0000H,程序從地址0000H處開(kāi)始執(zhí)行,即實(shí)現(xiàn)了軟件復(fù)位。
當(dāng)鍵盤(pán)*時(shí),如果按鍵間隔超過(guò)3 s,這時(shí)的程序“復(fù)位”并不是從地址0000H處執(zhí)行,而是回到“密碼設(shè)置結(jié)束提示音”后的那一條指令處開(kāi)始執(zhí)行,利用單步執(zhí)行指令的方法得到了此條指令的地址:0FC00H。
3 結(jié)語(yǔ)
該設(shè)計(jì)的亮點(diǎn)在于沒(méi)有擴(kuò)展任何E2PROM的情況下,實(shí)現(xiàn)了任意修改密碼的功能,且采用軟件復(fù)位的方法取消無(wú)效按鍵。通過(guò)對(duì)本系統(tǒng)設(shè)置密碼、鍵盤(pán)*、紅外遙控*等各方面的情況進(jìn)