單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的電子密碼鎖設(shè)計(jì)_第1頁
已閱讀1頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  基于單片機(jī)的電子密碼鎖設(shè)計(jì)</p><p>  摘要:隨著電子產(chǎn)品向智能化和微型化的不斷發(fā)展,單片機(jī)已經(jīng)成為電子產(chǎn)品研制和開發(fā)中首選控制器。本文介紹了一種應(yīng)用AT89S52單片機(jī)設(shè)計(jì)的防盜報(bào)警電子密碼鎖系統(tǒng)。經(jīng)實(shí)驗(yàn)驗(yàn)證該系統(tǒng)具有軟硬件設(shè)計(jì)簡單,易于開發(fā),成本較低,安全可靠,操作方便等特點(diǎn),可作為產(chǎn)品進(jìn)行開發(fā),應(yīng)用于住宅、辦公室的保險(xiǎn)箱及檔案柜等需要防盜的場所,有較強(qiáng)的實(shí)用性。</p&g

2、t;<p>  關(guān)鍵詞:電子密碼鎖;AT89S52;設(shè)計(jì)</p><p><b>  目錄</b></p><p><b>  1 引言2</b></p><p><b>  2 硬件設(shè)計(jì)3</b></p><p>  2.1 要求及方案3</p

3、><p>  2.1.1 設(shè)計(jì)要求3</p><p>  2.1.2 方案設(shè)計(jì)3</p><p>  2.2 系統(tǒng)方框圖3</p><p>  2.3 工作原理4</p><p>  2.4 鍵盤輸入模塊5</p><p>  2.5 顯示部分6</p><

4、;p>  2.6 電路復(fù)位部分6</p><p>  2.7 LED顯示部分7</p><p>  2.8 晶振部分8</p><p>  2.9 開鎖部分8</p><p>  3 主要元器件介紹9</p><p>  3.1 主控芯片AT89C529</p><p&

5、gt;  3.1.1 AT89C52性能簡介9</p><p>  3.1.2 AT89C52引角功能說明10</p><p>  3.1.3 AT89C52芯片內(nèi)部結(jié)構(gòu)13</p><p>  3.2 LCD1602顯示器14</p><p>  3.2.1 接口信號說明14</p><p>  3

6、.2.2 主要技術(shù)參數(shù)15</p><p>  3.2.3 基本操作程序15</p><p>  4 系統(tǒng)軟件設(shè)計(jì)16</p><p><b>  5 調(diào)試19</b></p><p><b>  6 總結(jié)22</b></p><p>  7 參考文獻(xiàn)

7、23</p><p><b>  附錄24</b></p><p><b>  1 引言</b></p><p>  在日常生活和工作中,住宅與部門的安全防范、單位的文件檔案、財(cái)務(wù)報(bào)表以及一些個(gè)人資料的保存多以加鎖的辦法來解決。目前門鎖主要用彈子鎖,其鑰匙容易丟失;保險(xiǎn)箱主要用機(jī)械密碼鎖,其結(jié)構(gòu)較為復(fù)雜,制造精度要求高

8、,成本高,且易出現(xiàn)故障,人們常需攜帶多把鑰匙,使用極不方便,且鑰匙丟失后安全性即大打折扣。針對這些鎖具給人們帶來的不便若使用機(jī)械式鑰匙開鎖,為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應(yīng)運(yùn)而生。它的出現(xiàn)為人們的生活帶來了很大的方便,有很廣闊的市場前景。由于電子器件所限,以前開發(fā)的電子密碼鎖,其種類不多,保密性差,最基本的就是只依靠最簡單的模擬電子開關(guān)來實(shí)現(xiàn)的,制作簡單但很不安全,在后為多是基于EDA來實(shí)現(xiàn)的,其電路結(jié)構(gòu)

9、復(fù)雜,電子元件繁多,也有使用早先的20引角的2051系列單片機(jī)來實(shí)現(xiàn)的,但密碼簡單,易破解。隨著電子元件的進(jìn)一步發(fā)展,電子密碼鎖也出現(xiàn)了很多的種類,功能日益強(qiáng)大,使用更加方便,安全保密性更強(qiáng),由以前的單密碼輸入發(fā)展到現(xiàn)在的,密碼加感應(yīng)元件,實(shí)現(xiàn)了真真的電子加密,用戶只有密碼或電子鑰匙中的一樣,是打不開鎖的,隨著電子元件的發(fā)展及人們對保密性需求的提高出現(xiàn)了越</p><p>  出于安全、方便等方面的需要許多電子密

10、碼鎖已相繼問世。但這類產(chǎn)品的特點(diǎn)是針對特定有效卡、指紋或聲音有效,且不能實(shí)現(xiàn)遠(yuǎn)程控制,只能適用于保密要求高且供個(gè)人使用的箱、柜、房間等。由于數(shù)字、字符、圖形圖像、人體生物特征和時(shí)間等要素均可成為鑰匙的電子信息,組合使用這些信息能夠使電子防盜鎖獲得高度的保密性,如防范森嚴(yán)的金庫,需要使用復(fù)合信息密碼的電子防盜鎖,這樣對盜賊而言是“道高一尺、魔高一丈”。組合使用信息也能夠使電子防盜鎖獲得無窮擴(kuò)展的可能,使產(chǎn)品多樣化,對用戶而言是“千挑百選、

