版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于單片機(jī)的紅外遙控電子密碼鎖引言隨著生活質(zhì)量的不斷提升,人們對于安全的關(guān)注也不斷加強(qiáng),尤其是有關(guān)財(cái)產(chǎn)安全和人生安全的事項(xiàng)。鎖一向都是給我們把守護(hù)們的鐵門神,人們對它有著很高的標(biāo)準(zhǔn),在防盜的功能上要安全,使用操作上也要簡單,這也成為鎖具生產(chǎn)人員長期以來研發(fā)的重心?,F(xiàn)如今人們已經(jīng)從電氣時(shí)代走向信息時(shí)代了,電子信息技術(shù)和計(jì)算機(jī)技術(shù)正在蓬勃地發(fā)展中,電子產(chǎn)品層出不窮,總類繁多,電子密碼鎖就隨著潮流應(yīng)運(yùn)而生。由于單片機(jī)具有體積小、重量輕、價(jià)格便宜、耗能低、控制功能強(qiáng)及處理速度快等特點(diǎn),因而廣泛地應(yīng)用于各種電子密碼鎖。本設(shè)計(jì)主要利用單片機(jī)以及其他不同的電子元器件通過數(shù)據(jù)采集和控制算法,設(shè)計(jì)了一個(gè)基于單片機(jī)的紅外遙控電子密碼鎖,該設(shè)計(jì)不但擁有一般電子按鍵式密碼鎖的功能,并且還增加了遠(yuǎn)程紅外遙控功能,有著相當(dāng)不錯(cuò)的應(yīng)用價(jià)值,所包含的技術(shù)主要有:單片機(jī)控制技術(shù)、紅外遠(yuǎn)程遙控技術(shù)、編碼及譯碼技術(shù)、電路分析和設(shè)計(jì)、電子系統(tǒng)設(shè)計(jì)、電路板焊接等。據(jù)相關(guān)的資料說明,關(guān)于電子密碼鎖的研究已經(jīng)有快一百年的歷史了,早期的人們將電子密碼鎖應(yīng)用于一些特別的場所,這種類型的鎖和現(xiàn)在的一些密碼鎖類似,是通過鍵盤輸入一組作為密碼的數(shù)字而完成開鎖的。密碼鎖發(fā)展創(chuàng)新的過程,有著很長的一段路程,但可以預(yù)見的是,隨著人們對財(cái)產(chǎn)安全的關(guān)注度越來越高,更加安全方便的鎖會(huì)成為人們的需求?,F(xiàn)在鎖的種類繁復(fù)多樣,應(yīng)用范圍最廣的還是普通的機(jī)械鎖,但電子鎖也已經(jīng)在多種多樣的場合使用了,比如賓館酒店,大型倉庫,地下車庫等。由于電子鎖有著極大的密碼量,簡單的六位密碼就有一百萬種組合方式。將電子密碼鎖與傳統(tǒng)的金屬機(jī)械鎖配合使用,能夠防止因?yàn)殍€匙被仿造而留下許多安全的隱患。電子密碼鎖以其安全可靠的優(yōu)點(diǎn),被用于各種各樣的場所,譬如,家庭住宅、銀行金庫,酒店賓館,地下車庫等等。隨著財(cái)富的積累,人們生活水平逐漸提高,財(cái)產(chǎn)安全的保障也越來越重要,紅外遙控電子密碼鎖恰好能夠滿足人們對生活財(cái)產(chǎn)安全的保護(hù)的需求,必定會(huì)有越來越多的人接受和喜愛,其前景非常樂觀。
第1章概論1.1單片機(jī)概述單片機(jī)(Microcontrollers)是一種集成了各種微型硬件在一塊硅片上的小型電路芯片,它的本質(zhì)結(jié)構(gòu)就是一個(gè)微型計(jì)算機(jī)系統(tǒng),其中包含了能夠處理各類數(shù)據(jù)的中央處理器CPU,可隨時(shí)讀取和寫入信息的隨機(jī)存取存儲(chǔ)器RAM,只能讀取而不能寫入和修改信息的只讀存儲(chǔ)器ROM等。單片機(jī)不僅在工業(yè)控制方面有著極大的應(yīng)用[1],在我們的日常生活中也隨處可見。小至電子玩具,大至航空航天,單片機(jī)在其中都有著至關(guān)重要的作用。單片機(jī)產(chǎn)生于上世紀(jì)80年代,由于技術(shù)水平較低,早期SCM階段的單片機(jī)都是4位或者8位的,當(dāng)時(shí)最受關(guān)注的是Intel公司生產(chǎn)的8051單片機(jī),而后在8051的基礎(chǔ)上發(fā)展創(chuàng)新,就產(chǎn)生了MCS51系列的MCU系統(tǒng),得到了相當(dāng)不錯(cuò)的評價(jià)。由于工業(yè)的發(fā)展,控制領(lǐng)域的要求也越來越高,16位的單片機(jī)開始產(chǎn)生,但其性價(jià)比相對較低并沒有得到大規(guī)模的應(yīng)用。到了90年代,人們的消費(fèi)觀念和模式的改變,多種電子產(chǎn)品得到不同程度的發(fā)展,單片機(jī)的技術(shù)也長足的進(jìn)步。由于Inteli960系列的普及,尤其是隨后ARM類型的大力推廣,32位單片機(jī)以迅猛的姿態(tài)占領(lǐng)市場,逐漸取代16位單片機(jī),并且開始被廣泛地應(yīng)用于各類領(lǐng)域[2]。1.2紅外通信基本原理公元1666年,艾薩克·牛頓通過實(shí)驗(yàn)發(fā)現(xiàn)了太陽光中包含著多種顏色,太陽光是多種顏色光的混合,并發(fā)現(xiàn)光顏色的不相同是因?yàn)楣獾牟ㄩL不相同,揭示出了光的色學(xué)性質(zhì)。1800年,威廉·赫歇爾通過簡單的實(shí)驗(yàn)發(fā)現(xiàn)了太陽光除了可見光的光譜之外還包含著一種看不見的光譜,并且這種光有著熱效應(yīng)性質(zhì)。他用溫度計(jì)測量通過棱鏡色散后光的不同顏色點(diǎn)的溫度,從紫色到紅色,溫度在漸漸地升高。然而把溫度計(jì)放置于紅光之外的部份,溫度并沒有下降而是在逐漸地上升,說明有肉眼看不見的光照射在溫度計(jì)上,因此表明有紅外光的存在。紅外線(InfraredRadiation),即紅外光,是一種電磁波,不能被肉眼識(shí)別,它的波長處于微波和可見光之間,在光譜中處于可見光的紅色光外側(cè),在770納米到1毫米的范圍內(nèi),由于紅外線有著很強(qiáng)的熱效應(yīng),一般被用來作為熱源。紅外通信是一種特殊的通信方式,它利用紅外線來進(jìn)行傳輸文字、數(shù)據(jù)、聲音、圖像等信息,是無線通信方式中的一種。紅外通信是通過紅外線作為媒介來傳輸信息。紅外通信通過將二進(jìn)制信號(hào)轉(zhuǎn)換成為一連串的紅外脈沖信號(hào),然后在發(fā)射端通過紅外發(fā)射管將該脈沖信號(hào)發(fā)送至接收端[3]。接收端在接收到紅外脈沖信號(hào)后將其轉(zhuǎn)換成為電信號(hào),然后再將電信號(hào)進(jìn)行放大、濾波等一些處理之后在調(diào)制解調(diào)電路中進(jìn)行還原,轉(zhuǎn)換成為原來的二進(jìn)制數(shù)字信號(hào)輸出,完成整個(gè)紅外通信的過程。簡單來說,紅外通信原理的實(shí)質(zhì)就是通過調(diào)制解調(diào)電路來將二進(jìn)制的數(shù)字信號(hào)轉(zhuǎn)換成為電信號(hào)再轉(zhuǎn)換回二進(jìn)制的數(shù)字信號(hào)的過程。紅外通信有性價(jià)比高,操作簡單,抗干擾能力強(qiáng)等諸多特點(diǎn),在家庭,商業(yè),軍事等領(lǐng)域都有著十分廣泛的應(yīng)用。如普通的遙控器,紅外測速器、紅外夜視儀等。紅外通信隨處可見,并且讓我們的生活更加美好。本次紅外遙控電子密碼鎖的設(shè)計(jì)中的紅外遙控部分利用的就是簡單的紅外通信技術(shù),通過一個(gè)小小的HS0038紅外接收探頭來實(shí)現(xiàn),通過接收遙控器發(fā)送的密碼來進(jìn)行控制電子鎖的開啟關(guān)閉,簡單方便,安全性也高,十分適合本設(shè)計(jì)。1.3電子密碼鎖的特點(diǎn)與發(fā)展趨勢電子密碼鎖是智能鎖中的一種,所謂智能鎖,就是將各類的電子元器件通過電子技術(shù)、集成電路技術(shù)、計(jì)算機(jī)技術(shù)、識(shí)別技術(shù)等多種創(chuàng)新的技術(shù)綜合在一起所研發(fā)出來一種產(chǎn)品類型。上世紀(jì)90年代,電子信息技術(shù)的快速發(fā)展和微機(jī)技術(shù)的進(jìn)步,使得電子密碼鎖有了技術(shù)上的支持,漸漸地促使電子密碼鎖逐漸應(yīng)用于實(shí)際。到了21世紀(jì)初,西方國家的電子密碼鎖技術(shù)相比于國內(nèi)較為領(lǐng)先,多種電子密碼鎖已經(jīng)成為安全可靠的守門神,在智能門禁系統(tǒng)中被普遍地應(yīng)用。而我國對密碼鎖的研發(fā)不僅吸取了國外的經(jīng)驗(yàn)技術(shù),還有自己的創(chuàng)新發(fā)展。雖然起步較晚,但是到目前為止,跟隨著電子技術(shù)發(fā)展的腳步,我國的電子密碼鎖的技術(shù)領(lǐng)域已發(fā)展的十分成熟了。從目前電子密碼鎖的生產(chǎn)水平和用戶需求程度看,鍵盤式的電子密碼鎖是相對比較受到用戶喜愛的,鍵盤式的密碼鎖主要應(yīng)用于一些商住樓或者小區(qū)的門禁系統(tǒng),還有一些應(yīng)用于銀行,如保險(xiǎn)柜、金庫、運(yùn)鈔車等。而其他類型的密碼鎖如遙控式電子密碼鎖,以及卡片式密碼鎖等也應(yīng)用于其他不同的領(lǐng)域??ㄆ降拿艽a鎖最常見于酒店賓館,而遙控式密碼鎖則在汽車行業(yè)較為流行。由于這種隨身攜帶的“鑰匙”相較于普通的金屬鑰匙有著安全保密性更高的特點(diǎn),并且使用也方便,受到人們的普遍歡迎??ㄆ矫艽a鎖這類接觸式電子鎖不僅能夠作為鑰匙,還可將個(gè)人信息等載入保存在卡片中,能夠發(fā)揮多種用途,在未來的可以發(fā)展中有著極大的用武之地。而遙控密碼鎖這種非接觸式電子鎖使用更為安全方便,大有后來居上之勢。如今,生物特征技術(shù)也在迅速地發(fā)展中,如指紋識(shí)別,面部掃描、DNA技術(shù)等。但是由于研發(fā)成本高以及市場應(yīng)用程度低等一些原因?qū)ν茝V有一定程度的限制之外,生物特征電子密碼鎖在以金融業(yè)為首的一些保密性需求高的領(lǐng)域被人們普遍看好,有著相當(dāng)不錯(cuò)的發(fā)展前景。由于字符數(shù)字、圖形聲音、人體的生物特征甚至于DNA等因素有著極大的信息量,將這些信息組合轉(zhuǎn)換成為電子密碼使用,可以使電子鎖有著極高的保密性能,也能夠使電子密碼鎖的產(chǎn)品類型多樣化。因此,電子密碼鎖取代普通的金屬機(jī)械鎖是一個(gè)必然的趨勢。電子密碼鎖將以其技術(shù)優(yōu)勢,能夠滿足人們對財(cái)產(chǎn)安全甚至人生安全的需求,會(huì)使我們的未來有著更高的安全保障。
第2章總體設(shè)計(jì)方案2.1紅外遙控電子密碼鎖設(shè)計(jì)的總體要求1.電子鎖的開鎖密碼位為六位數(shù)字密碼。2.輸入密碼的時(shí)候LCD液晶顯示屏顯示“*”號(hào),能夠防止密碼被竊取。3.如果輸入密碼正確時(shí)在LCD液晶顯示屏顯示“OPEN”,反之則顯示“ERROR”,輸入密碼時(shí)顯示“INPUTPASSWORD”。4.若輸入密碼錯(cuò)誤超過限制的三次,蜂鳴器會(huì)報(bào)警并且系統(tǒng)鎖定。5.密碼可自己修改設(shè)定,只有在開鎖狀態(tài)才能夠修改密碼,在修改密碼前要先進(jìn)行舊密碼確認(rèn),設(shè)定新密碼時(shí)要進(jìn)行兩次的新密碼輸入,從而預(yù)防一些誤操作。2.2設(shè)計(jì)原理本設(shè)計(jì)選用單片機(jī)STC89C51作為核心元件,STC單片機(jī)有加密性強(qiáng)、高抗靜電、不怕電源抖動(dòng)等特點(diǎn),穩(wěn)定性良好,適合單片機(jī)的一些簡易學(xué)習(xí)和開發(fā)制作。單片機(jī)的編程設(shè)計(jì)方式非常靈活,多種類的I/O端口,以及優(yōu)秀的控制性,延展性高,能夠較為輕松地完成密碼鎖的功能要求。主要將矩陣鍵盤、LCD1602液晶顯示屏、HS0038紅外接收探頭等接入外圍電路。矩陣鍵盤的主要功能是用于數(shù)字密碼的輸入和更改等。通過與單片機(jī)相連接的矩陣鍵盤將6位密碼輸入,然后將輸入的密碼與系統(tǒng)保存的密碼在單片機(jī)中進(jìn)行比對,若密碼一致,則表明密碼正確,反之則表明密碼錯(cuò)誤,而后將引腳的高低電平信號(hào)傳送至繼電器所在的開鎖電路或者是蜂鳴器所在的報(bào)警電路來控制電磁鎖開啟還是系統(tǒng)報(bào)警自鎖,紅外接收部分的功能和矩陣鍵盤相同。本設(shè)計(jì)的硬件結(jié)構(gòu)示意如圖2.1所示。STC89C51STC89C51單片機(jī)鍵盤輸入紅外接收AT24C02存儲(chǔ)器液晶顯示開鎖電路圖2.1結(jié)構(gòu)示意圖第3章硬件構(gòu)成3.1單片機(jī)的選用STC89C51是宏晶科技公司生產(chǎn)的一種能耗低、性能好的增強(qiáng)型8位單片機(jī),在單芯片上有著靈活的可編程Flash存儲(chǔ)器以及靈巧的8位CPU,在多種嵌入式系統(tǒng)中能夠提供高靈活的控制[4]。STC89C51有著多樣的標(biāo)準(zhǔn)功能:8k字節(jié)Flash存儲(chǔ)器,512字節(jié)RAM,32位I/O口線,2個(gè)16位定時(shí)器/計(jì)數(shù)器,看門狗定時(shí)器,EEPROM功能等。并且該STC89C51單片機(jī)可降至0Hz靜態(tài)邏輯操作。在CPU停止工作時(shí),能夠容許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷持續(xù)工作。擁有掉電保護(hù)方式,RAM內(nèi)容會(huì)在掉電保護(hù)時(shí)進(jìn)行保存,振蕩器被凍結(jié),單片機(jī)停止工作,到下一個(gè)中斷或硬件復(fù)位,單片機(jī)重新開始工作。STC89C51的最高運(yùn)作頻率為35Mhz,6T/12T可選。STC89C51單片機(jī)的引腳圖如圖3.1所示。STC89C52引腳介紹1.主電源引腳(2根)VCC(Pin40):電源輸入,接+5V電源。VSS(Pin20):接電源地線。2.外接晶振引腳(2根)XTAL1(Pin19):片內(nèi)振蕩電路輸入端口。XTAL2(Pin20):片內(nèi)振蕩電路輸出端。3.控制引腳(4根)RST/VPP(Pin9):復(fù)位信號(hào)輸入端。ALE/PROG(Pin30):地址鎖存允許信號(hào)。PSEN(Pin29):外部程序存儲(chǔ)器讀選通信號(hào)。EA/VPP(Pin31):程序存儲(chǔ)器的內(nèi)外部方位控制信號(hào)。4.可編程輸入/輸出引腳(32根)STC89C52單片機(jī)有4組8位的可編程I/O口,分別位P0、P1、P2、P3口,每個(gè)口有8位(8根引腳),共32根。P0.0~P0.7(Pin39~Pin32):雙向I/O口P0。P1.0~P1.7(Pin1~Pin8):雙向I/O口P1。P2.0~P2.7(Pin21~Pin28):雙向I/O口P2。P3.0~P3.7(Pin10~Pin17):雙向I/O口P3。圖3.1STC89C51引腳圖3.2存儲(chǔ)芯片AT24C02AT24C02是美國Atmel公司生產(chǎn)的低功耗CMOS型E2PROM,其內(nèi)部含有256*8位的存儲(chǔ)空間,工作電壓最低可達(dá)2.5V,最高可達(dá)5.5V,大于一萬次的擦寫次數(shù),小于10毫秒的寫入速度,強(qiáng)大的抵抗干擾能力,存儲(chǔ)的數(shù)據(jù)不容易丟失,而且體積很小。AT24C02是采用了I2C總線式來處理數(shù)據(jù)讀取和寫入的器件,資源和I/O線的占用率低,而且能夠進(jìn)行在線編程,有著非常方便的實(shí)時(shí)數(shù)據(jù)存取功能。AT24C02芯片中有著自帶的片內(nèi)地址寄存器,因此該芯片每次寫入或者是讀取一個(gè)字節(jié)的數(shù)據(jù)之后,該片內(nèi)地址寄存器都會(huì)自動(dòng)加1,以便進(jìn)行對接下來的一個(gè)存儲(chǔ)單元的讀寫功能。I2C總線是一種二進(jìn)制總線,用于集成電路的器件連接。它通過串行數(shù)據(jù)線(SDA)和串行時(shí)鐘線(SCL)這兩根線在一些連接至總線上的元器件中間進(jìn)行信息的傳遞,并且能夠通過地址識(shí)別不同的器件。正是因?yàn)锳T24C02運(yùn)用了I2C串行總線規(guī)程,使用主機(jī)和從機(jī)能夠?qū)崿F(xiàn)雙向通信,作為主機(jī)的單片機(jī)和作為從機(jī)的AT24C02芯片都能夠作為接收器和發(fā)送器。主機(jī)和從機(jī),在接收到一個(gè)字節(jié)后都必須發(fā)出一個(gè)ACK確認(rèn)控制信號(hào),用來選擇從機(jī)并且可以控制總線傳輸?shù)姆较騕5]。AT24C02引腳圖如圖3.2所示。AT24C02芯片的管腳描述。VCC(Pin8):電源接入。GND(Pin4):接地引腳。SCL(Pin6):串行時(shí)鐘信號(hào)引腳。SDA(Pin5):串行數(shù)據(jù)輸入/輸出引腳。A0、A1、A2(Pin1~Pin3):器件地址輸入端。WP(Pin7):寫保護(hù)引腳。圖3.2AT24C02引腳圖3.3LCD1602液晶顯示LCD1602是一種用于顯示英文字母、阿拉伯?dāng)?shù)字和一些符號(hào)的工業(yè)字符型液晶,能夠同時(shí)顯示32個(gè)字符(16列2行)。液晶顯示器在我們的平常的生活中十分常見,作為多種類型電子產(chǎn)品的應(yīng)用器件,有著重量輕,體積小、成本低等特點(diǎn),并且功耗極低[6],在計(jì)算器、萬用表、以及許多電子產(chǎn)品中都能夠見到,主要用來顯示一些簡單的數(shù)字、字母和字符等。將LCD1602晶液顯示器應(yīng)用于單片機(jī)系統(tǒng)中有著以下多個(gè)優(yōu)點(diǎn)。LCD液晶顯示器本身并不主動(dòng)發(fā)光,只是通過調(diào)節(jié)光的亮度。因此LCD液晶屏上的每個(gè)點(diǎn)在接收到電信號(hào)之后便能夠持續(xù)保持住一種色彩和亮度,穩(wěn)定發(fā)光。而陰極射線管顯示器這種類型的顯示器是通過電子束來激發(fā)屏幕上的熒光點(diǎn)來發(fā)光,需要進(jìn)行不斷地刷新。由此可見,液晶顯示器畫質(zhì)高,并且比較穩(wěn)定。LCD液晶顯示器是一種數(shù)字式的顯示器類型,與單片機(jī)的引腳相連十分簡單,使用方便,且不容易發(fā)生故障。LCD液晶顯示器是通過電極來控制液晶分子狀態(tài)來控制顯示屏的亮暗,其重量相比于傳統(tǒng)的顯示器要輕便得多。LCD液晶顯示器的主要耗能為顯示屏內(nèi)部電路的電極和驅(qū)動(dòng),耗電量相比于其他的顯示器要少很多,因此使用壽命也相對于其他顯示器要長。顯示器的引腳圖如圖3.3所示。LCD1602的引腳說明。VSS(Pin1):接電源地。VCC(Pin2):接+5V正電源。VL(Pin3):對比度調(diào)整端。RS(Pin4):寄存器選擇引腳。R/W(Pin5):讀寫信號(hào)線。EN(Pin6):EN端為使能端,通過高低電平執(zhí)行命令。D0~B7(Pin7~Pin14):8位雙向數(shù)據(jù)線引腳。BLA(Pin15):背光源正極。BLK(Pin16):背光源負(fù)極。圖3.3LCD1602引腳圖3.4行列式矩陣鍵盤設(shè)計(jì)本設(shè)計(jì)所采用的鍵盤為行列式矩陣鍵盤,采用這種鍵盤能夠減少鍵盤與單片機(jī)接口所連接的I/O口線的數(shù)目,這種方法常用于按鍵相對較多的時(shí)候。在行列式矩陣鍵盤中,用一個(gè)按鈕來連接電路中每一條水平線和垂直線的交點(diǎn)。這樣能夠使一個(gè)端口構(gòu)成4*4=16個(gè)按鍵,而如果每個(gè)按鍵單獨(dú)使用一個(gè)引腳只能構(gòu)成8個(gè)按鍵,相比起來按鍵數(shù)多出了一倍。因此,如果需要較多的按鍵數(shù)時(shí),采用矩陣行列式鍵盤是一種相當(dāng)合理的方式。4×4矩陣鍵盤電路圖如圖3.4所示,我們可以用簡單的兩個(gè)步驟來描述矩陣式鍵盤的工作原理。第一步,識(shí)別是否有按鍵被按下。首先讓列線P1.0~P1.3處于輸入的狀態(tài),行線P1.4~P1.7處于輸出的狀態(tài),所有的列線輸入高電平,當(dāng)某個(gè)鍵被按下時(shí),則按鍵對應(yīng)的行線和列線短接。如當(dāng)S1按下時(shí),P1.0和P1.4發(fā)生短接,此時(shí)P1.0的輸入電平變成P1.4的電平,即P1.0變?yōu)楦唠娖?。所以,在檢測是否有按鍵按下時(shí),使4條行線接入低電平,然后讀取4條列線的狀態(tài),如果4條列線都為高電平,則表明沒有按鍵被按下。如果其中有一個(gè)按鍵被按下時(shí),由于列線是弱上拉到VCC,則列線上讀取到的將是一個(gè)非全“1”的值。第二步,找出被按下按鍵的位置。首先將行線上的P1.7設(shè)置為低電平,其余全部設(shè)置為高電平,讀取列線P1.0~P1.3上的值,如果這一行上有按鍵被按下,則P1.0~P1.3上讀回的值就有一個(gè)為低電平。反之,如果沒有按鍵按下,則P1.0~P1.3上讀回的值全部為“1”。接著將P1.6設(shè)置為低電平,其余設(shè)置為高電平。同理,讀取P1.0~P1.3上的值,查看P1.0~P1.3讀回的值是低電平還是高電平,來確定該行的按鍵是否有被按下。同樣的,依次將P1.5和P1.4的設(shè)置為低電平,來準(zhǔn)確定位按鍵按下的位置[7]。圖3.4矩陣鍵盤電路圖3.5繼電器控制模塊電磁繼電器的構(gòu)成主要是電磁鐵、線圈、靜態(tài)觸點(diǎn)、動(dòng)態(tài)觸點(diǎn)、銜鐵等。將固定的電壓附加在線圈的兩側(cè),線圈內(nèi)會(huì)產(chǎn)生固定的電流流通,進(jìn)而發(fā)生電磁感應(yīng),產(chǎn)生電磁作用力,電磁作用力大于彈簧的拉力,使銜鐵吸向鐵芯,將銜鐵的動(dòng)觸點(diǎn)和靜觸點(diǎn)相互吸合。而當(dāng)線圈兩側(cè)電壓消失,線圈斷電之后,電磁感應(yīng)所產(chǎn)生的作用力消失,彈簧本身的拉力大于電磁的作用力,將銜鐵拉回到起始的位置,令銜鐵的動(dòng)觸點(diǎn)與靜觸點(diǎn)失去電磁力的作用得到釋放。通過反復(fù)進(jìn)行這樣吸合和釋放的過程,令繼電器在電路中起到了導(dǎo)通和關(guān)閉的作用。繼電器的靜觸點(diǎn)和動(dòng)觸電的區(qū)分方式,主要是看觸點(diǎn)的常開、常閉狀態(tài)。繼電器線圈在沒有通電的狀態(tài)下是斷開的,為靜觸點(diǎn)。相反的,如果繼電器在通電的狀態(tài)下是閉合的,即為動(dòng)觸點(diǎn)[8]。繼電器主要是通過電路中的PNP型三極管來驅(qū)動(dòng)的,當(dāng)數(shù)值超過系統(tǒng)的設(shè)定值時(shí),單片機(jī)WR引腳將會(huì)從高電平跳變成為低電平,PNP型三極管導(dǎo)通,使得繼電器吸合,繼電器便起到了開關(guān)的作用,能夠驅(qū)動(dòng)負(fù)載。繼電器的控制負(fù)載電路如圖3.5所示。圖3.5繼電器控制負(fù)載電路3.6紅外接收模塊紅外遙控技術(shù)是目前使用十分廣泛的一種技術(shù),主要是基于紅外通信原來,紅外遙控在我們?nèi)粘I钪须S處可見,比如家里的電視機(jī),空調(diào)、還有音響設(shè)備等都是通過紅外遙控器控制。紅外接收模塊的構(gòu)成主要是由接收紅外信息的接收電路,放大信號(hào)的放大電路,信號(hào)轉(zhuǎn)換的調(diào)制解調(diào)電路,以及指令譯碼電路,執(zhí)行電路等組成。接收電路通過接收發(fā)射器發(fā)送出的編碼指令信號(hào),然后進(jìn)行放大并傳輸至送調(diào)制解調(diào)電路,而調(diào)制解調(diào)電路能夠?qū)⒕幋a指令信號(hào)還原成為編碼信號(hào)[9]。指令譯碼電路的作用是通過指令譯碼器將編碼指令信號(hào)譯碼,最后再通過驅(qū)動(dòng)電路來操作控制執(zhí)行電路中的各種指令。紅外接收電路用的是HS0038一體化紅外接收探頭,是標(biāo)準(zhǔn)IR遙控接收器系列,支持所有主要的傳輸碼,有著很高的性價(jià)比。普通紅外接收頭的構(gòu)成一般是由集成電路外加一些阻容性元件、紅外線接收元件及濾波光片等,電路組成復(fù)雜,并且設(shè)計(jì)相對繁瑣,不適合應(yīng)用于實(shí)際開發(fā)設(shè)計(jì)中。HS0038是一種既能夠進(jìn)行紅外線接收,也能夠放大整形的元器件,不需要其他輔助的外接元件,就能夠接收紅外遙控器的輸入數(shù)據(jù),完成紅外線接收等一系列工作,其功耗低,抗干擾能力強(qiáng),并且能夠進(jìn)行連續(xù)的數(shù)據(jù)傳輸,最高可達(dá)到800比特/秒,使用壽命高。連適合用于多種紅外線通信遙控和數(shù)據(jù)傳輸。一體化紅外接收電路如圖3.6所示。圖3.6一體化紅外接收電路3.7聲音提示模塊蜂鳴器是一種一體化結(jié)構(gòu)類型的電子訊響器,其主要的供電方式為直流電壓供電,市場上常見的蜂鳴器體積都很小,直徑只有11毫米,并且價(jià)格便宜,受到各方面人士的喜愛?;旧嫌嘘P(guān)聲音提示的電子設(shè)備都會(huì)應(yīng)用到蜂鳴器,如電腦、傳真機(jī)、電子門鈴、電動(dòng)玩具、計(jì)數(shù)器等多種多樣的電子設(shè)備。蜂鳴器一般分為兩種,一種是壓電式蜂鳴器,另一種是電磁式蜂鳴器。壓電式蜂鳴器主要是通過壓電陶瓷的壓電效應(yīng),導(dǎo)致機(jī)械變形,進(jìn)而觸發(fā)金屬片的振動(dòng)而發(fā)出聲音。其主要由多諧振蕩器、壓電陶瓷片、阻抗匹配器、共鳴腔等部件構(gòu)成。多諧振蕩器一般是由晶體管或者集成電路構(gòu)成,利用深度正反饋,當(dāng)接通直流電壓電源之后,利用阻容耦合使元器件交叉導(dǎo)通和關(guān)閉,令多諧振蕩器開始發(fā)生振動(dòng),能夠產(chǎn)生并輸出1.5Hz~2.5kHZ的音頻信號(hào),通過阻抗匹配器的配合,壓電陶瓷片振動(dòng)發(fā)聲。壓電陶瓷片相對于比較常見的是用鋯、鉛的氧化物配制后燒結(jié)制成的鈦、壓電陶瓷片料。一般將諧振頻率設(shè)計(jì)在人耳比較敏感的3KHz左右。本設(shè)計(jì)應(yīng)用的是電磁式蜂鳴器。電磁式蜂鳴器的主要構(gòu)成是多諧振蕩器、電磁感應(yīng)線圈、小型磁鐵、振動(dòng)膜片等部分。系統(tǒng)通電后,振蕩器振動(dòng)產(chǎn)生信號(hào),該信號(hào)通過電流流過電磁線圈,能夠在電磁線圈周圍引發(fā)磁場。磁鐵在電磁線圈產(chǎn)生的磁場中引發(fā)振動(dòng)膜片振動(dòng)發(fā)出聲音。典型的蜂鳴器驅(qū)動(dòng)電路通常都是由蜂鳴器、三極管、以及限流電阻組成。蜂鳴器作為發(fā)聲元件,三極管主要用于控制蜂鳴器電流的導(dǎo)通,起到開關(guān)的作用,而限流電阻用于保護(hù)電路。本設(shè)計(jì)采用的是有源蜂鳴器,在蜂鳴器的一端接電源,另一端接三極管,并且在三極管基極接入限流電阻,另一端接地線。當(dāng)作為開關(guān)的三極管的基極接收到單片機(jī)發(fā)出的低電平信號(hào)后導(dǎo)通,蜂鳴器兩端產(chǎn)生電壓差,內(nèi)部的電磁線圈有電流流通,電磁線圈產(chǎn)生的磁場引發(fā)振動(dòng)膜片振動(dòng)從而使蜂鳴器發(fā)聲。而當(dāng)基極接收到高電平信號(hào)時(shí),三極管截止,蜂鳴器無電流流過,停止發(fā)聲。聲音報(bào)警電路如圖3.7所示。圖3.7聲音報(bào)警電路
第4章程序設(shè)計(jì)4.1主程序模塊在硬件支持的環(huán)境下,通過Keil4軟件編程(詳細(xì)程序見附錄),將編寫好的程序編譯保存并生成芯片可識(shí)別的Hex文件,并且將程序文件導(dǎo)入Proteus仿真軟件來進(jìn)行仿真測試,將仿真出現(xiàn)的一些程序錯(cuò)誤進(jìn)行修正。主程序的流程圖如圖4.1所示,接通電源后開機(jī),初始化程序,通過主機(jī)鍵盤或是紅外遙控輸入密碼,經(jīng)過開鎖程序完成開鎖操作。密碼輸入正確完成開鎖,如果密碼輸入三次錯(cuò)誤,則報(bào)警自鎖。并且在成功開鎖后可通過密碼設(shè)置程序更改密碼。YYYNN開機(jī)密碼輸入程序初始化開鎖程序報(bào)警自鎖密碼設(shè)置程序返回成功開鎖?更改密碼?圖4.1主程序的流程圖4.2鍵盤掃描子程序鍵盤掃描程序的流程圖如圖4.2所示,輸入密碼時(shí),通過鍵盤掃描是否有鍵閉合和定位閉合鍵來建立有效標(biāo)志,確定輸入的六位密碼。NNNNYYY鍵盤掃描有鍵閉合?掃描鍵盤延時(shí)去鍵抖動(dòng) 找到閉合鍵?計(jì)算鍵值閉合鍵釋放?建立有效標(biāo)志返回建立無效標(biāo)志圖4.2鍵盤掃描程序流程圖4.3紅外接收子程序紅外接收子程序的流程圖如圖4.3所示,通過遙控器輸入密碼,HS0038紅外接收頭接收,在單片機(jī)中將輸入的密碼與系統(tǒng)中存儲(chǔ)的密碼進(jìn)行比較,如果密碼一致,則成功開鎖,如果密碼錯(cuò)誤超過三次,則系統(tǒng)報(bào)警自鎖。YYYYNN開始遙控輸入密碼紅外接收確認(rèn)程序是否正確?開鎖返回錯(cuò)誤次數(shù)+1錯(cuò)誤三次?報(bào)警程序返回圖4.3紅外接收流程圖4.4系統(tǒng)模塊密碼設(shè)置子程序更改密碼的流程圖如圖4.4所示,當(dāng)系統(tǒng)處于開鎖狀態(tài)時(shí),再次輸入正確的密碼,確定后按進(jìn)入密碼設(shè)置程序,輸入新密碼并按下設(shè)置鍵,為防止誤操作需再次輸入新密碼,聽到兩聲提示,表明新密碼設(shè)置完成。NNNNYYY設(shè)置程序開鎖狀態(tài)輸入舊密碼確認(rèn)程序是否正確?輸入新密碼再輸入新密碼錯(cuò)誤次數(shù)+1報(bào)警程序兩次密碼是否相同設(shè)置成功錯(cuò)誤三次?返回返回圖4.4設(shè)置密碼子程序4.5開鎖子程序開鎖程序的流程圖如圖4.5所示,開機(jī)后通過主機(jī)鍵盤或者紅外遙控器輸入密碼,將輸入的密碼與保存在系統(tǒng)中的密碼進(jìn)行比對,若密碼一致,則實(shí)現(xiàn)開鎖。若密碼錯(cuò)誤,則重新輸入,密碼錯(cuò)誤三次后,系統(tǒng)報(bào)警并鎖定。NNYNY開始輸入密碼密碼對比錯(cuò)誤次數(shù)+1開鎖是否一致?錯(cuò)誤三次?返回報(bào)警自鎖初始化返回圖4.5開鎖程序流程圖第5章制作與調(diào)試5.1成品制作的焊接注意事項(xiàng)完成軟件設(shè)計(jì)的仿真調(diào)試之后,確認(rèn)程序可以,便可進(jìn)行電路板的焊接制作,焊接操作的主要注意以下幾點(diǎn)。1.焊接上錫時(shí),錫的用量要注意不能太多,也不能太少。用量太多可能會(huì)使焊點(diǎn)相碰導(dǎo)致短路,用量太少可能焊接不牢靠,導(dǎo)致短路。2.焊接時(shí)最好使焊錫堆疊為錐形,焊點(diǎn)周圍焊錫稍微密集,防止虛焊。3.焊接的溫度通常在200度上下最佳,不能長時(shí)間地將電烙鐵靠在電路板上,不然容易燒壞電路元件和焊盤。最好通過牽引的方法將焊錫添加到焊盤上。4.對于一些引腳較長的電器元件,如電容器、電阻、三極管等,在焊接完成后,要將這些元件的引腳漏出的部分剪斷。5.單片機(jī)芯片與AT24C02芯片及其底座都是有方向的,在焊接底座時(shí)應(yīng)注意缺口的方向,確保插入芯片的時(shí)候方向正確,防止因方向錯(cuò)誤導(dǎo)致芯片燒毀。6.在插入芯片前應(yīng)先將芯片的針腳稍微彎曲,使其比較容易插入底座的插槽中,防止用力過度導(dǎo)致針腳彎曲折斷。5.2調(diào)試接通電源按下開機(jī)按鈕,系統(tǒng)沒用通電,通過萬用表檢查后發(fā)現(xiàn)開關(guān)虛焊,完成修復(fù)后系統(tǒng)正常開機(jī)。進(jìn)行調(diào)試的時(shí)候,發(fā)現(xiàn)單片機(jī)不工作,經(jīng)檢查發(fā)現(xiàn)電源引出線接錯(cuò)。正確接線后,再次調(diào)試單片機(jī)仍然不工作,檢查后發(fā)現(xiàn)復(fù)位開關(guān)出現(xiàn)故障,RST引腳一直處于高電平狀態(tài),更換復(fù)位開關(guān)后單片機(jī)開始正常工作。開機(jī)后LCD液晶顯示屏無法顯示,檢查后發(fā)現(xiàn)P0口沒有接入上拉電阻,將電阻與P0口連接后LCD正常顯示。蜂鳴器無聲音,無論是按鍵按下還是密碼輸入錯(cuò)誤,蜂鳴器都不工作,仔細(xì)檢查過后發(fā)現(xiàn)蜂鳴器正負(fù)極接反,重新焊接蜂鳴器后正常工作。
結(jié)論本設(shè)計(jì)是一種基于單片機(jī)的紅外遙控電子密碼鎖,將單片機(jī)STC89C51作為主要控制芯片,AT24C02芯片作為數(shù)據(jù)存儲(chǔ)器單元,通過外接電路的4*4矩陣鍵盤和紅外遙控電路控制密碼輸入、LCD1602液晶顯示屏單元顯示系統(tǒng)狀態(tài)、聲音提示模塊電路控制系統(tǒng)報(bào)警發(fā)聲、繼電器電路單元控制電磁鎖開啟關(guān)閉等,通過Keil4軟件編程,成功設(shè)計(jì)并制作完成了一個(gè)能夠修改密碼,發(fā)聲報(bào)警電子密碼鎖。單片機(jī)有著成本低廉,開發(fā)簡單,安全可靠等諸多優(yōu)點(diǎn),能夠通過不同的外接電路和編程設(shè)計(jì)出多種多樣的功能。紅外遙控密碼鎖的成本相對較低,并且操作簡單,體積小。該密碼鎖有兩種開鎖方式,既能夠本機(jī)按鍵解鎖,同時(shí)也能紅外遙控解鎖,只需要用戶記住簡單的六位數(shù)密碼,便可輕松地完成開鎖功能,而且能夠隨時(shí)修改密碼,有著很高的保密性和靈活性,能夠應(yīng)付各種場合的需求,有不錯(cuò)的市場價(jià)值。通過本次的畢業(yè)設(shè)計(jì),對大學(xué)四年所學(xué)習(xí)的知識(shí)有了更加深刻的認(rèn)識(shí),能夠?qū)W(xué)習(xí)到的知識(shí)應(yīng)用于實(shí)際中,是一件很有成就的事情。但是完成一個(gè)簡單的設(shè)計(jì)都需要如此繁復(fù)的準(zhǔn)備工作以及制作周期,可見在走上社會(huì)之后所完成更加困難的工作需要極大的耐心和信心,這對于我接下來的工作學(xué)習(xí)有著極大的幫助。在本次的畢業(yè)設(shè)計(jì)中,我發(fā)現(xiàn)自己在知識(shí)理解以及動(dòng)手水平方面都有所欠缺,但在指導(dǎo)老師的悉心教導(dǎo)下,設(shè)計(jì)制作過程中遇到的難題都迎刃而解,經(jīng)過幾個(gè)月的設(shè)計(jì)制作,最終完成了該紅外遙控電子密碼鎖的畢業(yè)設(shè)計(jì)。
致謝語經(jīng)過幾個(gè)月來的努力,終于完成了本次紅外遙控電子密碼鎖的畢業(yè)設(shè)計(jì)。首先要感謝就是我的指導(dǎo)老師陽賓老師。在設(shè)計(jì)的選題,資料收集,焊接制作以及論文的撰寫上,陽賓老師都給予了我極大的幫助。在老師的悉心指導(dǎo)下,我對于這四年來所學(xué)習(xí)的知識(shí)有了更加深刻的理解,從老師那學(xué)習(xí)了很多課堂中學(xué)習(xí)不到的小技巧,同時(shí)在電路板的焊接制作中鍛煉了動(dòng)手能力。這對于我畢業(yè)后的工作生活都是非常寶貴的經(jīng)驗(yàn)。其次要感謝學(xué)校,感謝學(xué)校提供了如此多寶貴的資源,藏書量豐富的圖書館,設(shè)備齊全的實(shí)驗(yàn)室,干凈整潔的教學(xué)樓和宿舍,最重要的就是有這么多優(yōu)秀的老師,感謝他們四年來孜孜不倦地向我們傳授知識(shí)。正是老師們兢兢業(yè)業(yè)地工作,讓我們知道如何去做人,如何去做事,如何為社會(huì)出力,為國家出力。感謝老師,感謝學(xué)校。感謝我的舍友以及同學(xué),這四年來有了他們的陪伴,我才會(huì)有這樣一個(gè)豐富多彩的大學(xué)生活。這四年來我們有過歡笑有過矛盾,在學(xué)業(yè)上互相幫助,在生活上互相關(guān)心,這些都讓我感受到朋友的重要性,明白合作的重要性。彈指一揮間,大學(xué)四年匆匆而去,接來下的便是走向社會(huì)開始工作了,有了這四年大學(xué)生活的學(xué)習(xí),我積累了很多寶貴的經(jīng)驗(yàn),我相信在未來的工作生活中,我會(huì)走出更加精彩的人生路!
參考文獻(xiàn)[1]鐘端瑋.淺談單片機(jī)的基本原理及應(yīng)用研究[J].科學(xué)導(dǎo)報(bào),2014,19:207-207.[2]庹先國,余小平,奚大順.電子系統(tǒng)設(shè)計(jì)-基礎(chǔ)篇[M].北京:北京航空航天大學(xué)出版社,2014.[3]葉蓁.通用紅外遙控碼的單片機(jī)直接接收方法[J].漳州師范學(xué)院學(xué)報(bào),2002,2:45-47.[4]司冬雨.基于單片機(jī)控制的電子密碼鎖[J].中國科技財(cái)富,2012,17:33-36.[5]盧旭錦.基于KeilC的AT24C02串行E2PROM的編程[J].現(xiàn)代電子技術(shù),2007,8:154-157.[6]白木子蔭.液晶顯示器技術(shù)全揭示[J].有線電視技術(shù),2002,16:73-78.[7]徐愛鈞,徐陽.單片機(jī)原理于應(yīng)用-基于Proteus虛擬仿真技術(shù)[M].北京:機(jī)械工業(yè)出版社,2013.[8]張唯一.繼電器在電氣工程及其自動(dòng)化低壓電器中的應(yīng)用[J].價(jià)值工程,2013,13:38-P39.[9]張愛全.紅外線遙控的基本原理和應(yīng)用范圍[J].山西電子技術(shù),2003,6:40-41.[10]閆迎利.壓電效應(yīng)及其在家電中的應(yīng)用[J].物理與工程,2002,6:43-45.
附錄仿真圖圖1Proteus仿真圖原理圖圖2密碼鎖原理圖
實(shí)物圖圖3實(shí)物圖正面圖4實(shí)物圖反面圖5紅外遙控器電子密碼鎖程序#include<REG52.h>#include<intrins.h>#defineLCM_DataP0#defineucharunsignedchar#defineuintunsignedint#defineImax14000#defineImin8000#defineInum11450#defineInum2700#defineInum33000sbitlcd1602_rs=P2^7;sbitlcd1602_rw=P2^6;sbitlcd1602_en=P2^6;sbitScl=P2^0; sbitSda=P2^1; sbitALAM=P3^3; sbitKEY=P3^2; sbitopen_led=P2^2; bitoperation=0; bitpass=0; bitReInputEn=0; bits3_keydown=0; bitkey_disable=0; unsignedcharcountt0,second; unsignedcharIm[4]={0x00,0x00,0x00,0x00};ucharf;unsignedlongm,Tc;unsignedcharIrOK;unsignedcharcodea[]={0xFE,0xFD,0xFB,0xF7}; unsignedcharcodestart_line[] ={"password:"};unsignedcharcodename[] ={"===CodedLock==="}; unsignedcharcodeCorrect[] ={"correct"}; unsignedcharcodeError[] ={"error"}; unsignedcharcodecodepass[] ={"pass"};unsignedcharcodeLockOpen[] ={"open"}; unsignedcharcodeSetNew[] ={"SetNewWordEnable"};unsignedcharcodeInput[] ={"input:"}; unsignedcharcodeResetOK[] ={"ResetPasswordOK"};unsignedcharcodeinitword[] ={"Initpassword..."};unsignedcharcodeEr_try[] ={"error,tryagain!"};unsignedcharcodeagain[] ={"inputagain"};unsignedcharInputData[6]; unsignedcharCurrentPassword[6]={1,3,1,4,2,0}; unsignedcharTempPassword[6];unsignedcharN=0; unsignedcharErrorCont; unsignedcharCorrectCont; unsignedcharReInputCont; unsignedcharcodeinitpassword[6]={0,0,0,0,0,0};voidDelay5Ms(){ unsignedintTempCyc=5552; while(TempCyc--);} voidDelay400Ms(){unsignedcharTempCycA=5;unsignedintTempCycB;while(TempCycA--){TempCycB=7269;while(TempCycB--);}}voidmDelay(uintt){ uchari; while(t--) { for(i=0;i<125;i++) {;} }}voidNop() { _nop_(); _nop_(); _nop_(); _nop_();}voidStart(void){ Sda=1; Scl=1; Nop(); Sda=0; Nop();}voidStop(void){ Sda=0; Scl=1; Nop(); Sda=1; Nop();}voidAck(void){ Sda=0; Nop(); Scl=1; Nop(); Scl=0;}voidNoAck(void){ Sda=1; Nop(); Scl=1; Nop(); Scl=0;}voidSend(ucharData){ ucharBitCounter=8; uchartemp; do { temp=Data; Scl=0; Nop(); if((temp&0x80)==0x80) Sda=1; else Sda=0; Scl=1; temp=Data<<1; Data=temp; BitCounter--; } while(BitCounter); Scl=0;}ucharRead(){uchartemp=0; uchartemp1=0; ucharBitCounter=8; Sda=1; do{ Scl=0; Nop(); Scl=1; Nop(); if(Sda) temp=temp|0x01; else temp=temp&0xfe; if(BitCounter-1) { temp1=temp<<1; temp=temp1; } BitCounter--; } while(BitCounter); return(temp); }voidWrToROM(ucharData[],ucharAddress,ucharNum){uchari;uchar*PData;PData=Data;for(i=0;i<Num;i++){Start();Send(0xa0);Ack();Send(Address+i);Ack();Send(*(PData+i));Ack();Stop();mDelay(20);}}voidRdFromROM(ucharData[],ucharAddress,ucharNum){uchari;uchar*PData;PData=Data;for(i=0;i<Num;i++){Start();Send(0xa0);Ack();Send(Address+i);Ack();Start();Send(0xa1);Ack();*(PData+i)=Read();Scl=0;NoAck();Stop();}}#defineyi0x80(100000000=80)#defineer0x80+0x40voiddelay(uintxms){ uintx,y; for(x=xms;x>0;x--) for(y=110;y>0;y--);}voidwrite_1602com(ucharcom){ lcd1602_rs=0; P0=com; delay(1); lcd1602_en=1; delay(1); lcd1602_en=0;}voidwrite_1602dat(uchardat){ lcd1602_rs=1; P0=dat; delay(1); lcd1602_en=1; delay(1); lcd1602_en=0;}voidlcd_init(){ write_1602com(0x38); write_1602com(0x0c); write_1602com(0x06); write_1602com(0x01);}unsignedcharcoding(unsignedcharm1,unsignedcharhh) { unsignedchark; if(IrOK==1) { IrOK=0; switch(m1) { case(0x0c):k=1;break; case(0x18):k=2;break; case(0x5e):k=3;break; case(0x08):k=4;break; case(0x1c):k=5;break; case(0x5a):k=6;break; case(0x42):k=7;break; case(0x52):k=8;break; case(0x4a):k=9;break; case(0x43):k='*';break; case(0x16):k=0;break; case(0x15):k='#';break; case(0x0d):k='D';break; case(0x45):k='A';break; case(0x47):k='A';break; case(0x44):k='A';break; case(0x40):k='A';break; case(0x07):k='A';break; case(0x09):k='A';break; case(0x19):k='A';break; } } else { switch(hh) { case(0):k=1;break; case(1):k=2;break; case(2):k=3;break; case(3):k='A';break; case(4):k=4;break; case(5):k=5;break; case(6):k=6;break; case(7):k='B';break; case(8):k=7;break; case(9):k=8;break; case(10):k=9;break; case(11):k='C';break; case(12):k='*';break; case(13):k=0;break; case(14):k='#';break; case(15):k='D';break; } } return(k);}unsignedcharKeyMemory;sbitKeyLine_1 = P1^7;sbitKeyLine_2 = P1^5;sbitKeyLine_3 = P1^3;sbitKeyLine_4 = P1^1;sbitKeylist_1 = P1^0; sbitKeylist_2 = P1^2; sbitKeylist_3 = P1^4; sbitKeylist_4 = P1^6; voidKeyOut(unsignedchari){ KeyLine_1=1; KeyLine_2=1; KeyLine_3=1; KeyLine_4=1; switch(i) { case0:KeyLine_1=0;break; case1:KeyLine_2=0;break; case2:KeyLine_3=0;break; case3:KeyLine_4=0;break; } }unsignedcharKeyIn(unsignedchari){ staticunsignedchara=1; switch(i) { case0:a=Keylist_1;break; case1:a=Keylist_2;break; case2:a=Keylist_3;break; case3:a=Keylist_4;break; } returna;}unsignedcharkeynum(void){ unsignedcharkey_rt=0xff; unsignedchari,j; for(i=0;i<4;i++) { KeyOut(i); for(j=0;j<4;j++) { if(KeyIn(j)==0) { Delay5Ms(); Delay5Ms(); if(KeyIn(j)==0) { KeyMemory=(1<<i)*16+(1<<j); } } while(KeyIn(j)==0); } } for(i=0;i<4;i++) { if((KeyMemory/16)>>i==0x01) { for(j=0;j<4;j++) { if((KeyMemory%16)>>j==0x01) { KeyMemory=0; key_rt=i*4+j; } } } } returnkey_rt;}voidOneAlam(){ ALAM=0; Delay5Ms();ALAM=1;}voidTwoAlam(){ ALAM=0; Delay5Ms();ALAM=1;Delay5Ms(); ALAM=0; Delay5Ms();ALAM=1;}voidThreeAlam(){ ALAM=0; Delay5Ms();ALAM=1;Delay5Ms(); ALAM=0; Delay5Ms();ALAM=1;Delay5Ms(); ALAM=0; Delay5Ms();ALAM=1;}voidDisplayOne(){ write_1602com(yi+5+N); write_1602dat('*');}voidDisplayChar(){ unsignedchari; if(pass==1) { write_1602com(er); for(i=0;i<16;i++) { write_1602dat(LockOpen[i]); } } else { if(N==0) { write_1602com(er); for(i=0;i<16;i++) { write_1602dat(Error[i]); } } else { write_1602com(er); for(i=0;i<16;i++) { write_1602dat(start_line[i]); } } }}voidDisplayInput(){ unsignedchari; if(CorrectCont==1) { write_1602com(er); for(i=0;i<16;i++) { write_1602dat(Input[i]); } }}voidResetPassword(){ unsignedchari; unsignedcharj; if(pass==0) { pass=0; DisplayChar(); ThreeAlam(); } else { if(ReInputEn==1) { if(N==6) { ReInputCont++; if(ReInputCont==2) { for(i=0;i<6;) { if(TempPassword[i]==InputData[i]) i++; else { write_1602com(er); for(j=0;j<16;j++) { write_1602dat(Error[j]); } ThreeAlam(); pass=0; ReInputEn=0; ReInputCont=0; DisplayChar(); break; } } if(i==6) { write_1602com(er); for(j=0;j<16;j++) { write_1602dat(ResetOK[j]); } TwoAlam(); WrToROM(TempPassword,0,6); ReInputEn=0; } ReInputCont=0; CorrectCont=0; } else { OneAlam(); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(again[j]); } for(i=0;i<6;i++) { TempPassword[i]=InputData[i]; } } N=0; } } }}voidAlam_KeyUnable(){ P1=0x00; { ALAM=~ALAM; Delay5Ms(); }}voidCancel(){ unsignedchari; unsignedcharj; //DisplayListChar(0,1,start_line); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(start_line[j]); } TwoAlam(); for(i=0;i<6;i++) { InputData[i]=0; } KEY=1; ALAM=1; operation=0; pass=0; ReInputEn=0; CorrectCont=0; ReInputCont=0; open_led=1; s3_keydown=0; key_disable=0; N=0; }voidEnsure(){ unsignedchari,j; RdFromROM(CurrentPassword,0,6); if(N==6) { if(ReInputEn==0) { for(i=0;i<6;) { if(CurrentPassword[i]==InputData[i]) { i++; } else { i=7; ErrorCont++; if(ErrorCont>=3&&KEY==1) { write_1602com(er); for(i=0;i<16;i++) { write_1602dat(Error[i]); } Alam_KeyUnable(); TR0=1; key_disable=1; pass=0; break; } } } if(i==6) { CorrectCont++; if(CorrectCont==1) { write_1602com(er); for(j=0;j<16;j++) { write_1602dat(LockOpen[j]); } TwoAlam(); ErrorCont=0; KEY=0; pass=1; TR0=1; open_led=0; for(j=0;j<6;j++) { InputData[i]=0; } } else { //DisplayListChar(0,1,SetNew); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(SetNew[j]); } TwoAlam(); ReInputEn=1; CorrectCont=0; } } else { if((InputData[0]==1)&&(InputData[1]==3)&&(InputData[2]==1)&&(InputData[3]==4)&&(InputData[4]==2)&&(InputData[5]==0)) { WrToROM(initpassword,0,6); //DisplayListChar(0,1,initword); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(initword[j]); } TwoAlam(); Delay400Ms(); TwoAlam(); N=0; } else { //DisplayListChar(0,1,Error); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(Error[j]); }
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度辦公場所租賃附帶物業(yè)服務(wù)合同3篇
- 辦公桌椅租賃合同
- 二零二五年度建筑機(jī)械租賃合同范本3篇
- 油田排水系統(tǒng)安裝合同
- 證券公司勞動(dòng)合同模板
- 機(jī)場跑道照明工程合同
- 社會(huì)保險(xiǎn)合同范本例
- 模特大賽代理人合同
- 二零二五年度個(gè)人創(chuàng)業(yè)貸款合同范本
- 二零二五年度房產(chǎn)抵押貸款合同書(信用評級(jí))3篇
- 內(nèi)科常見疾病中醫(yī)診療規(guī)范診療指南2023版
- 《動(dòng)物營養(yǎng)與飼料》課件
- 附表四計(jì)劃開、竣工日期和施工進(jìn)度網(wǎng)絡(luò)圖
- 2023服裝跟單工作總結(jié)
- 兒童哮喘控制測試(C-ACT)
- 福建泉州惠安縣2023-2024學(xué)年數(shù)學(xué)四年級(jí)第一學(xué)期期末質(zhì)量跟蹤監(jiān)視試題含答案
- DL5168-2023年110KV-750KV架空輸電線路施工質(zhì)量檢驗(yàn)及評定規(guī)程
- 門診發(fā)生火災(zāi)應(yīng)急預(yù)案演練建議5篇,門診發(fā)生火災(zāi)的應(yīng)急預(yù)案
- 醫(yī)療廢物轉(zhuǎn)運(yùn)工作制度
- 新編建筑施工扣件式鋼管腳手架安全技術(shù)規(guī)范
- 三年級(jí)下冊小猿口算題1000道
評論
0/150
提交評論