基于51單片機的電子琴設計說明_第1頁
基于51單片機的電子琴設計說明_第2頁
基于51單片機的電子琴設計說明_第3頁
基于51單片機的電子琴設計說明_第4頁
基于51單片機的電子琴設計說明_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、. . . . 方案設計電子琴設計框圖晶振控制模塊顯示模塊發(fā)聲模塊圖電子琴設計框圖2 總體設計2.1 硬件部分采用AT89S52 單片機作為主控制部件,AT89S52 用上電自動復位,12MHZ 的晶振和兩個電容形成晶振電路。 面鍵,用于輸入音符。2.2 軟件部分軟件部分采用匯編語言編寫程序,單片機匯編語言程序設計步驟如下:第一步:分析問題。第二步:畫出程序的基本輪廓。第三步:實現(xiàn)該程序。2.3 軟硬件調(diào)試使用 KEIL 軟件,將程序輸入進行編譯,編譯通過后,則將制作的電路進行聯(lián)機仿真,檢測功能和設計任務能不能實現(xiàn)。 如果不能達到預期效果,則必須重新檢查硬件或修改程序。2.4 程序固化經(jīng)過調(diào)試

2、,實現(xiàn)了預期的成果和功能,就可以開始程序固化了。 將程序燒錄到 AT89S52 部ROM 中,然后將單片機放入到電路中,再進行觀察。一 相關(guān)技術(shù)簡介用電子琴可以演奏出各種美妙的音樂,而音樂是有音符組成的。不同的音符是由相應頻率的振動產(chǎn)生不同頻率的聲音電信號經(jīng)揚聲器發(fā)音后,人耳所聽到的便是不同的聲音,換言之,只要向揚聲器中輸入不同頻率的電信號就可以產(chǎn)生不同的聲音。若將不同的音節(jié)于不同的節(jié)拍組合在一起便形成一定的曲調(diào),因此一個單片機I/O口,通過軟件,控制其輸出不同頻率的信號,就可以產(chǎn)生8個基本音節(jié),將音節(jié)以一定的節(jié)拍進行組合,便可以產(chǎn)生歌曲。樂曲中每一音符對應著確定的頻率,表1 給出C 調(diào)時各音

3、符頻率。如果單片機某個口線輸出“高”“低”電平的頻率和某個音符的頻率一樣,那么將此口線接上喇叭就可以發(fā)出此音符。二 硬件設計1. AT89S52單片機圖2 AT89S52單片機()簡介AT89S52 是一種低功耗、高性能 CMOS8 位微控制器,具有8K 在系統(tǒng)可編程 Flash 存儲器。使用 Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè) 80C51 產(chǎn)品指令和引腳完全兼容。片上 Flash 允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的 8 位 CPU 和在系統(tǒng)可編程 Flash,使得 AT89S52 為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。AT8

4、9S52 具有以下標準功能:8k 字節(jié) Flash,256 字節(jié) RAM,32 位 I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個 16 位定時器/計數(shù)器,一個 6 向量 2 級中斷結(jié)構(gòu),全雙工串行口,片晶振與時鐘電路。另外,AT89S52 可降至 0Hz 靜態(tài)邏輯操作,支持 2 種軟件可選擇節(jié)電模式。空閑模式下,CPU停止工作,允許 RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM 容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復位為止。()引腳功能1.VCC : 電源2.GND: 地3.P0 口:P0 口是一個 8 位漏極開路的雙向 I/O 口。作為輸

5、出口,每位能驅(qū)動 8 個 TTL 邏輯電平。對 P0 端口寫“1”時,引腳用作高阻抗輸入。當訪問外部程序和數(shù)據(jù)存儲器時,P0 口也被作為低 8 位地址/數(shù)據(jù)復用。在這種模式下,P0 具有部上拉電阻。在 flash 編程時,P0 口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。4.P1 口:P1 口是一個具有部上拉電阻的 8 位雙向 I/O 口,p1 輸出緩沖器能驅(qū)動 4 個TTL 邏輯電平。對 P1 端口寫“1”時,部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于部電阻的原因,將輸出電流(IIL)。此外,P1.0 和 P1.2