11、自得其所”??梢钥闯鼋M合使用電子信息是電子密碼鎖以后發(fā)展的趨勢。</p><p>  本設(shè)計(jì)采用單片機(jī)為主控芯片,結(jié)合外圍電路,組成電子密碼鎖,用戶想要打開鎖,必先通過提供的鍵盤輸入正確的密碼才能將鎖打開,密碼輸入錯(cuò)誤有提示,為提高安全性,當(dāng)密碼輸入錯(cuò)誤三次將報(bào)警。密碼可以由用戶自己修改設(shè)定,鎖打開后才能修改密碼。修改密碼之前必須再次輸入密碼,在輸入新密碼時(shí)候需要二次確認(rèn),以防止誤操作。</p>&

12、lt;p><b>  2 硬件設(shè)計(jì)</b></p><p>  2.1 要求及方案</p><p>  2.1.1 設(shè)計(jì)要求</p><p>  設(shè)計(jì)一款能設(shè)定密碼的電子智能密碼鎖。</p><p>  1、能輸入6位數(shù)字密碼,顯示輸入數(shù)據(jù)個(gè)數(shù),但不顯示密碼,能刪除并重新輸入。</p><

13、p>  2、具有2次輸入確認(rèn)功能。</p><p>  3、具有掉電以后密碼不丟失,3次輸入錯(cuò)誤報(bào)警的功能,給出聲光報(bào)警。</p><p>  2.1.2 方案設(shè)計(jì)</p><p>  本設(shè)計(jì)選用單片機(jī)AT89S52作為本設(shè)計(jì)的核心元件,利用單片機(jī)靈活的編程設(shè)計(jì)和豐富的I/O端口,及其控制的準(zhǔn)確性,實(shí)現(xiàn)基本的密碼鎖功能。在單片機(jī)的外圍電路外接輸入鍵盤用于密碼

14、的輸入和一些功能的控制,外接LCD1602顯示器用于顯示作用。當(dāng)用戶需要開鎖時(shí),先按鍵盤開鎖鍵之后按鍵盤的數(shù)字鍵0-9輸入密碼。密碼輸完后按下確認(rèn)鍵,如果密碼輸入正確則開鎖,不正確顯示密碼錯(cuò)誤重新輸入密碼,當(dāng)三次密碼錯(cuò)誤則發(fā)出報(bào)警;當(dāng)用戶需要修改密碼時(shí),先按下鍵盤設(shè)置鍵后輸入原來的密碼,只有當(dāng)輸入的原密碼正確后才能設(shè)置新密碼。新密碼輸入無誤后按確認(rèn)鍵使新密碼將得到存儲,密碼修改成功。</p><p>  2.2

15、 系統(tǒng)方框圖</p><p>  本設(shè)計(jì)的系統(tǒng)方框圖如圖1,由以上的方案可以知道本系統(tǒng)主要由單片機(jī)、矩陣鍵盤、液晶顯示器和密碼存儲等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進(jìn)行各種功能的實(shí)現(xiàn)。由用戶通過連接單片機(jī)的矩陣鍵盤輸入密碼,后經(jīng)過單片機(jī)對用戶輸入的密碼與自己保存的密碼進(jìn)行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報(bào)警電路控制開鎖還是報(bào)警.</p><p>&

16、lt;b>  圖1 系統(tǒng)方框圖</b></p><p><b>  2.3 工作原理</b></p><p>  本系統(tǒng)共有兩部分構(gòu)成,即硬件部分與軟件部分。其中硬件部分由鍵盤輸入部分、復(fù)位部分、LCD顯示部分、LED顯示部分、晶振部分、開鎖部分組成,軟件部分對應(yīng)的由主程序、初始化程序、LCD顯示程序、鍵盤掃描程序、啟動(dòng)程序、關(guān)閉程序、建功能程序、

17、密碼設(shè)置程序、EEPROM讀寫程序和延時(shí)程序等組成。</p><p>  其原理圖如圖2所示:</p><p><b>  圖2 電路原理圖</b></p><p>  2.4 鍵盤輸入模塊</p><p>  本系統(tǒng)中的鍵盤輸入部分是由16個(gè)小鍵盤拼接而成的,采用的是矩陣式按鍵鍵盤,它由行線和列線組成,也稱行列式鍵盤

18、,按鍵位于行列的交叉點(diǎn)上,密碼鎖的密碼由鍵盤輸入完成,與獨(dú)立式按鍵鍵盤相比,要節(jié)省很多I/O口。本設(shè)計(jì)中使用的這個(gè)4*4鍵盤不但能完成密碼的輸入還能作特別功能鍵使用,比如清空顯示功能等。鍵盤的每個(gè)按鍵功能在程序設(shè)計(jì)中設(shè)置。其大體功能(看鍵盤按鍵上的標(biāo)記)及與單片機(jī)引腳接法如圖3所示:</p><p><b>  圖3 按鍵圖</b></p><p><b>

19、  2.5 顯示部分</b></p><p>  為了提高密碼鎖的密碼顯示效果能力。本設(shè)計(jì)的顯示部分由液晶顯示器LCD1602取代普通的數(shù)碼管來完成。只有按下鍵盤上的開啟按鍵后,顯示器才處于開啟狀態(tài)。同理只有按下關(guān)閉按鍵后顯示器才處于關(guān)閉狀態(tài)。否則顯示器將一直處于初始狀態(tài),當(dāng)需要對密碼鎖進(jìn)行開鎖時(shí),按下鍵盤上的開鎖按鍵后利用鍵盤上的數(shù)字鍵0-9輸入密碼,每按下一個(gè)數(shù)字鍵后在顯示器上顯示一個(gè)*,輸入多

