單片機-密碼鎖課程設計_第1頁
已閱讀1頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  單片機原理及系統(tǒng)課程設計</p><p><b>  1 引言</b></p><p>  電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關的閉合,完成開鎖、閉鎖任務的電子產品。它的種類很多,有簡易的電路產品,也有基于芯片的性價比較高的產品?,F在應用較廣的電子密碼鎖是以芯片為核心,通過編程來實現的。其性能和安全性已大大超過了機

2、械鎖。其在生活的各個方面均有應用,前景十分廣闊。其特點如下:</p><p>  (1) 保密性好,編碼量多,遠遠大于彈子鎖。隨機開鎖成功率幾乎為零;</p><p>  (2) 密碼可變,用戶可以隨時更改密碼,防止密碼被盜,同時也可以避免因人員的更替而使鎖的密級下降;</p><p>  (3) 誤碼輸入保護,當輸入密碼多次錯誤時,報警系統(tǒng)自動啟動;</p&

3、gt;<p>  (4) 無活動零件,不會磨損,壽命長;</p><p>  (5) 使用靈活性好,不像機械鎖必須佩帶鑰匙才能開鎖。</p><p><b>  2 設計方案及原理</b></p><p>  2.1 本設計所要實現的目標</p><p>  設計一種單片機控制的密碼鎖,具有按鍵有效指示、解

4、碼有效指示、控制開鎖電平、控制報警、密碼修改等功能。8位十進制密碼共一億組不重復,保密性強。該密碼鎖要實現一下功能:</p><p>  (1) 鎖的初始狀態(tài)為“鎖合”指示燈亮。輸入初始密碼“0、1、2、3、4、5、6、7”,每輸入一位,“按鍵有效”指示燈亮約半秒鐘,輸完8位按確認鍵,鎖打開,“鎖開”指示燈亮;</p><p>  (2) 按“上鎖”鍵,鎖又重新上鎖,“鎖合”指示燈亮;&l

5、t;/p><p>  (3) “鎖開”狀態(tài)下,可輸入新密碼,可重復修改密碼;</p><p>  (4) 如果輸入密碼錯誤,“錯誤指示”燈亮約半秒鐘。可重新輸入密碼;</p><p>  (5) 輸入密碼錯誤超過3次,蜂鳴器啟動發(fā)出報警,同時“錯誤”指示燈常亮。</p><p><b>  2.2 設計思路</b></

6、p><p>  對于電子密碼鎖的設計,需要解決幾個問題:鍵盤輸入、數碼管顯示、單片機電路、密碼比較、修改密碼等。其中最主要的就是解決掉電保存以及修改密碼的問題。先寫一個循環(huán)寫入8個初始密碼到芯片內部EEPROM程序,先下載程序寫入初始密碼,此時EEPROM已存有初始密碼,再把密碼鎖程序下載到單片機,運行電子密碼鎖。</p><p>  本設計主要由單片機、矩陣鍵盤、液晶顯示器和密碼存儲等部分組

7、成。其中</p><p>  矩陣鍵盤用于輸入數字密碼和進行各種功能的實現。由用戶通過連接單片機的矩陣鍵盤輸入密碼,后經過單片機對用戶輸入的密碼與自己保存的密碼進行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報警電路控制開鎖還是報警,實際使用的是單片機P1.2和P1.1來控制鎖合和鎖開LED燈的狀態(tài),P0口用于電子顯示屏來顯示提示語句和密碼輸入按鍵。 </p><p>

8、;  本系統(tǒng)共有兩部分構成,即硬件部分與軟件部分。</p><p><b>  3 硬件設計</b></p><p>  硬件部分由鍵盤輸入部分、密碼存儲部分、復位部分、晶振部分、顯示部分、報警部分、開鎖部分組成。</p><p>  3.1 鍵盤掃描電路</p><p>  鍵盤接成4*4的矩陣鍵盤,行線為LD0-LD

