帶有溫顯示和液晶顯示器的實時時鐘設計_第1頁
帶有溫顯示和液晶顯示器的實時時鐘設計_第2頁
帶有溫顯示和液晶顯示器的實時時鐘設計_第3頁
帶有溫顯示和液晶顯示器的實時時鐘設計_第4頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、河北聯合大學綜合性課程設計報 告學院名稱:專業名稱:課設題目:帶有溫度顯示和液晶顯示器的實時時鐘設計學生姓名:學 號:同組人:指導教師:完成時間:設計目標: 設計基于單片機的具有液晶顯示器的實時時鐘,能夠通過液晶顯示器正確顯示當前時間,包括年,月,日,星期,時,分,秒。并且能夠通過按鍵對系統的時間進行修改設定;能夠顯示當前的室溫。研究內容: 學習 EDA軟件 Proteus 的使用,能夠利用Proteus 軟件畫出電路圖并實現仿真。學習電子系統設計步驟,按步驟完成電子系統的概要設計、選型、詳細設計,系統測試仿真。設計帶有溫度顯示基于單片機具有液晶顯示功能的實時時鐘,編寫程序,并利用 prote

2、us 軟件進行模擬仿真。研究方法: 繪制原理圖及電路圖,利用軟件環境編程調試。實驗步驟:1、打開Keil 軟件,新建一個工程文件,選擇好芯片,并記得在Output 選項中,將Create HEX Fil 選項勾起來。“ Options for Target 1”的2、將編寫的程序保存成“.C”的形式3、編譯保存好的C 文件,并根據提示修改程序中的錯誤,直到編譯成功為止4、打開proteus 軟件,畫出實驗電路圖5、在 89C51 中,載入原來已生成的HEX 文檔6、按下運行鍵,對Proteus 進行軟件仿真,觀察運行結果原理結果及分析一、設計方案原理與設計特點分析電子鐘總的設計模塊:溫度采集模

3、塊按鍵處理模塊89C51CPU控制模塊DS1302 時鐘LCD顯示模塊采集模塊各個模塊電路原理分析:1、DS1302 時鐘采集模塊:1.1 電路原理圖:1.2DS1302 分析:首先DS1302 是DALLAS公司推出的涓流充電時鐘芯片。內含有一個實時時鐘/日歷和31 字節靜態RAM通過簡單的串行接口與單片機進行通信實時時鐘/日歷電路提供秒分時日日期月年的信息每月的天數和閏年的天數可自動調整時鐘操作。DS1302 芯片廣腳介紹: X1 、X2 為 32.768KHz 晶振管腳。 GND 為地。 RST 復位腳。 I/O 數據輸入 /輸出引腳。 SCLK 串行時鐘。 Vcc1,Vcc2 電源供電

4、管腳。與單片機連接的信號線為:DS1302_SCLK接P16。實時時鐘時鐘線引腳DS1302_IO 接 P17。實時時鐘數據線引腳DS1302_RST 接 P15。實時時鐘復位線引腳特別注意DS1302 芯片在讀取或寫入數據時,都是一位一位傳送的,并且每傳送一位, SCLK 信號線要有一個負跳變。即單片機對SCLK 咬先送高電平,再送低電平。數據時通過 IO 進行傳送的。1.3 數據處理子程序流程圖是否調用時間獲取子否程序 DS1302_GetTime是調用 Read1302 函數,讀取各個時間參數,并存放于ReadValue 變量中對 ReadValue 數據進行轉換,轉換成十進制數,并賦給

5、 Time 指針中。調用年份轉換成可供lcd 顯示的字段子程序 DateToStr時間轉換成可供lcd 顯示的字段子程序 TimeToStr結束因為DS1302 芯片在讀取或寫入數據時,都是一位一位傳送的,并且每傳送一位,SCLK 信號線要有一個負跳變。所以在對DS1302 具體某地址進行一字節數據的寫入或讀取時,都要調用實時時鐘寫入一字節(內部函數 ) DS1302InputByte和實時時鐘讀取一字節( 內部函數 )DS1302OutputByte 兩個函數。2、按鍵處理模塊2.1 按鍵連線圖從左到右依次是:進位鍵,數字加,數字減,退出Mode 模式鍵2.2 按鍵掃描子程序流程圖:Mode