20、少位就顯示多少個(gè)*。當(dāng)密碼輸入完成時(shí),按下確認(rèn)鍵,如果輸入的密碼正確的話, LCD子顯示“RIGHT”,單片機(jī)其中P2.0引角會(huì)輸出低電平,使三極管T2導(dǎo)通,電磁鐵吸合,電子密碼鎖被打開,如果密碼不正確,LCD顯示屏?xí)@示“ERROR”,P2.0輸出的是高電平,電子密碼鎖不能被打開。通過LCD顯示屏,可以清楚的判斷出鎖所處的狀態(tài)。其顯示部分引腳接口如圖4所示:</p><p>  圖4 顯示電路原理圖</p

21、><p>  2.6 電路復(fù)位部分</p><p>  單片機(jī)復(fù)位是使CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作,例如復(fù)位后PC=0000H,使單片機(jī)從第—個(gè)單元取指令。無論是在單片機(jī)剛開始接上電源時(shí),還是斷電后或者發(fā)生故障后都要復(fù)位。在復(fù)位期間(即RST為高電平期間),P0口為高組態(tài),P1-P3口輸出高電平;外部程序存儲器讀選通信號PSEN無效。地址鎖存信號

22、ALE也為高電平。根據(jù)實(shí)際情況選擇如圖4-6所示的復(fù)位電路。該電路在最簡單的復(fù)位電路下增加了手動(dòng)復(fù)位按鍵,在接通電源瞬間,電容C1上的電壓很小,復(fù)位下拉電阻上的電壓接近電源電壓,即RST為高電平,在電容充電的過程中RST端電壓逐漸下降,當(dāng)RST端的電壓小于某一數(shù)值后,CPU脫離復(fù)位狀態(tài),由于電容C1足夠大,可以保證RST高電平有效時(shí)間大于24個(gè)振蕩周期,CPU能夠可靠復(fù)位。增加手動(dòng)復(fù)位按鍵是為了避免死機(jī)時(shí)無法可靠復(fù)位。當(dāng)復(fù)位按鍵按下后電

23、容C1通過R5放電。當(dāng)電容C1放電結(jié)束后,RST端的電位由R5與R6分壓比決定。由于R5<<R6 因此RST為高電平,CPU處于復(fù)位狀態(tài),松手后,電容C1充電,RST端電位下降,CPU脫離復(fù)位狀態(tài)。R5的作用在于限制按鍵按</p><p>  圖5 復(fù)位電路原理圖</p><p>  2.7 LED顯示部分</p><p>  LED顯示部分如圖6所示

24、:</p><p>  圖6 LED顯示部分</p><p>  本系統(tǒng)的LED顯示部分主要由兩個(gè)LED組成,其中D1代表開鎖信號,當(dāng)密碼兩次都正確時(shí),D1會(huì)閃亮一下;D2代表密碼錯(cuò)誤,當(dāng)三次輸入錯(cuò)誤時(shí),D2亮,且上鎖。</p><p><b>  2.8 晶振部分</b></p><p>  AT89C52引腳XT

25、AL1和XTAL2與晶體振蕩器及電容C2、C1按圖4-7所示方式連接。晶振、電容C1/C2及片內(nèi)與非門(作為反饋、放大元件)構(gòu)成了電容三點(diǎn)式振蕩器,振蕩信號頻率與晶振頻率及電容C1、C2的容量有關(guān),但主要由晶振頻率決定,范圍在0~33MHz之間,電容C1、C2取值范圍在5~30pF之間。根據(jù)實(shí)際情況,本設(shè)計(jì)中采用12MHZ做為系統(tǒng)的外部晶振。電容取值為30pF。</p><p>  圖7 晶振電路原理圖</

26、p><p><b>  2.9 開鎖部分</b></p><p>  開鎖控制電路的功能是當(dāng)輸入正確的密碼后將鎖打開。用戶通過鍵盤任意設(shè)置密碼,并儲存在EEPROM中作為鎖碼指令。只有用戶操作鍵盤時(shí),單片機(jī)的電源端才能得到3V電源,否則.單片機(jī)處于節(jié)電工作方式。開鎖步驟如下:首先按下鍵盤上的開鎖按鍵,然后利用鍵盤上的數(shù)字鍵0-9輸入密碼,最后按下確認(rèn)鍵。當(dāng)用戶輸入一密碼

27、后,單片機(jī)自動(dòng)識碼,如果識碼不符,則報(bào)警。只有當(dāng)識碼正確,完成本次開鎖。開鎖以后,單片機(jī)自動(dòng)清除掉由用戶輸人的這個(gè)密碼。</p><p>  3 主要元器件介紹</p><p>  3.1 主控芯片AT89C52</p><p>  AT89C52是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4k Bytes ISP(In-system programmabl

28、e)的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。</p><p>  3.1.1 AT89C52性能簡介</p><p>  AT89

29、C52具有如下特點(diǎn):40個(gè)引腳,4k Bytes Flash片內(nèi)程序存儲器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。</p><p>  此外,AT89S51設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RA

30、M定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。</p><p>  圖8 AT89C52芯片引腳圖</p><p><b>  其主要功能特性:</b></p><p>  兼容MCS

31、-51指令系統(tǒng) 4k可反復(fù)擦寫(>1000次)ISP Flash ROM</p><p>  32個(gè)雙向I/O口 4.5-5.5V工作電壓</p><p>  2個(gè)16位可編程定時(shí)/計(jì)數(shù)器 時(shí)鐘頻率0-33MHz</p><p>  全雙工UART串行中斷口線 128x8 b