9、3分別接P2口的P0.0-P0.3,列線為HD0-HD3分別接P2口的P0.7-P0.4。當哪一行的有鍵按下,則相應行的“按鍵有效”指示燈亮一下,其余行所對應的燈不亮。P2初始時P2口第四位為低電平,高四位為高電平,當哪一行有鍵按下,則所對應的行和列對應的口變?yōu)榈碗娖剑瑢⒏臑閽呙璧絾纹瑱C中。鍵盤掃描電路如圖3.1所示。</p><p>  圖3.1 鍵盤掃描電路</p><p><b

10、>  3.2 晶振電路</b></p><p>  80C31引腳XTAL1和XTAL2與晶體振蕩器及電容C2/C1按圖3.2所示方式連接。晶振、電容C1/C2振蕩器,振蕩信號頻率與晶振頻率及電容C1/C2的容量有關,但主要由晶振頻率決定,范圍在0~33MHz之間,電容C1/C2取值范圍在5~30pF之間。根據實際情況,本設計中采用1MHZ做為系統(tǒng)的外部晶振。電容取值為30pF。晶振電路如圖3.

11、2所示。</p><p><b>  圖3.2 晶振電路</b></p><p><b>  3.3 復位電路</b></p><p>  上電復位電路如圖3.3所示。</p><p><b>  圖3.3 復位電路</b></p><p><b&

12、gt;  3.4 顯示部分</b></p><p>  顯示電路是利用LM016L系列的LCD顯示屏,可以雙行顯示。其D0-D7與P0口相接,并且給P0口外接上拉電阻。LCD顯示電路如圖3.4所示。</p><p>  圖3.4 LCD顯示密碼電路</p><p><b>  3.5 報警電路</b></p><

13、p>  報警電路是利用SPEAKER和NPN型三極管構成,同時給蜂鳴器并聯一個發(fā)光二級管,當P1.0口輸出為高電平時,NPN三極管導通,蜂鳴器發(fā)聲,“錯誤”指示燈亮。報警電路如圖3.5所示。</p><p><b>  圖3.5 報警電路</b></p><p>  3.6 電路總體結構及布局</p><p>  該設計的電路總體結構及布

14、局如圖3.6所示。</p><p>  圖3.6 電路總體結構及布局</p><p><b>  4 軟件設計</b></p><p>  軟件部分由主程序、初始化程序、LCD顯示程序、鍵盤掃描程序、功能程序、密碼設置程序、EEPROM讀寫程序和延時程序等組成??偭鞒虉D如圖4.1所示。</p><p>  圖4.1 程序

15、流程圖</p><p><b>  具體程序見附錄。</b></p><p>  5 Proteus仿真結果</p><p>  當開啟開始仿真時,LCD顯示屏會顯示“選擇A為設置密碼,選擇B為開鎖”,同時“鎖合”指示燈(紅燈D1)閃爍。開始仿真圖如圖5.1所示。</p><p>  圖5.1 開始仿真圖</p&g

16、t;<p>  當按下A或B時會提示輸入密碼,按下每一個鍵都會輸出“*”提示。其仿真結果如圖5.2所示。</p><p>  圖5.2 提示輸入密碼界面</p><p>  當輸入密碼正確時會顯示“PASSWORD OK!!!”字樣,同時“錯誤”指示燈(綠燈D3亮)。其仿真圖如圖5.3所示。</p><p>  圖5.3 輸入密碼正確顯示界面</

17、p><p>  當輸入密碼錯誤時,LCD顯示屏會顯示“PASSWORD ERROR!”。其仿真圖如圖5.4所示。</p><p>  圖5.4 當輸入密碼錯誤時顯示界面</p><p><b>  6 總結</b></p><p>  本設計是基于單片機的多功能密碼鎖設計。在設計過程中,首先是確立要設計的目標及電子密碼鎖要實

