北郵單片機實驗報告_第1頁
北郵單片機實驗報告_第2頁
北郵單片機實驗報告_第3頁
北郵單片機實驗報告_第4頁
北郵單片機實驗報告_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.電路綜合實驗報告流水燈計時器和密碼鎖 目錄一、流水燈和計時器41.實驗?zāi)康?2.設(shè)計功能43.實驗器材及功能44.電路連接圖55.電路接口56.主要程序說明57.實驗排錯及改進9二、密碼鎖101.設(shè)計目的10(1)功能10(2)用途102.設(shè)計功能10(1)提示各項操作指令10(2)密碼正誤識別11(3)重置密碼113.實驗器材及功能124.硬件設(shè)計13(1)電路原理圖13(2)電路實際連接圖13(3)系統(tǒng)工作流程圖14(4)各分塊電路的詳細情況【包括端口的接線】155.程序設(shè)計16(1)鍵盤掃描程序16(2)顯示屏顯示程序21(3)滾動顯示操作33(4)鍵盤按鍵判斷程序34(5)主程序43

2、6.操作過程及運行結(jié)果447.實驗排錯及改進45三、體會和建議45四、實驗分工47附錄48 一、流水燈和計時器1.實驗?zāi)康?這次實驗是我第一次接觸單片機,為了更加深入的了解ATmega16單片機的各種應(yīng)用方法和工作原理,我們從最基礎(chǔ)的實驗入手,了解單片機的各個端口的作用和利用AVRStudio工具編寫單片機可識別的C語言程序。在觀看了教學(xué)視頻和查閱了說明書后,我們了解了單片機的各個端口,對端口進行一定輸入輸出練習(xí)。為了將所學(xué)的單片機進行實際應(yīng)用,我們通過流水燈和計時器這兩個入門實驗對所學(xué)知識進行實踐檢驗。2.設(shè)計功能(1)流水燈演示,依次點亮每一個發(fā)光二極管。(2)用兩個數(shù)碼管做一個秒表計時器

3、。 要求按下中斷按鍵后能夠暫停秒表計時,但不影響流水燈的運行,再次按鍵能夠使秒表繼續(xù)計時3.實驗器材及功能材料名稱數(shù)量作用ATmega16單片機1對電路進行簡單運算和控制發(fā)光二極管8實現(xiàn)流水燈功能數(shù)碼管2秒表計時器按鍵1控制計時中斷4.電路連接圖5.電路接口流水燈八個燈:PA0PA7十位數(shù)碼管:PB0PB7(PB2未接)個位數(shù)碼管:PD0PD7(PD2未接)中斷按鍵接:PD26.主要程序說明#include<avr/io.h>#include<avr/interrupt.h>char temp;volatile unsigned int cnt = 0;volatile

4、 unsigned int i = 1;volatile unsigned int key = 0;char shuzi10 = /為計時器設(shè)置數(shù)字0-9數(shù)組0b11110011,/00b11000000,/10b01101011,/20b11101010,/30b11011000,/40b10111010,/50b10111011,/60b11100000,/70b11111011,/80b11111010,/9;int main(void)DDRA = 0xff; /設(shè)置端口方向和初始狀態(tài)DDRD = 0xff;DDRB = 0xff;TCNT0 = 55; MCUCR |= (1 <

5、;< ISC01); /八分頻GICR |= (1 << INT0);sei();TCCR0 |= (1 << CS01) | (1 << CS00);PORTA |= 0b00000001; PORTD = shuzi0;PORTB = shuzi0;while (1) TCNT0 = 55;cnt+;if (cnt >=60000)cnt = 0;temp = PORTA; /控制發(fā)光二極管PORTA = PORTA << 1;if (temp & 0b10000000) /控制流水燈電路PORTA = PORTA | 0