32、it內(nèi)部RAM</p><p>  2個(gè)外部中斷源 低功耗空閑和省電模式</p><p>  中斷喚醒省電模式 3級加密位</p><p>  看門狗(WDT)電路 軟件設(shè)置空閑和省電功能</p><p>  靈活的ISP字節(jié)和分頁編程

33、 雙數(shù)據(jù)寄存器指針 </p><p>  可以看出AT89C52提供以下標(biāo)準(zhǔn)功能:4K字節(jié)Flash閃速存儲器,128字節(jié)內(nèi)部RAM,32個(gè)I/O口線,看門狗(WDT),兩個(gè)數(shù)據(jù)指針,兩個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)5向量兩級中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘。同時(shí), AT89S51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,

34、串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式何在RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直接到一個(gè)硬件復(fù)位。</p><p>  3.1.2 AT89C52引角功能說明</p><p><b>  VCC:電源電壓</b></p><p><b>  GND:地</b></p><p> 

35、 P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口,作為輸出口用時(shí),每位能驅(qū)動(dòng)8個(gè)TTL邏輯門電路,對端口寫“1”可作為高阻抗輸入端口。在訪問外部數(shù)據(jù)存儲器或程序存儲器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在Flash編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。</p><p>  P1口:P1是一個(gè)帶內(nèi)部上拉

36、電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號校驗(yàn)期間,P1接收低8位地址。表1為P1口第二功能。</p><p>  表1 P1口第二功能</p><p>  P2口:P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出

37、緩沖級可驅(qū)動(dòng)4個(gè)TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號拉低時(shí)會(huì)輸出一個(gè)電流I。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行:MOVX @Ri 指令)時(shí),P2口線上的內(nèi)(也即特殊功能寄存器,在整個(gè)訪問期間不改變。Flash 編程或校驗(yàn)時(shí),P2也接收高位地址和其它控制信號。</p><p>  P3口:P3口是一組帶有內(nèi)

38、部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對P3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。作輸入端口時(shí),被外部拉低的P3口將用上拉電阻輸出電流I。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,P3口的第二功能如下表2。</p><p>  表2 P3口的第二功能</p><p>  RST:復(fù)位輸入。當(dāng)振蕩工

39、作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期上高電平將使單片機(jī)復(fù)位。WDT益出將使該引腳輸出高電平,設(shè)置SFR AUXR 的 DISRTO 位(地址8EH)可打開或關(guān)閉該功能。DISRTO 位缺省為RESET輸出高電平打開狀態(tài)。</p><p>  ALE/PROG:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ALE仍以時(shí)鐘振蕩頻率的1/6輸出的正脈沖信號

40、,因此它可對外輸出時(shí)鐘或用于定時(shí)目地,要注意的是:第當(dāng)訪問外部數(shù)據(jù)存儲器時(shí)將跳過一個(gè)ALE脈沖。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位禁位后,只有一條MOVX 和MOVC指令A(yù)LE才會(huì)被激活。此外,該引腳伎被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無效。</p><p>  PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng)AT89S

41、51由外部程序存儲器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖。當(dāng)訪問外部數(shù)據(jù)存儲器,高有兩次有效的PSEN信號。</p><p>  EA/VPP:外部訪問允許。欲使CPU公訪問外部程序存儲器(地址0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器中的指令。Fla

42、sh存儲器編程時(shí),該引腳加上+12V的編程電壓Vpp。</p><p>  XTAL1:振蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端。</p><p>  XTAL2:振蕩器反相放大器的輸出端。</p><p>  3.1.3 AT89C52芯片內(nèi)部結(jié)構(gòu)</p><p>  特殊功能寄存器:特殊功能寄存器的片內(nèi)空間分存如下圖3-2所示。這些地址

43、并沒有全部占用,沒有占用的地址不可使用,讀這些地址將得到一個(gè)隨意的數(shù)值。而寫這些地址單元將不能得到預(yù)期的結(jié)果。</p><p>  中斷寄存器:各中斷允許控制位于IE寄存器,5個(gè)中斷源的中斷優(yōu)先級控制位于IP寄存器。</p><p>  雙時(shí)鐘指針寄存器:為方便地訪問內(nèi)部和外部數(shù)據(jù)存儲器,提供了兩個(gè)16位數(shù)據(jù)指針寄存儲器:PD0位于SFR區(qū)塊中的地址82H、83H和DP1位于地址84H、8

44、5H,當(dāng)SFR中的位DPS=0時(shí)選擇DP0,而DPS=1時(shí)選擇DP1。在使用前初始化DPS。</p><p>  電源空閑標(biāo)志:電源空閑標(biāo)志(POF)在特殊功能寄存儲器SFR中PCON的第4位(PCON.4),電源打開時(shí)POF置“1”,它可由軟件設(shè)置睡眠狀態(tài)并不為復(fù)位所影響。</p><p>  存儲器結(jié)構(gòu):MCS-51單片機(jī)內(nèi)核采用程序存儲器和數(shù)據(jù)存儲器空間分開的結(jié)構(gòu),均具有64KB外部

45、程序和數(shù)據(jù)的尋址空間。</p><p>  程序存儲器:如果EA引腳接地(GND),全部程序均執(zhí)行外部存儲器。在AT89S51,假如接至Vcc(電源+),程序首先執(zhí)行從地址0000H-0FFFH(4KB)內(nèi)部程序存儲器,再執(zhí)行地址為1000H-FFFFH(60KB)的外部程序存儲器。</p><p>  數(shù)據(jù)存儲器:在AT89S51的具有128字節(jié)的內(nèi)部RAM,這128字節(jié)可利用直接或間接

46、尋址方式訪問,堆棧操作可利用間接尋址方式進(jìn)行,128字節(jié)均可設(shè)置為堆棧區(qū)空間。</p><p>  看門狗定時(shí)器(WDT):WDT是為了解決CPU程序運(yùn)行時(shí)可能進(jìn)入混亂或死循環(huán)而設(shè)置,它由一個(gè)14bit計(jì)數(shù)器和看狗復(fù)位SFR(WDTRST)構(gòu)成。外部復(fù)位時(shí),WDT默認(rèn)為關(guān)閉狀態(tài),要打開WDT,必按順序?qū)?1H和0E1H寫到WDTRST寄存器,當(dāng)啟動(dòng)了WDT,它會(huì)隨晶體振蕩器在每個(gè)機(jī)器周期計(jì)數(shù),除硬件復(fù)位或WDT溢