18、現的功能,該如何通過軟硬件來實現。接下來是根據目標來搭建電路圖,設計各功能模塊要實現的功能,比如報警,LED燈的顯示控制,4*4矩陣鍵盤的搭</p><p>  建。接著就要通過編程來實現各模塊功能,比如輸入密碼,輸出顯示,鍵盤掃描程序,存儲程序等等。最后就是調試改錯,下載仿真。</p><p>  本設計最后實現了上面所提到的基本功能外,另外增加了LCD顯示屏,開始時有提示選擇,問<

19、;/p><p>  執(zhí)行什么功能,到底是設置密碼呢還是開鎖。當進入任何一個界面都會出現提示信息,比如‘PASSWORD OK!!!’,‘INPUT AGAIN!’,‘SET PASSWORD’等等。當每次輸入時都會顯示“*”提示。當輸入密碼錯誤超過三次時就會直接鎖死,即使按下功能復位鍵也不會開鎖,這樣直接降低了盜竊的幾率。另外,在修改密碼時會提示先輸入原密碼,再輸兩次新密碼,防止用戶該密碼是按錯鍵,極大地提高了密碼鎖

20、的可靠性。本設計輸入的密碼是8位的,共有一億組不重復密碼,增加了密碼的安全性。</p><p><b>  本設計還</b></p><p><b>  附錄 源程序</b></p><p>  EN BIT P3.0</p><p>  RW BIT P3.1</p><p&

21、gt;  RS BIT P3.2 </p><p>  DISPLAY EQU P0</p><p>  SOUNDER BIT P1.1</p><p>  LED BIT P1.2</p><p>  OPEN BIT P1.1</p><p>  RETURNBIT BIT 20H.1</p>&

22、lt;p><b>  ORG 0000H</b></p><p>  LJMP START</p><p><b>  ORG 000BH</b></p><p>  LJMP INTERMIT_T0</p><p><b>  ORG 001BH</b></p&g

23、t;<p>  LJMP INTERMIT_T1</p><p><b>  ORG 0030H</b></p><p>  START: MOV SP,#60H</p><p>  LCALL SYS_INITIAL</p><p><b>  ;主程序</b></p>

24、<p>  MAIN0: LCALL STRAT_DISPLAY</p><p>  MAIN: MOV 52H,#0 ;判斷輸入錯誤次數儲存地址</p><p><b>  SETB LED</b></p><p><b>  SETB TR0</b></p>&l

25、t;p><b>  LCALL KEY</b></p><p>  CPL SOUNDER</p><p>  MOV R5,#10</p><p>  RETURN_T1:</p><p><b>  POP PSW</b></p><p><b>  PO

26、P ACC</b></p><p><b>  RETI</b></p><p>  KEY: CALL KS ;鍵盤掃描</p><p><b>  JNZ K1</b></p><p><b>  JMP KEY</b&g

27、t;</p><p>  K1: CALL DELAY</p><p><b>  CALL KS</b></p><p><b>  JNZ K2</b></p><p><b>  JMP KEY</b></p><p>  K2: CL

28、R TR0</p><p><b>  CLR LED</b></p><p>  MOV R2,#0FEH</p><p>  MOV R6,#00H</p><p>  K3: MOV A,R2</p><p><b>  MOV P2,A</b></p>

29、;<p><b>  MOV A,P2</b></p><p>  JB ACC.4,L1</p><p><b>  MOV A,#0</b></p><p><b>  LJMP LK</b></p><p>  L1: JB ACC.5,L2</

30、p><p><b>  MOV A,#4</b></p><p><b>  LJMP LK</b></p><p>  L2: JB ACC.6,L3</p><p><b>  MOV A,#8</b></p><p><b>  LJMP

31、 LK</b></p><p>  L3: JB ACC.7,NEXT_KEY</p><p><b>  MOV A,#12</b></p><p>  LK: ADD A,R6</p><p><b>  MOV R6,A</b></p><p> 

32、 K4: CALL KS</p><p><b>  JNZ K4</b></p><p><b>  MOV A,R6</b></p><p>  MOV DPTR,#TABLE0</p><p>  MOVC A,@A+DPTR</p><p>  MOV 50H,A