6、分別作定時器/計數(shù)器 2 的外部計數(shù)輸入(P1.0/T2)和時器/計數(shù)器 2的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。在 flash 編程和校驗時,P1 口接收低 8 位地址字節(jié)。表引腳功能引腳號第二功能P1.0T2(定時器/計數(shù)器 T2 的外部計數(shù)輸入),時鐘輸出P1.1T2EX(定時器/計數(shù)器 T2 的捕捉/重載觸發(fā)信號和方向控制)P1.5MOSI(在系統(tǒng)編程用)P1.6MISO(在系統(tǒng)編程用)P1.7SCK(在系統(tǒng)編程用)5.P2 口:P2 口是一個具有部上拉電阻的 8 位雙向 I/O 口,P2 輸出緩沖器能驅(qū)動 4 個TTL 邏輯電平。對 P2 端口寫“1”時,部上拉電阻把端口

7、拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用 16 位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行 MOVX DPTR)時,P2 口送出高八位地址。在這種應用中,P2 口使用很強的部上拉發(fā)送 1。在使用8 位地址(如 MOVX RI)訪問外部數(shù)據(jù)存儲器時,P2 口輸出 P2 鎖存器的容。在 flash 編程和校驗時,P2 口也接收高 8 位地址字節(jié)和一些控制信號。6.3 口:P3 口是一個具有部上拉電阻的 8 位雙向 I/O 口,p2 輸出緩沖器能驅(qū)動 4 個TTL 邏輯電平。對 P3 端口寫“1”時,部上拉電阻把端口拉高,

8、此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于部電阻的原因,將輸出電流(IIL)。P3 口亦作為 AT89S52 特殊功能(第二功能)使用,如下表所示。在 flash 編程和校驗時,P3 口也接收一些控制信號。表引腳功能引腳號第二功能P3.0RXD(串行輸入)P3.1TXD(串行輸出)P3.2INT0(外部中斷 0)P3.3INT0(外部中斷 0)P3.4T0(定時器 0 外部輸入)P3.5T1(定時器 1 外部輸入)P3.6WR(外部數(shù)據(jù)存儲器寫選通)P3.7RD(外部數(shù)據(jù)存儲器寫選通)7.RST: 復位輸入。晶振工作時,RST 腳持續(xù) 2 個機器周期高電平將使單片機復位。看門

9、狗計時完成后,RST 腳輸出 96 個晶振周期的高電平。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功能無效。DISRTO 默認狀態(tài)下,復位高電平有效。8.ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低 8 位地址的輸出脈沖。在 flash 編程時,此引腳(PROG)也用作編程輸入脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ALE 脈沖將會跳過。如果需要,通過將地址為 8EH 的 SFR 的第 0 位置 “1”,ALE 操作將無效。這一位置 “1”,A

10、LE 僅在執(zhí)行 MOVX 或 MOVC 指令時有效。否則,ALE 將被微弱拉高。這個 ALE 使能標志位(地址為 8EH 的 SFR 的第 0 位)的設置對微控制器處于外部執(zhí)行模式下無效。9.PSEN:外部程序存儲器選通信號(PSEN)是外部程序存儲器選通信號。當 AT89S52 從外部程序存儲器執(zhí)行外部代碼時,PSEN 在每個機器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時,PSEN 將不被激活。10.EA/VPP:訪問外部程序存儲器控制信號。為使能從 0000H 到 FFFFH 的外部程序存儲器讀取指令,EA 必須接 GND。為了執(zhí)行部程序指令,EA 應該接 VCC。在 flash 編程期間,

11、EA 也接收 12 伏 VPP電壓。11.XTAL1:振蕩器反相放大器和部時鐘發(fā)生電路的輸入端。12.XTAL2:振蕩器反相放大器的輸出端。2.蜂鳴器圖3 蜂鳴器蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應用于計算機,打印機,復印機,報警器,電子玩具,汽車電子設備,機,定時器等電子產(chǎn)品中做發(fā)聲器件。3.鍵盤圖4 鍵盤本設計鍵盤模塊采用 4*4 矩陣鍵盤,原理圖如圖 所示。在鍵盤中按鍵數(shù)量較多時,為了減少 I/O 口的占用,通常將按鍵排列成矩陣形式,如圖 4 所示。 在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。 這樣,一個端口(如 P1 口)就

12、可以構(gòu)成4*4=16 個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成 20 鍵的鍵盤,而直接用端口線則只能多出一鍵(9 鍵)。由此可見,在鍵盤中按鍵數(shù)量較多時,為了減少 I/O 口的占用,通常將按鍵排列成矩陣形式。4. 時鐘電路 (1)振蕩電路部有一個用于構(gòu)成振蕩器的可控高增益反向放大器,兩個引腳和XTAL2分別是該放大器的輸入端和輸出端,其中匹配電容和要根據(jù)石英晶體振蕩器的要求選取,一般選用PF的瓷片電容。振蕩頻率根據(jù)實際要求的工作速度,從幾百中適當選取。()時鐘電路圖5定時電路5 .LED數(shù)碼管圖6 顯示顯示模塊是利用 AT89S52 單片