6、 鍵是否按下將進位按鍵鍵次數存放于變量 mode_num 中mode_n否否否否mode_nmode_nuum=1?um=2 ?m=3 ?是是是是是否否mode_num=7 ?是是移動光標,并返回mode_numode_nm=4?um=5?mode_num=6?2.3 加減鍵處理子程序流程圖判斷是否為修改否模式是判斷是否為加一轉減一鍵程序否鍵是判斷 num=1?否判斷 num=2 ?判斷 num=3否是是是修改year 值,修 改 mouth修改 day 值,并返回值,并返回并返回否?否判斷 num=5?判斷 num=4 ?判斷 num=6是是是修改秒值,并返修改分值,并返修改小時值,并回回返

7、回減 1 子程序與加1 子程序區別只在于修改數值處理不一樣,其他都一樣。3、LCD 顯示模塊3.1LCD 顯示模塊電路原理圖3.2LCD1602 芯片以及連線分析液晶顯示器是一種功耗極低的被動式顯示器件,1602 廣腳介紹: D0 D7 數據傳送引腳, VSS 為接地線, VDD為電源線, VEE 為 LCD 驅動電壓調節,由此可以調節顯示亮度。 RS 為寄存器選擇信號,高電平選擇數據寄存器,低電平選擇指令寄存器。RW 為讀寫控制信號,高電平讀,低電平寫。 EN 使能信號,讀狀態下高電平有效,寫狀態下下降沿有效。RS 連接 P20。寄存器選擇信號RW 連接 P21。讀寫控制信號線EN 連接 P

8、22。使能信號線3.3LCD 初始化程序流程圖:寫指令0x38 ,顯示模式設置寫指令,顯示光標寫指令,光標移動清屏在初始化過程中,要反復調用到write_com 函數,此函數實現向lcd 寫入命令的功能。要特別注意寫命令和寫數據的RS、RW 、 EN 時序問題4、溫度采集顯示模塊4.1 溫度采集顯示模塊的原理圖:4.2DS18B20 芯片以及連線分析DSl820 數字溫度計提供9 位( 二進制 )溫度讀數,指示器件的溫度、信息經過單線接口送入 DSl820 或從 DSl820 送出。因此從主機CPU 到 DSl820 僅需一條線 (和地線 ) , DSl820的電源可以由數據線本身提供而不需要

9、外部電源。DS18B20 廣腳說明: VCC 為電源線, DQ 為數據線, GND 為地線。數據線 DQ 與單片機 P1.0 相連接。4.3 溫度采集顯示模塊子程序流程圖:直接向18b20 發送溫度變換命令讀取溫度寄存器的溫度值讀低八位讀高八位進行讀取數據處理,得出溫度存放于變量temp 中在此程序中,要特別注意初始化,寫和讀取數據時的時序處理。首先,初始化中,主機總線先發送一復位脈沖(最短為480us 的低電平信號),接著刻釋放總線并進入接收狀態。 DSl8b20 在檢測到總線的上升沿之后,等待15-60us,接著DS18b20 發出存在脈沖(低電平 持續 60-240 us)。寫數據時序:

10、當主機總線先從高拉至低電平時,就產生寫時間隙。讀書序:主機總線先從高拉至低電平時,總線只須保持低電平l7ts 之后,再將總線拉高,產生讀時間隙。5、總原理圖以及主程序流程圖:5.1 總的原理圖:5.2 主程序流程圖:初始化 lcd初始化內部定時器初始化 DS1302從 DS1302 讀取日期和時間移動光標并顯示日期移動光標并顯示時間移動光標并顯示溫度重復進行按鍵掃描二、 Proteus仿真結果:三、實驗數據計算處理,性能分析1、數據計算處理:1.1 計算星期數的算法days=(today.day+1+2*today.month+3*(today.month+1)/5+today.year+to

11、day.year/4-today.year/100+today.year/400)%7 ,由年月日計算星期,用以顯示星期數1.2 加減鍵對時間日期改變處理算法對于年月日,時分秒來說,每個變量的最大值和最小值都不一樣,所以當年月份時分秒改變時,進行處理的算法也不一樣,年沒有最大值,所以不用采取“封頂”措施,每次年加一處理時,直接自加,而對于月份來說,月份是不能超過13 的,所以當月份自加到13 時要重新置1,具體處理見程序,在每個語句后,我都有分析注釋出來。1.3 時分秒進位算法當秒,分達到 60 時,向分進位,且秒數置零,從新開始計數。當時達到24 時,也一樣處理。1.4 年月日進位算法因為每

