基于声波定位系统的研究毕业设计论文(C语言编程) .doc

上传人:哈尼dd 文档编号:3923475 上传时间:2019-10-10 格式:DOC 页数:29 大小:6.32MB
返回 下载 相关 举报
基于声波定位系统的研究毕业设计论文(C语言编程) .doc_第1页
第1页 / 共29页
基于声波定位系统的研究毕业设计论文(C语言编程) .doc_第2页
第2页 / 共29页
基于声波定位系统的研究毕业设计论文(C语言编程) .doc_第3页
第3页 / 共29页
基于声波定位系统的研究毕业设计论文(C语言编程) .doc_第4页
第4页 / 共29页
基于声波定位系统的研究毕业设计论文(C语言编程) .doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《基于声波定位系统的研究毕业设计论文(C语言编程) .doc》由会员分享,可在线阅读,更多相关《基于声波定位系统的研究毕业设计论文(C语言编程) .doc(29页珍藏版)》请在三一文库上搜索。

1、基于声波定位系统的研究学生姓名:所在系别:所学专业:电子信息工程导师姓名:完成时间:摘要:本论文详细阐述了基于单片机的声音定位系统的设计过程,并给出了主要电路图。该系统是以STC89C52为主控芯片,主芯片同时对处于不同位置的声音接收模块的音频信号进行处理和时间差测量,通过得到的时间差,我们分别利用了Taylor级数展开法、最小二乘法和相关估计时延法等数学算法和模型,对移动声源的坐标进行了定位计算。并通过相应的硬件设施,显示出移动声源的坐标。关键词: 单片机;声音定位算法;Taylor级数Abstract: This paper elaborates the sound localizatio

2、n system based on single chip design process, and gives the main circuit. The system is based on STC89C52 as the main chip, chips at the same time in different locations of the sound receiver module of the audio signal processing and time lag measurements, by getting the time difference, we were usi

3、ng a simple geometric algorithm, Taylor series expansion method, least squares estimation delay law and related mathematical algorithms and models of mobile sound sources positioning coordinates were calculated. And through the appropriate hardware to show the coordinates of the mobile sound source.

4、Keywords: microcontroller; sound localization; wireless transceiver目录摘要1目录21、绪论31.1引言31.2传声器阵列声源定位技术的应用现状和发展趋势32、系统硬件电路的设计与实现42.1音频信号接收及放大电路42.2滤波器电路的设计与实现52.3显示电路的设计与实现62.4声光报警电路的设计与实现73、移动声源的坐标计算83.1最小二乘法和Taylor级数展开法的计算83.1.1Taylor算法的提出83.1.2Taylor级数展开法93.1.3两步最小乘法93.2相关估计时延方法的计算103.2.1基于声音接收器阵列的移

5、动声源定位103.2.2广义互相关时延估计法124系统的软件设计14结束语15致谢15参考文献16附录:程序清单171、绪论1.1引言基于声音接收器阵列的声源定位技术是通过声音接收器阵列接收到语音信号并对其进行处理,从而确定及跟踪声源位置,是语音信号处理领域的一个新的研究热点,具有广泛的应用前景和实际意义。传统的高性能、高方向性的单个声音接收器的拾音范围很有限,若声源在声音接收器的选择之外,则会引入大量噪声,导致拾取的信号质量下降;并且单个声音接收器接收的信号,是有多个声源和环境噪声叠加的,无法实现各个声源的分离。在实际应用中,由于声源在室内小范围内活动,以及室内各种其它声音的多径发射和混响等

6、因素,也会导致单个声音接收器接收的信号的信噪比降低,拾取信号质量下降。为解决单个声音接收器的这些局限性,人们提出了用声音接收器阵列进行语音信号处理的方法。声音接收器阵列系统就是由一组按一定的几何位置摆放的声音接收器组成的系统,对接收到的来自空间不同方向的语音信号进行处理,声音接收器阵列具有去噪声、声源定位和跟踪等功能,从而大大提高语音信号处理质量以及声源定位的准确度。1.2传声器阵列声源定位技术的应用现状和发展趋势传声器阵列技术所具有的特点使其可以弥补其他类传感器的不足,从20世纪80年代以来,发展迅速。在直升机探测方面,具有代表性的系统是瑞典Swetron公司的Helisearch直升机声测

