



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、DTMF的產(chǎn)生與檢測一、設(shè)計任務(wù)書要求完成的任務(wù):( 1)編寫 C語言程序,并在 CCS集成開發(fā)環(huán)境下調(diào)試通過。( 2)實現(xiàn)設(shè)計所要求的各項功能。( 3)按要求撰寫設(shè)計報告。要求達到的目的:(1) 熟悉 CCS的編程環(huán)境和基本試驗調(diào)試流程和方法;(2) 熟悉并掌握使用 C語言編寫較為復(fù)雜的程序并用 CCS實現(xiàn);(3) 了解并掌握 DTMF信號的產(chǎn)生和檢測遠離核試驗流程;(4) 熟練使用軟件 CCS5000對程序的完整調(diào)試過程。二、設(shè)計容基本部分:(1)使用 C語言編寫 DTMF信號的發(fā)生程序, 要求循環(huán)產(chǎn)生 09、* 、#、A、B、C、D對應(yīng)的 DTMF 信號,并且符合 CCITT對 DTMF
2、信號規(guī)定的指標。(2)使用 C語言編寫 DTMF信號的檢測程序,檢測到的DTMF編碼在屏幕上顯示。發(fā)揮部分:利用 DTMF信號完成數(shù)據(jù)通訊的功能, 并試改進 DTMF信號的規(guī)定指標, 使每秒傳送的 DTMF編碼越多越好。三、設(shè)計方案、算法原理說明表一雙音多頻DTMF( Dual Tone MultiFrequency ),雙音多頻,由高頻群和低頻群組成,高低頻群各包含4 個頻率。一個高頻信號和一個低頻信號疊加組成一個組合信號,代表一個數(shù)字。DTMF信令有 16 個編碼。利用DTMF信令可選擇呼叫相應(yīng)的對講機雙音多頻信號(DTMF),系統(tǒng)中機與交換機之間的一種用戶信令,通常用于發(fā)送被叫。在使用雙
3、音多頻信號之前,系統(tǒng)中使用一連串的斷續(xù)脈沖來傳送被叫,稱為脈沖撥號。脈沖撥號需要電信局中的操作員手工完成長途接續(xù)( 早期方法,很老很古董) 。雙音多頻信號是貝爾實驗室發(fā)明的,其目的是為了自動完成長途呼叫。雙音多頻的撥號鍵盤是44的矩陣,每一行代表一個低頻,每一列代表一個高頻。每按一個鍵就發(fā)送一個高頻和低頻的正弦信號組合,比如 1 相當(dāng)于 697 和 1209 赫茲 (Hz) 。交換機可以解碼這些頻率組合并確定所對應(yīng)的按鍵。在編碼時將擊鍵或數(shù)字信息轉(zhuǎn)換成雙音信號并發(fā)送,解碼時在收到的DTMF信號中檢測擊鍵或數(shù)字信息的存在性。一個DTMF信號由兩個頻率的音頻信號疊加構(gòu)成。這兩個音頻信號的頻率來自兩
4、組預(yù)分配的頻率組:行頻組或列頻組。每一對這樣的音頻信號唯一表示一個數(shù)字或符號。 機中通常有16 個按鍵, 其中有 10 個數(shù)字鍵09 和 6 個功能鍵 * 、#、A、B、C、D。由于按照組合原理,一般應(yīng)有8 種不同的單音頻信號。因此可采用的頻率也有8 種,故稱之為多頻, 又因它采用分別從高低頻中任意抽出1 種進行組合來進行編碼,所以又稱之為“8中取 2”的編碼技術(shù)。 根據(jù) CCITT的建議,國際上采用的多種頻率為697Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz 和 1633Hz 等 8 種。用這 8 種頻率可形成16 種不同的組合,從而代表16 種不同的
5、數(shù)字或功能鍵,具體組合見表1。雙音多頻DTMF信令,逐漸在全世界圍使用在按鍵式機上,因其提供更高的撥號速率,迅速取代了傳統(tǒng)轉(zhuǎn)盤式機使用的撥號脈沖信令。近年來DTMF也應(yīng)用在交互式控制中,諸如語言菜單、語言、銀行和ATM終端等。通過軟件產(chǎn)生與檢測DTMF信令,是一項較有價值的工程應(yīng)用。DTMF編解碼器在編碼時將擊鍵或數(shù)字信息轉(zhuǎn)換成雙音信號并發(fā)送,解碼時在收到的DTMF信號中檢測擊鍵或數(shù)字信息的存在性。DTMF的編解碼方案無需過多的計算量,以目前計算機的運算速度,可以很輕松地實現(xiàn)。一個 DTMF信號由兩個頻率的音頻信號疊加構(gòu)成。這兩個音頻信號的頻率來自兩組預(yù)分配的頻率組: 行頻組或列頻組。每一對這
6、樣的音頻信號唯一表示一個數(shù)字或符號。為了產(chǎn)生DTMF信號,可以通過軟件產(chǎn)生兩個正弦波疊加在一起后發(fā)送,解碼時軟件可以采用改進的Goertzel算法,從頻域搜索兩個正弦波的存在,從而解調(diào)出DTMF信號。1.DTMF的產(chǎn)生DTMF發(fā)生器基于兩個二階數(shù)字正弦振蕩器,一個用于產(chǎn)生行頻,一個用于產(chǎn)生列頻。DSP只要裝載相應(yīng)的系數(shù)和初始條件,就可以只用兩個振蕩器產(chǎn)生所需的八種音頻信號。典型的 DTMF信號頻率圍是700 1700Hz,選取 8000Hz 作為采樣頻率, 即可滿足奈奎斯特定理。我們用的是sin 函數(shù)產(chǎn)生離散的正弦值,因為這種方法我們比較熟悉而且通過查閱資料這種方法的也能達到誤差要求,生成 D
7、TMF的公式為: buffert=sin(t*2*pi*f1/fs)+ sin(t*2*pi*f2/fs) ,其中 t 為采樣序數(shù),由0 開始遞增; f1 ,f2 為生成 DTMF信號的兩個正弦波的頻率; fs 為采樣頻率; buffert為序數(shù) t 時的得出的采樣值。將這些數(shù)據(jù)轉(zhuǎn)換為Q15格式然后通過codec 發(fā)送出去。CCITT對 DTMF信號規(guī)定的指標是, 傳送 / 接收率為每秒10 個數(shù)字,即每個數(shù)字100ms。代表數(shù)字的音頻信號必須持續(xù)至少45ms,但不超過55ms。 100ms 其他時間為靜音,以便區(qū)別連續(xù)的兩個按鍵信號。我們使用8000Hz 的采樣頻率(信號的典型抽樣頻率為f
8、sam =8kHZ),即 1 秒采樣 8000 個點,則 100ms采樣 800 個點,我們設(shè)置存產(chǎn)生的 DTMF信號值,即音頻信號必須持續(xù) 50ms,另外2.DTMF的檢測800 個點的緩存,其中用400 個400 個存 0 值,即靜音信號。DTMF 信號包含兩組音頻信號,解碼器的任務(wù)是通過數(shù)學(xué)變換把它從時域轉(zhuǎn)換到頻域,然后得出對應(yīng)的數(shù)字信息。由于DSP芯片處理的是數(shù)字信號,所以必須把輸入信號數(shù)字化,再用 DSP芯片進行處理。頻率檢測時,整個檢測過程分兩步:首先采用Goertzel算法在輸入信號中提取頻譜信息;接著作檢測結(jié)果的有效性檢查。DTMF解碼時在輸入信號中搜索出有效的行頻和列頻。計算
9、數(shù)字信號的頻譜可以采用DFT及其快速算法 FFT,而在實現(xiàn) DTMF解碼時,采用 Goertzel 算法要比 FFT更快。通過 FFT 可以計算得到信號所有譜線, 了解信號整個頻域信息, 而對于 DTMF信號只需關(guān)心其 8 個行頻 /列頻及其二次諧波信息即可,二次諧波的信息用于將DTMF信號與聲音信號區(qū)別開。此時Goertzel算法能更加快速的在輸入信號中提取頻譜信息。Goertzel算法實質(zhì)是一個兩極點的IIR濾波器。Goertzel 算法簡介塊大小的設(shè)置Goertzel 算法中的塊大小 N 與相應(yīng)的 FFT 中的點數(shù)類似,它控制了頻率分辨率的大小。例如,若采樣率為 8kHz,而 N為 10
10、0 個采樣,那么頻率分辨率就是80Hz。這就可能使我們?yōu)榱双@取最大的頻率分辨率而盡量將N 取高。然而 N越大,檢測到每個音調(diào)所需的時間就越多, 因為我們必須等所有這N個采樣都完成后才能開始處理。例如,采樣率為 8kHz 時,累積 800 個采樣需要 100ms。若想縮短檢測音調(diào)的時間,就必須適當(dāng)調(diào)整N 的值。影響 N 的選擇的另一個因素是采樣率和目標頻率之間的關(guān)系。比較理想情況是目標頻率在相應(yīng)的頻率分辨率的中點圍,也就是說,我們希望目標頻率是sample_rate/N比值的整數(shù)倍。值得慶幸的是, Goertzel 算法中的 N 與 FFT 中不同,不必是2 的整數(shù)次冪。預(yù)計算常數(shù)在采樣率和塊大
11、小確定之后,只須通過下面5 個簡單的計算來得出處理時所需要的常數(shù):k = (N*target_freq)/sample_tatew = (2* /N)*kcosine = cos wsine = sin wcoeff = 2 * cosine每一次采樣處理中都需要3 個變量, 我們稱其為Q0 、Q1 和 Q2。Q1是前一次采樣處理的值, Q2是在兩次采樣前的Q0值 ( 或 Q1在本次采樣前的值) 。在每個采樣塊的開始時,都必須將Q1和 Q2初始化為0。每個采樣都需要按照下面三個等式進行計算:Q0Q0 = coeff * Q1 - Q2 + sampleQ2=Q1Q1=Q0在進行 N 次預(yù)采樣計
12、算之后,可以檢測到音調(diào)是否存在。real = (Q1 - Q2 * cosine)imag = (Q2 * sine)magnitude2 = real2 + imag2這時只需進行一次簡單的幅度門限測試就可以判斷出是否有音調(diào)存在。之后,將Q2和 Q1復(fù)位到 0,開始下一個塊的處理。Goertzel優(yōu)化算法Goertzel優(yōu)化算法比Goertzel基本算法所需的計算量小,但這是以損失相位信息為代價。在 Goertzel優(yōu)化算法中每個采樣處理完全一樣,但處理的結(jié)果與Goertzel基本算法不同。在 Goertzel 基本算法中,通常需要計算信號的實部和虛部,然后將實部和虛部的計算結(jié)果轉(zhuǎn)換為相應(yīng)的
13、幅度平方。 而在優(yōu)化 Goertzel 算法中則不需計算實部和虛部, 直接計算下式:magnitude2 = Q12 + Q22-Q1*Q2*coeffGoertzel算法實質(zhì)是一個兩極點的IIR 濾波器,離散傅立葉變換值,快速有效的提取輸入信號的頻譜信息, 如圖:圖 (6) Goertzel算法原理框圖如圖知, DFT計算可以等價為:Vk (n)=x(n)+2cos(2k /N)V k(n-1)-Vk (n- 2),0 nN 發(fā)生X(k)=yk(N)=Vk(N)-e- j2k /NkV (N-1) 檢驗由于在 DTMF檢測中,輸入的信號是實數(shù)序列,并不需要檢測出8個行頻列頻的相位,只需要計算
14、出其幅度平方即可。對于實序列x(n) , Goertzel 算法所需的部變量 Vk(n) 也為實數(shù)。因此計算 /X(k)/2如下:/X(k)/ 2=/y k(N)/2= V k2(n)+ Vk2(n-1)-2cos(2k /N)V k(N)V k(N-1)1st Harmonics2nd Harmonics(N= 205)fs= 8 ksps(=205)fs= 8 kspsNcoefficienfrequencycoefficientfrequencytkk( k/N ) fs /Hcos(2pi( k/N ) fs /Hzcos(2pizk/N)k/N )186970.85162351393
15、0.45886207700.817933915520.34445228520.781154317110.22470249410.741424718710.101413112090.58157612428-0.329743413360.50442672667-0.500003814770.39505742945-0.676064216330.27972823264-0.83740信號頻率 (Hz)計算值 k取整值 k絕對誤差相對誤差69710.890625110.1093751.00430%77012.03125120.031250.25974%85213.3125130.31252.34741
16、%94114.703125150.2968752.01912%120918.890625190.1093750.57899%133620.875210.1250.59880%147723.078125230.0781250.33852%163325.515625250.5156252.02082%( N=125)DTMF信號的有效性檢測得到了 DTMF信號的基波及二次諧波的頻譜平方幅度信息后,定信號的有效性:需要通過一系列檢測才能確(1)DTMF信號的強度是否足夠大,行列頻率分量平方幅度和是否高于規(guī)定的門限值(2) 如果 DTMF信號存在,比較行列頻率的最大頻率分量差值,因為線具有低通特性,列
17、頻比行頻衰減得要厲害,因此要設(shè)置一門限值(3) 分別在行列頻率組比較頻譜分量, 最強的譜線至少要比其他音頻信號高一個門限值四、程序設(shè)計與調(diào)試結(jié)果分析我們的設(shè)計由兩個DSP板構(gòu)成進行通信,一個負責(zé)產(chǎn)生信號,一個接收信號。(一)基本要求( 1) DTMF的產(chǎn)生 #include #include #include #include #include #include void delay(int period);void generate(int num);HANDLE hHandset;float buffer800;s16 num=0;int count=0;float freq162= 94
18、1,1336, /0697,1209, /1697,1336, /2697,1477, /3770,1209, /4770,1336, /5770,1477, /6852,1209, /7852,1336, /8852,1477, /9697,1633, /A770,1633, /B852,1633, /C941,1633, /D941,1209, /*941,1477 /#;float pi=3.1415926;void main()int cnt=2;if(brd_init(100)return;/* blink the leds a couple times通過觀察LED指示燈的閃動頻率
19、來驗證程序運行 */while ( cnt- )brd_led_toggle(BRD_LED0);/brd_delay_msec(1000);delay(1000);brd_led_toggle(BRD_LED1);/brd_delay_msec(1000);delay(1000);brd_led_toggle(BRD_LED2);/brd_delay_msec(1000);delay(1000);/* Open Handset Codec */hHandset = codec_open(HANDSET_CODEC);/* Acquire handle to codec */* Set cod
20、ec parameters */codec_dac_mode(hHandset, CODEC_DAC_15BIT);/* DAC in 15-bit mode */codec_adc_mode(hHandset, CODEC_ADC_15BIT);/* ADC in 15-bit mode */codec_ain_gain(hHandset,CODEC_AIN_6dB);/* 6dB gainon analoginputto ADC*/codec_aout_gain(hHandset, CODEC_AOUT_MINUS_12dB);/* -12dB gain on analog*/* outp
21、ut from DAC */codec_sample_rate(hHandset,SR_8000);/* 8KHz sampling rate */generate(num);void generate(int num)f32 x,y;int k=0;int i;i=0;while(1)/ Wait for sample from handsetwhile (!MCBSP_XRDY(HANDSET_CODEC) ;*(volatile u16*)DXR1_ADDR(HANDSET_CODEC)=bufferi;i+;if(i=800)i=0;num+;if(num=16)num=0;x=fre
22、qnum0/8000;y=freqnum1/8000;for(k=0;k400;k+)bufferk=(0.65*sin(2*pi*y*k)+0.8*sin(2*pi*x*k)*16384;bufferk+400=0;void delay(int period)int i, j;for(i=0; iperiod; i+)for(j=0; j1; j+);( 2) DTMF的檢測#include #include #include #include #include #include HANDLE hHandset;float buffer125;float pi=3.1415926;s16 r
23、eceive125;s16 dacdata;int k=0;int detect_result100=0;int l=0;int flag=0;void delay(int period);void detect();void main()int cnt=2;/*Description:* vk(n) = 2*coef*vk(n-1) - vk(n-2) + x(n)* Coefficients are in w8* x(n) is in buffer256* vk(n-2) is ai0* vk(n-1) is ai1.* vk(n) is ai2*/if(brd_init(100)retu
24、rn;/ blink the leds a couple times while ( cnt- )brd_led_toggle(BRD_LED0); /brd_delay_msec(1000); delay(1000); brd_led_toggle(BRD_LED1); /brd_delay_msec(1000);delay(1000);brd_led_toggle(BRD_LED2);/brd_delay_msec(1000);delay(1000);/* Open Handset Codec */hHandset = codec_open(HANDSET_CODEC);/* Acquir
25、e handle to codec */* Set codec parameters */codec_dac_mode(hHandset, CODEC_DAC_15BIT);/* DAC in 15-bit mode */codec_adc_mode(hHandset, CODEC_ADC_15BIT); /* ADC in 15-bit mode */codec_ain_gain(hHandset,CODEC_AIN_6dB); /* 6dB gain on analog inputto ADC*/codec_aout_gain(hHandset, CODEC_AOUT_MINUS_6dB)
26、; /* -6dB gain on analog output from DAC */codec_sample_rate(hHandset,SR_8000);/* 8KHz sampling rate */while(1)while (!MCBSP_RRDY(HANDSET_CODEC) ;dacdata = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC);receivek=dacdata;bufferk=dacdata/16384.0;k+;if(k=125)k=0;detect();void detect() int i,j,x,y;float w8,a8
27、3,amp8; w0=2*cos(2*pi*11/125);w1=2*cos(2*pi*12/125);w2=2*cos(2*pi*13/125);w3=2*cos(2*pi*15/125);w4=2*cos(2*pi*19/125);w5=2*cos(2*pi*21/125);w6=2*cos(2*pi*23/125);w7=2*cos(2*pi*26/125);for(i=0;i8;i+)ai0=0;ai1=0;for(j=1;j=125;j+)ai2=wi*ai1-ai0+bufferj-1;ai0=ai1;ai1=ai2;/ 計算頻譜的幅度平方值ampi=ai1*ai1+ai0*ai0
28、-wi*ai1*ai0;j=0;for(i=0;i500)/門限設(shè)為500 /printf(The amplitude %d is %f.rn,i,ampi); j+;if(j=1)x=i;else if(j=2)y=i;i=-1;if(flag=0)if(j=2)if(x=0 & y=4) i=1; else if(x=0 & y=5) i=2; else if(x=0 & y=6) i=3; else if(x=1 & y=4) i=4; else if(x=1 & y=5) i=5; else if(x=1 & y=6) i=6; else if(x=2 & y=4) i=7; else
29、 if(x=2 & y=5) i=8; else if(x=2 & y=6) i=9; else if(x=3 & y=5) i=0; else if(x=0 & y=7)i=A;else if(x=1 & y=7)i=B; else if(x=2 & y=7)i=C; else if(x=3 & y=7)i=D; else if(x=3 & y=4)i=*; else if(x=3 & y=6)i=#; if(i!=-1)detect_resultl=i;l+;if(l=100)for(l=0;l100;l+)printf(The DTMF signal is %c.rn ,detect_r
30、esultl);flag+;else if(j=0)flag=0;void delay(int period)int i, j;for(i=0; iperiod; i+)for(j=0; j1; j+);( 3) cmd 文件源代碼如下:/*# # $Id: $# Copyright (c) 1999 DNA Enterprises, Inc.# Revision History# -# $Log: $# XFERMAKE.CMD# -# C54x Linker Command File for 5402 DSK Memory Transfer Module#*/*/*ObjectFiles*
31、/*/*/*LinkerOptions*/*/*/* C5402 DSK DSP Memory Map/*/*/*/MEMORYPAGE 0: VECS:origin = 0080h, length = 0080h /* Internal Program RAM */PRAM:origin = 0100h, length = 8000h /* Internal Program RAM */PAGE 1: SCRATCH: origin = 0060h, length = 0020h /* Scratch Pad Data RAM */DMARAM:origin = 0C00h, length
32、= 0300h /* DMA buffer */DATA:origin = 1100h, length = 0080h /* Internal Data RAM*/STACK:origin = 1180h, length = 0560h /* Stack Memory Space*/INRAM:origin = 1900h, length = 0100h /* Internal Data RAM*/HPRAM0:origin = 1A00h, length = 0002h /* HPI memory accessible byHost and DSP */HPRAM1:origin = 1A0
33、2h, length = 0280h /* HPI memory accessible byHost and DSP */HPRAM2:origin = 1C82h, length = 0280h /* HPI memory accessible byHost and DSP */EXRAM:origin = 1F10h, length = 4000h /* External Data RAM*/*/*DSP Memory Allocation*/*/SECTIONS.cinit PRAM PAGE 0.text PRAM PAGE 0.vectors VECS PAGE 0init_var
34、PRAM PAGE 0detect PRAM PAGE 0vrcprg PRAM PAGE 0matprg PRAM PAGE 0.stack STACK PAGE 1.trap SCRATCH PAGE 1.const EXRAM PAGE 1.data EXRAM PAGE 1.bss EXRAM PAGE 1.cio EXRAM PAGE 1.switch EXRAM PAGE 1tables EXRAM PAGE 1var EXRAM PAGE 1svctab EXRAM PAGE 1/* SS_V LSP table */vctab EXRAM PAGE 1/* V LSP tabl
35、e */uvctab EXRAM PAGE 1/* UV LSP table */cuvtab EXRAM PAGE 1/* Stochastic codebook */cdbktab EXRAM PAGE 1/* various codebook tables*/logtab EXRAM PAGE 1/* table for log2 */powtab EXRAM PAGE 1/* table for pow2 */hamtab EXRAM PAGE 1/* table for hamming */lgwtab EXRAM PAGE 1/* table for lag window */ac
36、ostab EXRAM PAGE 1/* table for arccos */sqrtab EXRAM PAGE 1/* table for square root */acbtab EXRAM PAGE 1/* table for thresholds in acb */pm03tab EXRAM PAGE 1/* table for x(-0.3) computation */costab EXRAM PAGE 1/* table for cosine */V23 INRAM PAGE 1FSK INRAM PAGE 1hpibuff0 HPRAM0 PAGE 1hpibuff1 HPR
37、AM1 PAGE 1hpibuff2 HPRAM2 PAGE 1dma_buff DMARAM PAGE 1( 4)調(diào)試過程及結(jié)果分析調(diào)試過程雙擊桌面上的Setup CCS 2 ( C5000 ) 圖標,運行CCS 設(shè)置程序。單擊ImportConfiguration對話框中的Clear,刪除原先定義的設(shè)置。從Available Configurations列表中,選擇C5402 DSK via XDS510 Emulator,單擊Import,單擊close,加載seedusd2文件。創(chuàng)建工程加載 .c 和 .cmd 文件添加庫文件添加 include文件編譯結(jié)果分析發(fā)送端時域:發(fā)送端頻域:
38、接收端時域:接收端頻域: 通過下面的圖像我們可以清楚地看出接收到的信號頻域峰值低頻部分在687Hz左右,高頻部分在 1333Hz 左右,根據(jù)表格此時截取的圖像應(yīng)當(dāng)是“2”。發(fā)揮部分:我們在基本部分實現(xiàn)的是 CCITT 的標準,在發(fā)揮部分我們改變了部分參數(shù),改變了靜音部分的時間以及整個信號的時長,可以使單位時間輸出音頻數(shù)增加。具體程序如下:#include #include #include #include #include #include void delay(int period);void generate(int num);HANDLE hHandset;float buffer80
39、0;s16 num=0;int count=0;float freq162= 941,1336, /0697,1209, /1697,1336, /2697,1477, /3770,1209, /4770,1336, /5770,1477, /6852,1209, /7852,1336, /8852,1477, /9697,1633, /A770,1633, /B852,1633, /C941,1633, /D941,1209, /*941,1477 /#;float pi=3.1415926;void main()int cnt=2;if(brd_init(100)return;/* blink the leds a couple times通過觀察LED指示燈的閃動頻率來驗證程序運行 */while ( cnt- )brd_led_toggle(BRD_LED0);/brd_delay_msec(1000);delay(1000);brd_led_toggle(BRD_LED1);/brd_delay_msec(1000);delay(1000);brd_led_toggle(BRD_LED2);/brd_delay_msec(1000);delay(1000);/* Open Handset Codec */hHand
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版(2024)七年級英語下冊Unit 8 學(xué)情調(diào)研測試卷(含答案)
- 第12課《四季循環(huán)》教學(xué)設(shè)計-2023-2024學(xué)年科學(xué)五年級下冊蘇教版
- 酒店電纜基礎(chǔ)施工方案
- 2025年新高考地理全真模擬試卷5(含答案解析)
- 2025年中考物理二輪復(fù)習(xí):選擇題 實驗題 能力提升練習(xí)題(含答案解析)
- 廁所建造合同范本
- 公園管護合同范例
- 班級氛圍營造的實踐方法計劃
- 品牌在市場競爭中的演變與適應(yīng)計劃
- 企業(yè)借貸抵押合同范例
- 2024年高考全國甲卷英語試卷(含答案)
- 四年級數(shù)學(xué)(四則混合運算)計算題專項練習(xí)與答案匯編
- 8年級上冊(人教版)物理電子教材-初中8~9年級物理電子課本
- 人教版高中英語新教材必修2單詞默寫表
- 中金公司在線測評真題
- 項目資金管理統(tǒng)籌實施方案
- 2024年秋新滬科版物理八年級上冊 6.3來自地球的力 教學(xué)課件
- 定密培訓(xùn)課件教學(xué)課件
- 三、種植芽苗菜(教學(xué)設(shè)計)魯科版二年級下冊綜合實踐活動
- 2025屆東北師大附屬中學(xué)高考物理五模試卷含解析
- GB/T 7409.1-2024同步電機勵磁系統(tǒng)第1部分:定義
評論
0/150
提交評論