12、個月份的天數都不同,所以事先先設定一數組:dayofmonth=31,28,31,30,31,30,31,31,30,31,30,31用以判定 12 個月的最大值,接著判斷天數,當超過本月最大天數時,月份加一,且天數要置1 。月份判斷比較簡單,只要超過12,年份就加 1,月份置 1。2、性能分析:首先, lcd 能夠正確的顯示1302 芯片上面的時間和日期。其次,可以通過五個按鍵: K1, K2、K3 、K4 和K5 鍵對電子鐘進行時間和日期的調整。按 K1 鍵進行校時 ,可以分別對時及分進行單獨校時,使其校正到標準時間,校時時用K2鍵進行調整,需要校正哪一位哪一位就閃爍。按K3 鍵是對閃爍位

13、進行加一的操作。按K4鍵是對閃爍位進行減一的操作。按K5 鍵,就可以退出調整模式。但是,時間和日期顯示正確,但溫度顯示錯誤。溫度不能正常顯示的主要原因是DS18b20 的數據傳輸不正確。五、實驗結論以及體會實驗結論:1、在該電子鐘的設計中修改定時或調整時間時采用了閃爍,在編程上,首先進行了初始化定義了程序的入口地址以及中斷的入口地址,在主程序的開始定義了一組固定單元用來存儲計數的秒,分,時以及定時時間的序號等。其次,時,分 ,秒顯示用了軟件譯碼(查表 )的方式 ,再用了一段固定的程序段進行進制轉化。最后,用查詢方式對按鍵進行判斷,若有鍵按下 ,則進行軟件延時消抖 ,避免了抖動引起的干擾 ,執行

14、相應的定時 ,選時或調時程序段。對當前時間或定時時間修改后又返回到最初的顯示程序段,如此循環下去。2、在硬件上,選用DS1302, LCD1602 相結合,首先DS1302 內含有一個實時時鐘/日歷和 31 字節靜態RAM 通過簡單的串行接口與單片機進行通信實時時鐘/日歷電路提供秒分時日日期月年的信息每月的天數和閏年的天數可自動調整時鐘操作,這樣讀取數據簡單。其次,選用 LCD1602 進行顯示時,數據位串行輸入,接口連線少,低功耗,顯示清晰。并且本實驗的電子鐘即要實現時間的現實,還要實現日期的現實,所以若是運用數碼管進行顯示的話,就算運用動態顯示,所占用的IO 口多,并且所需的數碼管個數多,

15、硬件復雜。3、 proteus 是一個非常好用的仿真軟件,其具有強大的電路原理圖繪制功能,且可以實現模擬電路仿真、數字電路仿真、單片機及其外圍電路組成的系統仿真、鍵盤、LCD 系統仿真等多種功能;和keil 聯合使用時可以檢測所編寫的程序的正確與否。將keil和proteus 聯合起來使用是實現電子設計制作的初步階段,可避免在實際的硬件操作中因為電路原理圖或向單片機燒錄的程序有誤而造成的難以修改的為題。實驗心得:1、通過本次實驗,因為之前接觸到的電子系統設計不多,所以一開始,感覺難以入手,就算上網載了很多程序,也看不懂。后來請求同學的幫助,了解了要對各種芯片編寫程序時首先應找到該芯片的數據手冊

