语音存储与回放系统的设计与实现.docx

上传人:b****1 文档编号:2325048 上传时间:2023-05-03 格式:DOCX 页数:53 大小:972.13KB
下载 相关 举报
语音存储与回放系统的设计与实现.docx_第1页
第1页 / 共53页
语音存储与回放系统的设计与实现.docx_第2页
第2页 / 共53页
语音存储与回放系统的设计与实现.docx_第3页
第3页 / 共53页
语音存储与回放系统的设计与实现.docx_第4页
第4页 / 共53页
语音存储与回放系统的设计与实现.docx_第5页
第5页 / 共53页
语音存储与回放系统的设计与实现.docx_第6页
第6页 / 共53页
语音存储与回放系统的设计与实现.docx_第7页
第7页 / 共53页
语音存储与回放系统的设计与实现.docx_第8页
第8页 / 共53页
语音存储与回放系统的设计与实现.docx_第9页
第9页 / 共53页
语音存储与回放系统的设计与实现.docx_第10页
第10页 / 共53页
语音存储与回放系统的设计与实现.docx_第11页
第11页 / 共53页
语音存储与回放系统的设计与实现.docx_第12页
第12页 / 共53页
语音存储与回放系统的设计与实现.docx_第13页
第13页 / 共53页
语音存储与回放系统的设计与实现.docx_第14页
第14页 / 共53页
语音存储与回放系统的设计与实现.docx_第15页
第15页 / 共53页
语音存储与回放系统的设计与实现.docx_第16页
第16页 / 共53页
语音存储与回放系统的设计与实现.docx_第17页
第17页 / 共53页
语音存储与回放系统的设计与实现.docx_第18页
第18页 / 共53页
语音存储与回放系统的设计与实现.docx_第19页
第19页 / 共53页
语音存储与回放系统的设计与实现.docx_第20页
第20页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

语音存储与回放系统的设计与实现.docx

《语音存储与回放系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《语音存储与回放系统的设计与实现.docx(53页珍藏版)》请在冰点文库上搜索。

语音存储与回放系统的设计与实现.docx

语音存储与回放系统的设计与实现

 

 

语音存储与回放系统的设计与实现

摘要

随着当今社会电子技术更新的日益加快,单片机控制系统的应用在日常生活中已变得越来越广泛,特别是在语音录放等领域。

以单片机控制为基础来进行语音录放系统的设计,或是具备语音播报功能的产品,正在被大家所广泛接受,这也将对通信领域语音处理的发展起着更大的推进作用。

本文采用单片机AT89S52与语音芯片ISD4004来组成语音存放系统,实现语音的分段存储、组合回放。

该语音录放系统主要包括单片机控制模块、语音处理模块、显示模块,其中单片机控制模块是整个系统设计的核心。

在语音的录放过程中,单片机通过SPI通信方式与语音模块ISD芯片进行实时通讯,以此来实现语音的录制与回放。

实践证明,本系统能实现语音的录放,且音质自然清晰。

关键词单片机/语音芯片/语音存储/语音回放

THEDESIGNANDIMPLEMENTATION

OFVOICESTORAGEAND

PLAYBACKSYSTEM

 

ABSTRACT

 

Withtheacceleratingupdatesofelectronictechnologyintoday'ssociety,theapplicationofmicro-controllercontrolsystemindailylifehasbecomemoreandmorewidespread,especiallyinvoicerecordingareas.ThedesignofvoicerecordingsystemthatbasedonMCUcontrol,ortheproductswhichhaveavoicebroadcastfeature,arewidelyacceptedbyeveryone,whichwillalsoplayagreaterroleinpromotingthedevelopmentofcommunicationinthefieldofspeechprocessing.

