STM32_ISD1700语音模块

合集下载

isd1700

isd1700
SS=1;
delay_ms(50);
}
/**************************************************************************
* 函数原型: void ISD_Reset(void);
* 功 能: 复位
**************************************************************************/
/*
void ISD_PD(void){
ISD_SendData(PD);
ISD_SendData(0x00);
SBUF=RD_DevID();//读取芯片ID,----1760为0xa0
ClrInt();
ISD_WR_APC2(0xaf);
RdAPC();
}
/**************************************************************************
SS=0;
for(i=0;i<8;i++){
SCLK=0;
I_delay();
if(dat&0x01){
MOSI=1;
}
SCLK=1;
I_delay();
}
MOSI=0;
// SS=1;
return(dat);
}
/**************************************************************************
**************************************************************************/

基于stm32的语音模块isd1760程序

基于stm32的语音模块isd1760程序

Isd.h文件/**************本函数为语音播放模块。

用到函数名是PLAY_NUM(u8 i);其中i即为想要播放的那一段。

注意:初始化时,要初始化两个函数:ISD1760_config();ISD_Init();另外,在函数PLAY_NUM(u8 i);里面,要根据具体录制修改i的值。

用到的端口:PE0(接语音芯片4脚)PE1(接语音芯片5脚)PE2(接语音芯片6脚)PE3(接语音芯片7脚)***************************************************************/#ifndef __ISD1760_H__#define __ISD1760_H__#include "stm32f10x_gpio.h"extern uint8_t SR0_L;extern uint8_t SR0_H;extern uint8_t SR1;extern uint8_t ID;extern uint8_t APCL;extern uint8_t APCH;#define RCC_GPIO_ISD1760 RCC_APB2Periph_GPIOE#define MISO GPIO_Pin_0 //CPU (IN)#define MOSI GPIO_Pin_1 //ISD1760 (OUT)#define SCLK GPIO_Pin_2#define nSS GPIO_Pin_3 //语音管脚定义//SS,SCLK,MOSI#define SCLK_1 GPIO_SetBits(GPIO_ISD1760, SCLK)#define SCLK_0 GPIO_ResetBits(GPIO_ISD1760, SCLK)#define nSS_1 GPIO_SetBits(GPIO_ISD1760, nSS)#define nSS_0 GPIO_ResetBits(GPIO_ISD1760, nSS)#define MOSI_1 GPIO_SetBits(GPIO_ISD1760, MOSI)#define MOSI_0 GPIO_ResetBits(GPIO_ISD1760, MOSI)//#define PU 0x01 //Power up#define STOP 0x02 //#define RESET 0x03 //??#define CLI_INT 0x04 //EOM?#define RD_STATUS 0x05 //#define RD_PLAY_PTR 0x06 //#define PD 0x07 //Power down ??#define RD_REC_PTR 0x08 //#define DEVID 0x09 //ID#define PLAY 0x40 //#define REC 0x41 //#define ERASE 0x42 //#define G_ERASE 0x43 //#define RD_APC 0x44 //APC???;APC--?????????#define WR_APC1 0x45 //?<D11:D0>APC1???,??VOL#define WR_APC2 0x65 //?<D11:D0>APC2???,??<D2:D0>#define WR_NVCFG 0x46 //?APCNVCFG;??#define LD_NVCFG 0x47 //?NVCFGAPC#define FWD 0x48 //#define CHK_MEM 0x49 //#define EXTCLK 0x4A //#define SET_PLAY 0x80 //?<S10:S0>,??<E10:E0>?EOM#define SET_REC 0x81 //?<S10:S0>,??<E10:E0>#define SET_ERASE 0x82 //??<S10:S0>?<E10:E0>#define NOP _nop_()void delayus(void); //15usvoid Delay(uint16_t z ); //??:??MS,ZMS?uint8_t SPISendData(uint8_t BUF_ISD); //??: SPI()???void RdStatus(void); //??:void ClrInt(void); //??:void ISD_WR_NVCFG(void); //??:void ISD_WR_APC2(void); //??: ??APC2void RdAPC(void); //??: ??APCvoid ISD_Init(void); //??:void ISD_CHK_MEM(void); //??:void ISD_Reset(void); //??: ??void ISD_Stop(void); //??: ??void ISD_PU(void); //??: ??void ISD_PD(void); //??: ??uint8_t RD_DevID(void); //??: ??ID//void GetToneAdd(uint8_t cNum,uint16_t * ipStartAdd,uint16_t * ipEndAdd);//??: void ISD_PLAY(void); //??:void ISD_FWD(void);void SetREC(uint8_t cNum); //??: void Erase_All(void); //??: void ISD1760_config(void);void PLAY_NUM(u8 i);#endifIsd.c文件#include "isd.h"#include "delay.h"#define GPIO_ISD1760 GPIOEuint8_t SR0_L;uint8_t SR0_H;uint8_t SR1;uint8_t ID;uint8_t APCL;uint8_t APCH;void delayus(void){u8 i=2;while(i--);}void Delay(uint16_t z){uint16_t x,y;for(x=z;x>0;x--) //7usfor(y=185;y>0;y--);}uint8_t SPISendData(uint8_t BUF_ISD) {uint8_t i;uint8_t dat = BUF_ISD;SCLK_1;nSS_0;for(i=0;i<8;i++) //8{SCLK_0;; //0--1,?(CPU)--?(ISD)delayus(); //SPIif(dat&0x01) //{MOSI_1; //1700 ??}else{MOSI_0;}dat>>=1;if(GPIO_ReadInputDataBit(GPIO_ISD1760, MISO)){dat|=0x80;}SCLK_1;; //delayus();;}MOSI_0;// nSS=1;return(dat);}void RdStatus(void){nSS_0;SPISendData(RD_STA TUS);SPISendData(0x00);SPISendData(0x00);nSS_1;Delay(10); //??10msnSS_0;SR0_L =SPISendData(RD_STATUS);SR0_H =SPISendData(0x00);SR1 =SPISendData(0x00);nSS_1;Delay(10);}void ClrInt(void){nSS_0;SPISendData(CLI_INT); //EOM?SPISendData(0x00);nSS_1;Delay(10);}void ISD_WR_NVCFG(void){nSS_0;SPISendData(WR_NVCFG); //?APCNVCFG;??SPISendData(0x00);nSS_1;Delay(10);}void ISD_WR_APC2(void){nSS_0;SPISendData(WR_APC2); //?<D11:D0>APC2???,??<D2:D0>SPISendData(0x70); //0xa8,0xaf,0xa0?SPISendData(0x0c); //0c//D11=1,?SETPLAY,EOMSET_PLAY,EOM nSS_1;Delay(10);ISD_WR_NVCFG(); //}void RdAPC(void){nSS_0;SPISendData(RD_APC); //APC???SPISendData(0x00);SPISendData(0x00);SPISendData(0x00);nSS_1;Delay(10); //??10msSR0_L = SPISendData(RD_APC);SR0_H = SPISendData(0x00);APCL = SPISendData(0x00);APCH = SPISendData(0x00);nSS_1;Delay(10);}void ISD_Init(void){ISD_Reset(); //??: ??do{ISD_PU(); //??: ??RdStatus(); //??:}while((SR0_L&0x01)||(!(SR1&0x01))); //if(SR0_L^0==1){system Err}<CMD_Err==1>ClrInt(); //??:ISD_WR_APC2(); //??: ??APC2RdAPC(); //??: ??APC}void ISD_CHK_MEM(void){nSS_0;SPISendData(CHK_MEM); //SPISendData(0x00);nSS_1;Delay(10);}void ISD_Reset(void){nSS_0;SPISendData(RESET); //??SPISendData(0x00);nSS_1;Delay(50);}void ISD_Stop(void){nSS_0;SPISendData(STOP); //SPISendData(0x00);nSS_1;Delay(50);}void ISD_PU(void){nSS_0;SPISendData(PU); //Power upSPISendData(0x00);nSS_1;Delay(50);}void ISD_PD(void){nSS_0;SPISendData(PD); //Power down ??SPISendData(0x00);nSS_1;Delay(10);}uint8_t RD_DevID(void){nSS_0;SPISendData(DEVID); //IDSPISendData(0x00);SPISendData(0x00);nSS_1;Delay(10); //??10msSR0_L = SPISendData(DEVID);SR0_H = SPISendData(0x00);ID = SPISendData(0x00);nSS_1;Delay(10);return(ID);}void ISD_PLAY(void){do{RdStatus(); //??:}while((SR0_L&0x01)||(!(SR1&0x01))); //if(SR0_L^0==1){system Err}<CMD_Err==1> ClrInt(); //??:nSS_0;SPISendData(PLAY); //从当前位置播放SPISendData(0x00);nSS_1;Delay(10); //??10msdo{RdStatus(); //??:}while((SR0_L&0x01)||((SR1&0x04))); // 0x04? if(SR0_L^0==1){system Err}<CMD_Err==1>}void ISD_FWD(void){do{RdStatus(); //??:}while((SR0_L&0x01)||(!(SR1&0x01))); //if(SR0_L^0==1){system Err}<CMD_Err==1> ClrInt(); //??:nSS_0;SPISendData(FWD); //跳到下一地址处SPISendData(0x00);nSS_1;Delay(10); //??10msdo{RdStatus(); //??:}while((SR0_L&0x01)||((SR1&0x04)));}void Erase_All(void){nSS_0;SPISendData(G_ERASE); //SPISendData(0x00);nSS_1;Delay(10); //??10ms}void ISD1760_config(void) //??IO{GPIO_InitTypeDef GPIO_InitStructure; //,????(???)RCC_APB2PeriphClockCmd(RCC_GPIO_ISD1760,ENABLE); //??GPIO??GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; //??GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOE, &GPIO_InitStructure);RCC_APB2PeriphClockCmd(RCC_GPIO_ISD1760,ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //?? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //?? GPIO_Init(GPIOE, &GPIO_InitStructure);/*GPIO?*/}void PLAY_NUM(u8 i){i = i+2;// ISD_PLAY();// delay_ms(100);while(i){ ISD_FWD(); //地址下移一段delay_ms(100);i--;}ISD_PLAY(); //播放当前地址那段delay_ms(100);ISD_Reset(); //复位,如果不复位,会记住上一次的语音地址。