7、系统及英国Ferranti公司的Picker直升机报警器。这些系统均采用被动式声阵列探测技术,即根据接收到的时间延迟来确定声源方向。不仅具有简单、便携的特点,而且还具有很搞的探测性能,探测距离可到15-20km方位精度为1度,另外还有很强的多目标探测与识别能力;在声测预警方面,以以色列研制的AEWS声测预警系统为代表,据报道,此系统为一个声学传感器网络,可以探测微型飞机、直升机和慢速飞行的固定翼飞机。信号由一集装箱式控制中心处理,然后定位数据被传送到地面作战指挥所或防空指挥中心;在语音信号处理领域,1985年,Flanagan将传声器阵列引入到大型会议的语音增强中,并开发出许多实际产品。198

8、7年Silverman将传声器阵列引入到语音识别系统,1992年又将阵列信号处理用于移动环境下的语音获取,后将其应用于说话人识别。1995年Flanagan在混响环境下用阵列信号处理对声音进行捕获。1996年Silverman和Brandstein开始将其用于确定和实时跟踪说话人的位置。进入20世纪90年代后,基于传声器阵列的语音信号处理又出现了很多其他的应用,主要包括说话人的识别、强噪声环境下的语音获取、大型场所的会议记录、车载环境中的语音获取和助听装置等。传声器阵列声源定位技术由于涉及到阵列信号处理技术、数字信号处理、模式识别和数据融合等多方面的理论知识,因而成为语音信号处理中难度大且具有

9、挑战性的研究课题,并呈现以下几个方面的发展趋势:(1)探测性能的提高包括探测距离的增加和探测精度的提高。由于微弱信号的检测、空间域滤波、阵列信号处理等关键技术的发展,将促使探测性能得到提高。(2)信息融合当今信息融合技术的发展,一方面可以采用多个阵列来代替单一阵列,进行多阵之间的信息融合,能有效地对一定空间域中的声源进行定位跟踪,另一方面,可以通过采用各种定位技术,进行方式上的融合,以提高定位的精度。(3)与其他传感器协同工作 结合传声器阵列和其他类型传感器的优势,组成联合探测系统,以便获得更准确的信息。2、系统硬件电路的设计与实现本设计主要有声音接收器、信号接收及放大电路、高通滤波器、采样电

10、路、显示及报警电路组成。系统的框图如下图所示:图1 移动声源的系统框图2.1音频信号接收及放大电路如图2所示,该电路采用麦克风接收经过三极管三级放大,通过与非门电路输出一个跳变的电压共单片机处理,然后通过无线发射电路把A、B、C三点的时间差,送到无限接收电路,有单片机进行处理,产生误差信号,从而到达控制的目的。该电路较简单,易于实现且满足设计要求。本电路是由助听器改进而来的,经过多次实验调试均有经稳定的输出。电路简单,满足设计所需的要求。 图2 音频信号接收及放大电路该电路实质上是一个由晶体三极管VT1VT3构成的多级音频放大器。V1与外围阻容元件组成了典型的阻容耦合放大电路,担任前置音频电压

11、放大;V2、V3组成了两级直接耦合式功率放大电路,其中:V3接成发射极输出形式,它的输出阻抗较低。驻极体话筒M1接收到声波信号后,输出相应的微弱电信号。该信号经电容器C1耦合到V1的基极进行放大,放大后的信号由其集电极输出,再经C2耦合到V2进行第二级放大,最后信号由V3发射极输出。电路中,C4为旁路电容器,其主要作用是旁路掉输出信号中形成噪音的各种谐波成份。C3为滤波电容器,为整机音频电流提供良好通路。2.2滤波器电路的设计与实现国际通信标准制定人的声音频率为300Hz-3400Hz。因此,设计了下面的滤波器电路。图3 音频信号滤波器电路上图5是由U1A构成的二阶高通滤波器和U1B构成的构成