13、機的 P0 端口的 P0.0P0.7 連接到一個共陽數(shù)碼管的 ah 的筆段上。在數(shù)碼管上循環(huán)顯示 07 數(shù)字,時間間隔 0.2 秒。LED 顯示模塊七段 LED 數(shù)碼管部由七個條形發(fā)光二極管和一個小圓點發(fā)光二極管組成,根據(jù)各管的極管的接線形式,可分成共陰極型和共陽極型。LED 數(shù)碼管的七個發(fā)光二極管因加正電壓而發(fā)亮,因加零電壓而不以發(fā)亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼,表給出了共陰極 LED 數(shù)碼管的字形碼表。表 共陽極 LED 數(shù)碼管的字形碼表顯示字符共陽極段選碼顯示字符共陽極段選碼C0H80HF9H90HA4H88HB0H83H99HC6H92HA1H82H86HF

14、8H8EH三 軟件設計開始初始化是否有按鍵按下發(fā)聲程序鍵盤程序結(jié)束圖7主程序流程圖1發(fā)聲程序表4音符頻率表音符頻率簡譜碼中69864820低26263628中78464898低29463835中88064968低33064021中98865030低34964103高104665058低39264260高117565110低4406440高131865157低49464524高139765178中52364580高156865217中58764684高176065252中65964777高196765283中斷入口重置取反圖 8 發(fā)聲程序流程圖。2定時中斷定時中斷保護現(xiàn)場停止計時輸入音頻脈沖電平

15、音頻脈沖電平反轉(zhuǎn)中斷返回恢復現(xiàn)場圖9定時中斷程序框圖中斷是單片機適時的處理部或外部事件的一種部機制,當某種部或外部事件發(fā)生時,單片機中斷系統(tǒng)將迫使暫停正在執(zhí)行的程序,轉(zhuǎn)而去進行中斷事件的處理,中斷處理完畢后,又返回被中斷程序處,繼續(xù)向下執(zhí)行。AT89S52 有 6 個中斷源:兩個外部中斷(INT0 和 INT1),三個定時中斷(定時器 0、1、2)和一個串行中斷。每個中斷源都可以通過置位或清除特殊寄存器 IE 中的相關(guān)中斷允許控制位分別使得中斷源有效或無效。IE 還包括一個中斷允許總控制位 EA,它能一次禁止所有中斷。如表 5 所示,IE.6 位是不可用的。對于 AT89S52,IE.5 位也

16、是不能用的。用戶軟件不應給這些位寫 1。它們?yōu)?AT89 系列新產(chǎn)品預留。定時器 2 可以被寄存器 T2CON 中的TF2 和 EXF2 的或邏輯觸發(fā)。程序進入中斷服務后,這些標志位都可以由硬件清 0。實際上,中斷服務程序必須判定是否是 TF2 或 EXF2 激活中斷,標志位也必須由軟件清 0。定時器 0 和定時器 1 標志位 TF0 和 TF1 在計數(shù)溢出的那個周期的 S5P2 被置位。它們的值一直到下一個周期被電路捕捉下來。然而,定時器 2 的標志位 TF2 在計數(shù)溢出的那個周期的 S2P2 被置位,在同一個周期被電路捕捉下來。表5中斷允許控制寄存器(MSB) (LSB)EAET2ESET

17、1EX1ET0EX0中斷允許控制位1,允許中斷中斷允許控制位0,禁止中斷符號位地址功能EAIE.7中斷總允許控制位。EA=0,中斷總禁止;EA=1,各中斷由各自的控制位設定-IE.6預留ET2IE.5定時器 2 中斷允許控制位ESIE.4串行口中斷允許控制位ET1IE.3定時器 1 中斷允許控制位EX1IE.2外部中斷 1 允許控制位ET0IE.1定時器 0 中斷允許控制位EX0IE.0外部中斷 1 允許控制位五 設計感受這次專業(yè)設計結(jié)束了,我對于單片機又有了一個全新的認識,原來以前的學習還差很多,在對于學科和未來的工作上,我還有很長的一段路要走。學海無涯,這句話雖然有點老生常談,但卻是我現(xiàn)在