33、 ;查表取值存入50h,保護鍵值</p><p><b>  RET</b></p><p><b>  NEXT_KEY:</b></p><p><b>  INC R6</b></p><p><b>  MOV A,R2

34、</b></p><p>  JNB ACC.7,KEY</p><p><b>  RL A</b></p><p><b>  MOV R2,A</b></p><p><b>  JMP K3</b></p><p>  KS: M

35、OV P2,#0F0H</p><p><b>  MOV A,P2</b></p><p>  XRL A,#0F0H</p><p><b>  RET</b></p><p><b>  ;修改密碼程序</b></p><p>  CHANGE_K

36、EY:</p><p>  CALL CLEAR_DISPLAY</p><p>  MOV DPTR,#TABLE4</p><p>  CALL INPUT_HINT</p><p>  MOV R0,#40H</p><p>  CALL CHANGE</p><p>  JBC RETU

37、RNBIT,CHANGE_KEY ;先輸入原密碼完畢</p><p><b>  MOV R4,#8</b></p><p>  MOV R0,#40H</p><p>  MOV R1,#32H</p><p>  INPUT_COMPERE:</p><p><b>  MOV

38、 A,@R0</b></p><p><b>  XRL A,@R1</b></p><p>  JNZ INPUT_ERROR</p><p><b>  INC R0</b></p><p><b>  INC R1</b></p><p&g

39、t;<b>  NOP</b></p><p><b>  NOP</b></p><p>  DJNZ R4,INPUT_COMPERE</p><p><b>  ;驗證輸入密碼完畢</b></p><p>  JMP CHANGE_KEY0</p><

40、p>  INPUT_ERROR:</p><p>  SETB SOUNDER</p><p><b>  SETB LED</b></p><p>  CALL CLEAR_DISPLAY</p><p>  MOV DPTR,#TABLE5</p><p>  CALL INPUT_HI

41、NT</p><p>  CALL DELAY1_15S</p><p>  CLR SOUNDER</p><p><b>  CLR LED</b></p><p><b>  INC 52H</b></p><p><b>  MOV A,52H</b&

42、gt;</p><p>  CJNE A,#3,CHANGE_KEY</p><p><b>  SJMP $</b></p><p>  ;輸入密碼錯誤次數超過3次,鎖死</p><p>  CHANGE_KEY0:</p><p>  CALL CLEAR_DISPLAY</p>

43、<p>  MOV DPTR,#TABLE2</p><p>  CALL INPUT_HINT</p><p>  MOV R0,#40H</p><p>  CALL CHANGE</p><p>  JBC RETURNBIT,CHANGE_KEY ;第一次輸入新密碼完畢</p><p>  CA

44、LL CLEAR_DISPLAY</p><p>  MOV DPTR,#TABLE3</p><p>  CALL INPUT_HINT</p><p>  CALL DELAY1_15S ;顯示再次輸入新密碼完畢</p><p>  MOV DPTR,#TABLE4</p><p>  C

45、ALL INPUT_HINT</p><p>  MOV R0,#48H</p><p>  CALL CHANGE</p><p>  JBC RETURNBIT,CHANGE_KEY ;第二次輸入新密碼完畢</p><p><b>  MOV R4,#7</b></p><p>  MOV

46、 R0,#40H</p><p>  MOV R1,#48H</p><p>  SET_COMPERE:</p><p><b>  MOV A,@R0</b></p><p><b>  XRL A,@R1</b></p><p>  JNZ SET_ERROR</

47、p><p><b>  INC R0</b></p><p><b>  INC R1</b></p><p>  DJNZ R4,SET_COMPERE</p><p>  MOV 32H,40H</p><p>  MOV 33H,41H</p><p&g

48、t;  MOV 34H,42H</p><p>  MOV 35H,43H</p><p>  MOV 36H,44H</p><p>  MOV 37H,45H</p><p>  MOV 38H,46H ;存入新密碼完畢</p><p>  JMP MAIN0