6、b00000001;if(key=0) PORTB = shuzii / 10;PORTD = shuzii % 10;i+;if (i >= 60) /控制數(shù)碼管的顯示 i = 0; SIGNAL(SIG_INTERRUPT0) /中斷信號key = !key;7.實驗排錯及改進錯誤:最初進行流水燈實驗時,燈始終不亮 原因和改進:發(fā)光二極管未接地,接地后,再連接上電阻限流,即可正常發(fā)光。錯誤:秒表時間不準(zhǔn)確,計數(shù)器跳變時間不是1秒 原因和改進:沒有使用單片機自帶定時器,在經(jīng)過計算后設(shè)置了大致準(zhǔn)確的延時,但每分鐘仍然會慢三四秒。后來經(jīng)過老師指導(dǎo)說明,明白了是由于單片機的準(zhǔn)確頻率應(yīng)為124

7、0000而非1M導(dǎo)致。二、密碼鎖1.設(shè)計目的(1)功能在現(xiàn)實生活中,很多場合都用到了電子密碼鎖,比如說門禁系統(tǒng),銀行賬戶管理,保險箱等等地方都要用到電子密碼鎖,而且對其要求也很高。所以高安全性能密碼鎖的研究就成了一個必需的話題。本設(shè)計的目的就是為了在保證高安全性的前提下,實現(xiàn)降低成本,方便攜帶安裝的功能,真正服務(wù)于人民。(2)用途可設(shè)計在一些簡單的安全系統(tǒng)上,類似于密碼箱,門禁系統(tǒng)上面,以提高產(chǎn)品的安全性。其中輸入密碼錯誤自動報警和立即鎖死的功能能提高用戶的警覺性,降低失竊率。除此之外,本款密碼鎖具有修改密碼的功能,增加用戶的安全性。2.設(shè)計功能(1)提示各項操作指令接通電源,液晶屏顯示“we

8、lcome!”, 顯示“2013211104-group9”滾動字幕。(2)密碼正誤識別 由屏幕顯示提示按鍵,進入密碼輸入階段。用鍵盤輸入六位密碼,初始密碼為【123456】。若輸入的密碼正確,蜂鳴器響一聲,綠色二極管發(fā)光。若輸入的密碼錯誤,可再次輸入,且每錯誤一次,增加一顆紅色二極管發(fā)光。連續(xù)輸入錯誤達三次時,蜂鳴器長鳴,三個二極管均發(fā)光。系統(tǒng)進入鎖定狀態(tài),液晶屏顯示六十秒倒計時,結(jié)束后方可再次輸入密碼。(3)重置密碼密碼輸入正確后,提示是否修改密碼,兩次輸入一致后修改內(nèi)置密碼,且修改密碼時,新密碼必須為6位,多6位無法繼續(xù)輸入,少于六位,無法進行其他操作。液晶屏顯示“ok”,若兩次不一樣顯

9、示“fail”,需再次輸入。3.實驗器材及功能材料名稱數(shù)量作用4*4鍵盤1 09為數(shù)字鍵輸入作為密碼。 A-F為功能鍵根據(jù)顯示屏的提示代表各項指令,詳見下面的【五、操作過程及運行結(jié)果】1602液晶屏1 顯示歡迎界面以及各項操作指南 顯示輸入的密碼,不顯示數(shù)字,顯示為*。蜂鳴器1顯示密碼正誤。密碼輸入正確,蜂鳴器響一聲;密碼輸入錯誤三次,蜂鳴器長響,按A停止響,開始倒計時。發(fā)光二極管4(紅3、綠1)顯示密碼正誤。 若密碼正確,則綠色二極管亮。 若密碼錯誤,則紅色二極管亮,錯幾次亮幾個。導(dǎo)線若干連接各器件4.硬件設(shè)計(1)電路原理圖(2)電路實際連接圖進入60秒倒計時(3)系統(tǒng)工作流程圖蜂鳴器長鳴

10、,三個紅色二極管均發(fā)光開始開始是否是否為第三次輸入錯誤輸入密碼輸入密碼正確錯誤蜂鳴器響一聲,綠色發(fā)光二極管亮修改密碼蜂鳴器鳴叫,第一次錯誤亮一個紅燈,第二次亮兩個不相同再次輸入新密碼相同修改成功,按C返回 結(jié)束(4)各分塊電路的詳細情況【包括端口的接線】系統(tǒng)以Atmega16單片機為控制核心,4*4鍵盤作為輸入模塊,1602液晶顯示屏作為顯示模塊實現(xiàn)密碼鎖的各項功能。 鍵盤電路本系統(tǒng)使用的鍵盤采用行列式鍵盤,對鍵盤進行掃描時,可以采用查詢掃描的方法:先對行進行掃描,再對列進行掃描,直至將每行每列都掃描一次,通過單片機端口電平的變化,判斷哪個按鍵被按下使用單片機的8個I/O端口就可以控制16個按