16、,根據數據手冊上的說明、時序要求及流程圖編寫對應程序。2、其次,再次鞏固了KeilC51 工程文件的建立,程序編寫以及編譯的掌握程度。最重要的是,因為只是水平有限,要自己編寫C 程序很難,但在此實驗中,最大的收獲莫過于看懂別人的程序,分析之后,自己拼湊編寫以實現不同的功能。并且掌握了52C 程序的編寫過程。3、掌握了Proteus 的使用方法,從實際操作中認識到Proteus 在仿真方面的優越性,激發了自己學習Proteus 的興趣;4、因為自己要修改程序,所以單單花費在程序分析的時間就很多,為了更好的理解程序,我把每句主要程序的后面都注釋了該語句的意思,詳情可以見程序清單,發現注釋語義的工作

17、量也是非常大的。寫實驗報告時,每個模塊的流程圖都是自己畫的,用 WORD 文檔畫圖真的很麻煩,而且不是很美觀。因為時間比較倉促,流程圖寫的條理性不夠,不過相信以后多多練習,就可以做得更好。5、在這次實驗中我遇到了很多故障,不過通過各種渠道(比如網絡,請教同學,老師等等)解決了一些故障,雖然沒有全部解決,但能在短短一周內通過此次作業,實現電子鐘的功能,還是有點成就感的。在解決這些問題的過程中發現網絡確實是一個很好的學習平臺,利用前人的經驗可以提高自己的解決實際問題的能力。通過這一個多禮拜的學習實踐,使我對所學的知識進行了系統的復習和鞏固,在以前學習中不夠清晰的概念得到了更好的理解。相信通過不斷的

18、學習,能使自己揚長補短。六、程序清單1、主程序#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit DQ=P30 。unsigned int temp 。unsigned char ly_dis4=0,0,0,0。unsigned char tl=0,th=0 。sbit ACC0 = ACC0 。sbit ACC7 = ACC7 。sbit t=P10 。/進入調時按鍵sbit jia=P11 。 /加一按鍵sbit jian=P12 。

19、 /減一按鍵sbit m=P13 。 / 退出調時按鍵sbit BEEP=P20 。/ 蜂鳴器sbit jtod=P14 。 /矩陣按鍵轉獨立按鍵,該腳置 0sbit T_CLK= P16。 /* 實時時鐘時鐘線引腳 */sbit T_IO = P35。 /* 實時時鐘數據線引腳*/sbit T_RST = P17 。 /* 實時時鐘復位線引腳*/sbit E=P27 。/1602 使能引腳sbit RW=P26 。/1602 讀寫引腳sbit RS=P25 。/1602 數據 /命令選擇引腳ucharcodehanzi8=0x04,0x0f,0x12,0x0f,0x0a,0x1f,0x02,

20、0x02,0x0f,0x09,0x0f,0x09,0x0f,0x09,0x13,0x11,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00 。void v_W1302(uchar ucAddr, uchar ucDa) 。uchar uc_R1302(uchar) 。uchar dectobcd(uchar bcd) 。uchar bcdtodec(uchar) 。void beep() 。void delay(uchar x)uchar i 。while(x-)for(i=0 。 i<110 。 i+) 。/* * 名稱 : enable(uchar de

21、l)* 功能 : 1602 命令函數* 輸入 : 輸入的命令值* 輸出:無* */void enable(uchar del)RS=0。RW=0。P0 = del 。E=1。delay(3) 。E=0。/* * 名稱 : write(uchar del)* 功能 : 1602 寫數據函數* 輸入 : 需要寫入 1602 的數據* 輸出:無* */void write(uchar del)RS=1。RW=0。P0 = del 。E=1。delay(3) 。E=0。/* * * 名稱 : L1602_init()* 功能 : 1602 初始化,請參考1602 的資料* 輸入 :無DQ=0。 /給脈

22、沖信號* 輸出 : 無dat>>=1 。*DQ = 1 。 / 給脈沖信號*/if(DQ)void L1602_init(void)dat|=0x80 。mdelay(5) 。enable(0x01)。enable(0x38)。return(dat) 。enable(0x06)。enable(0x0c)。void mWrite(unsigned char dat)/ 寫字節E=0。unsigned char i=0 。for (i=8 。 i>0 。 i-)DQ=0。/分別為 0-9,不顯示,負號DQ = dat&0x01 。mdelay(5) 。/帶小數點顯示DQ

