基于51單片機的信號發生器的設計_第1頁
基于51單片機的信號發生器的設計_第2頁
基于51單片機的信號發生器的設計_第3頁
基于51單片機的信號發生器的設計_第4頁
基于51單片機的信號發生器的設計_第5頁
已閱讀5頁,還剩27頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

通信工程學院課程設計說明書題目信號發生器的設計課程名稱單片機原理及應用A專業電子信息工程目錄一、課程設計目的二、課程設計任務三、課程設計要求四、課程設計思路五、課程設計軟件仿真結果截圖六、課程設計體會七、主要參考文獻八、附錄:源程序代碼課程設計目的:在學習《單片機原理及應用A》課程的基礎上,進一步深入理解MCS-51單片機的結構、工作原理和應用技術,提高單片機控制系統設計、研發的能力;按照教學計劃的要求,利用一周時間,綜合應用所學知識,設計具有一定功能的小型單片機控制系統,培養學生一定的自學能力和獨立分析問題、解決問題的能力,要求學生能通過獨立思考、查閱工具書、參考文獻,提出自己的設計方案,找出設計中遇到問題的解決途徑。課程設計要求:1、整個課程設計的各個環節都要自己動手。2、通過TLC5615串行D/A轉換芯片完成信號發生器設計,經由示波器觀察信號波形;3、采用C語言編程實現;4、其他要求參見“nKDE-51單片機實驗教學系統實驗指導書;5、基本任務為必做項目,附加任務為選做項目;6、對課程設計進行總結,撰寫課程設計說明書。三、課程設計任務:1、基本任務:利用nKDE-51單片機實驗教學系統上的硬件資源,實現信號發生器的功能。2、附加任務:通過鍵盤(1)選擇輸出信號的波形;(2)調整幅度、頻率等參數。3、工作量要求:(1)設計的硬件電路圖與程序流程圖;(2)源程序代碼;(3)系統運行結果符合課程設計要求。四、課程設計思路:TLC56151、TLC5615芯片結構:TLC5615引腳功能:DIN:串行數據輸入端OUTSCLKSCLK:串行時鐘輸入端REFinCSCS:片選端,低電平有效DINOUT:DAC模擬電壓輸出端DOUTREFin:基準輸入端2、TLC5615芯片工作原理:TLC5615由16位轉換寄存器、控制邏輯、10位DAC寄存器、上電復位、DAC、外部基準放大器、基準電壓倍增器等部分組成。TLC5615通過固定增益為2的運放緩沖電阻串接網絡,把10位數字數據轉換成模擬電壓。上電時,內部電路吧10DAC寄存器復位至全0,其輸出具有與基準輸入相同的極性。(1)數據輸入。由于DAC是12位寄存器,所以在寫入10位數據后,最低2位寫入2個“0”。(2)輸出緩沖器。輸出緩沖器具有滿電源電壓幅度輸出,它帶有短路保護并能驅動有100pF負載電容的2kΩ負載。(3)外部基準。外部基準電壓輸入經過緩沖,使得DAC輸入電阻與代碼無關。因此,REFin的輸入電阻為10MΩ,輸入電容典型值為5pF,它們與輸入代碼無關。基準電壓決定DAC的滿度輸出。(4)邏輯接口。邏輯輸入端可使用TTL或CMOS邏輯電平。使用滿電源電壓幅度時,CMOS邏輯可得到最小的功耗。使用TTL邏輯電平是,功耗需求增加約2倍。(5)串行時鐘和更新速率。TLC5615的最大串行時鐘頻率近似為14MHz。通常,數字更新速率受片選周期的限制。對于滿度輸入階躍跳變,10位DAC的建立時間約為12.5μs,這把更新頻率限制在80KHz。當片選信號為低電平時,輸入數據讀入16bit移位寄存器。SCLK輸入的上升沿把數據移入輸入寄存器,接著,CS的上升沿把數據傳送至DAC寄存器,當CS為高電平時,輸入的數據不能由時鐘同步送入輸入寄存器。所有CS的跳變應發生在SCLK輸入為低電平時。DIN只需要輸入12位數據,DIN輸入的12位數據中,前10位為TLC5615輸入的D/A轉換數據,并且輸入時,高位在前,低位在后,后2位必須寫入為0的2位數值,因為TLC5615的DAC輸入鎖存器為12位寬。總流程圖:開始開始鍵盤掃描(確定是否改變頻率、幅度)鍵盤掃描(確定是否改變頻率、幅度)檢測按鍵,確定輸出波形檢測按鍵,確定輸出波形程序編譯及軟件仿真電路原理圖:元器件列表:元器件名稱所屬類型AT89C51MicroprocessorICSCRYSTAL晶振MisecllaneousCAP電容CapacitorRESPACK-8ResistorCAP電容CapacitorSWITCH按鍵Switches&relaysTLC5615C(L)DDataConvertersLM016L液晶顯示Display五、課程設計軟件仿真結果截圖:1、按下三角波鍵示波器輸出三角波,同時液晶屏上顯示“sanjiaobo”按下“鋸齒波”鍵示波器輸出三角波,同時液晶屏上顯示“juchibo”按下“方波”鍵示波器輸出三角波,同時液晶屏上顯示“fangbo”按下“正弦波”鍵示波器輸出三角波,同時液晶屏上顯示“sine”當無任何鍵按下時示波器輸出直線,同時液晶屏上顯示“wave”6、顯示字符“三”:課程設計體會:本次課程設計我做的是信號發生器,參考相關書籍和老師給的程序,很快就把三角波、鋸齒波、方波、正弦波四種波形顯示出來了。后面就是波形顯示切換和在液晶屏上顯示對應波形說明的問題。在老師同學和自己的努力下,在原程序上利用IF語句和SWITCH語句實現了波形按鍵切換功能,即想要顯示方波按下“方波”鍵即可。另外我們這組還在LCM1602液晶屏上顯示出了漢字,通過參考資料加上自己對漢字顯示原理的理解,最終在液晶屏上顯示出漢字“三”,雖然只是簡單的“三”,但是過程是相當不容易。這次課程設計很有趣,讓我實實在在收獲了不少東西,知道了DA轉換和LCM1602顯示的原理,尤其是在LCM1602漢字的顯示原理。這次課程設計也提高了我的編程能力和同學的合作能力。主要參考文獻:1、《nKDE51單片機實驗教學系統實驗指導書》南京郵電大學,2021年2、《單片機原理與應用及C51程序設計》(第2版),謝維成等編著,清華大學出版社,2021年3、《單片機原理及應用》(第2版),李建忠,西安電子科技大學出版社,2021年4、《基于protues的51系列單片機設計與仿真》侯玉寶陳忠平李成群等編著,電子工業出版社八、源程序代碼:LCM1602.H#ifndefLCM1602_h#defineLCM1602_h#defineBUSYFLAG 0x80#defineBLINK 0x01#defineNOBLINK 0x00unsignedcharLCMReadState(void);voidLCMDelay(int);voidLCMWriteCmd(unsignedchar);voidLCMWriteData(unsignedchar);voidLCMClear(void);voidLCMInit(void);voidLCMGotoXY(unsignedchar,unsignedchar);voidLCMDisplayChar(unsignedchar,unsignedchar,unsignedchar);voidLCMDisplayString(unsignedchar,unsignedchar,unsignedchar*);voidLCMBlink(unsignedchar,unsignedchar,unsignedchar);#endifBOXING.H#include<reg51.h>#include<stdio.h>#include<intrins.h>#include<LCM1602.h>#defineOSC 22118400#defineBAUDRATE 9600sbit DIN=P1^4; //串行數據輸入端sbit SCK=P1^5; //串行時鐘輸入端sbit CS=P1^6; //DA片選端sbit S0 =P2^0; //三角波sbit S1 =P2^1; // 鋸齒波sbit S2 =P2^2; // 方波波sbit S3 =P2^3; // 正弦波//正弦波unsignedcharcodetype[256]={ 0x80,0x83,0x86,0x89,0x8c,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xeb,0xed,0xef,0xf0,0xf1,0xf3,0xf4,0xf5,0xf6,0xf8,0xf9,0xfa,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xfa,0xf9,0xf8,0xf6,0xf5,0xf4,0xf3,0xf1,0xf0,0xef,0xed,0xeb,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8c,0x89,0x86,0x83,0x80,0x7d,0x7a,0x77,0x74,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52,0x4f,0x4d,0x4a,0x47,0x44,0x41,0x3f,0x3c,0x39,0x37,0x34,0x32,0x2f,0x2d,0x2b,0x28,0x26,0x24,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0f,0x0d,0x0c,0x0b,0x0a,0x08,0x07,0x06,0x06,0x05,0x04,0x03,0x03,0x02,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x02,0x03,0x03,0x04,0x05,0x06,0x06,0x07,0x08,0x0a,0x0b,0x0c,0x0d,0x0f,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x24,0x26,0x28,0x2b,0x2d,0x2f,0x32,0x34,0x37,0x39,0x3c,0x3f,0x41,0x44,0x47,0x4a,0x4d,0x4f,0x52,0x55,0x58,0x5b,0x5e,0x61,0x64,0x67,0x6a,0x6d,0x70,0x74,0x77,0x7a,0x7d};voidDAConvert(unsignedintda) //并行轉串行{ inti; da<<=2; da&=0xFFC; SCK=0; CS=0; for(i=0;i<12;i++) { if(da&0x800) DIN=1; elseDIN=0; SCK=1; SCK=0; da<<=1; } CS=1; SCK=1; DIN=1;}voidDelay(unsignedintt){unsignedinti;while(t--){for(i=0;i<100;i++);}}voidling(){ LCMClear(); LCMDisplayString(1,5,"wave"); while(1) {DAConvert(0); if(S0==0||S1==0||S2==0||S3==0)break; }}voidsanjiaobo(){ LCMClear(); LCMDisplayString(1,2,"sanjiaobo"); while(1) {unsignedinti; for(i=0;i<256;i++) {DAConvert(i);} for(i=256;i>0;i--) {DAConvert(i);} if(S0==1)break;}} voidjuchibo(){ LCMClear(); LCMDisplayString(1,2,"juchibo"); while(1) { unsignedinti; for(i=0;i<256;i++) {DAConvert(i);} if(S1==1)break;}} voidfangbo(){ LCMClear(); LCMDisplayString(1,2,"fangbo"); while(1) { DAConvert(40); Delay(50); DAConvert(0); Delay(50); if(S2==1)break;} }voidsine(){ LCMClear(); LCMDisplayString(1,5,"sine"); while(1) { unsignedchari; DAConvert(type[i]); i++; if(S3==1)break;} }voidboxing(void){ intkey=0; while(1){ if(S0==1&&S1==1&&S2==1&&S3==1)key=0; if(S0==0)key=1; if(S1==0)key=2; if(S2==0)key=3; if(S3==0)key=4; switch(key) {case0:ling(); break; case1:sanjiaobo(); break; case2:juchibo(); break; case3:fangbo(); break; case4:sine(); break; }} } LCM1602.C#include<reg51.h>#include<intrins.h>#include<LCM1602.H>#include<boxing.h>#defineBUSYFLAG 0x80#defineBLINK 0x01#defineNOBLINK 0x00#defineLCM_DB P0sbitLCM_RS =P1^0;sbitLCM_RW =P1^1;sbitLCM_E =P1^2;sbitLCM_BLC =P1^3;unsignedintdataDelayConst=140;/******************************************************************************函數名:LCMDelay功能:通過循環的方式延時參數:int,表示要延時的毫秒數******************************************************************************/voidLCMDelay(intms){ unsignedinti,cnt; cnt=DelayConst*ms; for(i=0;i<cnt;i++);}/******************************************************************************函數名:LCMReadState功能:查詢LCM的忙標志/當前AC地址返回:BYTE,最高bit為1表示忙,為0表示閑******************************************************************************/unsignedcharLCMReadState(void){ unsignedcharstate; LCM_E=0; LCM_RS=0; LCM_RW=1; LCM_E=1; _nop_(); _nop_(); state=LCM_DB; LCM_E=0; returnstate;}/*******************************************************************************函數名:LCMClear功能:清屏*******************************************************************************/voidLCMClear(void){ LCMDelay(1); LCM_E=0; LCM_RS=0; LCM_RW=0; LCM_DB=0x01; LCM_E=1; _nop_(); _nop_(); LCM_E=0; LCMDelay(1);}/*******************************************************************************函數名:LCMWriteCmd功能:向LCM寫入控制字參數:BYTE,命令字節。寫入前不判斷忙表示(因為初始化過程中不能判斷)*******************************************************************************/voidLCMWriteCmd(unsignedcharcmd){ LCMDelay(1); LCM_E=0; LCM_RS=0; LCM_RW=0; LCM_DB=cmd; LCM_E=1; _nop_(); _nop_(); LCM_E=0;}/******************************************************************************函數名:LCMWriteData功能:向LCM寫入數據參數:BYTE,將要寫入的數據******************************************************************************/voidLCMWriteData(unsignedchardc){ while(LCMReadState()&BUSYFLAG); LCM_RS=1; LCM_RW=0; LCM_DB=dc; LCM_E=1; _nop_(); _nop_(); LCM_E=0;}/******************************************************************************函數名:LCMInit功能:初始化LCM參數:DWORD,晶振頻率(Hz),供計算延時常數******************************************************************************/voidLCMInit(void){ LCMDelay(60); //延時60ms,等待LCM復位 LCMWriteCmd(0x38); //功能設置:8位接口,2行,5x7字符點陣 LCMDelay(5); //延時 LCMWriteCmd(0x38); //第二次 LCMDelay(1); //延時 LCMWriteCmd(0x38); //此后可以通過監測忙標志判斷指令執行情況 while(LCMReadState()&BUSYFLAG); LCMWriteCmd(0x08); //關閉顯示 while(LCMReadState()&BUSYFLAG); LCMWriteCmd(0x01); //清屏 while(LCMReadState()&BUSYFLAG); LCMWriteCmd(0x06); //顯示地址自動增量,整體不移位 while(LCMReadState()&BUSYFLAG); LCMWriteCmd(0x0e); //開顯示,開光標,不閃爍 while(LCMReadState()&BUSYFLAG);}/******************************************************************************函數名:LCMGotoXY功能:移動光標到X行,Y列參數:BYTE,x表示行(0,1),y表示列(橫向,取值0~0x0f)******************************************************************************/voidLCMGotoXY(unsignedcharx,unsignedchary) //x:行(0~1)y:列(0~F){ unsignedcharcmd; if(x==0) { cmd=0x80|y; } else { cmd=0x80|0x40|y;//(第1行第0列為40H開始) } LCMWriteCmd(cmd); while(LCMReadState()&BUSYFLAG);}/******************************************************************************函數名:LCMDisplayString功能:從指定的位置開始顯示字符串參數:x表示行(0,1),y表示列(橫向,取值0~0x0f),*str為指向將要顯示的字符串的指針******************************************************************************/voidLCMDisplayString(unsignedcharx,unsignedchary,unsignedchar*str){ unsignedcharptr; ptr=0; while(*(str+ptr)!=0) { LCMDisplayChar(x,(y+ptr),*(str+ptr)); ptr++; }}#include<reg51.h>#include<stdio.h>#defineBUSYFLAG 0x80#defineBLINK 0x01#defineNOBLINK 0x00#defineOSC 22118400unsignedcharucTH,ucTL,Ticks;//*****************************************************************************//函數名:T0ISR//功能:50ms中斷服務程序//*****************************************************************************voidT0ISR(void)interrupt1{ TH0=ucTH; TL0=ucTL; TR0=1; Ticks++; if(Ticks==20) { Ticks=0; LCM_BLC=0; }}voidmain(void){ //初始化 EA=0; //停止所有中斷 Ticks=0; ucTH=(65536-OSC/12/20)/256; //計算50ms定時的時間常數 ucTL=(65536-OSC/12/20)%256; TMOD=0x01; //T0:模式1,16位定時器 TH0=ucTH; TL0=ucTL; ET0=1; //T0允許中斷 TR0=1; //啟動定時器 EA=1; //打開總中斷允許 LCMInit(); LCMClear(); while(1) {boxing();} }