Inthispaper,AT89S52micro-controllerandvoicechipISD4004areusedtoformthevoicestoragesystems,torealizethefragmentationofvoice,thecombinationofplayback.Thevoicerecordingsystemincludes,voiceprocessingmodule,anddisplaymodule,inwhichthesingle-chipcontrolmoduleisthecoreofthesingle-chipsystemdesign.Inthevoicerecordingprocess,themicro-controllerviaSPIcommunicationmoduletocommunicateISDvoicechipwithforreal-timecommunication,inordertoachieveavoicerecordingandplayback.Practicehasprovedthatthesystemcanachievevoicerecording,andthesoundnaturalandclear.

KEYWORDSAT89S52,voicechip,voicestorage,voiceplayback

1绪论

1.1课题的背景及意义

在智能仪器仪表或自动控制设备中,增加语音功能就能够在很大程度上提高人机界面的友好型,为用户提供方便。

目前,语音服务的应用越来越广泛,如电脑语音钟、排队机、公交车报站器、语音型数字万用表、监控系统语音报警等。

在许多场合,设计者都需要将语音系统和单片机结合在一起,以实现智能语音控制的功能。

由于单片机的体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,使得现代人们生活中所用的几乎每件电子和机械产品都会集有单片机。

手机、电话、计算器、ipad、电子玩具以及鼠标等电脑配件中都会有1-2部单片机。

而个人电脑中也会有为数不少的单片机在维持工作,由此看出,单片机在语音功能的实现中发挥着重大的作用。

数字化语音录放指的是利用数字技术对语音信号进行采集、处理并在一定存储设备中存储,而且在需要时可以进行输出的过程。

相对于模拟设备来说,数字化语音设备凭借着易于集成、小型化、制作成本低、稳定、操作直接、方便等优点,在各个领域都得到广泛的应用。

如监控环境中的语音采集系统,家庭或学校使用的语音复读机等,都是数字化语音存放系统的典型应用[1]。

在对语音信号的处理方法上,常规的是采用滤波器处理接收到的信号,通过模数转换成数字信号,再由单片机控制存储在存储器中,在需要输出时,由单片机控制从存储器输出,再经数模转换成模拟信号,滤波后由功放放大播出。

这种方法的缺点是:

输出不稳定,语音信号有杂音或变音,不易调试。

解决该缺陷,可以采用语音芯片。

语音芯片就是在人工或者控制器控制下可以完成录/放音的芯片,它可以很方便的在单片机系统中使用,并且和单片机的接口非常容易,其体积和重量也很符合单片机系统的要求。

因此,采用单片机和语音芯片的结合,来实现语音信号的数字化控制,是实用性较强的选择。

1.2国内外研究现状

随着IT行业的不断发展进步,生活中的各种语音录播设备层出不穷。

在一般的数字化语音录放系统中,对于语音信号的处理只是简单的采集、存储和播放;尽管还能较大程度上保证语音的保真度,但是过多的语音数据会造成对大量存储设备的需求。

所以,对于大型系统,可以通过使用大容量的硬盘、甚至大规模的磁盘阵列来解决;但对于小型的设备,如便携式语音复读机,则不能采用同样的方法。

近年来,语音信号处理技术的快速发展,为数字化语音录放系统提供了新的发展空间,对语音信号的采集、处理由以前的简单的波形编码变为参数编码、压缩,从而大大地减少了数据的存储量。

比如说,原始的语音信号一般是采用8kHz抽样,16bits的线性PCM编码进行采集,一般的系统是直接将采集的数据直接进行存储;而如果采用参数编码对采集的数据进行压缩之后在存储,能够使存储量大大减少,当恢复信号时,则利用编码后的参数进行合成,可以得到满意的音质效果[2]。

就现在来说,比较典型的语音器件有美国ISD公司生产的ISD系列语音芯片。

它采用的是模拟数据在半导体存储器中直接存储的专利技术,即模拟信号直接存储,无需A\D或D\A转换,因此能够很好地再现语音效果,避免了一般固体语音电路因量化和压缩所造成的量化噪声和失真现象。

另外,该芯片功能强大:

能录能放、10万次的擦写寿命、语音可掉电保存、手动控制和CPU控制兼容、可多片级联、无需开发系统等,它为欲实现语音功能的单片机设计人员提供了解决方案。

目前,市场上已有将AT89C2051单片机与ISD语音芯片组成的语音组合板,使用串口通信,芯片里能固话一些常用词汇,用户无需知道工作原理,只需通过串口按一定协议发送代码即可发送语音。

1.3本文的主要内容及研究方法

1.3.1本文主要内容

本论文主要是在查阅相关国内外文献资料的前提之下,在了解和熟悉目前语音存储与回放系统结构、功能以及发展现状的基础上,完成语音存储与回放系统的设计与实现。

设计步骤大致分为以下三个部分:

第一,主要了解实物的具体组成部分,其中包括单片机AT89S52和语音芯片ISD4004具体功能和各个引脚的作用,两者之间如何连线。

第二,程序的操作。

怎样编写程序,如何进行仿真和写入程序。

比如先是进行程序的写入,然后通过单片机对语音芯片的控制操作。

第三,对于仿真方面,经过查阅资料选出了比较合适的程序编写和仿真软件Keil,当所有东西都做完后,选用了通过实物的调试来检验设计的完整性和实物的真实效果。

1.3.2研究方法

该系统要求实现的功能是语音的存储与回放,整个系统分为录音、暂停、回放、停止四种状态。

身为模拟信号的语音信号,本身是不能完成数字化的处理的,需要借助于专用的语音芯片或者A/D和D/A转换,来完成模拟信号的处理工作。

但这种数字化处理方法易产生信号失真的现象。

为避免此现象,利用语音芯片有模拟量直接存储技术的特点,采用语音芯片来实现语音录放,单片机在其中起着主控作用,不需在外部进行语音信号的放大和滤波,语音芯片抗干扰能力强,可有效防止信号失真。

语音芯片内部集成模拟存储阵列,无需外连存储器,这使得电路更加简单便于操作扩展。

单片机要控制语音录音的开始和结束,设定信号的存储地址,并在播放时寻址播放空间并控制播放。

2语音存储与回放系统总体设计

2.1设计要求

1、设计一个语音存储与回放系统,能最少实现4分钟的录音时间并且播放音

质清晰;

2、根据单片机系统的原则,构建硬件电路;

3、给出语音存储与回放系统的硬件电路设计图和模块程序流程图;

4、编写源程序代码,制作印刷电路板、并制作实物。

2.2实现方案的选择

方案一:

利用单片机及其外围电路(如A/D、D/A、存储器等),实现语音信号的数字化处理,完成语音的存储与回放。

该方案声音通过MIC转换成微弱的电信号,经放大及滤波后之后,送入A/D转换进行模数转换,输出的数字化语音信号通过单片机的控制,写入片外数据存储器中[3]。

回放时,单片机从存储器中将数据读出,送入D/A转换器,进行模数转换,转换后的模拟信号经滤波、功率放大后,实现语音回放。

该方案的优点:

能完成语音信号的数字化处理,实现语音信号的存储与回放。

缺点是:

语音信号容易受到外界干扰而失真,且信号的压缩存储比较复杂,硬件电路不易调试,因此该方案不是最佳选择。

方案二:

直接采用单片机与专用的语音芯片ISD4004来实现语音存储与回放,此方案可以实现语音的存储与回放[4]。

而且优点是无需外扩存储器,外围电路简单,语音信号抗干扰能力强,存储方便,调试简单,还可以用此作为语音服务的子系统。

本设计采用第二种方案,可以实现录音,循环放音,擦除等功能。

2.3总体设计方案

根据设计要求,本系统采用AT89S52单片机和ISD4004语音芯片来实现语音的存储与回放,系统总体设计框图如图2-1所示。

由图可知,本系统分为七个部分:

单片机控制电路、语音录入电路、语音处理电路、功放电路、按键控制电路、状态显示电路和电源电路。