基于ISD1700语音控制芯片的低成本公交车自动报站电路设计

基于ISD1700语音控制芯片的低成本公交车自动报站电路设计

( c h a p t e r 1 1 ) A d di s o n — W e s 1 e Y p u b .
单 片机判断接受信号的高低 电压 并发 出指
C O . i n c . 1 9 9 7 :功 率 放 大 2 2 — 2 6
进行相 应的语音报站 ,并进行液 晶显示 ,检
E l e c t r o n i c C o mp o n e n t・ 电子元器件
基于 I S D 1 7 0 0 语 音控制芯片的低成本公交车 自动报站 电路设计
文/ 段 了然 李 雪 莲 杨 海 龙 马博
音信 息存储 到语音存 储芯片中 从而建立语音 3 结 语
计 仍 然 存 在 的许 多 的 不足 之 处 , 比 如 它 在 报 站 时 刻 上 不 能 十 分 的精 确 ,存 在 一 定 的 误 差 。这 些 问题 都 需要 在 今 后 的研 究 工作 中 加 以 改 进 ,
硬 件 电 路 包 括 控 制 器 选 型 、 红 外 反 射 模
块 电路 设计、语音控制电路设计、按键 电路 、 指 示灯 、 电源 电路设 计等 ;其 中控制 器选 择 S T C8 9 C 5 2 一带 8 K字节 闪烁可编程可擦除 只读 存储器 ,红外反射模块 电路 以 T C R T 5 0 0 0红外 反 射器 为 核心 ,工作 电压 :DC 3 V~ 5 . 5 V, 推荐工作 电压 为 5 V,检测距离 :l mm ~ 8 mm 适 用,焦 点距 离为 2 . 5 mm;语音控制 电路设计
C i r c U i t An a 1 Y S i s hnd D e S i g n
示,直到最后一段语音播放完毕再返 回第 一段 语音,循环播放。 包括 主程序 一包 括初 始化 ,读 取语 音 芯 片存储的地址及录音指针并正确判 断当前站 点 以决定播放位置并正确播放站点站名等功 能; 红外 线播 站子程 序 一实现站 点 的正确 播放 , 并顺序播放到达站点 的站名等功能 ;录音操作 子程序 一实现站点录入及修改等功能 。