12、的二阶低通滤波器,组成的音频带通有源滤波器。由有源低通和高通滤波器的特性可知: (1) (2) (3) (4)在上面公式中,fH是低通滤波器的上限截止频率,fL是高通滤波器的下线截止频率,Bw是本次设计滤波器的带宽,fo是滤波器的中心频率。从上面公式(1)、(2)、(3)、(4)可知,只要设置合适的电阻、电容值,就可以设计出需要的滤波器。TI公司生产的NE5532是高性能低噪声的双运放,它具有较好的噪声性能,优良的输出驱动能力及相当高的小信号与电源带宽可以较好的完成对音频信号的分析与处理。2.3显示电路的设计与实现如图6所示,是系统的显示电路。显示电路是用LCD1602作为显示器的。1602可

13、以显示2行、每行显示16个ASCII字符,并且可以自定义图形,只需要写入相对应字符的ASCII码就可以显示,使用上相对数码管更能显示丰富的信息。下边是1602的引脚说明和功能说明:第1脚:VSS为电源地第2脚:VDD接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,1

14、6脚背光负极。D0D7端为8位数据口,进行数据传送,而RS、R/W、E端则配合可以做出不同的操作,对1602进行操作主要有四种,如下:1、读状态,输入:RSL,RWH,EH。输出:D0D7状态字2、写指令,输入:RSL,RWL,D0D7指令,E高脉冲。输出:无3、读数据,输入:RSH,RWH,EH。输出:D0D7数据4、写数据,输入:RSH,RWL,D0D7数据,E高脉冲。输出:图4 系统的显示电路2.4声光报警电路的设计与实现如图7所示,是系统的报警电路。当有声音出现在声音接收器的接收范围内时,单片机会给报警电路一个定时脉冲。当报警电路接收到定时脉冲时,就会点亮发光二极管并报警。图5 系统的

15、报警电路3、移动声源的坐标计算图6 移动声源模拟示意图3.1最小二乘法和Taylor级数展开法的计算3.1.1Taylor算法的提出在移动声源定位系统中,对移动声源进行定位时,一旦得到一个时间差值,就可以得到移动声源到两个声音接收器(基站)之间的距离差。多个时间差测量值就可以构成一组关于移动声源的位置的双曲线方程,求解该方程就可以得到移动声源的估计位置。在实际环境中,测量值由于受到各方面因素的影响而使定位位置位于一个小区域内。设移动声源的待估计位置为(x,y),第i个基站位置为(,),则移动声源与第i个基站之间的距离为:, (1)令表示移动声源与基站和基准基站之间的距离差,建立定位方程:,(2

16、)其中: 为移动声源传播的速度,为移动声源初始位置与第个基站之间的距离。为时间差测量值,即移动声源发射信号到达第个基站和到达基准基站的时间差。3.1.2Taylor级数展开法对于一组到达时间差测量值,该算法首先将式(2)在选定的移动声源初始位置进行Taylor级数展开,并忽略掉二阶以上分量,式(2)转化为: (3)其中: , 式(3)的加权最小二乘解为: (4)其中为到达时间差测量值的协方差矩阵,初始迭代时,令,在下一次迭代中,令, (5)重复以上过程,直至,足够小并满足一个预先设定的门限值,使得 (6) 此时,经过次迭代得到的位置即为移动声源的估计位置。3.1.3两步最小乘法将式(1)线性化

17、得: (7) 式中,则 (8)其中 , (9)根据两步最小乘法在Matlab中的仿真结果,在大多数情况下,用到达时间差测量误差的协方差矩阵来近似代替误差的协方差矩阵进行定位的结果基本相同,所以根据(6)式得到的结果是可信的,因此移动声源的估计位置可以表示为: (10) 3.2相关估计时延方法的计算3.2.1基于声音接收器阵列的移动声源定位移动声源定位中应用最广泛的是时延估计法,其基本原理是通过空间布设的声音接收器,接收移动声源发出的声音信号,再根据一定的算法估计出目标的空间位置。二维空间声音定位最简单的模型是由三个驻极体麦克风组成的接收器线阵,如下图7所示。A、O、B为三个声音接收器,间距为d