11、鍵。鍵盤的8個引腳分別接在PORTB的8個端口。列線:PB0-PB3行線:PB4-PB7 SMC1602A液晶屏電路1602液晶屏主要用于與用戶交互,包括顯示操作指南,提示密碼輸入狀態(tài)和顯示結(jié)果。根據(jù)左圖,由上至下依次為1-16號引腳。1號,3號接地。2號,15號接VCC。46號引腳與PC0、PC1、PC7相連,分別控制RS(數(shù)據(jù)/指令寄存器選擇)、RW(讀寫選擇引腳)、E(讀寫使能引腳)。714號引腳分別接在PORTA的8個端口,用于數(shù)據(jù)的并行傳輸。16接GND。 聲光電路利用發(fā)光二極管和蜂鳴器表示輸入密碼正確與否:密碼正確時,綠色發(fā)光二極管亮,蜂鳴器響一聲;若輸入的密碼錯誤,可再次輸入,且

12、每錯誤一次,增加一顆紅色二極管發(fā)光。連續(xù)輸入錯誤達三次時,蜂鳴器長鳴,三個二極管均發(fā)光。蜂鳴器的兩端:PD1和AGND紅色發(fā)光二極管的正負極:PD2和AGND、PD3和AGND、PD4和AGND。綠色發(fā)光二極管的正負極:PD0和AGND5.程序設(shè)計(1)鍵盤掃描程序 本程序通過行掃描法,對4 x 4 的行列結(jié)構(gòu)的鍵盤進行掃描。其按鍵識別的過程如下:將全部行線置低電平輸出,然后讀四根輸入列線中 有無低電平出現(xiàn)。只要有低電平出現(xiàn),則說明有鍵按下。實際編程時,還要考慮按鍵的消抖。如讀到的都是高電平,則表示無鍵按下。在確認有鍵按下后,需要進入確定具體哪一個鍵閉合的過程。其思路是:依次將行線置為低電平,

13、并檢測列線的輸入(掃描) ,進而確認是具體的按鍵 位置。如當(dāng) PD5 輸出低電平時(PD3=1、PD4=1、PD5=0、PD6=1) ,測到 PD1 的輸入為低電平(PD0=1、PD1=0、PD2=1、PD3=1) ,則可確認按鍵 K3-2 處于閉合。 此段程序通過每次循環(huán)進入三種狀態(tài)中的一種以確定鍵盤的狀態(tài)。 unsigned char read_keyboard()static unsigned char key_state = 0, key_value, key_line;unsigned char key_return = No_key ;unsigned char i;switch

14、(key_state)case 0:key_line = 0b00010000;for (i = 1; i <= 4; i+) / 掃描鍵盤PORTB = key_line;PORTB = key_line;key_value = Key_mask & PINB;if (key_value = Key_mask)key_line <<= 1; / 沒有按鍵,繼續(xù)掃描elsekey_state+; / 有按鍵,停止掃描PORTD=0b00000010; / 每次按鍵,蜂鳴器響一下delay(50);PORTD=0b00000000; break;break;case 1