采用51单片机作为主控芯片,利用ISD4004实现语音信号的录放处理,采用LM386集成功放构成功放电路,用液晶1602构成工作状态显示电路,简单易行且控制方便。

 

图2-1系统总体设计框图

各模块介绍如下:

单片机控制电路:

完成硬件的初始化,响应用户键盘输入的命令,通过模拟SPI总线与语音芯片进行通信,给状态显示模块和语音处理模块发送命令;

语音录入电路:

采集语音信号,为语音芯片提供信号输入;

语音处理电路:

响应单片机发送来的命令,从而使语音芯片根据按键作相应的语音处理;

功放电路:

回放时对语音信号进行放大,播放出来;

按键控制电路:

为用户控制该系统的工作状态提供方便;

状态显示电路:

提醒用户此时该系统处于何种状态,使操作界面友好化;

电源电路:

为语音芯片、单片机等各电路模块提供合适的电源电压。

3语音录放系统的硬件设计

3.1单片机控制电路设计

3.1.1AT89S52单片机简介

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器和内部看门狗电路。

该芯片使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程[5],亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式[6]。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

AT89S52单片机的主要性能参数如表3-1所示。

表3-1单片机主要特征

AT89S52单片机主要特征

与MCS-51 指令系统兼容

8K可反复擦写FlashROM

32个双向I/O口三个16位可编程定时/计数器中断

256*8bit内部RAM

时钟频率0-24MHZ

2个串行中断

可编程UART串行通道

2个外部中断

6个中断源

2个中断读写口线

3级加密位

低功耗的闲置和掉电模式

片内振荡器和时钟电路

数据来源:

2007年《电子元器件手册》[J]

单片机AT89S52的引脚图如图3-1所示。

各引脚的功能及说明如下:

VCC:

接供电电压,+5V。

GND:

接地。

P0口:

P0口为一个8位漏极开路双向I/O口,即地址/数据通信总线复用口。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,同时它有转换控制部分。

当它做I/O口时,会构成一个准双向口,这时的多路开关连接到锁存器的Q端口上。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入[7]。

图3-1AT89S52的引脚图

3.1.2晶振电路设计

图3-2晶振电路

单片机是一种时序电路,必须要为它提供时钟脉冲信号才能正常工作。

系统的时钟信号是单片机内部各种操作的时间基准,为各种指令的执行提供时钟节拍。

一般情况下,单片机可以通过内部震荡或者外部震荡两种方式得到系统的时钟信号。

本系统中,采用的是12MHz的晶振,电容是用的22pF的陶瓷电容,其晶振原理图如图3-2所示。

3.1.3复位电路设计

在本次设计中,采用外部手动复位,当一个高电平加到RST引脚超过2机器周期时,单片机产生复位。

复位电路图如图3-3所示。

图3-3复位电路

当任何一个复位信号产生时,C51的所有I/O端口都会立即复位成它们的初始值,并不需要时钟源处于运行状态。

在复位信号撤销后,硬件系统将调用一个计数延时过程,经过一定的延时之后,才能进行系统内部的真正复位启动。

采用这种形式的复位启动过程,保证了电源达到稳定后才使单片机进入正常的操作,复位启动的延时时间可以由用户通过对熔丝位的编程来定义。

3.2语音录入电路设计

3.2.1MIC简介

此次毕业设计中,语音录入设置采用的是咪头,学名为传声器,是将声音信号转换成电信号的能量转换信号,是和喇叭正好相反的一个器件。

当前应用比较广泛的是电容麦克风,和驻极体麦克风。

考虑到驻极体形式的体积小巧,成本低廉,应用广泛,此次声音的录入,采用驻极体形式的麦克风。

对于驻极体咪头,内部存在一个由振膜,垫片和极板组成的电容器,因为膜片上充有电荷,并且是一个塑料膜,因此当膜片受到声压强的作用,膜片要产生振动,从而改变了膜片与极板之间的距离,从而改变了电容器两个极板之间的距离,产生了一个微小的Δd的变化,因此由公式C=ε∙S/L可知,必然要产生一个ΔC的变化,由公式C=Q/V又知,由于ΔC的变化,充电电荷又是固定不变的,因此必然产生一个ΔV的变化。