49、 ;設置新密碼成功,返回主程序</p><p>  SET_ERROR:</p><p>  SETB SOUNDER</p><p><b>  SETB LED</b></p><p>  CALL CLEAR_DISPLAY</p><p>  MOV DPTR,#TAB

50、LE5</p><p>  CALL INPUT_HINT</p><p>  CALL DELAY1_15S</p><p>  CLR SOUNDER</p><p><b>  CLR LED</b></p><p>  LJMP CHANGE_KEY0 ;設置新密碼成

51、功,返回主程序</p><p>  INPUT_KEY: ;輸入密碼開鎖程序</p><p>  CALL CLEAR_DISPLAY</p><p>  MOV DPTR,#TABLE4</p><p>  CALL INPUT_HINT</p><p>  MOV

52、 R0,#40H</p><p>  CALL CHANGE</p><p>  JBC RETURNBIT,INPUT_KEY ;設置新密碼成功,返回主程序</p><p><b>  MOV R4,#8</b></p><p>  MOV R0,#40H</p><p>  MOV R

53、1,#32H</p><p>  INPUT_COMPERE0:</p><p><b>  MOV A,@R0</b></p><p><b>  XRL A,@R1</b></p><p>  JNZ INPUT_ERROR22</p><p><b>  IN

54、C R0</b></p><p><b>  INC R1</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  DJNZ R4,INPUT_COMPERE0 ;驗證輸入密碼完畢</p&g

55、t;<p>  JMP DISPLAY_RIGHT</p><p>  INPUT_ERROR22:</p><p>  SETB SOUNDER</p><p><b>  SETB LED</b></p><p>  CALL CLEAR_DISPLAY</p><p>  MO

56、V DPTR,#TABLE5</p><p>  CALL INPUT_HINT</p><p>  CALL DELAY1_15S</p><p>  CLR SOUNDER</p><p><b>  CLR LED</b></p><p><b>  INC 52H</b&g

57、t;</p><p><b>  MOV A,52H</b></p><p>  CJNE A,#3,INPUT_KEY</p><p>  SJMP $ ;輸入密碼錯誤超過3次,鎖死</p><p>  DISPLAY_RIGHT:</p><p>

58、;  CALL CLEAR_DISPLAY</p><p>  MOV DPTR,#TABLE6</p><p>  CALL INPUT_HINT ;顯示輸入密碼正確提示完畢</p><p>  SETB OPEN ;開鎖</p><p>  NEXT_KEY1:</p&

59、gt;<p><b>  CALL KEY</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  CJNE A,#'F' ,NEXT_KEY1</p><p>  CLR OPEN

60、 ;按下關鎖鍵關鎖</p><p>  JMP MAIN0 ;返回主程序</p><p>  STRAT_DISPLAY:</p><p>  MOV P0,#80H</p><p>  CALL WRITE_INSTRUCTION</p><p&

61、gt;  MOV DPTR,#TABLE1</p><p>  CALL INPUT_HINT</p><p>  MOV P0,#0C0H</p><p>  CALL WRITE_INSTRUCTION</p><p>  MOV DPTR,#TABLE11</p><p>  CALL INPUT_HINT<

62、;/p><p><b>  RET</b></p><p>  CLEAR_DISPLAY: ;清屏</p><p>  MOV DISPLAY,#01H</p><p>  CALLWRITE_INSTRUCTION</p><p>  MOV P0,#

63、06H</p><p>  CALL WRITE_INSTRUCTION</p><p><b>  RET</b></p><p>  INPUT_HINT:</p><p>  MOV R4,#16</p><p>  MOV A,#00H</p><p>  ALL_

64、OR_NOT:</p><p>  MOVC A,@A+DPTR</p><p>  MOV DISPLAY,A</p><p>  CALL WRITEDATA</p><p><b>  INC DPTR</b></p><p><b>  CLR A</b></p

65、><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  DJNZ R4,ALL_OR_NOT</p><p><b>  RET</b></p><p><b>  CHANGE:</b>&