18、,S为移动声源,根据三角余弦定理可得关系式: (1) (2)图7 基于声音接收器阵列的声源定位的基本模型 假定环境中的声速已知(),且接收器A和O的接收到声源的时延差为,接收器O和B接受到声源信号的时延差为,则SA、SB、SO之间的关系为: (3) (4) 由式(1)(2)(3)(4),解得 (5)声源方向角b也可以通过上面的方程式解得,但实际试验中发现方向角b完全可以由简单的近似方法来得到,不影响系统的实际应用性能。图中虚线OD和BC是以S为圆心的,d应当小于被测声的波长,一般声音的波长都在1m以上,故取d1m,dSO, (6) 从以上的分析可以看出,采用声音接收器阵列估计声源的位置,关键在

19、于估计声源到达麦克风阵列单元的时延差。3.2.2广义互相关时延估计法 给定一个移动声源,对于空间分离的两个声音接收器,它们接收到的信号模型可以表示为: (7) (8) 式中为接收到的由目标声源发出的信号,表示的时延信号,其中时间延迟为,和为衰减因子,而和是加性噪声。 和之间的互相关函数可表示为: (9)式中第二项和第三项是声源声音和噪声的相关度,实际的实验证明这两项的影响可以忽略不计,第四项是噪声的自相关函数,这一项的影响因素较大,但庆幸的是这部分的能量集中在低频部分,通过前期的高通滤波可以大大削弱这一项的影响,因此在工程允许的情况下得到: (10) 由于自相关函数具有性质,所以互相关函数在处

20、取得最大值。在实际的应用中,由于噪声的影响,相关函数的最大峰值并不是很明显,有时还会出现多个峰值,不利于实际峰值的检测。所以为了获得较好的时延估计,对互相关函数进行平滑,一般是在频域对相关谱进行加窗平滑,如式(7)所示。(式中表示卷积) (11)是平滑窗函数,如式(12)所示: (12) 其中平滑后的互相关函数为: (13) 加窗平滑后的互相关函数最大限度的抑制了噪声的影响,使得在有较理想的峰值。基于时延估计的定位算法具有较高的定向精度,并有较强的抗干扰性,同时也易于实现,是声源定位系统广泛采用的方法,而时延估计的精度是关系到声源定位精确与否的关键因素,不同的时延估计方法复杂度和精度都不相同,

21、为了提高定位系统的精度,必须采用合理的时延估计方法。4系统的软件设计如下图10所示,为系统的程序设计流程图。 开始初始化发送数据到显示电路将数据送入单片机读入数据单片机进行信号处理RAM中是否有数据等待传输?图8 程序流程图 当声音接收器接收到声音信号时,经过放大电路的放大,把声音信号发到滤波电路,经过滤过电路的滤波,后经采样,把相应的信号发给单片机,单片机经过相应的数据处理,把最后的结果发到显示电路显示。结束语本文主要研究了基于声音接收器阵列的声源定位技术,总结现有的主要声源定位方法,将基于时延的声源定位方法作为论文理论研究的重点。设计了一种基于实时信号采集的多通道语音采集系统,搭建了语音信

22、号处理系统的硬件平台,为语音信号处理算法的分析研究提供了良好的硬件环境。由于作者水平有限,本论文只研究了基于单目标的常用的声源定位方法,而声源定位技术是一个涉及多方面数据处理知识的领域,有很多难点还没有既有效,计算量又不高的解决方法,还待更深入的研究,主要体现在以下两个方面:(1) 如何进一步减小噪声和混响对定位精度的影响,这需要对信号模型以及信号处理方法这两个方面进行比较深入的研究。(2) 本文所实现的声源定位算法主要适应于单个声源,对于多个声源的定位没有进行研究,这是一个难点,也是当今研究的一个热点。致谢本文是在指导老师张伟老师的悉心指导下完成的。承蒙张老师的亲切关怀和精心指导,虽然有繁忙

23、的工作,但仍抽出时间给予我指导和帮助,使我从中获益匪浅。张老师对学生认真负责的态度、严谨的科学研究方法、敏锐的学术洞察力、勤勉的工作作风以及勇于创新、勇于开拓的精神是我永远的学习榜样。在此,谨向张老师致以深深的敬意和由衷的感谢。参考文献1康华光. .电子技术基础. 武汉: 高等教育出版社,1998年,第4版2宋鑫,时延、相移波束形成技术研究,信息技术,2005,93赵力,语音信号处理,北京:机械工业出版社,20034张雄伟,陈亮,现代语音处理技术及应用,北京:机械工业出版社,20035严肃清,黄冰,基于传声器阵列的声源定位研究,扬声器与传声器,2004,126邱天爽,时延估计的基本原理和方法,