这个电压的变化量是由声压引起的,因此整个咪头就完成了一个声电的转换过程,其电压的输出范围是20-25mV[8]。

咪头的实物图如图3-4所示。

使用的时候要注意接口的正负极。

图3-4咪头实物图

3.2.2语音录入电路设计

图3-5语音录入电路

语音的录入电路主要是由麦克MK1及相关外围电路等构成。

但由于语音芯片ISD4004内部集成有话筒前置放大,且该芯片采用的是模拟量直接存储技术,电压的输入范围是0-32mV,所以无需放大咪头的输出信号,经耦合后,可直接接于语音芯片的信号输入端。

声音信号由MK1转换成电信号,经电容耦合,由ANAIN+引脚进入ISD4004,由ISD4004采样和保存。

语音录入电路图如图3-5所示。

3.3语音处理电路设计

3.3.1ISD4004简介

(1)ISD4004特征

表3-2ISD4002/4003/4004芯片参数表

型号

存储

时间

(秒)

可分

段数

信息分

辨率

(毫秒)

采样

频率(HZ)

滤波器

带宽

(HZ)

控制码+

地址位

ISD4002-120

120

600

200

8.0K

3.4K

5+11

ISD4002-180

180

600

300

5.3K

2.3K

5+11

ISD4002-240

240

600

400

4.0K

1.7K

5+11

ISD4003-04

240

1200

200

8.0K

3.4K

5+11

ISD4003-06

360

1200

300

5.3K

2.3K

5+11

ISD4003-08

480

1200

400

4.0K

1.7K

5+11

ISD4004-08

480

2400

200

8.0K

3.4K

8+16

ISD4004-16

960

2400

400

4.0K

1.7K

8+16

数据来源:

ISD4004数据手册

ISD4004系列工作电压3.3V,单片录放时间8至16分钟,内置有微控制器串行通信接口,适用于移动电话及其他便携式电子产品中。

芯片采用CMOS技术,内含振荡器、话筒前置放大、自动增益控制、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存贮陈列。

该芯片的设计是基于所有操作必须由微控制器控制,操作命令可以通过串行通信接口(SPI或Microwire)送入。

该芯片采用的是多电平模拟量存储技术,每个采样值是直接存储在片内闪烁存储器中,所以使用时能够非常真实、自然地再现语音信号,避免了一些没必要的噪声干扰。

芯片在制作时,采用的是高质量、自然的语音还原技术,有自动静噪功能,使用的是多段信息处理存储。

它的采样频率可为4.0、5.3、6.4、8.0kHz,频率越低,音质就会有所下降。

片内信息存储于闪烁存储器之中,可以在断电的情况下保存信息100年,反复录放10万次[9]。

芯片参数如表3-2所示。

(2)ISD4004引脚

电源(VCCA,VCCD):

是该芯片的电源线,为了使噪声最小,芯片的模拟和数字电路使用不同的电源总线,并且分别引到外封装的不同管脚上,模拟和数字电源端最好分别走线,尽可能在靠近供电端处相连,而去耦电容也应该尽量靠近器件。

地线(VSSA,VSSD):

芯片内部的模拟电路和数字电路也应该使用不同的地线。

同相模拟输入(ANAIN+):

是录音信号的同相输入端,输入端的放大可用单端或差分驱动。

单端输入时,信号由耦合电容输入,最大幅度的峰峰值是32mV,耦合电容和本端的3KΩ电阻输入阻抗决定了芯片频带的低端截止频率。

差分驱动时,信号最大幅度的峰峰值16mV,与ISD3000系列的芯片相同。

反相模拟输入(ANAIN-):

在差分驱动的情况下,这是录音信号的反相输入端。