15、:if (key_value = (Key_mask & PINB) / 消抖處理,鍵盤編碼,返回編碼值switch (key_line | key_value)case 0b00011110: /根據(jù)輸入返回相應(yīng)鍵值key_return = K1_1;break;case 0b00101110:key_return = K1_2;break;case 0b01001110:key_return = K1_3;break;case 0b10001110:key_return = K1_4;break;case 0b00011101:key_return = K2_1;break;cas

16、e 0b00101101:key_return = K2_2;break;case 0b01001101:key_return = K2_3;break;case 0b10001101:key_return = K2_4;break;case 0b00011011:key_return = K3_1;break;case 0b00101011:key_return = K3_2;break;case 0b01001011:key_return = K3_3;break;case 0b10001011:key_return = K3_4;break;case 0b00010111:key_ret

17、urn = K4_1;break;case 0b00100111:key_return = K4_2;break;case 0b01000111:key_return = K4_3;break;case 0b10000111:key_return = K4_4;break;key_state+; / 轉(zhuǎn)入等待按鍵釋放狀態(tài)elsekey_state-; / 兩次行電平不同返回狀態(tài),(消抖處理)break;case 2: / 等待按鍵釋放狀態(tài)PORTB=0b00001111; / 列線全部輸出低電平PORTB=0b00001111; / 重復(fù)送一次if (Key_mask & PINB)

18、= Key_mask)key_state = 0; / 行線全部為高電平返回狀態(tài)break;return key_return; (2)顯示屏顯示程序根據(jù)1602顯示屏的說明書標(biāo)注的不同地址代表的不同含義以及網(wǎng)上查閱的相關(guān)資料以實現(xiàn)對顯示屏進行指令和數(shù)據(jù)的讀寫功能;利用switch-case語句實現(xiàn)不同按鍵按下后顯示屏上顯示相應(yīng)的文字的功能;void show(uchar j)/顯示屏uchar i;write_com(0x0c);delay(5);write_com(0x06);delay(5);write_com(0x80+0);delay(5);switch(j) case 0:writ

19、e_com(0x01); delay(5);write_com(0x80+4);delay(300);uchar table = "Welcome!"/顯示welcomefor (i=0;i<8;i+)write_dat(tablei);delay(500);delay(1000);for (i=0;i<9;i+)/移動9次write_com(0x18); delay(10);instru(instr);break;case 1:uchar table1 = "*"for (i=0;i<1;i+)write_dat(table1i);d

20、elay(1);break;case 2:write_com(0x01); delay(5);uchar table2 = "press F"for (i=0;i<7;i+)write_dat(table2i);delay(1);break;case 3:write_com(0x01); delay(5);uchar table3 = "press B"for (i=0;i<7;i+)write_dat(table3i);delay(1);break;case 4:uchar table4 = "then press F"

21、write_com(0x80+40);/讓字符在第二行顯示delay(5);for (i=0;i<12;i+)write_dat(table4i);delay(1);break;case 5:write_com(0x01); delay(5);uchar table5 = "input the code"for (i=0;i<14;i+)write_dat(table5i);delay(1);break;case 6:write_com(0x01); /先清屏delay(5);uchar table6 = "right"for (i=0;i&

22、lt;5;i+)write_dat(table6i);delay(1);break;case 7:uchar table7 = "open"write_com(0x80+40);/讓字符在第二行顯示for (i=0;i<4;i+)write_dat(table7i);delay(1);break;case 8:uchar table8 = "press E"write_com(0x80+40);/讓字符在第二行顯示delay(5);for (i=0;i<7;i+)write_dat(table8i);delay(1);break;case 9

23、:write_com(0x01); delay(5);uchar table9 = "wrong"for (i=0;i<5;i+)write_dat(table9i);delay(1);break;case 10:write_com(0x01); delay(5);uchar table10 = "change code"for (i=0;i<11;i+)write_dat(table10i);delay(1);break;case 11:write_com(0x01); delay(5);uchar table11 = "inpu

24、t again"for (i=0;i<11;i+)write_dat(table11i);delay(1);break;case 12:write_com(0x01); delay(5);uchar table12 = "ok"for (i=0;i<2;i+)write_dat(table12i);delay(1);break;case 13:write_com(0x01); delay(5);uchar table13 = "modify password"for (i=0;i<15;i+)write_dat(table13

25、i);delay(1);break;case 14:write_com(0x01); delay(5);uchar table14 = "fail"for (i=0;i<4;i+)write_dat(table14i);delay(1);break;case 15: uchar table15 = "press C "for (i=0;i<7;i+)write_dat(table15i);delay(1);break;case 16: write_com(0x01); delay(5);uchar table16 = "press