漢字顯示程序#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharsbitrs=P1^0;sbitrw=P1^1;sbiten=P1^2;sbitLCM_BLC=P1^3;//字符“三”ucharcodetable[]={0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x0F,//“三”左上半部分 0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x7C,//“三”右上半部分 0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,//“三”左下半部分 0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00//“三”右下半部分};voiddelay(uintn) //延時{uintx,y;for(x=n;x>0;x--)for(y=110;y>0;y--);}voidlcd_wcom(ucharcom) //向lcm1602寫入命令字{rs=0;rw=0;P0=com;delay(5);en=1;en=0;}voidlcd_wdat(uchardat) //向lcm1602寫入數據{rs=1;rw=0;P0=dat;delay(5);en=1;en=0;}voidlcd_init() //lcm1602初始化{lcd_wcom(0x38);lcd_wcom(0x0c);lcd_wcom(0x06);lcd_wcom(0x01);}voidmain(){charm=0; LCM_BLC=0;lcd_init();lcd_wcom(0x40); //設定CGRAM地址for(m=0;m<64;m++) //將代碼寫入CGRAM中{lcd_wdat(table[m]);}lcd_wcom(0x85); //設定上排的顯示位置for(m=0;m<2;m++){lcd_wdat(m);} lcd_wcom(0xc5); //設定下排的顯示位置for(m=2;m<4;m++){lcd_wdat(m);}while(1);}