信号通过耦合电容输入,最大幅度的峰峰值16mV。

音频输出(AUDOUT):

该引脚提供音频输出,可以驱动5KΩ的负载。

片选(SS):

该引脚低电平有效,即向该ISD4004芯片发送指令,两条指令之间为高电平。

串行输入(MOSI):

此引脚为串行输入端,主控制器要在串行时钟上升沿之前半个周期时,将数据放到本端,供ISD输入。

串行输出(MISO):

此引脚为ISD的串行输出端。

ISD片选端无效时,本端呈高阻态。

串行时钟(SCLK):

此引脚为ISD的时钟输入端,由主控制器来产生,功能是用于同步MOSI和MISO的数据传输。

数据在SCLK的上升沿锁存到ISD,在其下降沿移出ISD。

中断(/INT):

此引脚为漏极开路输出。

ISD在任何操作(包括快进)中检测到EOM或OVF标志符时,该端变为低电平并保持。

中断状态在下一个SPI周期开始时清除,中断状态也可用RINT指令读取。

OVF标志——指示ISD的录、放操作已到达存储器的未尾。

EOM标志——只在放音中使用,检测到内部的EOM标志时,此状态位才置1。

行地址时钟(RAC):

漏极开路输出端,每个RAC周期表示ISD存储器的操作进行了一行(ISD4004系列中的存储器共2400行)。

该信号175ms保持高电平,低电平为25ms。

快进模式下,RAC的218.75μs是高电平,31.25μs为低电平。

该端可用于存储管理技术。

外部时钟(XCLK):

本端内部有下拉元件,芯片内部的采样时钟在出厂前已调校,误差在1%内。

商业级芯片在整个温度和电压范围内,频率变化在+2.25%内。

工业级芯片在整个温度和电压范围内,频率的变化范围较小,所以使用时要用到稳压电源。

若要求更高精度,可从本端输入外部时钟。

由于内部的防混淆及平滑滤波器已设定,故上述推荐的时钟频率不应改变。

输入时钟的占空比无关紧要,因内部首先进行了分频。

在不外接地时钟时,此端必须接地。

自动静噪(AMCAP):

当录音信号电平下降到内部设定的某一阈值以下时,自动静噪功能使信号衰弱,这样有助于养活无信号(静音)时的噪声。

通常本端对地接1uF的电容,构成内部信号电平峰值检测电路的一部分。

检出的峰值电平与内部设定的阈值作比较,决定自动静噪功能的翻转点。

大信号时,自动静噪电路不衰减,静音时衰减6dB。

1uF的电容也影响自动静噪电路对信号幅度的响应速度。

当该引脚接VCCA时,则会禁止自动静噪[10]。

ISD4004的引脚图如图3-6所示。

图3-6ISD4004引脚图

(3)ISD4004的SPI(串行外设接口)

ISD4004是工作于SPI串行接口中的,SPI协议是一个同步串行数据传输协议,该协议是假定微控制器的SPI移位寄存器是在串行时钟(SCLK)的下降沿工作的,所以对ISD4004而言,在时钟的上升沿锁存MOSI引脚的数据,在时钟的下降沿将数据送至MISO引脚[11]。

协议的具体内容为:

所有串行数据传输开始于SS下降沿;

SS在传输期间必须保持为低电平,在两条指令之间则保持为高电平;

数据在时钟上升沿移入,在时钟下降沿移出;

SS变低,输入指令和地址后,ISD才能开始录放操作;

指令格式是(8位控制码)加(16位地址码);

ISD的任何操作(含快进)如果遇到EOM或OVF,则产生一个中断,该中断状态在下一个SPI周期开始时被清除;

使用“读”指令使中断状态位移出ISD的MISO引脚时,控制及地址数据也应该同步从MOSI端移入,因此要注意移入的数据是否能与器件当前进行的操作兼容。

当然,也允许在一个SPI周期里,同时执行读状态和开始新的操作(即新移入的数据与器件当前的

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2