47、出復(fù)位外沒有其它方法關(guān)閉WDT,當(dāng)WDT溢出,將使RST引腳輸出高電平的復(fù)位脈沖。</p><p>  3.2 LCD1602顯示器</p><p>  現(xiàn)在的字符型液晶模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件了。1602型LCD顯示模塊具有體積小,功耗低,顯示內(nèi)容豐富等特點(diǎn)。1602型LCD可以顯示2行16個(gè)字符,有8位數(shù)據(jù)總線D0~D7和RS,R/W,EN三個(gè)控制端口,工作電壓

48、為5V,并且具有字符對比度調(diào)節(jié)和背光功能。</p><p>  3.2.1 接口信號說明</p><p>  1602型LCD的接口信號說明如表3所示:</p><p>  表3 1602型LCD的接口信號說明</p><p>  3.2.2 主要技術(shù)參數(shù)</p><p>  1602型LCD的主要技術(shù)參數(shù)如下表所示

49、:</p><p>  表4 1602型LCD的主要技術(shù)參數(shù)</p><p>  3.2.3 基本操作程序</p><p>  讀狀態(tài):輸入:RS=L,RW=L, E=H 輸出:D0~D7=狀態(tài)字</p><p>  讀數(shù)據(jù):輸入:RS=H,RW=H, E=H

50、輸出:無</p><p>  寫指令:輸入:RS=L,RW=L, D0~D7=指令碼,E=高脈沖 輸出:D0~D7=數(shù)據(jù)</p><p>  寫數(shù)據(jù):輸入:RS=H,RW=L, D0~D7=數(shù)據(jù), E=高脈沖 輸出:無</p><p><b>  4 系統(tǒng)軟件設(shè)計(jì)</b></p><p>  本系統(tǒng)軟件設(shè)計(jì)由主程

51、序、初始化程序、LCD顯示程序、鍵盤掃描程序、鍵功能程序、密碼設(shè)置程序、EEPROM讀寫程序和延時(shí)程序等組成。主要程序設(shè)計(jì)流程圖如下所示:</p><p><b>  圖9 主程序流程圖</b></p><p>  圖10 密碼設(shè)置流程圖</p><p>  圖11 開鎖流程圖</p><p><b>  

52、5 調(diào)試</b></p><p><b>  調(diào)試過程如下:</b></p><p>  首先把密碼鎖接通電源,使之運(yùn)行程序,從而置入初始密碼,其模擬電路圖如圖12所示,當(dāng)前狀態(tài)為初始狀態(tài),這時(shí)的初始密碼根據(jù)程序可作為:012345,此時(shí)從鍵盤上依次按下代表0,1,2,3,4,5的按鍵在按下代表確認(rèn)的鍵,當(dāng)輸入密碼正確時(shí)模擬圖如圖13所示,再次輸入密碼后

53、確認(rèn)開鎖,綠燈(D1)亮起,其模擬圖如圖14所示。若輸入密碼錯(cuò)誤時(shí),其模擬圖如圖15所示,當(dāng)三次都輸入錯(cuò)誤密碼后,紅燈(D2)亮起,其模擬圖如圖16所示。</p><p>  模擬電路圖12 (鍵盤掃描,LCD開)</p><p>  模擬電路圖13 (密碼第一次輸入正確)</p><p>  模擬電路圖14 (綠燈(D1)亮起,開鎖狀態(tài))</p>&

54、lt;p>  模擬電路圖15 (輸入錯(cuò)誤密碼)</p><p>  模擬電路圖16 (三次輸入都錯(cuò),紅燈(D2)亮起,上鎖狀態(tài))</p><p><b>  6 總結(jié)</b></p><p>  本設(shè)計(jì)從經(jīng)濟(jì)實(shí)用的角度出發(fā),采用美國Atmel公司的單片機(jī)AT89C52作為主控芯片與數(shù)據(jù)存儲器單元,結(jié)合外圍的鍵盤輸入、顯示、報(bào)警、開鎖等電

55、路并用匯編編寫主控芯片的控制程序,研制了一款可以多次更改密碼具有報(bào)警功能的電子密碼鎖。設(shè)計(jì)完全可行可以達(dá)到設(shè)計(jì)目地。使用單片機(jī)制作的電子密碼鎖具有軟硬件設(shè)計(jì)簡單,易于開發(fā),成本較低,安全可靠,操作方便等特點(diǎn),可應(yīng)用于住宅、辦公室的保險(xiǎn)箱及檔案柜等需要防盜的場所,有一定的實(shí)用性。該電路設(shè)計(jì)還具有按鍵有效提示,輸入錯(cuò)誤提示,控制開鎖電平,控制報(bào)警電路,修改密碼等多種功能??稍谝馔庑姑艿那闆r下隨時(shí)修改密碼。保密性強(qiáng),靈活性高,特別適用于家庭、