社會實踐報告系別:班級:學號:姓名:作為祖國未來的事業的繼承人,我們這些大學生應該及早樹立自己的歷史責任感,提高自己的社會適應能力。假期的社會實踐就是很好的鍛煉自己的機會。當下,掙錢早已不是打工的唯一目的,更多的人將其視為參加社會實踐、提高自身能力的機會。許多學校也積極鼓勵大學生多接觸社會、了解社會,一方面可以把學到的理論知識應用到實踐中去,提高各方面的能力;另一方面可以積累工作經驗對日后的就業大有裨益。進行社會實踐,最理想的就是找到與本專業對口單位進行實習,從而提高自己的實戰水平,同時可以將課本知識在實踐中得到運用,從而更好的指導自己今后的學習。但是作為一名尚未畢業的大學生,由于本身具備的專業知識還十分的有限,所以我選擇了打散工作為第一次社會實踐的方式。目的在于熟悉社會。就職業本身而言,并無高低貴賤之分,存在即為合理。通過短短幾天的打工經歷可以讓長期處于校園的我們對社會有一種更直觀的認識。實踐過程:自從走進了大學,就業問題就似乎總是圍繞在我們的身邊,成了說不完的話題。在現今社會,招聘會上的大字報都總寫著“有經驗者優先”,可還在校園里面的我們這班學子社會經驗又會擁有多少呢?為了拓展自身的知識面,擴大與社會的接觸面,增加個人在社會競爭中的經驗,鍛煉和提高自己的能力,以便在以后畢業后能真正真正走入社會,能夠適應國內外的經濟形勢的變化,并且能夠在生活和工作中很好地處理各方面的問題,我開始了我這個假期的社會實踐-走進天源休閑餐廳。實踐,就是把我們在學校所學的理論知識,運用到客觀實際中去,使自己所學的理論知識有用武之地。只學不實踐,那么所學的就等于零。理論應該與實踐相結合。另一方面,實踐可為以后找工作打基礎。通過這段時間的實習,學到一些在學校里學不到的東西。因為環境的不同,接觸的人與事不同,從中所學的東西自然就不一樣了。要學會從實踐中學習,從學習中實踐。而且在中國的經濟飛速發展,又加入了世貿,國內外經濟日趨變化,每天都不斷有新的東西涌現,在擁有了越來越多的機會的同時,也有了更多的挑戰,前天才剛學到的知識可能在今天就已經被淘汰掉了,中國的經濟越和外面接軌,對于人才的要求就會越來越高,我們不只要學好學校里所學到的知識,還要不斷從生活中,實踐中學其他知識,不斷地從各方面武裝自已,才能在競爭中突出自已,表現自已。在餐廳里,別人一眼就能把我人出是一名正在讀書的學生,我問他們為什么,他們總說從我的臉上就能看出來,也許沒有經歷過社會的人都有我這種不知名遭遇吧!我并沒有因為我在他們面前沒有經驗而退后,我相信我也能做的像他們一樣好.我的工作是在那做傳菜生,每天9點鐘-下午2點再從下午的4點-晚上8:30分上班,雖然時間長了點但,熱情而年輕的我并沒有絲毫的感到過累,我覺得這是一種激勵,明白了人生,感悟了生活,接觸了社會,了解了未來.在餐廳里雖然我是以傳菜為主,但我不時還要做一些工作以外的事情,有時要做一些清潔的工作,在學校里也許有老師分配說今天做些什么,明天做些什么,但在這里,不一定有人會告訴你這些,你必須自覺地去做,而且要盡自已的努力做到最好,一件工作的效率就會得到別人不同的評價。在學校,只有學習的氛圍,畢竟學校是學習的場所,每一個學生都在為取得更高的成績而努力。而這里是工作的場所,每個人都會為了獲得更多的報酬而努力,無論是學習還是工作,都存在著競爭,在競爭中就要不斷學習別人先進的地方,也要不斷學習別人怎樣做人,以提高自已的能力!記得老師曾經說過大學是一個小社會,但我總覺得校園里總少不了那份純真,那份真誠,盡管是大學高校,學生還終歸保持著學生的身份。而走進企業,接觸各種各樣的客戶、同事、上司等等,關系復雜,但我得去面對我從未面對過的一切。記得在我校舉行的招聘會上所反映出來的其中一個問題是,學生的實際操作能力與在校理論學習有一定的差距。在這次實踐中,這一點我感受很深。在學校,理論的學習很多,而且是多方面的,幾乎是面面俱到;而在實際工作中,可能會遇到書本上沒學到的,又可能是書本上的知識一點都用不上的情況。或許工作中運用到的只是很簡單的問題,只要套公式似的就能完成一項任務。有時候我會埋怨,實際操作這么簡單,但為什么書本上的知識讓人學得這么吃力呢?這是社會與學校脫軌了嗎?也許老師是正確的,雖然大學生生活不像踏入社會,但是總算是社會的一個部分,這是不可否認的事實。但是有時也要感

溫馨提示

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

評論

0/150

提交評論