23、= 1 。dat>>=1 。voidmdelay(unsignedinti)/ 如 果i是unsigend char 類型,則會出現錯誤結果while(i-) 。void mInit(void)/初始化/unsigned char flag=0 。DQ = 0。/單片機將DQ 拉低mdelay(100) 。/ 精 確延 時大于 480us 小于 960usDQ = 1。/拉高總線mdelay(30) 。/flag=DQ 。/ 稍做延時后如果 flag=0 則初始化成功flag=1 則初始化失敗/mdelay(20) 。unsigned char Read(void)/ 讀字節uns

24、igned char i=0 。unsigned char dat = 0。for (i=8 。 i>0 。 i-)/ 裝入自定義字符(漢字)void writch()uchar i,j 。enable(0x40) 。for(i=0 。 i<8 。 i+)for(j=0 。 j<8 。j+)write(hanziij)。/* 名 稱 : L1602_char(uchar hang,uchar lie,char sign)* 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符顯示 "b" ,調用該函數如下L1602_char(1,5,'b

25、9;)* 輸入 : 行,列,需要輸入1602 的數據*輸出:無*/voidL1602_char(ucharhang,ucharlie,charsign)void timechange()uchar a,num=1 。uchar year,mon,day,hour,min,sec。/ 進入調時循環while(num)uchar a。if(t=0)if(hang = 1) a = 0x80。delay(5) 。if(hang = 2) a = 0xc0。if(t=0)a = a + lie - 1 。enable(a)。num+ 。write(sign) 。beep()。while(!t)。/*/

26、 退出調時按鍵m*if(m=0)*名 稱:L1602_string(ucharhang,uchardelay(5) 。lie,uchar *p)if(m=0)* 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示"ab cd ef" ,調用該函數如下num=0 。enable(0x0f) 。a=uc_R1302(0x81)|0x80 。ef。 ")L1602_string(1,5,"abcdv_W1302(0x8e,0)v_W1302(0x80,a)。* 輸入 : 行,列,需要輸入1602 的數據*輸出:無*/void L1602_stri

27、ng(uchar hang,uchar lie,uchar*p)/ 調時到年以后退出調時if(num=7)num=0 。/num=1 調秒if(num=1)enable(0xc0+9) 。uchar a。if(jia=0)if(hang = 1) a = 0x80。delay(5) 。if(hang = 2) a = 0xc0。if(jia=0)a = a + lie - 1 。/秒加一enable(a)。while(1)while(!jia)。sec=bcdtodec(uc_R1302(0x81)&0x7f)。if(*p = '0') breakwrite(*p) 。

