酒精测试系统设计.doc

上传人:PIYPING 文档编号:11488691 上传时间:2021-08-08 格式:DOC 页数:23 大小:718.50KB
返回 下载 相关 举报
酒精测试系统设计.doc_第1页
第1页 / 共23页
酒精测试系统设计.doc_第2页
第2页 / 共23页
酒精测试系统设计.doc_第3页
第3页 / 共23页
酒精测试系统设计.doc_第4页
第4页 / 共23页
酒精测试系统设计.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《酒精测试系统设计.doc》由会员分享,可在线阅读,更多相关《酒精测试系统设计.doc(23页珍藏版)》请在三一文库上搜索。

1、基于单片机的酒精测试系统的设计菏泽学院Heze University本科生毕业设计(论文)题目基于单片机的酒精测试系统的设计姓名 学号 系 别 专业 指导教师 职称 年 月 日菏泽学院教务处制目 录摘 要1关键词1Key words11 序言22 硬件介绍22.1 总体电路设计22.2单片机最小系统32.2.1单片机的选择32.2.2时钟电路42.2.3 复位电路52.3 传感器电路设计52.4 A/D转换电路设计72.5 LED显示电路设计102.6 报警电路设计113 软件介绍123.1 整体流程设计123.2 AD转换电路程序设计123.3 LED显示电路程序设计133.4 报警电路程序

2、设计144 系统调试144.1硬件调试144.2软件调试144.3常见的硬件故障154.4 误差分析155 总结15致谢15参考文献16 基于单片机的酒精测试系统的设计基于单片机的酒精测试系统的设计摘要:目前全世界绝大多数国家都采用呼气酒精测试仪对驾驶人员进行现场检测,以确定被测量者体内酒精含量的多少,以确保驾驶员的生命财产安全。此酒精测试系统是一种以气敏传感器和单片机为主,监测空气酒精浓度,并具有报警功能的空气酒精浓度监系统。其可监测出空气环境中酒精浓度值,并根据不同的环境设定不同的值,对超过一定值进行声光报警来提示危害。此外,此酒精测试系统还能监测某一特定环境的酒精浓度如酒精生产车间可避免

3、发生起火、爆炸及工业场地酒精中毒等恶性事故,确保环境安全。关键词:单片机 酒精传感器 A/D转换 数码管显示The Design of Alcohol Tester SystemStudent majoring in Science and Technology of Electronic Information Bai YunfuTutor Zhao GuanghuiAbstract:Now the most countries in the world use the alcohol tester to test that how much alcohol the candidate ta

4、ke in to make sure the drivers security and their property safety. This alcohol test system is based on alcohol sensor and Single-chip microcomputer to monitor the alcohol concentration in the air and have the alarm function. It can test the alcohol concentration in the air and set different values

5、according to the different environment. In addition, this system can also test the alcohol concentration of the special environment to avoid the malignant accidents such as fire explosion and industrial site alcohol poisoning to make sure the environment safety.Key words: Single-chip microcomputer A

6、lcohol sensor A/D conversion Digital pipe display1 序言随着经济高速发展,越来越多的人有了自己的私家车,而酒后驾车造成的交通事故也频繁发生。为此,需要设计酒精测试系统能够检测驾驶员体内酒精含量。本论文研究的是一种以气敏传感器和单片机为主,监测空气酒精浓度,并具有声光报警功能的空气酒精浓度测试系统。其可监测出空气环境中酒精浓度值,并可根据不同的环境设定不同的值,对超过的情况进行声光报警来提示危害。本课题分为两部分:硬件设计部分和软件设计部分。硬件部分为利用MQ3气敏传感器测量空气中酒精浓度,并转换为电压信号经A/D转换后传给单片机系统,由单片机及

7、其外围电路进行信号的处理,显示浓度值以及报警。软件部分用C语言进行编程,程序采用模块化设计思想。各个子程序的功能相对独立,便于调试和修改。而硬件电路又大体可分为单片机小系统电路、信号采集电路、A/D转换电路、LED显示电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍,程序的设计使用C语言编程。2 硬件介绍2.1总体电路设计图2-1系统功能框图硬件设计时,考虑酒精浓度是由传感把非电量转换为电量,传感器输出的是0-5伏的电压值并且电压值稳定,外部干扰小等。因此,可以直接把传感器输出电压值经过ADC0804采集数据送入单片机进行处理。酒精浓度监测仪的硬件电路设计主要包括:传感器测量电路、8