18、最真實的心理感受,電子琴的設計其實難度并不大,而如今如此吃力的原因值得我好好反思。最后,感老師對于我們專業(yè)設計無私的指導和幫助。六 附錄/簡易電子琴#include<reg52.h> /包含51單片機寄存器定義的頭文件sbit P14=P14; /將P14位定義為P1.4引腳sbit P15=P15; /將P15位定義為P1.5引腳sbit P16=P16; /將P16位定義為P1.6引腳sbit P17=P17; /將P17位定義為P1.7引腳unsigned char keyval; /定義變量儲存按鍵值sbit sound=P36; /將sound位定義為P3.7unsign

19、ed int C; /全局變量,儲存定時器的定時常數(shù)unsigned int f; /全局變量,儲存音階的頻率/以下是C調(diào)低音的音頻宏定義#define l_dao 262 /將“l(fā)_dao”宏定義為低音“1”的頻率262Hz#define l_re 286 /將“l(fā)_re”宏定義為低音“2”的頻率286Hz#define l_mi 311 /將“l(fā)_mi”宏定義為低音“3”的頻率311Hz#define l_fa 349 /將“l(fā)_fa”宏定義為低音“4”的頻率349Hz#define l_sao 392 /將“l(fā)_sao”宏定義為低音“5”的頻率392Hz#define l_la 440

20、/將“l(fā)_a”宏定義為低音“6”的頻率440Hz#define l_xi 494 /將“l(fā)_xi”宏定義為低音“7”的頻率494Hz /以下是C調(diào)中音的音頻宏定義#define dao 523 /將“dao”宏定義為中音“1”的頻率523Hz#define re 587 /將“re”宏定義為中音“2”的頻率587Hz#define mi 659 /將“mi”宏定義為中音“3”的頻率659Hz#define fa 698 /將“fa”宏定義為中音“4”的頻率698Hz#define sao 784 /將“sao”宏定義為中音“5”的頻率784Hz#define la 880 /將“l(fā)a”宏定義為

21、中音“6”的頻率880Hz#define xi 987 /將“xi”宏定義為中音“7”的頻率53/以下是C調(diào)高音的音頻宏定義#define h_dao 1046 /將“h_dao”宏定義為高音“1”的頻率1046Hz#define h_re 1174 /將“h_re”宏定義為高音“2”的頻率1174Hz#define h_mi 1318 /將“h_mi”宏定義為高音“3”的頻率1318Hz#define h_fa 1396 /將“h_fa”宏定義為高音“4”的頻率1396Hz#define h_sao 1567 /將“h_sao”宏定義為高音“5”的頻率1567Hz#define h_la 1

22、760 /將“h_la”宏定義為高音“6”的頻率1760Hz#define h_xi 1975 /將“h_xi”宏定義為高音“7”的頻率1975Hz/*函數(shù)功能:軟件延時子程序*/ void delay20ms(void) unsigned char i,j;for(i=0;i<100;i+) for(j=0;j<60;j+) ; /*函數(shù)功能:節(jié)拍的延時的基本單位,延時200ms*/void delay() unsigned char i,j; for(i=0;i<250;i+) for(j=0;j<250;j+) ; /*函數(shù)功能:輸出音頻入口參數(shù):F*/void

23、Output_Sound(void) C=(46083/f)*10; /計算定時常數(shù) TH0=(8192-C)/32; /可證明這是13位計數(shù)器TH0高8位的賦初值方法 TL0=(8192-C)%32; /可證明這是13位計數(shù)器TL0低5位的賦初值方法 TR0=1; /開定時T0 delay(); /延時200ms,播放音頻 TR0=0; /關(guān)閉定時器 sound=1; /關(guān)閉蜂鳴器 keyval=0xff; /播放按鍵音頻后,將按鍵值更改,停止播放/*函數(shù)功能:主函數(shù)*/void main(void) EA=1; /開總中斷 ET0=1; /定時器T0中斷允許ET1=1; /定時器T1中斷允

24、許TR1=1; /定時器T1啟動,開始鍵盤掃描 TMOD=0x10; /分別使用定時器T1的模式1,T0的模式0 TH1=(65536-500)/256; /定時器T1的高8位賦初值 TL1=(65536-500)%256; /定時器T1的高8位賦初值 while(1) /無限循環(huán) switch(keyval) case 1:f=dao; /如果第1個鍵按下,將中音1的頻率賦給f Output_Sound(); /轉(zhuǎn)去計算定時常數(shù) break; case 2:f=l_xi; /如果第2個鍵按下,將低音7的頻率賦給f Output_Sound(); /轉(zhuǎn)去計算定時常數(shù) break; case 3