28、sec+。if(sec>59)p+。sec=0。L1602_char(2, 9, sec/10%10+48)L1602_char(2, 10, sec%10 + 48)。/時鐘調節/v_W1302(0x80,dectobcd(sec)|0x80)if(jian=0)。/if(min=-1)min=59 。L1602_char(2, 6,min / 10 % 10 +秒減一48)。delay(5) 。if(jian=0)L1602_char(2, 7, min % 10 + 48) 。v_W1302(0x82,dectobcd(min) 。while(!jian) 。sec=bcdtode

29、c(uc_R1302(0x81) 。if(num=3)/sec-。調小時if(sec=-1)sec=59。enable(0xc0+3) 。L1602_char(2, 9, sec/10%10+48)L1602_char(2, 10, sec%10 + 48)v_W1302(0x80,dectobcd(sec)|0x80) 。if(num=2)調分鐘。/if(jia=0)delay(5) 。if(jia=0)hour = bcdtodec(uc_R1302(0x85) 。hour+ 。while(!jia) 。if(hour>23)hour=0 。L1602_char(2, 3, hour

30、 / 10 % 10 +enable(0xc0+6) 。48)。if(jia=0)L1602_char(2,4,hour%10+delay(5) 。48)。if(jia=0)min = bcdtodec(uc_R1302(0x83)。v_W1302(0x84,dectobcd(hour)if(jian=0)。48)。min+ 。while(!jia) 。if(min>59)min=0 。L1602_char(2, 6, min / 10 % 10 +L1602_char(2, 7, min % 10 + 48) 。v_W1302(0x82,dectobcd(min) 。if(jian=0

31、)delay(5) 。if(jian=0)while(!jian) 。hour = bcdtodec(uc_R1302(0x85) 。hour- 。if(hour=-1)hour=23 。L1602_char(2, 3, hour / 10 % 10 +48)。delay(5) 。L1602_char(2,4,hour%10+if(jian=0)48)。min = bcdtodec(uc_R1302(0x83)min- 。while(!jian) 。v_W1302(0x84,dectobcd(hour)if(num=4)。/調日期mon=0 。L1602_char(1, 8,mon / 10

32、% 10 +enable(0x80+11) 。48)。if(jia=0)L1602_char(1, 9, mon % 10 + 48)。delay(5) 。if(jia=0)hour = bcdtodec(uc_R1302(0x87) 。day+ 。while(!jia) 。if(day>31)day=0。L1602_char(1, 11, day / 10 % 10 +48)。v_W1302(0x88,dectobcd(mon) 。if(jian=0)delay(5) 。if(jian=0)while(!jian) 。mon = bcdtodec(uc_R1302(0x89) 。mon

33、- 。L1602_char(1,12,day%10+if(mon=-1)48)。v_W1302(0x86,dectobcd(day)。mon=12 。L1602_char(1, 8, mon/10%10+48)。if(jian=0)L1602_char(1, 9, mon % 10 + 48)。delay(5) 。if(jian=0)while(!jian) 。day=bcdtodec(uc_R1302(0x87)。v_W1302(0x88,dectobcd(mon)if(num=6)。day-。/ 調年份if(day=-1)day=31。enable(0x80+5) 。L1602_char(

34、1,11,day/10%10+48)。if(jia=0)L1602_char(1,12,day%10+48)v_W1302(0x86,dectobcd(day)if(num=5)/調月份enable(0x80+8) 。if(jia=0)。delay(5) 。if(jia=0)year = bcdtodec(uc_R1302(0x8d) 。year+ 。while(!jia) 。if(year>20)year=0。L1602_char(1, 5, year / 10 % 10 +delay(5) 。48)。if(jia=0)L1602_char(1,6,year%10+48)。mon =

35、bcdtodec(uc_R1302(0x89)。v_W1302(0x8c,dectobcd(year)。mon+ 。while(!jia)。if(jian=0)if(mon>12)delay(5) 。if(jian=0)while(!jian) 。year = bcdtodec(uc_R1302(0x8d) 。year-。if(year=-1)year=20。L1602_char(1, 5, year / 10 % 10 +48)。L1602_char(1,6,year%10+48)。v_W1302(0x8c,dectobcd(year) 。if(num=0)/關閉光標閃爍enable(

36、0x0c)。v_W1302(0x80,uc_R1302(0x81)&0x7f)。/開啟 1302 記時/* 名稱 : v_RTInputByte ()* 功能 : 往 DS1302 寫入 1Byte 數據* 輸入 : ucDa 寫入的數據* 輸出:無* */ void v_RTInputByte(uchar ucDa) uchar i。ACC = ucDa 。T_RST = 1 。for(i=8 。 i>0。 i-)T_IO = ACC0 。T_CLK = 1 。T_CLK = 0 。ACC=ACC>>1 。/* * 名稱 : uc_RTOutputByte ()*

37、功能 : 從 DS1302 讀取 1Byte 數據*輸入:無* 返回值 : ACC*/uchar uc_RTOutputByte(void)uchar i。T_RST = 1 。for(i=8 。 i>0。 i-)ACC = ACC >>1 。ACC7 = T_IO 。T_CLK = 1 。T_CLK = 0 。return(ACC) 。/* 名稱:v_W1302(uchar ucAddr, ucharucDa)* 功能 : 往 DS1302 寫入數據* 輸入 : ucAddr: DS1302 地址 , ucDa: 要寫的數據* 返回值: 無*/void v_W1302(uchar ucAddr, uchar ucDa)T_RST = 0 。T_CLK = 0 。T_RST = 1 。v_RTInputByte(ucAddr) 。/ 寫地址_nop_() 。_nop_() 。v_RTInputByte(ucDa) 。/寫1Byte 數據T_CLK = 1 。T_RST = 0 。/* 名稱 : uc_R1302(

溫馨提示

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

評論

0/150

提交評論