26、any key "for (i=0;i<13;i+)write_dat(table16i);delay(1);break;case 17: write_com(0x01); delay(5);uchar table17 = "press A to back"delay(5);for (i=0;i<15;i+)write_dat(table17i);delay(1);break; default : break; (3)滾動顯示操作void instru(unsigned char a) /顯示操作指南unsigned int length, i, sl

27、ength;length = strlen(a);write_com(0x38);delay(100);write_com(0x01);delay(100);write_com(0x0c);delay(100);write_com(0x06);delay(100);slength = length - 16;write_com(0x80 + 0); /讓字符在第一個位置顯示delay(100);for (i = 0; i < length; i+)write_dat(ai); /寫length次數(shù)據(jù)顯示語句delay(1000);for (i = 0; i < slength; i

28、+) /移動write_com(0x18); /數(shù)據(jù)左移,光標(biāo)左移delay(300);delay(1000);(4)鍵盤按鍵判斷程序利用字符型變量animation_states判斷程序進程,通過鍵盤掃描程序的反饋在按鍵時執(zhí)行相應(yīng)的命令void keyboard_states()unsigned char i, j=0;if(key_temp='C')/ -關(guān)鎖number = 0;error=0;PORTD = 0x00; animation_state=0;if(animation_state=0)/ -顯示/只有當(dāng)用戶先按"B",再按"F&

29、quot;鍵時,密碼鎖才能進入工作狀態(tài)。if(key_temp='B') show(2);animation_state+;if(key_temp!='B')show(3);show(4);delay(5);else if(animation_state=1)/ -先按B 后按F 然后才能解鎖if(key_temp='F')show(5);animation_state+;else if(animation_state=2)/ -輸入六位密碼(除了B,D和F以及以外的鍵) if(key_temp='F')animation_sta

30、te+;else if(key_temp='D') number=0; show(5);else if(number=0)/輸入密碼 先清屏,然后輸入密碼(6位)write_com(0x01); delay(5);write_com(0x0c);delay(5);write_com(0x06);delay(5);write_com(0x80+number);delay(5);uchar table1 = "*"if(number!=6)for (i=0;i<1;i+)write_dat(table1i);delay(1);code_numbernumb

31、er=key_temp;number+; else if(animation_state=3) if(number=6) for(i=0;i<6;i+)if(code_numberi=passwordi) /判斷密碼正誤j+; if(j=6)show(6);show(7);PORTD = 0x02;/輸入正確的話 蜂鳴器鳴響三聲delay(1000);PORTD = 0x00;delay(100);PORTD = 0x02; delay(1000);PORTD = 0x00;delay(100);PORTD = 0x02;delay(1000);PORTD = 0x00;delay(10

32、0); for(int m=0;m<10;m+)for(int k=0;k<1000;k+)PORTD = 0x01; show(13);show(8);delay(10);error=0;animation_state+=2; else show(9);delay(10000);error+; else show(9);delay(10000);error+; if(error=1) /判斷是第幾次輸錯PORTD = 0x06; delay(1000); PORTD = 0x04;show(5);animation_state=2; number = 0;else if(erro

33、r=2)PORTD = 0x0e; delay(1000); PORTD = 0x0c;show(5);animation_state=2; number = 0;else if(error=3)PORTD = 0x1e;/蜂鳴器鳴響 當(dāng)按下A鍵時才可以取消鳴響show(17);animation_state=4; number = 0; else if(animation_state=4)/ 三次錯誤后復(fù)位,A表示復(fù)位if(key_temp='A')PORTD = 0x00; write_com(0x0c);delay(5);write_com(0x06);delay(5);