ISD1700语音芯片SPI使用总结

ISD1700语音芯片SPI使用总结

ISD1700语音芯片SPI使用总结(一)ISD1700语音芯片SPI使用总结一该语音芯片的使用要仔细分析英文PDF的资料,电路可按中青世纪论坛上面所给的电路搭建,也可按英文PDF后面所画的电路图焊接。

本芯片使用不单纯是一个放音电路,还含有其他的控制。

因此程序首先要能完成指定地址的放音工作,其次还应能嵌入整个费额显示程序中,即语音程序不能与电路其他功能相影响。

费额显示中里面主要有八字板,点阵等其他的控制。

SPI放音操作设计参考了网络上的部分程序,各取所长设计了放音程序。

在最后附上了部分程序,仅供参考。

二试验中采用的是ISD1760语音芯片,采样率为8K时,一共能播放60S的语音,最大地址为0x1EF,录音实际地址为0x10-0x1EF,从此最大地址可得出:0x1EF-0x10=0x1DF=479479+1=480;480*125MS =60S,也就是说8K采样率时每1个地址最小语音长度为125MS,因此如果知道单个语音的长度,暂时无编程器的时候,也可自己推断每个语音所占的地址长度。

三SPI操作时要严格遵守PDF上所给的各项操作,这里不列出。