24、海洋技术,1992,11(3):17-257崔玮玮,曹志刚,魏建强,声源定位中的时延估计技术,数据采集与处理,2007,22(1):91-988林志斌,徐柏龄,基于传声器阵列的声源定位,扬声器与传声器,2004,5,18-229吴佳栋,陈光志,语音信号去混响原理与技术,语音技术,2006,63(5):63-6710行鸿彦,赵守国,广义相关时延估计算法的自适应实现形式,西安石油学院学报2001,16(6):47-5011黄小燕,罗建,自适应时延算法在被动声源定位系统中的应用,探测与控制学报2007,29(2):73-7612邱天爽,王宏禹,几种基本时间延迟估计方法及其相互关系,大连理工大学学报,

25、1996,36(4):493-49713孙韶杰,孙绍俊,一种改进的声测定位时延估计算法,计算机应用,2006,26(11):296-29814张莉,基于传声器阵列的声源定位方法研究:硕士学位论文,成都,电子科技大学,200715鲁佳,基于传声器阵列的声源定位研究:硕士学位论文,天津,天津大学,200816 张玲华,郑宝玉. 随机信号处理. 北京:清华大学出版社,200317 张贤达. 现代信号处理(第二版). 北京:清华大学出版社,200218程佩青. 数字信号处理教程(第二版). 北京:清华大学出版社,200119李海城,基于传声器阵列的自动声源定位方法,辽宁师范大学学报,2006,29(6

26、):168-17120唐建生,孙超等,空气中任意阵列声被动定向模型的误差分析,西北工业大学学报,2004,22(4):496-49921肖光华, 麦克风阵列的语音定位和跟踪方法研究:硕士学位论文,上海,上海大学,2008附录:程序清单#include _LCD1602_H_#define _LCD1602_H_/输入方式设置#define LCD_AC_AUTO_INCREMENT 0x06 /数据读、写操作后,AC自动增一#define LCD_AC_AUTO_DECREASE 0x04 /数据读、写操作后,AC自动减一#define LCD_MOVE_ENABLE 0x05 /数据读、写操

27、作,画面平移#define LCD_MOVE_DISENABLE 0x04 /数据读、写操作,画面不动#define LCD_GO_HOME 0x02 /AC=0,光标、画面回HOME位/设置显示、光标及闪烁开、关#define LCD_DISPLAY_ON 0x0C /显示开#define LCD_DISPLAY_OFF 0x08 /显示关#define LCD_CURSOR_ON 0x0A /光标显示#define LCD_CURSOR_OFF 0x08 /光标不显示#define LCD_CURSOR_BLINK_ON 0x09 /光标闪烁#define LCD_CURSOR_BLINK

28、_OFF 0x08 /光标不闪烁/光标、画面移动,不影响DDRAM#define LCD_LEFT_MOVE 0x18 /LCD显示左移一位#define LCD_RIGHT_MOVE 0x1C /LCD显示右移一位#define LCD_CURSOR_LEFT_MOVE 0x10 /光标左移一位#define LCD_CURSOR_RIGHT_MOVE 0x14 /光标右移一位/工作方式设置#define LCD_DISPLAY_DOUBLE_LINE 0x38 /两行显示#define LCD_DISPLAY_SINGLE_LINE 0x30 /单行显示#define LCD_CLEAR_

29、SCREEN 0X01 /清屏/*LCD1602地址相关*/#define LINE1_HEAD 0x80 / 第一行DDRAM起始地址 #define LINE2_HEAD 0xc0 / 第二行DDRAM起始地址#define LINE1 0 /第一行#define LINE2 1 /第二行#define LINE_LENGTH 16 /每行的最大字符长度/*LCD1602接线引脚定义*/#define LCDIO P2 /定义P2口与LCD1602的数据口相接 sbit LCD_RS=P14; sbit LCD_RW=P13; Sbit LCD_EN=P12; Sbit LCD_BUSY=

