基于單片機的簡易酒店點菜系統.doc_第1頁
基于單片機的簡易酒店點菜系統.doc_第2頁
基于單片機的簡易酒店點菜系統.doc_第3頁
基于單片機的簡易酒店點菜系統.doc_第4頁
基于單片機的簡易酒店點菜系統.doc_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第1章.設計總體思路與系統框圖1.1設計總體思路 根據設計要求我們可知酒店點菜終端系統由控制模塊,液晶顯示模塊,鍵盤模塊組成。控制模塊有80C51和80C52可供選擇,但考慮到程序占用的空間比較大,所以我選擇了80C52單片機。對于液晶顯示模塊我們這里采用的是LCD12864(64行128列組成)。對于鍵盤模塊由于只要用到三個鍵,故我們可以用三個按鍵分別來實現上移,確定,下移功能。再加以簡單的輔助電路和C語言程序就可以構成簡單的酒店點菜終端系統,在此,我們采用proteus軟件進行仿真。1.2系統框圖按照設計思路,系統框圖如下:AT89C52AMPIRE128X64鍵盤控制模塊圖一 系統框圖1.3系統顯示框圖將各模塊在Proteus仿真軟件中連接好后,點擊“運行”,結合鍵盤上的“上移”、“確定”、“下移”鍵可以在LCD上看到開機畫面、各系菜單以及其子菜單。顯示框圖如圖二。開始 顯示作者名稱字樣返回湘菜粵菜蘇菜浙菜閩菜川菜魯菜各菜系子菜單顯示 點菜成功!圖二 顯示框圖第2章.單元函數模塊設計2.1 AT89C52單片機控制模塊 2.1.1AT89C52介紹 AT89C52是一個低電壓,高性能CMOS 8位單片機,片內含8k bytes的可反復擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統,片內置通用8位中央處理器和Flash存儲單元,AT89C52單片機在電子行業中有著廣泛的應用。AT89C52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內含2個外中斷口,3個16位可編程定時計數器,2個全雙工串行通信口,2個讀寫口線,AT89C52可以按照常規方法進行編程,但不可以在線編程。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發成本。2.1.2AT89C52管腳圖 AT89C52管腳圖如下: 圖三 AT89C52管腳圖2.1.3頭文件注解 在用c語言編程是往往第一行就是reg52.h或者其他的自定義頭文件,系統編程將要使用到兩個頭文件,分別是reg52.h和code.h。下面就reg52.h頭文件作簡單解釋,code.h頭文件的編寫主要是為了存放菜單中所要使用的漢字的字模,以便主程序調用,程序清單將在附錄中給出。程序的第一行是一個“文件包含”處理,所謂“文件包含”是指一個文件將另外一個文件的內容全部包含進來。程序中包含REG51.h頭文件的目的是為了要使用P1 (還有其他更多的符號)這個符號,即通知C 編譯器,程序中所寫的P1 是指80C51 單片機的P1 端口而不是其它變量。2.2鍵盤控制模塊2.2.1鍵盤功能本系統采用的是三個BUTTON分別實現“上移”,“確定”,“下移”三個功能,有了這三個鍵我們就能實現菜單,子菜單,功能的進入和返回。圖四 鍵盤控制模塊2.2.2鍵盤控制程序 程序中我定義了P3.0,P3.4,P3.7分別為“上移”,“確定”,“下移”三個功能按鍵。按鍵引腳的一端接單片機,一端接低電平,當單片機接收到某個端口的低電平是就表示拿個按鍵已經按下。否則表示按鍵沒按下,為了更好的實現按鍵的準確性我加入了消抖程序與松手檢測程序。按鍵判斷程序如下:void keyscan() /按鍵判斷 if(qd=0) delay(5); if(qd=0)while(!qd); n=1; if(sy=0) delay(5); if(sy=0)while(!sy); m+;if(m7)m=0; if(xy=0) delay(5); if(xy=0)while(!xy); m-;if(m=255)m=7; 2.3 LCD顯示模塊2.3.1 LCD12864功能介紹 AMPIRE128x64管腳一共18個(見圖五),CS1左半屏片選端,CS2右半屏片選端;VCC、GND就是電源、接地引腳,V0液晶顯示驅動電壓,RS數據指令選擇信號,H為數據,L為指令,也叫D/I,即DATA和INSTRUCTIONS這兩個單詞的縮寫。R/W讀寫選擇信號。E為LCD使能端,R/W為L時,E信號下降沿鎖存DB7-DB0;R/W為H時,E為H,DDRAM數據讀到DB7-DB0,如果只寫不讀的話可以接地處理。DB0-DB7數據傳輸端口。RST為復位信號,-VOUT為液晶顯示驅動電壓。2.3.2 LCD12864指令說明 AMPIRE128x64共有7個指令,下面分別加以說明:顯示開關 :0x3e 關;0x3f開(R/W=0,RS=0)。顯示起始行:0xc0+i , i取值0至63(R/W=0,RS=0)。設置DDRAM頁地址(X地址):0xb8+i,i取值0至7(R/W=0,RS=0),設置Y地址:0x40+i,i取值0至63(R/W=0,RS=0)。寫數據:將數據線上的數據DB7-DB0寫到DDRAM 。Y地址指針自動加1(R/W=0,RS=1)。讀數據:將DDRAM中的數據讀入1數據線DB7-DB0 。Y地址指針自動加1(R/W=1,RS=1)。指令表如表一所示 表一 LCD12864指令表2.3.3 LCD驅動程序驅動程序如下:void CheckState()uchar dat;/狀態信息(判斷是否忙) RS=0; / 數據指令選擇,D/I(RS)=“L” ,表示 DB7DB0 為顯示指令數據 RW=1; /R/W=“H” ,E=“H”數據被讀到DB7DB0 doDATA=0x00; EN=1;/EN下降沿dat=DATA; EN=0; dat=0x80 & dat; 僅當第7位為0時才可操作(判別busy信號) while(!(dat=0x00); /*寫命令到LCD中*/SendCommandToLCD(uchar com)CheckState();/狀態檢查,LCD是否忙 RS=0; /向LCD發送命令。RS=0寫指令,RS=1寫數據 RW=0;/R/W=“L” ,E=“HL”數據被寫到 IR 或 DR DATA=com; /com :命令 EN=1;/EN下降沿 EN=0;/*設置頁 0xb8是頁的首地址*/void Setpage(uchar page)page=0xb8|page; /1011 1xxx 0=page=7 設定頁地址-X 0-7,8行為一頁64/8=8,共8頁 SendCommandToLCD(page); /*設定顯示開始行,0xc0是行的首地址*/void SetStartLine(uchar startline) startline=0xc0|startline; /1100 0000 SendCommandToLCD(startline); /設置從哪行開始:0-63,一般從0 行開始顯示/*設定列地址-Y 0-63 ,0x40是列的首地址*/void SetColumn(uchar column)column=column &0x3f; /column最大值為64,越出 0=column=63 column= 0x40|column; /01xx xxxx SendCommandToLCD(column); /*開關顯示,0x3f是開顯示,0x3e是關顯示*/void SetOnOff(uchar onoff) onoff=0x3e|onoff; /0011 111x,onoff只能為0或者1 SendCommandToLCD(onoff);/*寫顯示數據 */void WriteByte(uchar dat)CheckState();/狀態檢查,LCD是否忙 RS=1; /RS=0寫指令,RS=1寫數據 RW=0;/R/W=“L” ,E=“HL”數據被寫到 IR 或 DR DATA=dat;/dat:顯示數據 EN=1; /EN下降源 EN=0;/*選擇屏幕screen: 0-全屏,1-左屏,2-右屏*/void SelectScreen(uchar screen) switch(screen) case 0: cs1=1;/全屏 cs2=1; break; case 1: cs1=1;/左屏 cs2=0; break; case 2: cs1=0;/右屏 cs2=1; break; /*清屏screen: 0-全屏,1-左屏,2-右屏*/void ClearScreen(uchar screen) uchar i,j; SelectScreen(screen); for(i=0;i8;i+) /控制頁數0-7,共8頁 Setpage(i); for(j=0;j64;j+) /控制列數0-63,共64列 SetColumn(j); WriteByte(0x00); /寫點內容,列地址自動加1 void InitLCD() /初始化LCD CheckState(); SelectScreen(0); SetOnOff(0); /關顯示 SelectScreen(0); SetOnOff(1); /開顯示 SelectScreen(0); ClearScreen(0);/清屏 SetStartLine(0); /開始行:0第3章.系統仿真與結果3.1 開機顯示 利用proteus軟件仿真,點擊運行之后會顯示如下的開機畫面。 圖五 開機顯示畫面 圖中菜單為反白顏色,按下“確定”鍵后即可進入菜單。3.2 主菜單顯示系統開機后,按下“確定”鍵即可進入主菜單。主菜單顯示如下: 圖六 主菜單顯示3.3 子菜單顯示 在子菜單中分別有幾道菜供顧客享用,當顧客按下“上移”或“下移”鍵選中想要的菜系再按下“確定”鍵就可以進入該菜系,再選擇自己想要的菜系按下“確定”鍵即可點菜成功。子菜單顯示如下: 圖七 子菜單顯示3.4 點菜成功顯示當顧客選擇到自己想要吃的菜并按下“確定”鍵后就表示顧客點菜成功。點菜成功顯示如下: 圖八 點菜成功顯示當顧客再次按下“確定”鍵后返回菜系菜單,并且已經點過的菜會以一個鉤表示。如下圖: 圖九 顯示已點菜第4章.總結與體會 短短兩周的專業設計結束了,回顧這兩周我的努力,我覺得我還是收獲蠻大的,通過這兩周的專業設計,我對單片機有了更深的認識,對LCD12864有了更深入的了解,單片機其實說簡單點就是用軟件控制單片機各個腳的電平變化,但是實踐中還是挺有難度的,這次專業設計我接到的任務是做一個簡易的酒店點菜終端系統,剛開始覺得挺有難度的,主要是我對LCD12864一無所知,但是經過上網查找資料及通過看LCD12864的指導手冊終于弄懂了這個液晶顯示屏,其實一個看似簡單的電路,要把他設計出來就比較困難了,這次設計我用的編程語言是C語言,其實單片機的C語言我通過看網上的視頻還是有所了解。所以這次編程還算比較順利,剛開始我只做了兩大的菜系,我想這其中的難點就是怎樣進入各個子菜單及其返回以及光標的上下移動,我的方法其實也挺簡單,就是將選中的菜系字體取反白顯示出來。另一個難點就是鍵盤掃描了,剛開始我出了點小狀況,就是按下確定鍵后不會進入各個菜單,后來認識思考之后才發現用!n代替就行了。每次按鍵按下n自動取反,最后一個就是各個菜單的顯示比較難了,因為你移動一下就是一個狀態,最后我經過仔細的思考覺得用個 switchcase語句一下子就出來了,雖然這樣會顯得程序比較復雜,但是我還沒有想到其他更好的簡單辦法所以就用了這個。 通過這兩周的學習,我學到了很多,畢竟自己也做出了一點東西,蠻有成就感的,其實我也知道這只是冰山一角,要想真正的弄通單片機,今后的學習道路還很漫長,我想我也會深深的記住這次課設給我的經驗與教訓,在今后的學習中一定要多思考,多實踐,那樣我才會真正有所成就。最后衷心感謝陳老師在這兩周對我的細心指導。附錄5.1 仿真電路圖5.2 程序清單#include #include #include #define uint unsigned int#define uchar unsigned char#define DATA P0 /LCD12864數據線sbit sy=P30;sbit qd=P34;sbit xy=P37;sbit RS=P20; / 數據指令 選擇sbit RW=P21; / 讀寫 選擇sbit EN=P22; / 讀寫使能sbit cs1=P23; / 片選1sbit cs2=P24; / 片選2void menuselect();void keyscan();void lucai();void dccg(uchar b);void lucai2();void chuancai();void sorry();void lucaia();uchar n,m,k;/*狀態檢查,LCD是否忙*/void CheckState()uchar dat;/狀態信息(判斷是否忙) RS=0; / 數據指令選擇,D/I(RS)=“L” ,表示 DB7DB0 為顯示指令數據 RW=1; /R/W=“H” ,E=“H”數據被讀到DB7DB0 doDATA=0x00; EN=1;/EN下降沿dat=DATA; EN=0; dat=0x80 & dat; /僅當第7位為0時才可操作(判別busy信號) while(!(dat=0x00); /*寫命令到LCD中*/SendCommandToLCD(uchar com)CheckState();/狀態檢查,LCD是否忙 RS=0; /向LCD發送命令。RS=0寫指令,RS=1寫數據 RW=0;/R/W=“L” ,E=“HL”數據被寫到 IR 或 DR DATA=com; /com :命令 EN=1;/EN下降沿 EN=0;/*設置頁 0xb8是頁的首地址*/void Setpage(uchar page)page=0xb8|page; /1011 1xxx 0=page=7 設定頁地址-X 0-7,8行為一頁64/8=8,共8頁 SendCommandToLCD(page); /*設定顯示開始行,0xc0是行的首地址*/void SetStartLine(uchar startline) startline=0xc0|startline; /1100 0000 SendCommandToLCD(startline); /設置從哪行開始:0-63,一般從0 行開始顯示/*設定列地址-Y 0-63 ,0x40是列的首地址*/void SetColumn(uchar column)column=column &0x3f; /column最大值為64,越出 0=column=63 column= 0x40|column; /01xx xxxx SendCommandToLCD(column); /*開關顯示,0x3f是開顯示,0x3e是關顯示*/void SetOnOff(uchar onoff) onoff=0x3e|onoff; /0011 111x,onoff只能為0或者1 SendCommandToLCD(onoff);/*寫顯示數據 */void WriteByte(uchar dat)CheckState();/狀態檢查,LCD是否忙 RS=1; /RS=0寫指令,RS=1寫數據 RW=0;/R/W=“L” ,E=“HL”數據被寫到 IR 或 DR DATA=dat;/dat:顯示數據 EN=1; /EN下降源 EN=0;/*選擇屏幕screen: 0-全屏,1-左屏,2-右屏*/void SelectScreen(uchar screen) switch(screen) case 0: cs1=1;/全屏 cs2=1; break; case 1: cs1=1;/左屏 cs2=0; break; case 2: cs1=0;/右屏 cs2=1; break; /*清屏screen: 0-全屏,1-左屏,2-右屏*/void ClearScreen(uchar screen) uchar i,j; SelectScreen(screen); for(i=0;i8;i+) /控制頁數0-7,共8頁 Setpage(i); for(j=0;j64;j+) /控制列數0-63,共64列 SetColumn(j); WriteByte(0x00); /寫點內容,列地址自動加1 /*延時程序*/void delay(uint z)uint i,j; for(i=0; iz; i+) for(j = 0; j 110; j+);/*初始化LCD*/void InitLCD() CheckState(); SelectScreen(0); SetOnOff(0); /關顯示 SelectScreen(0); SetOnOff(1); /開顯示 SelectScreen(0); ClearScreen(0);/清屏 SetStartLine(0); /開始行:0/*顯示全角漢字*/void Display(uchar ss,uchar page,uchar column,uchar number)int i;/選屏參數,page選頁參數,column選列參數,number選第幾漢字輸出 SelectScreen(ss); column=column&0x3f; Setpage(page);/寫上半頁 SetColumn(column); /控制列 for(i=0;i16;i+) /控制16列的數據輸出 WriteByte(Hzki+32*number); /i+32*number漢字的前16個數據輸出 Setpage(page+1); /寫下半頁 SetColumn(column); /控制列 for(i=0;i16;i+) /控制16列的數據輸出 WriteByte(Hzki+32*number+16);/i+32*number+16漢字的后16個數據輸出 void Display2(uchar ss,uchar page,uchar column,uchar number)int i;/選屏參數,page選頁參數,column選列參數,number選第幾漢字輸出 SelectScreen(ss); column=column&0x3f; Setpage(page);/寫上半頁 SetColumn(column); /控制列 for(i=0;i16;i+) /控制16列的數據輸出 WriteByte(Hzki+32*number); /i+32*number漢字的前16個數據輸出 Setpage(page+1); /寫下半頁 SetColumn(column); /控制列 for(i=0;i16;i+) /控制16列的數據輸出 WriteByte(Hzki+32*number+16);/i+32*number+16漢字的后16個數據輸出 void menu()uint i; while(!n) /顯示漢字 keyscan(); for(i=0;i2;i+) Display(1,0,0+i*16,i);/*Display(選屏參數(cs1,cs2),page選頁參數,column選列參數,number選第幾漢字輸出)*/Display(1,0,32+i*16,i+2);Display(2,0,64+i*16,i+4);Display(2,0,96+i*16,i+6);Display(1,2,0+i*16,i+8);Display(1,2,32+i*16,i+10);Display(2,2,64+i*16,12+i*5);Display(2,2,96+i*16,17);Display(1,4,0+i*16,17);Display(1,4,32+i*16,17);Display(2,4,64+i*16,17);Display(2,4,96+i*16,17);Display(1,6,0+i*16,i+13);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17);Display(2,6,96+i*16,i+15); delay(5); n=0;menuselect();/*主函數*/void main()InitLCD();/初始12864menu();void menuselect() uint i;ClearScreen(0); while(!n) keyscan(); for(i=0;i7)m=0; if(xy=0) delay(5); if(xy=0)while(!xy);m-;if(m=255)m=7; /*魯菜*/void lucai() uint i,f;ClearScreen(0); while(!n) keyscan(); for(i=0;i2;i+) switch(m%5)case 0: Display2(1,0,0+i*16,26+i);Display2(1,0,32+i*16,28+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,40+i);Display(1,2,0+i*16,31+i);Display(1,2,32+i*16,33+i);Display(2,2,64+i*16,17);Display(2,2,96+i*16,39+i*2);Display(1,4,0+i*16,35+i);Display(1,4,32+i*16,37+i);Display(2,4,64+i*16,17);Display(2,4,96+i*16,40+i);Display(1,6,0+i*16,15+i);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17+i*29);Display(2,6,96+i*16,47+i);break;case 1:Display(1,0,0+i*16,26+i);Display(1,0,32+i*16,28+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,40+i);Display2(1,2,0+i*16,31+i);Display2(1,2,32+i*16,33+i);Display(2,2,64+i*16,17);Display(2,2,96+i*16,39+i*2);Display(1,4,0+i*16,35+i);Display(1,4,32+i*16,37+i);Display(2,4,64+i*16,17);Display(2,4,96+i*16,40+i);Display(1,6,0+i*16,15+i);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17+i*29);Display(2,6,96+i*16,47+i);break;case2:Display(1,0,0+i*16,26+i);Display(1,0,32+i*16,28+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,40+i);Display(1,2,0+i*16,31+i);Display(1,2,32+i*16,33+i);Display(2,2,64+i*16,17);Display(2,2,96+i*16,39+i*2);Display2(1,4,0+i*16,35+i);Display2(1,4,32+i*16,37+i);Display(2,4,64+i*16,17);Display(2,4,96+i*16,40+i);Display(1,6,0+i*16,15+i);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17+i*29);Display(2,6,96+i*16,47+i);break;case 3:Display(1,0,0+i*16,26+i);Display(1,0,32+i*16,28+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,40+i);Display(1,2,0+i*16,31+i);Display(1,2,32+i*16,33+i);Display(2,2,64+i*16,17);Display(2,2,96+i*16,39+i*2);Display(1,4,0+i*16,35+i);Display(1,4,32+i*16,37+i);Display(2,4,64+i*16,17);Display(2,4,96+i*16,40+i);Display2(1,6,0+i*16,15+i);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17+i*29);Display(2,6,96+i*16,47+i);break;case4:Display(1,0,0+i*16,26+i);Display(1,0,32+i*16,28+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,40+i);Display(1,2,0+i*16,31+i);Display(1,2,32+i*16,33+i);Display(2,2,64+i*16,17);Display(2,2,96+i*16,39+i*2); Display(1,4,0+i*16,35+i);Display(1,4,32+i*16,37+i);Display(2,4,64+i*16,17);Display(2,4,96+i*16,40+i);Display(1,6,0+i*16,15+i);Display(1,6,32+i*16,17);Display2(2,6,64+i*16,49-i*3);Display2(2,6,96+i*16,47+i);break; delay(5); n=0;if(m%5=0)f=26;if(m%5=1)f=31;if(m%5=2)f=35;if(m%5=3) m=0;menuselect(); if(m%5=4) m=0;lucai2(); k=1;dccg(f);void dccg(uchar b)uchar i;ClearScreen(0);while(!n) keyscan();for(i=0;i2;i+)Display(1,0,0+i*16,b+i);Display(1,0,32+i*16,b+2+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,17);Display(1,2,0+i*16,17);Display(1,2,32+i*16,42+i);Display(2,2,64+i*16,44+i);Display(2,2,96+i*16,17);Display(1,4,0+i*16,17);Display(1,4,32+i*16,17);Display(2,4,64+i*16,17);Display(2,4,96+i*16,17);Display(1,6,0+i*16,17);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17);Display2(2,6,96+i*16,15+i);n=0; if(k=1)lucaia(); if(k=2)chuancai(); if(k=3)lucai();void lucai2()uint i,f;ClearScreen(0); while(!n) keyscan(); for(i=0;i2;i+) switch(m%4)case 0:Display2(1,0,0+i*16,50+i);Display2(1,0,32+i*16,52+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,39+i*2);Display(1,2,0+i*16,54+i);Display(1,2,32+i*16,56+i);Display(2,2,64+i*16,17);Display(2,2,96+i*16,40+i);Display(1,4,0+i*16,58+i);Display(1,4,32+i*16,60+i);Display(2,4,64+i*16,17);Display(2,4,96+i*16,40+i);Display(1,6,0+i*16,17);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17);Display(2,6,96+i*16,15+i);break;case1:Display(1,0,0+i*16,50+i);Display(1,0,32+i*16,52+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,39+i*2);Display2(1,2,0+i*16,54+i);Display2(1,2,32+i*16,56+i);Display(2,2,64+i*16,17);Display(2,2,96+i*16,40+i);Display(1,4,0+i*16,58+i);Display(1,4,32+i*16,60+i);Display(2,4,64+i*16,17);Display(2,4,96+i*16,40+i);Display(1,6,0+i*16,17);Display(1,6,32+i*16,17);Display(2,6,64+i*16,17);Display(2,6,96+i*16,15+i);break;case2:Display(1,0,0+i*16,50+i);Display(1,0,32+i*16,52+i);Display(2,0,64+i*16,17);Display(2,0,96+i*16,39+i*2);Display(1,2,0+i*16

溫馨提示

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

評論

0/150

提交評論