56、辦公室、學(xué)生宿舍及賓館等場所。</p><p><b>  7 參考文獻(xiàn)</b></p><p>  [1] 祖龍起,劉仁杰.一種新型可編程密碼鎖[J].大連輕工業(yè)學(xué)院學(xué)報(bào),2002. </p><p>  [2] 李瀚蓀.電路分析基礎(chǔ)[M],北京:高等教育出版社1991.</p><p>  [3] 童詩白,華成英,

57、模擬電子技術(shù)基礎(chǔ)[M],北京:高等教育出版社,2000.</p><p>  [4] 王千.實(shí)用電子電路大全[M],電子工業(yè)出版社,2001,p101.</p><p>  [5] 何立民.單片機(jī)應(yīng)用技術(shù)選編[M],北京:北京航空大學(xué)出版社,1998.</p><p>  [6] 李華.MCS-51系列單片機(jī)使用接口技術(shù)[M],北京航空航天大學(xué)出版社,1993.&l

58、t;/p><p>  [7] 彭為.單片機(jī)典型系統(tǒng)設(shè)計(jì)實(shí)例精講[M],北京:電子工業(yè)出版社,2006.</p><p>  [8] 潘永雄.新編單片機(jī)原理與應(yīng)用[M],西安:西安電子科技大學(xué)出版社,2003.</p><p>  [9] 董繼成.一種新型安全的單片機(jī)密碼鎖[J].電子技術(shù),2004. </p><p>  [10] 祖龍起,劉仁杰

59、,孫乃凌.一種新穎的電子密碼鎖[J].電子世界,2001.</p><p>  [11] 李明喜.新型電子密碼鎖的設(shè)計(jì)[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)新,2004. </p><p>  [12] 楊茂濤.一種電子密碼鎖的實(shí)現(xiàn)[J].福建電腦,2004. </p><p><b>  附錄</b></p><p><b&g

60、t;  主程序:</b></p><p>  #include<reg51.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  uchar jian[16]={0xe7,0xee,0xde,0xbe

61、,0xed,0xdd,0xbd,0xeb,0xdb,0xbb,0x7e,0x7d,0x7b,0x77,0xb7,0xd7};</p><p>  uchar Users[6]={0,1,2,3,4,5}; //用戶密碼</p><p>  uchar Fu_hao=0; //符號輸出控制位</p><p>  uchar U_Interrupt

62、=0; //中斷標(biāo)志位 </p><p>  uchar Txet=0;</p><p>  uchar timer_1=0;</p><p>  uchar code table4[]="Is exiting !";</p><p>  uchar code table7[]="input new c

63、ode";</p><p>  uchar code table12[]="Time is too long";</p><p>  sbit lcden=P3^4;</p><p>  sbit lcdrs=P3^5;</p><p>  sbit Warning=P3^1; //報(bào)警指示燈</p>

64、;<p>  sbit Lock=P3^0; //開鎖指示燈</p><p>  void Delay(uint z) </p><p><b>  {</b></p><p><b>  uint x,y;</b></p><p>  for(x=z;x>0;x--

65、)</p><p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p>  void write_com(uchar com) //LCD16002控制指令</p><p><b>  {</b></p><p>&

66、lt;b>  lcdrs=0;</b></p><p>  P0=com; </p><p><b>  Delay(5);</b></p><p><b>  lcden=1;</b></p><p><b>  Delay(5);</b></p&

67、gt;<p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  void write_data(uchar date) //LCD1602輸出指令</p><p><b>  {</b></p><p><

68、b>  lcdrs=1;</b></p><p><b>  P0=date;</b></p><p><b>  Delay(5);</b></p><p><b>  lcden=1;</b></p><p><b>  Delay(5);<

69、;/b></p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  void init() //LCD1602初始化</p><p><b>  {</b></p>&l

70、t;p><b>  lcden=0;</b></p><p>  write_com(0x38);</p><p>  write_com(0x0c);</p><p>  write_com(0x06);</p><p>  write_com(0x01);</p><p>  write