8、9C51单片机系统、A/D转换电路、声光报警电路、LED显示电路。2.2单片机最小系统图2-2单片机最小系统2.2.1单片机的选择图2-2-1 AT89C52选择AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时

9、内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。AT89C52采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)

10、为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。2.2.2时钟电路图2-2-2 晶振电路该电路有一个12mhz的晶振和

11、两个30pf的电容组成,该时钟电路为单片机工作提供时钟。51单片机的时钟不仅可以由内部时钟提供也可以由外部时钟提供。当外接晶振的两个引脚分别接XTAL1和XTAL2。51单片机的工作频率为外接时钟电路的的十二分之一。2.2.3 复位电路图2-2-3复位电路 51复位就是在满足51最小系统其他工作条件下,让RST管脚保持高电平(通常0.7Vcc以上电压)维持至少两个机器时钟,以引导单片机复位,之后RST管脚恢复为低电平。2.3传感器电路设计由于本系统直接测量的是呼气中的酒精浓度,再转换为血液中的酒精含量浓度,故采用气敏传感器。考虑到周围空气中的气体成分可能影响传感器测量的准确性,所以传感器只能对

12、酒精气体敏感,对其他气体不敏感,故选用MQ3型气敏传感器。其有很高的灵敏度、良好的选择性、长期的使用寿命和可靠的稳定性。MQ3型气敏传感器由微型Al2O3,陶瓷管和SnO2敏感层、测量电极和加热器构成的敏感元件固定在塑料或不锈钢的腔体内,加热器为气敏元件的工作提供了必要的工作条件。图2-3-1传感器的温湿度特性图2-3-2灵敏度特性曲线图2-3-3结构与外形以及标准回路传感器的标准回路有两部分组成。其一为加热回路,其二为信号输出回路,它可以准确反映传感器表面电阻值的变化。传感器的表面电阻RS的变化,是通过与其串联的负载电阻RL上的有效电压信号VRL输出面获得的。二者之间的关系表述为:RSRL=

13、(VC-VRL)VRL,其中VC为回路电压为10V。负载电阻RL可调为05-200K。加热电压Uh为5v。上述这些参数使得传感器输出电压为0-5V。MQ3型气敏传感器的灵敏度特性、传感器的温湿度特性以及结构和外形、标准回路如下图所示。为了使测量的精度达到最高,误差最小,需要找到合适的温度,一般在测量前需将传感器预热5分钟。图2-3-4酒精传感器模块电路图2.4 A/D转换电路设计在单片机应用系统中,被测量对象的有关变化量,如温度、压力、流量、速度等非电物理量,须经传感器转换成连续变化的模拟电信号(电压或电流),这些模拟电信号必须转换成数字量后才能在单片机中用软件进行处理。实现模拟量转换成数字量

14、的器件称为A/D转换器(ADC)。 A/D转换器大致分有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/D转换器,精度价格适中;三是并行A/D转换器,速度快,价格也昂贵。该设计中选用的是ADC0804属第二类,是8位A/D转换器。ADC0804规格如下:(1) 高阻抗状态输出(2) 分辨率:8 位(0255)(3) 存取时间:135 ms(4) 转换时间:100 ms(5) 总误差:-1+1LSB(6) 工作温度:ADC0804C为0度70度;ADC0804L为-40 度85 度(7) 模拟输入电压范围:0V5V(8) 参考电压:2.5V(9) 工

15、作电压:5V(10) 输出为三态结构主要接脚如下:1. PIN1 (CS ):Chip Select,与RD、WR 接脚的输入电压高低一起判断读取或写入与否,当其为低位准(low) 时会active。2. PIN2 ( RD ):Read。当CS 、RD 皆为低位准(low) 时,ADC0804 会将转换后的数字讯号经由DB7 DB0 输出至其它处理单元。3. PIN3 (WR ):启动转换的控制讯号。当CS 、WR 皆为低位准(low) 时ADC0804 做清除的动作,系统重置。当WR 由01且CS 0 时,ADC0804会开始转换信号,此时INTR 设定为高位准(high)。4. PIN4