34、write_com(0x80+0);delay(5); write_com(0x01); write_dat(time_show0);write_dat(time_show0);write_dat(time_show10);/輸出':'for(int m=5;m>=0;m-)for(int n=9;n>=0;n-) LCD_show(m,n);/倒計時 delay(500);write_com(0x01); /先清屏/delay(5);show(2);number=0;error=0;animation_state=1;else if(animation_state

35、=5)/ 修改密碼 Eif(key_temp='E')number=0;show(10);animation_state+;else if(animation_state=6)if(key_temp='F')&&(number=6)/F為確定鍵,且不輸入到6位不能確定number=0;animation_state+;show(11);else if(key_temp='D')/D表示刪除show(10);number=0;elseif(number=0)write_com(0x01);delay(5);write_com(0x0

36、c);delay(5);write_com(0x06);delay(5);write_com(0x80+number);delay(5);uchar table1 = "*"if(number!=6) /超過6位不能鍵入,且不到6位讓F不能顯示在屏幕上if(key_temp='F')animation_state=6;elsefor (i=0;i<1;i+)write_dat(table1i);delay(1);temp1number=key_temp;number+; else if(animation_state=7)if(key_temp=

37、9;F')&&(number=6)animation_state+;else if(key_temp='D')show(11);number=0; else if(number=0)write_com(0x01); delay(5);write_com(0x0c);delay(5);write_com(0x06);delay(5);write_com(0x80+number);delay(5);uchar table1 = "*"if(number!=6)if(key_temp='F')animation_state=

38、7;elsefor (i=0;i<1;i+)write_dat(table1i);delay(1);temp2number=key_temp;number+; else if(animation_state=8)i=0,j=0;for(i=0;i<6;i+)if (temp1i=temp2i) j+;if(j=6)show(12);delay(5000);PORTD = 0x03; /修改成功的話 蜂鳴器鳴響一聲delay(1000);PORTD = 0x01; show(15);delay(5);for(i=0;i<6;i+) passwordi=temp2i; /修改后的

39、密碼賦給初始密碼else show(14); delay(10000);write_com(0x01); show(10);animation_state=5;show(8); (5)主程序顯示初始狀態(tài),并進入while大循環(huán)int main(void)write_com(0x38); /設(shè)置16*2顯示delay(35);DDRB = 0xff;PORTB = 0xff;DDRB = 0xf0; /高四位為輸入高電平,低四位輸出低電平DDRD = 0xff;PORTD = 0x00;DDRA = 0xff;DDRC = 0b11000011; /C0表示VL,C1表示RW,C7表示EPORT

40、C &= 0x80;show(0); /顯示welcome!和操作指南delay(35);show(16);while (1)key_temp = read_keyboard(); / 調(diào)用鍵盤接口函數(shù)讀鍵盤/if (key_temp != No_key)if(key_temp!=255)keyboard_states();/ 有按鍵按下 6.操作過程及運行結(jié)果接通電源,液晶屏顯示“welcome!”,顯示“2013211104-group9”滾動字幕。 然后按照提示“press any key”按鍵繼續(xù)。屏幕顯示“press B then press F”,然后進入輸入密碼界面,此時

41、顯示“input the code”,輸入六位密碼并按“F”確定。 輸入正確密碼,以“F”鍵確認,屏幕顯示“right open”,同時蜂鳴器響一聲,綠色發(fā)光二極管發(fā)光。 密碼輸入正確后,屏幕顯示“modify password press E”,按“E”確認修改,屏幕顯示“change code”。輸入新密碼以“F”鍵結(jié)束,屏幕顯示“input again”,按照提示再次輸入新密碼以“F”鍵結(jié)束。屏幕顯示“ok”,之后顯示“press C”,此時按下C就返回到系統(tǒng)初始界面。 輸入錯誤密碼,以“F”鍵確認,屏幕顯示“wrong”,兩個二極管均不發(fā)光。每錯誤一次,增加一顆紅色二極管發(fā)光。連續(xù)輸入錯誤達三次時,蜂鳴器長鳴,三個二極管均發(fā)光。屏幕顯示“press A to back”按“A”鍵停止蜂鳴器,同時系統(tǒng)進入鎖定狀態(tài),開始六十秒倒計時。 運行結(jié)果詳見視頻。7.實驗排錯及改進錯誤:調(diào)試顯示屏?xí)r,顯示屏顯示一些亂碼。 原因和改進:一開始我們也不知道是怎么回事兒,后來我們覺得可能是顯示屏布線問題,于是我們根據(jù)代碼算法走了一遍程序,界面順序按鍵都沒有大

溫馨提示

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

評論

0/150

提交評論