25、:f=l_la; /如果第3個鍵按下,將低音6的頻率賦給f Output_Sound(); /轉(zhuǎn)去計算定時常數(shù) break; case 4:f=l_sao; /如果第4個鍵按下,將低音5的頻率賦給f Output_Sound(); /轉(zhuǎn)去計算定時常數(shù) break; case 5:f=sao; /如果第5個鍵按下,將中音5的頻率賦給f Output_Sound(); /轉(zhuǎn)去計算定時常數(shù) break; case 6:f=fa; /如果第6個鍵按下,將中音4的頻率賦給f Output_Sound(); /轉(zhuǎn)去計算定時常數(shù) break; case 7:f=mi; /如果第7個鍵按下,將中音3的頻率賦給

26、f Output_Sound(); /轉(zhuǎn)去計算定時常數(shù) break; case 8:f=re; /如果第8個鍵按下,將中音2的頻率賦給f Output_Sound(); /轉(zhuǎn)去計算定時常數(shù) break; case 9:f=h_re; /如果第9個鍵按下,將高音2的頻率賦給f Output_Sound(); /轉(zhuǎn)去計算定時常數(shù) break; case 10:f=h_dao; /如果第10個鍵按下,將高音1的頻率賦給f Output_Sound(); /轉(zhuǎn)去計算定時常數(shù) break; case 11:f=xi; /如果第11個鍵按下,將中音7的頻率賦給f Output_Sound(); /轉(zhuǎn)去計算

27、定時常數(shù) break; case 12:f=la; /如果第12個鍵按下,將中音6的頻率賦給f Output_Sound(); /轉(zhuǎn)去計算定時常數(shù) break; case 13:f=h_la; /如果第13個鍵按下,將高音6的頻率賦給f Output_Sound(); /轉(zhuǎn)去計算定時常數(shù) break; case 14:f=h_sao; /如果第14個鍵按下,將高音5的頻率賦給f Output_Sound(); /轉(zhuǎn)去計算定時常數(shù) break; case 15:f=h_fa; /如果第15個鍵按下,將高音4的頻率賦給f Output_Sound(); /轉(zhuǎn)去計算定時常數(shù) break; case

28、16:f=h_mi; /如果第16個鍵按下,將高音3的頻率賦給f Output_Sound(); /轉(zhuǎn)去計算定時常數(shù) break; /*函數(shù)功能:定時器T0的中斷服務子程序,使P3.7引腳輸出音頻方波*/ void Time0_serve(void ) interrupt 1 using 1 TH0=(8192-C)/32; /可證明這是13位計數(shù)器TH0高8位的賦初值方法 TL0=(8192-C)%32; /可證明這是13位計數(shù)器TL0低5位的賦初值方法 sound=!sound; /將P3.7引腳取反,輸出音頻方波 /*函數(shù)功能:定時器T1的中斷服務子程序,進行鍵盤掃描,判斷鍵位*/ vo

29、id time1_serve(void) interrupt 3 using 2 /定時器T1的中斷編號為3,使用第2組寄存器 TR1=0; /關(guān)閉定時器T0 P1=0xf0; /所有行線置為低電平“0”,所有列線置為高電平“1” if(P1&0xf0)!=0xf0) /列線中有一位為低電平“0”,說明有鍵按下 delay20ms(); /延時一段時間、軟件消抖 if(P1&0xf0)!=0xf0) /確實有鍵按下 P1=0xfe; /第一行置為低電平“0”(P1.0輸出低電平“0”) if(P14=0) /如果檢測到接P1.4引腳的列線為低電平“0” keyval=1; /可判斷是S1鍵被按下 if(P15=0) /如果檢測到接P1.5引腳的列線為低電平“0” keyval=2; /可判斷是S2鍵被按下 if(P16=0) /如果檢測到接P1.6引腳的列線為低電平“0” keyval=3; /可判斷是S3鍵被按下 if(P17=0) /如果檢測到接P1.7引腳的列線為低電平“0” keyval=4; /可判斷是S4鍵被按下 P1=0xfd; /第二行置為低電平“0”(P1.1輸出低電平“0”) if(P14=0) /如果檢測到接P1.4引腳的列線為低電平“0” keyval=5; /可判斷是S5鍵被按下 if(P15=0) /如果檢測到接P1.5

溫馨提示

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

評論

0/150

提交評論