30、LCDIO7; /*另外相关的定*/ #define HIGH 1 #define LOW 0 #define TURE 1 #define FALSE 0 #define uchar unsigned char #define uint unsigned int /*以下是函数的申明部*/ void LCD_init(void); /LCD1602初始化 void LCD_send_command(uchar command); / Void LCD_send_data(uchar dat); void LCD_write_char (uchar x,uchar y, uchar dat);

31、 void LCD_disp_string(uchar x,uchar y,char *Data); void delay_ms(uint n); void LCD_check_busy(void); #endif /* /#include #include LCD1602.h/*主函数*/uchar string= I LOVE YOU! ; /这里是要显示的字符void main(void) uchar *cp; cp=string; LCD_init(); while(1) LCD_send_command(LCD_CLEAR_SCREEN); delay_ms(2); LCD_disp

32、_string(0,1, cp); delay_ms(100); cp ; if(*cp=0) cp=string; /到达字符的尾部时,改变指针,重新指向字符串的头部 /*/*LCD1602的初始化*/void LCD_init(void) LCD_send_command(LCD_DISPLAY_DOUBLE_LINE); LCD_send_command(LCD_AC_AUTO_INCREMENT|LCD_MOVE_DISENABLE); LCD_send_command(LCD_DISPLAY_ON|LCD_CURSOR_OFF); LCD_send_command(LCD_CLEAR

33、_SCREEN);/*/ void LCD_check_busy(void) /检测LCD状态,看它是不是还在忙呢 do LCD_EN=0; LCD_RS=0; LCD_RW=1; LCDIO=0xff; LCD_EN=1; while(LCD_BUSY=1); LCD_EN=0;/*LCD1602写命令*/void LCD_send_command(uchar command) LCD_check_busy(); LCD_RS=LOW; LCD_RW=LOW; LCD_EN=HIGH; LCDIO=command; LCD_EN=LOW;/*/*LCD1602写数据*/void LCD_se

34、nd_data(uchar dat) LCD_check_busy(); LCD_RS=HIGH; LCD_RW=LOW; LCD_EN=HIGH; LCDIO=dat; LCD_EN=LOW;/* void LCD_write_char(uchar x,uchar y,uchar dat) unsigned char address; if (y = LINE1) address = LINE1_HEAD x; else address = LINE2_HEAD x; LCD_send_command(address); LCD_send_data(dat);*LCD1602显示字符串*/v

35、oid LCD_disp_string(uchar x,uchar y,uchar *Data) if(y=LINE1) if(xLINE_LENGTH) LCD_send_command(LINE1_HEAD x); for(;xLINE_LENGTH&*Data!=0;x ) LCD_send_data(*(Data ); if(*Data!=0) x=0; y=LINE2; if(y=LINE2) LCD_send_command(LINE2_HEAD x); for(;x0;i-) for(j=0;j1140;j ) ;/*/ #define LCM_RW P2_0 /定义引脚#def

36、ine LCM_RS P2_1#define LCM_E P2_2#define LCM_Data P1#define Busy 0x80 /用于检测LCM状态字中的Busy标识include void WriteDataLCM(unsigned char WDLCM);Void WriteCommandLCM(unsigned char WCLCM,BuysC);unsigned char ReadDataLCM(void);unsigned char ReadStatusLCM(void);void LCMInit(void);void DisplayOneChar(unsigned ch

37、ar X, unsigned char Y, unsigned char DData);void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);void Delay5Ms(void);void Delay400Ms(void);unsigned char code cdle_net = ;unsigned char code email = ;void main(void)Delay400Ms(); /启动等待,等LCM讲入工作状态LCMInit(); /LCM初始化Delay5Ms(); /延时片刻(可不要)DisplayListChar(0, 0, cdle_net);DisplayListChar(0, 1, email);ReadDataLCM();/测试用句无意义while(1);/写数据void WriteDataLCM(unsigned char WDLCM)ReadStatusLCM(); /检测忙LCM_Data = WDLCM;LCM_RS = 1;LCM_RW = 0;LCM_E = 0; /若晶振速度太高可以在这后加小的延时LC

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1