暂时仅给出试验中遇到的所有问题并如何解决的。

1,一开始本实验是自己用通用板自己照电路搭建的平台,此电路正确与否可把PLAY管腿和地短路,如果芯片有语音并且电路功放及外围电路正确的话,此时芯片就会把所有语音全都循环读一遍。

接下来把4个SPI口与单片机接通,尝试软件控制。

主循环中可设置一个连续播放的程序,上电就循环放音。

放音程序没错的话第一步便成功了!这期间我遇到的问题主要有放不出音,读音混乱,有杂音。

如果放不出音,先检查电路,程序放出声音应该没出现什么问题。

2,本芯片设置的APC值为0xA0和0x04,具体对应功能参见中文PDF。

接下来遇到的问题就是准确放单个音和连续播放多个语音。

播放单个语音首先是地址的编译。

1730以下的地址可定义为BYTE,从1740开始就需要定义为WORD,其实也可定义为BYTE,就是发送地址的时候先发0x10和后两位即可。

stm32语音播报模块工作原理

stm32语音播报模块工作原理

stm32语音播报模块工作原理
STM32语音播报模块是一种可以实现语音播报功能的硬件设备,其工作原理主要包括以下几个方面:
1. 语音采集:通过麦克风等采集设备获取声音信号,并进行音频信号的放大、滤波等处理,以保证采集到的声音信号质量。

2. 语音编码:将采集到的声音信号转换成数字信号,并采用一定的压缩算法进行编码压缩,以便在传输和存储时占用较小的空间和带宽。

3. 存储和传输:将编码后的数字信号存储在内部存储器或外部存储器中,并通过串口、蓝牙等通信接口传输给STM32主控芯片。

4. 语音解码:STM32主控芯片接收到语音信号后,通过解码算法将数字信号还原为原始的声音信号。

5. 语音播放:将解码后的声音信号通过DAC等数字模拟转换器转换成模拟信号并输出,以实现语音播报的功能。

综上所述,STM32语音播报模块的工作原理涉及到声音采集、编码、存储、传输、解码和播放等多个环节,需要多个硬件设备和算法的协同配合,以实现语音播报的功能。

- 1 -。

基于STM32的嵌入式语音识别模块设计

基于STM32的嵌入式语音识别模块设计

基于STM32的嵌入式语音识别模块设计嵌入式语音识别模块是目前人工智能技术的重要组成部分,其应用广泛,包括语音控制、语音导航、语音交互等。

本文基于STM32单片机设计了一款嵌入式语音识别模块,具有高效、稳定、易用等多种优点。

一、方案设计该嵌入式语音识别模块采用STM32F407单片机作为核心,结合语音识别算法和音频处理技术,实现语音识别功能。

具体方案如下:1.采样:采用音频电路将采样音频转化为数字信号,采用PCM编码方式,采样频率为16KHz。

2.预处理:预处理包括去噪、滤波等处理,以消除环境噪音和语音信号之间的干扰。