71、_com(0x80);</p><p><b>  }</b></p><p>  void Xian_shi(uchar b)</p><p><b>  { </b></p><p><b>  uchar i;</b></p><p><

72、;b>  switch(b)</b></p><p><b>  {</b></p><p><b>  case 0:{</b></p><p>  write_com(0x80+0x4f-Fu_hao);</p><p>  write_data('*');&l

73、t;/p><p><b>  Fu_hao++;</b></p><p><b>  };break;</b></p><p>  case 1:{ </p><p>  for(i=0;i<16;i++)</p><p><b>  {</b>&l

74、t;/p><p>  write_com(0x80+0x40+i);</p><p>  write_data(' '); //0x20</p><p><b>  Delay(2);</b></p><p><b>  }</b></p><p><b&g

75、t;  Fu_hao=0;</b></p><p><b>  };break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  uchar keyscan(void) //一次掃描,有鍵按下才跳出&l

76、t;/p><p><b>  { </b></p><p>  uchar k,i,j,m,t;</p><p><b>  while(1)</b></p><p><b>  { </b></p><p><b>  P1=0xff

77、;</b></p><p><b>  i=0xfe;</b></p><p>  if(U_Interrupt==1) return 20;</p><p>  for(j=0;j<4;j++)</p><p><b>  {</b></p><p>&

78、lt;b>  P1=i;</b></p><p>  k=P1&0xf0;</p><p>  if(k!=0xf0) </p><p><b>  {</b></p><p><b>  Delay(5);</b></p><p>  if(k!=

79、0xf0)</p><p><b>  {</b></p><p>  t=k|(i&0x0f);</p><p>  for(m=0;m<16;m++) //哪個(gè)鍵按下 </p><p>  if(jian[m]==t) break;</p><p>  while(k!

80、=0xf0)</p><p><b>  {</b></p><p><b>  k=P1;</b></p><p>  k=k&0xf0;</p><p><b>  }</b></p><p><b>  Delay(5);<

81、;/b></p><p>  while(k!=0xf0)</p><p><b>  {</b></p><p><b>  k=P1;</b></p><p>  k=k&0xf0;</p><p><b>  }</b></p

82、><p>  return m; //編譯鍵值</p><p><b>  }</b></p><p><b>  }</b></p><p>  i=(i<<1)|0x01;</p><p><b>  }</b></p>

83、<p><b>  }</b></p><p><b>  }</b></p><p>  void She_zhi(void) </p><p><b>  { </b></p><p>  uc

84、har New,Wei,Zhi,bb[6],cc[6],i,k,j;</p><p>  uchar code table8[]="input new again";</p><p>  uchar code table9[]="Successfully!";</p><p>  uchar code table10[]

85、="Input is error!";</p><p>  uchar code table11[]="put enter again";</p><p><b>  New=0;</b></p><p><b>  Wei=0;</b></p><p>&

86、lt;b>  Fu_hao=0;</b></p><p>  for(k=0;k<6;k++)</p><p><b>  {</b></p><p><b>  bb[k]=0;</b></p><p><b>  cc[k]=0;</b></p

87、><p><b>  }</b></p><p>  write_com(1);</p><p>  for(j=0;j<14;j++)</p><p>  write_data(table7[j]); //清屏顯示table7[]="input new code"</p><

88、;p><b>  while(1)</b></p><p><b>  { </b></p><p>  Zhi=keyscan(); </p><p>  if(Zhi>=0&&Zhi<=9) //0~9密碼按鍵</p><p><b>

89、;  { </b></p><p>  Xian_shi(0); //顯示*號</p><p>  if(New==0)</p><p>  bb[Wei++]=Zhi; //存輸入數(shù)值</p><p>  if(New==1)</p><p>  cc[Wei++]=Zhi;</p

90、><p><b>  continue;</b></p><p><b>  }</b></p><p>  if(Zhi==15) //刪除鍵按下</p><p><b>  {</b></p><p>  Xian_shi(1); /

91、/清除*號</p><p>  Wei=0; //重新存輸入數(shù)值</p><p><b>  Fu_hao=0;</b></p><p><b>  continue;</b></p><p><b>  }</b></p><p>

92、  if(Zhi==10||Zhi==11||Zhi==12) continue;</p><p>  if(Zhi==14) //直接按下退出鍵退出</p><p><b>  {</b></p><p><b>  Txet=0;</b></p><p><b>  TR

93、1=0;</b></p><p>  write_com(1);</p><p>  for(j=0;j<12;j++)</p><p>  write_data(table4[j]);//顯示"Is exiting" </p><p&g

94、t;  Delay(2000); //延遲2s后清屏</p><p>  write_com(1);</p><p>  Wei=0; //下次重新存數(shù)值</p><p>  Fu_hao=0; //符號位歸零,以便下一次輸入顯示</p><p><b>  return;</b>

95、</p><p>  } </p><p>  if(Zhi==13) //確定鍵按下</p><p><b>  { </b></p><p>  New++; </p><p>  if(New==1) //第一次輸入完新密

96、碼后,在輸入一次</p><p><b>  { </b></p><p>  write_com(1);</p><p>  for(j=0;j<15;j++)</p><p>  write_data(table8[j]); //清屏顯示table8[]="input new again&qu

97、ot; </p><p><b>  Wei=0;</b></p><p><b>  Fu_hao=0;</b></p><p><b>  continue;</b></p><p><b>  }</b>&l

98、t;/p><p>  if(New==2) //第二次輸入完成,比較兩次是否一樣</p><p><b>  { </b></p><p>  for(k=0;k<6;k++)</p><p>  if(bb[k]!=cc[k]) break;</p><p>  if(k>

99、=6) //兩次輸入一樣</p><p><b>  { </b></p><p>  write_com(1);</p><p>  for(j=0;j<13;j++)</p><p>  write_data(table9[j]);//請屏顯示table9[]="Successfully

100、!" </p><p>  for(j=0;j<6;j++) </p><p>  Users[j]=bb[j]; //更改用戶密碼 </p><p>  Delay(2000);</p><p>  Txet=0; //更改密碼成功,暫停中斷,重新計(jì)時(shí)</p>

101、<p><b>  TR1=0;</b></p><p>  write_com(1);</p><p>  for(j=0;j<12;j++)</p><p>  write_data(table4[j]); //顯示"Is exiting"

102、</p><p>  Delay(2000); </p><p><b>  Wei=0; </b></p><p>  Fu_hao=0; </p><p>  write_com(1);</p><p>  return; //跳出循環(huán) </p>

103、<p><b>  } </b></p><p>  if(k<6) //兩次輸入新密碼不一樣</p><p><b>  {</b></p><p>  write_com(1);</p><p>  for(j=0;j<15;j++)</p><p

104、>  write_data(table10[j]);//第一行顯示table10[]="Input is error!" </p><p>  write_com(0x80+0x40);</p><p>  for(j=0;j<15;j++) //第二行顯示able11[]="put enter again"

105、;</p><p>  write_data(table11[j]);</p><p>  i=keyscan(); </p><p>  if(i==14) // 退出鍵按下,跳出循環(huán)</p><p><

106、;b>  {</b></p><p><b>  Txet=0;</b></p><p><b>  TR1=0;</b></p><p>  write_com(1);</p><p>  for(j=0;j<12;j++)</p><p>  wr

107、ite_data(table4[j]); //顯示"Is exiting" </p><p>  Delay(2000); </p><p>  write_com(1);</p><p><b>  Wei=0;</b></p><p&

108、gt;<b>  Fu_hao=0;</b></p><p><b>  return ;</b></p><p><b>  }</b></p><p>  if(i==13) //確定鍵按下,繼續(xù)輸入密碼</p><p><b>  { </b&

109、gt;</p><p>  write_com(1);</p><p>  for(j=0;j<14;j++)</p><p>  write_data(table7[j]); //清屏顯示table7[]="input new code" </p><p>  Wei=0;

110、 //重新存鍵值</p><p>  Fu_hao=0; //重新輸出符號 </p><p><b>  New=0;</b></p><p><b>  continue;</b></p><p><b>  }</b></p>

111、;<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>&l

112、t;p>  uchar Identify() </p><p><b>  {</b></p><p>  uchar Times,Wei,Zhi,aa[6],bb[6],i,j,k;</p><p>  uchar code table1[]="C

113、ode is wrong !";</p><p>  uchar code table3[]="Please input";</p><p>  uchar code table5[]="Please Wait";</p><p>  uchar code table6[]="Input again ?&q

114、uot;;</p><p>  uchar code table13[]="Warning!";</p><p>  uchar right=0;</p><p>  if(timer_1==1) TR1=0;</p><p>  else TR1=1;</p><p>  for(k=0;k<

115、;6;k++) </p><p><b>  {</b></p><p>  aa[k]=0;//初始化</p><p><b>  bb[6]=0;</b></p><p><b>  }</b></p><p>  Times=0;

116、 //輸入密碼錯(cuò)誤次數(shù)</p><p>  Wei=0; //已存入了的密碼的個(gè)數(shù)</p><p><b>  while(1)</b></p><p><b>  { </b></p><p>  Zhi=keyscan();

117、 </p><p>  if(Zhi==20) //產(chǎn)生了中斷信號</p><p><b>  {</b></p><p>  U_Interrupt=0;</p><p><b>  right=0;</b></p><p>&

118、lt;b>  return 0;</b></p><p><b>  }</b></p><p>  if(Zhi>=0&&Zhi<=9) //0~9密碼按鍵</p><p><b>  {</b></p><p>  Xian_shi(0);

119、 //顯示*號</p><p>  if(right==0) aa[Wei++]=Zhi; //第一次存輸入數(shù)值</p><p>  if(right==1) bb[Wei++]=Zhi; //第二次</p><p><b>  continue;</b></p><p><b>  }<

120、;/b></p><p>  if(Zhi==15) //刪除鍵按下</p><p><b>  {</b></p><p>  Xian_shi(1); //清除*號</p><p>  Wei=0; //重新存輸入數(shù)值</p><p><b&

121、gt;  continue;</b></p><p><b>  }</b></p><p>  if(Zhi==10||Zhi==11||Zhi==12) continue ;</p><p>  if(Zhi==14) //直接按下退出鍵退出</p><p><b>  {<

122、/b></p><p>  Txet=0;//暫停中斷,下次重新計(jì)時(shí)</p><p><b>  TR1=0;</b></p><p>  write_com(1); </p><p>  for(i=0;i<12

123、;i++)</p><p>  write_data(table4[i]); //清屏顯示"Is exiting!"</p><p>  Delay(2000); ////延遲1s后清屏</p><p>  write_com(1);</p><p><b>  right=0;</b><

124、;/p><p><b>  return 0;</b></p><p><b>  } </b></p><p>  if(Zhi==13) //確定鍵按下</p><p><b>  {</b></p><p>  write_com(1);&l

125、t;/p><p>  for(i=0;i<11;i++)</p><p>  write_data(table5[i]);//清屏顯示"Please Wait </p><p>  Delay(1000);</p><p>  if(right==0)</p><p>&l

126、t;b>  {</b></p><p>  for(k=0;k<6;k++)</p><p>  if(aa[k]!=Users[k]) break;</p><p><b>  }</b></p><p>  if(right==1)</p><p><b> 

127、 {</b></p><p>  for(k=0;k<6;k++)</p><p>  if(bb[k]!=Users[k]) break;</p><p><b>  }</b></p><p>  if(k<6) //密碼錯(cuò)誤</p><p

128、><b>  {</b></p><p><b>  Times++;</b></p><p>  if(Times==3) //輸入錯(cuò)誤達(dá)到三次</p><p><b>  { </b></p><p><b>  Txet=0;</b><

129、;/p><p><b>  TR1=0;</b></p><p>  write_com(1);</p><p>  write_com(0x80+4);</p><p>  for(i=0;i<8;i++)</p><p>  write_data(table13[i]); //清屏顯示W(wǎng)a

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論