16、、PIN19 (CLK IN、CLKR):频率输入/输出。频率输入可连接处理单元的讯号频率范围为100 kHz 至800 kHz。而频率输出频率最大值无法大于640KHz,一般可选用外部或内部来提供频率。若在CLK R 及CLK IN 加上电阻及电容,则可产生ADC 工作所需的时序。5. PIN5 ( INTR ):中断请求。转换期间为高位准(high),等到转换完毕时INTR 会变为低位准(low)告知其它的处理单元已转换完成,可读取数字数据。6. PIN6、PIN7 (VIN(+)、VIN(-):差动模拟讯号的输入端。输入电压VINVIN(+)VIN(-),通常使用单端输入,而将VIN(-

17、)接地。7. PIN8 (A GND):模拟电压的接地端。8. PIN9 (VREF2)模拟参考电压输入端。VREF 为模拟输入电压VIN 的上限值。若PIN9空接,则VIN 的上限值即为VCC。9. PIN10 (D GND)数字电压的接地端。10. PIN11 PIN18 (DB7 DB0)转换后之数字数据输出端。11. PIN20 (Vcc)驱动电压输入端。图2-4-1 AD0804 基本电路ADC0804采用逐次比较的方法完成A/D转换的,由单一的+5V电源供电。片内有锁存功能的8路选1的模拟开关,由C、B、A引脚的功能来决定所选的通道。0809完成一次转换需100s左右,输出具有TT

18、L三态锁存缓冲器,可直接连接到MCS-51的数据总线上。通过适当的外接电路,0809可对0-5V的模拟信号进行转换。图2-4-2 AD工作时序图图2-4-3 AD0804原理图2.5 LED显示电路设计89C51的P0端口作为LED数码管显示控制。采用段选和位选来控制数码管。LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。动态显示的特点是将所有位数码管的段选线并联在一

19、起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。 LED显示器的工作原理LED显示器有静态显示和动态显示2种显示方式。静态显示电路中,各位可独立显示,只要在该位的段码线上保持段码电平,该位就能保持相应的显示字符。由于各位分别由1个8位的数据输出口控制段码线,故在同一时间里,每一位显示的字符可以不相同

20、。这种显示方式虽然接口编程容易,但付出的代价是占用口线较多。若用I/O口线接口,则要占用4个8位I/O口,若用锁存器接口,则要用4片74L373芯片。如果显示的位数增多,则需要增加锁存器。因此在显示位较多的情况下,一般都采用动态显示方式。该设计中采用的就是LED动态显示方式,原理如下。在多位LED显示时,为简化硬件电路,通常将所有位的段码线相应段并联在一起,由1个8位I/O口控制,形成段码线的多路复用,而各位的共阳极或共阴极分别由相应的I/O线控制,形成各位的分时选通。由于各位的段码线并联,8位I/O口输出的段码对各个显示位来说是相同的。因此,在同一时刻,如果各位选线都处于选通状态的话,4位L

21、ED将显示相同的字符。若要各位LED能够同时显示出与本位相应的显示字符,就必须采用动态显示方式,即在某一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段码线上输出相应位要显示的字符的段码。这样,在同一时刻4位LED中只有选通的那一位显示出字符,而其他3位则是熄灭的。同样,在下一时刻,只让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,在段码线上输出将要显示字符的段码,则同一时刻,只有选通位显示出相应的字符,而其他各位则是熄灭的。如此循环下去,就可以使各位显示出将要显示的字符。虽然这些字符是在不同时刻出现的,而在同一时刻,只有一位显示,其他各位熄灭,但由

22、于LED显示器的余辉和人眼的视觉暂留作用,只要每位显示间隔足够短,则可以造成多为同时亮的假象,达到同时显示的效果。图2-5 数码管原理图2.6 报警电路设计根据国家质量监督检验检疫局发布的车辆驾驶人员血液、呼气酒精含量阈值与检验(GB195222004)中规定,该规定指出,饮酒驾车是指车辆驾驶人员血液中的酒精含量大于或者等于20mg/100ml,小于80mg/100ml的驾驶行为。醉酒驾车是指车辆驾驶人员血液中的酒精含量大于或者等于80mg/100ml的驾驶行为。本系统通过酒精传感器模块采集信号,再经过AD转换送至单片机进行处理。如果得到的值达到饮酒驾车标准,则A灯亮,如果得到的值达到醉酒驾车

23、标准,则B灯亮。 图2-5 报警电路3 软件介绍3.1 整体流程设计主程序主要包括AD转换,数据采集与处理,酒精浓度显示,数据存储,功能子函数的调用。首先进行的是酒精浓度采集,当传感器检测到有酒精的时候,传感器A、B两脚之间的电阻减小,对应与气体传感器负载的电阻分压变大,将这一变化的数值送入模数转换模块中,之后通过软件编写对数据进行处理,再将这一变化值成功的通过数码管显示。图3-1 整体流程图3.2 AD转换电路程序设计wela=1; P0=0; /选通ADCS adwr=0; _nop_(); adwr=1; P0=0xff; /关闭ADCS delay(10); wela=0;/关闭有AD

24、片选信号锁存器的锁存端以防在操作数码管时使AD的片选发生变化 for(a=20;a0;a-) display(A1,A2,A3); wela=1; /重新打开有AD片选信号锁存器的锁存端 P1=0xff; /读取P1口之前先给其写全1 P0=0; /选通ADCS adrd=0; /AD读使能 adval=P; /AD数据读取赋给P1口 adrd=1; P0=0xff; /关闭ADCS3.3 LED显示电路程序设计adwr=0; P1=adval; /同时把AD的值送八个发光二极显示 h=(65-adval)*4; A1=h/100; /分出百,十,和个位 A2t=h%100; A2=A2t/1

25、0; A3=A2t%10;3.4 报警电路电路程序设计 if(h20) if(h=80) big=0; else sm=0;4 系统调试4.1 硬件调试第一步,通电观察。将电路通电观察有无异常现象,例如有无器件冒烟现象,有无异常气味,手摸集成电路外封装,是否发烫等。如果出现异常现象,应立即关断电源,待排除故障后再通电。第二步,静态调试。将信号输入端加固定的电平信号后进行的直流测试,可用万用表测出电路中各点的电位,通过和理论估算值比较,结合电路原理的分析,判断电路直流工作状态是否正常,及时发现电路中已损坏或处于临界工作状态的元器件。通过更换器件或调整电路参数,使电路直流工作状态符合设计要求。第三

26、步,动态调试。动态调试是在静态调试的基础上进行的,在电路的输入端加入合适的信号,按信号的流向,用示波器顺序检测各测试点的输出信号,若发现不正常现象,应分析其原因,并排除故障,再进行调试,直到满足要求。4.2 软件调试所谓软件调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证单片机正确运行的必不可少的步骤。编完单片机程序,必须送入单片机中测试。 我把软件调试过程分为两步。 第一步,使用Keil软件调试程序。将编辑好的C语言程序进行编译连接,消除基本的语法错误,再通过软件自带的调试工具进行必要的程序调试。第二步,联系程序的实际运行情况调试程序

27、。此步主要是消除程序中的逻辑错误,因为在编辑程序时在逻辑思维上可能会出现漏洞导致操作时出错。我们将编辑好的C语言程序编译连接并生成hex文件,并将hex文件下载到单片机中。通过实际操作寻找逻辑上的错误,不断的修改程序,最终达到了预先设定的操作步骤及显示格式等多方面的要求。4.3 常见的硬件故障 逻辑错误:它是由设计错误或加工过程中的工艺性错误所造成的。这类错误包括错线、开路、短路、相位错等。元器件失效:有两方面的原因:一是器件本身已损坏或性能不符合要求;二是组装错误造成元件失效,如电解电容、二极管的极性错误、集成电路安装方向错误等。可靠性差:引起可靠性差的原因很多,如金属化孔、接插件接触不良会

28、造成系统时好时坏,经不起振动;内部和外部干扰、电源纹波系数大、器件负荷过大等造成逻辑电平不稳定;走线和布局不合理也会引起系统可靠性差。 4.4 误差分析传感器的精确度与温湿度有关系,自身电路也可能存在必然误差,AD模块需要多次采集以降低误差。5 总结本设计过程包括了硬件电路设计和软件程序的编写两部分。硬件电路部分结构简单,使用方便,适合大众化使用。软件部分采用模块化设计思想,各个子程序的功能相对独立,便于调试和修改。由于时间和条件的限制,该系统还可以进一步完善,实现更多功能。通过对本次毕业设计,我学习了很多在大学遗漏的知识,让我在以后的工作中,更加的得心应手。这不仅仅是一次简单的毕业考察,而是

29、对我们四年大学所学得知识的总结。致谢本论文是在赵老师的悉心指导下完成的。赵老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。本论文从选题到完成,每一步都是在赵老师的指导下完成的,倾注了赵老师大量的心血。在此,谨向赵老师表示崇高的敬意和衷心的感谢!对于系里领导的关心和实验室的老师们的辛勤,给我们提供了实验室这样一个良好的设计环境表示深深地感谢。我从大二开始接触单片机,在赵老师和系领导的爱护关爱下不断成长,在

30、此表示深深的感谢。大学四年有很多同学帮助支持着我,没有他们的帮助和支持是没有办法完成我的毕业论文的,同窗之间的友谊永远长存。我的毕业课题是基于单片机酒精测试系统的设计,是一个实际的小工程。作为一个本科生,我对实际的工程设计认识不够,经验不足,难免在设计的整体框架中,有很多的细节没有考虑。我的指导老师赵老师并没有指责,而是给予了我鼓励和很多宝贵的建议,并且悉心引导,给予了我一个比较清晰的设计思路。我沿着这条经验之路,不断地尝试摸索,慢慢地也掌握了设计的基本流程和思考的方法。我在完成毕业设计时遇到了很多的难题,比如硬件器件的选择,功能的实现等。然而这样的问题并不是我一个能所能解决的,幸运的是有指导

31、老师的悉心指导和热心同学的帮助,所以一个个看似复杂的问题便迎刃而解。参考文献1 刘海成. 单片机及应用系统设计原理与实践M. 北京:北京航空航天大学出版社,20092 李建中. 单片机原理及应用M. 西安:西安电子科技大学出版社,2008.2 :57-763 蔡骏. 单片机实验指导教程M. 合肥:安徽大学出版社,2008.7 :108-1144 陈宁,王文宁.单片机技术项目教程M. 南京:东南大学出版社,2008.8 :107-1315徐江海. 单片机实用教程M. 北京:机械工业出版社, 2007年 : 45-676刘秀英. 单片机应用设计200例M. 北京:北京航空航天大学出版社, 2006

32、年 : 26-357 马忠梅.单片机的C语言应用程序设计M.北京航空航天大学出版社,007.8 谭浩强.C语言程序设计.清华大学出版社,20059 杨志忠.数字电子技术基础M.高等教育出版社,200610 谢文和.传感技术及其应用M.高等教育出版社,200211祁伟.单片机C51程序设计教程与实验M.北京航空航天大学出版社,200612吴国风C语言程序设计教程M.合肥:中国科学技术出版社,2005附录1系统源程序#include#include #define uint unsigned int#define uchar unsigned charsbit adrd=P37; /IO口定义sb

33、it adwr=P36;sbit diola=P25;sbit dula=P26;sbit wela=P27;sbit sm=P10; /酒后驾车指示灯sbit big=P11; /醉酒驾车指示灯unsigned char j,k,adval,h;void delay(unsigned char i) /延时程序 for(j=i;j0;j-) for(k=125;k0;k-);uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/数码管编码void di

34、splay(uchar bai_c,uchar sh_c,uchar g_c)/显示子程序 P0=tablebai_c; /显示百位 dula=1; dula=0; P0=0xfe; wela=1; wela=0; delay(5); dula=0; P0=tablesh_c; /显示十位 dula=1; dula=0; wela=0; P0=0xfd; wela=1; wela=0; delay(5); P0=tableg_c; /显示个位 dula=1; dula=0; P0=0xfb; wela=1; wela=0; delay(5); P0=0x3f; dula=1; dula=0;

35、P0=0xf7; wela=1; wela=0; delay(5); void main()/主程序 uchar a,A1,A2,A2t,A3; while(1) wela=1; P0=0; /选通ADCS adwr=0; _nop_(); adwr=1; P0=0xff; /关闭ADCS delay(10); wela=0;/关闭有AD片选信号锁存器的锁存端以防在操作数码管时使AD的片选发生变化 for(a=20;a0;a-) display(A1,A2,A3); wela=1; /重新打开有AD片选信号锁存器的锁存端 P1=0xff; /读取P1口之前先给其写全1 P0=0; /选通ADCS adrd=0; /AD读使能 adval=P; /AD数据读取赋给P1口 adrd=1; P0=0xff; /关闭ADCS adwr=0; P1=adval; /同时把AD的值送八个发光二极显示 h=(65-adval)*4; A1=h/100; /分出百,十,和个位 A2t=h%100; A2=A2t/10; A3=A2t%10; if(h20) if(h=80) big=0; else sm=0;

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

当前位置:首页 > 科普知识


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