3.特征提取:利用Mel频率倒谱系数(MFCC)算法将信号的音频特征提取出来,提取后的特征值可以表达出音频的不同特点。

4.模型匹配:根据提取出的特征值与已预设的模型进行匹配,找出最相符的模型。

5.识别、输出:识别出的结果通过串口输出到上位机,上位机对结果进行相应的处理和反馈。

二、实现过程1.硬件设计:由于STM32F407单片机片内有ADC、DAC、TIM3定时器、USART等模块,因此只需要添加少量的外围电路即可满足设计要求。

2.软件设计:主要采用C语言进行编程,使用Keil和STM32CubeMX开发工具,分别进行程序设计和引脚配置。

在嵌入式语音识别模块的整个流程中,程序的实现涉及到多个算法的实现,包括信号的预处理、特征提取、模型匹配等。

三、性能与应用经过多次测试,该嵌入式语音识别模块的识别率达到了95%以上,且实现了较好的去噪和滤波效果,可以满足大多数语音识别应用场景。

此外,该模块的具有硬件条件简单、体积小、功耗低等优势,既可以实现控制指令识别,也可以作为语音交互系统的基础组件使用。

综上所述,本文提出的基于STM32的嵌入式语音识别模块基于成熟的语音识别算法,在设计上更加简便实用,在性能上也能满足大部分嵌入式语音识别应用场景的需求,具有广泛的应用前景。

录音芯片

语音的应用现在已经是非常普遍了,在生活中无处不在。

做为语音功能的实现单元,语音芯片目前也出来很多种。

对于语音芯片实现的功能,我们可以简单的理解成一个录放机。

你可以录音进去自己的声音,并按自己的要求播放,同时可以擦除及长期的保存。

在各类芯片中,ISD公司的芯片目前算是比较流行,性价比较高的一款产品。

在这里简单介绍一下ISD最新推出的一个语音芯片系列ISD1700。

该系列芯片有不同的录音时间,及采样频率供你选择。

所谓的采样频率其实就是音质,采样频率越高则单位时间内采集的数据越多,播放时音质显然越好,当然要求的存贮空间就越大,因此同个芯片,采样越高,录音时间就越短。

ISD1700系列支持两中工作模式:按键模式与SPI模式。

所谓按键模式,其实就跟普通录放机工作一样,通过按键来操作。

它支持录音、放音、删除、快进、音量控制等按键。

对于电路上的实现,其实就是相应管脚接个接地按钮。

同时比起以前的ISD录音芯片,增加了提示音的功能,即当你按下录音键时,会自动发出一个声音。

当然这个声音也可以进行自定义录音。

以上的具体操作还会专门写笔记讨论。

另一种工作模式其实就是用控制器,如单片机等,对ISD1700芯片进行完全的控制。

该模式可以实现按键模式下的所有操作,同时还增加了根据地址进行的一系列分段操作。

ISD1700芯片将自己的存储声音数据的空间分成若干个段,每个段都有一个自己的地址。

我们可以假设一个芯片有2M存储空间,然后每段分个512K,那么就可以分为4段。

对与每段我们可以分别赋地址为0x00,0x01,0x10,0x11,然后就可以通过段地址进行段空间的操作。

ISD1700的分段操作跟这个类似,通过段地址,我们可以删除某一部分存储空间,也可以播放或录制某一部分存储空间,这样我们就可以将不同段的声音连起来播放,自由组成相应的语句或音乐。

对于SPI的具体操作见以后的专题笔记。

对于语音芯片,我们可以分析一下它的应用范围。

1.最常见的就是公交地铁的报站系统。

ISD1700模块操作使用手册

ISD1700模块使用操作手册一、ISD1700模块介绍ISD1700模块是为方便技术人员快速熟悉和掌握ISD1700系列芯片独立按键模式下的各种操作而设计的一款简单实用模块电路板。

它适用于ISD1700全系列芯片,ISD1700实验板具有操作简单、功能完备等特点,因此,应用十分广泛。

ISD1700模块外观如图所示:二、三、1.ISD1700模块插接件说明ISD1700模块配有J1~J6共六个插针,说明如下:J1:设有VCC和GND两个引脚,用来给模块供电,供电电压为5V。