66、lt;/p><p><b>  MOV R4,#8</b></p><p>  MOV R1,#0C0H</p><p><b>  MOV A,R1</b></p><p><b>  MOV P0,A</b></p><p>  CALL WRITE_I

67、NSTRUCTION</p><p><b>  LOOP1:</b></p><p><b>  CALL KEY</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p> 

68、 CJNE A,#'C',NEXT_TO</p><p>  SETB RETURNBIT</p><p><b>  JMP ENDT</b></p><p><b>  NEXT_TO:</b></p><p><b>  MOV A,50H</b><

69、/p><p><b>  MOV @R0,A</b></p><p>  MOV DISPLAY,#'*'</p><p>  CALL WRITEDATA</p><p><b>  INC R1</b></p><p><b>  INC R0<

70、;/b></p><p>  DJNZ R4,LOOP1</p><p><b>  ENDT: RET</b></p><p>  WRITEDATA: ;寫數據</p><p><b>  SETB RS</b></p>&l

71、t;p><b>  CLR RW</b></p><p><b>  CLR EN</b></p><p><b>  SETB EN</b></p><p><b>  NOP</b></p><p><b>  NOP</b>

72、;</p><p><b>  CLR EN</b></p><p><b>  SETB EN</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  

73、CLR EN</b></p><p>  CALL DELAY</p><p><b>  RET</b></p><p>  WRITE_INSTRUCTION: ;寫指令</p><p><b>  CLR RS</b></p><

74、p><b>  CLR RW</b></p><p><b>  CLR EN</b></p><p><b>  SETB EN</b></p><p><b>  NOP</b></p><p><b>  NOP</b>&

75、lt;/p><p><b>  CLR EN</b></p><p>  CALL DELAY</p><p><b>  RET</b></p><p>  DELAY1_15S: ;延時程序</p><p><b> 

76、 PUSH 77H</b></p><p><b>  PUSH 72H</b></p><p><b>  PUSH 73H</b></p><p>  MOV R7,#15</p><p><b>  DEL22S:</b></p><p&g

77、t;<b>  MOV R3,#0</b></p><p><b>  DEL11S:</b></p><p><b>  MOV R2,#0</b></p><p><b>  DJNZ R2,$</b></p><p>  DJNZ R3,DEL11S

78、</p><p><b>  POP 03H</b></p><p><b>  POP 02H</b></p><p><b>  POP 07H</b></p><p><b>  RET</b></p><p>  DELAY

79、0_1S:</p><p><b>  PUSH 02H</b></p><p><b>  PUSH 03H</b></p><p><b>  MOV R3,#0</b></p><p><b>  DEL21S:</b></p><

80、;p><b>  MOV R2,#0</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  DJNZ R2,$</b></p><p>  DJNZ R3,DEL21S</p

81、><p><b>  POP 03H</b></p><p><b>  POP 02H</b></p><p><b>  RET</b></p><p>  DELAY:PUSH 07H</p><p><b>  PUSH 06H</b

82、></p><p>  MOV R7,#10</p><p>  D1: MOV R6,#248</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  DJNZ R6,$</b>&l

83、t;/p><p>  DJNZ R7,D1</p><p><b>  POP 06H</b></p><p><b>  POP 07H</b></p><p><b>  RET</b></p><p>  TABLE0:DB 'C',

84、'B','0','A';</p><p>  DB 'D','9','8','7';</p><p>  DB 'E','6','5','4';</p><p>  DB 'F&

85、#39;,'3','2','1';</p><p>  TABLE1: DB 'PASSWORD: A SET ';</p><p>  TABLE11: DB ' B OPEN';</p><p>  TABLE 2: DB 'SET PASSWORD:

86、 ';</p><p>  TABLE 3: DB 'INPUT AGAIN! ';</p><p>  TABLE4: DB 'INPUT PASSWROD: ';</p><p>  TABLE5: DB 'PASSWORD ERROR! ';</p><p>  TABLE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論