J2:设有LINE和GND两个引脚,用来输入线路音频信号。

J3~J4:ISD1700外引脚端,可将ISD1700各脚引出来,以便进行扩展实验。

J3、J4中的SPK+、SPK-可用来连接喇叭。

J5:线路输出端,在线路输入时,可连接喇叭。

J6:独立按键模式和SPI模式切换端,在独立按键模式下应用三只短接帽短接,在SPI 模式下不短接。

ISD1700模块独立工作使用说明录音REC按住REC键不放,同时LED灯会亮起,此时对着 MIC说话,说话内容就会录进ISD1700语音芯片里了。

录完一段后抬起此键,LED会同时熄灭,再次按下则开始录第二段,以后的各段依次操作。

2.3.4.5. 6.7.放音PLAY有两种方式,边沿触发和电平触发。

(注:录完音后放音指针会停留在最后录完段的起始地址处,此时放音则放最后一段)(1)边沿触发:点按一下PLAY 键即放当前段,放音期间LED 闪烁直到放音结束时熄灭。

放音结束后放音指针指向刚放的段的起始地址处,即再次点按PLAY 键还会放刚放完的这段。

(2)电平触发:常按PLAY 键芯片会把所有的语音信息全部播放,且循环直到松开此按键。

快进FWD执行放音操作前,点按一下此键放音指针会指向下一段,按两下则指向此段后的第二段起始。

放音期间点按此键则停止播放当前段接着播放下一段,如果当前播放的是最后一段,则停止播放最后一段播放第一段。

stm32语音播报模块工作原理

stm32语音播报模块工作原理
STM32语音播报模块是一种集成语音识别与合成功能的电子设备,其工作原理主要包括以下几个步骤:
1. 语音输入:用户通过麦克风或其他语音输入设备向STM32芯
片中输入语音信号。

2. 语音识别:STM32芯片内部的语音识别程序对输入的语音信
号进行分析和处理,识别出用户的发音内容。

3. 指令执行:根据识别结果,STM32芯片会执行相应的指令,
比如播报某个预设的语音内容或执行其他控制命令。

4. 语音合成:如果需要播报语音内容,STM32芯片内部的语音
合成程序会将预设的语音内容转化为对应的语音信号。

5. 语音输出:将合成好的语音信号通过扬声器等输出设备输出,使用户能够听到相应的语音播报内容。

综上所述,STM32语音播报模块通过语音输入、识别、指令执行、语音合成和语音输出等步骤,实现了语音交互的功能,为人机交互提供了一种自然、方便的方式。

- 1 -。

基于ISD1700 SPI协议模式的语音报警系统

基于ISD1700 SPI协议模式的语音报警系统
刘恩华;徐科明
【期刊名称】《电子测试》
【年(卷),期】2009(000)010
【摘要】为了能在语音报警系统中实现更加人性化的控制、操作及监测功能,本文以PIC16F877单片机作为控制模块核心,采用热释电红外传感器PIS-209S作为前端探测器,通过SPI协议模式对语音芯片ISD1700进行语音录放功能的精确操控,实现语音的分段录放、循环播放、查询播放等功能.系统启动报警后,控制预先存有的
报警内容进行若干次语音警告,同时对现场进行录音并记录报警时间,并通过人机界
面查询显示屏上的报警时间.测试结果表明,该系统能真实的再现语音效果,运行稳定、可靠.
【总页数】4页(P69-72)
【作者】刘恩华;徐科明
【作者单位】江苏信息职业技术学院,无锡,214153;江苏信息职业技术学院,无
锡,214153
【正文语种】中文
【中图分类】TP391.42
【相关文献】
1.基于SPI串行总线的语音接口电路的软硬件设计 [J], 郭小波;刘永平
2.基于SPI总线的全双工数字语音通信 [J], 甘育裕;方子樵;王骥
3.基于SPI总线的PIC单片机与ISD4003语音芯片的接口电路和软件设计 [J], 师宝山;郭小波;刘永平
4.基于ISD1700语音录放模块的设计与实现 [J], 吴繁红
5.基于ISD1700语音控制芯片的低成本公交车自动报站电路设计 [J], 段了然;李雪莲;杨海龙;马博;
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档