首页资源分类嵌入式处理器51内核 > 数字温度计

数字温度计

已有 445023个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:数字温度计

    分    享:

    文档简介

    51单片机设计温度计

    文档预览

     毕业设计(论文) (2012届) 摘 要 数字体温计的设计与制作 一、引言 温度测量在人们生活中、物理实验、医疗卫生、食品生产等领域有着特别重要的意义。温度计的发展很快,从原始的玻璃管温度计发展到了现在的热电阻温度计、热电偶温度计、半导体集成数字温度计等。在电子式温度计中,传感器是它的重要组成部分,温度计的精度、灵敏度基本决定了温度计的精度、测量范围、控制范围和用途等。温度传感器应用极其广泛,目前已经研制出多种新型温度传感器,从而构成性能优良的温度监控系统。 为了正确测量人体局部温度,促使人们开发了各种不同的测温仪器和测温方法。虽然水银体温计仍不愧是一个精度高、便宜、使用方便的测温仪器。现在已有许多医院采用了电子体温计,用其它电子仪器测量体温也日益普及。这一事实至少表明,电子测温仪器的性能已接近水银温度计的性能。现在所使用的温度计还有很多是分辨力为1~0.1℃的水银、煤油或酒精温度计。这些温度计的刻度间隔通常都很密,不容易准确分辨,读数困难,而且他们的热容量比较大,达到热平衡所需的时间较长,因此很难读准,使用非常不方便,并且水银会对环境污染严重等缺点。随着科技的高速发展进步,人们开始研发了用数字温度计。医院、家庭等随处可见,为了能更加满足人们的需要,数字体温计正在更新换代。 因此,鉴于传统的水银体温计汞的污染及其携带不方便易破碎,尤其是测量时间过长等缺点,本课题为解决此问题设计出一种数字式电子体温计。它在稳定性及响应时间上比传统的水银体温计有着显著的优势,精度要求也能和传统的水银体温计相媲美。并且具有读数方便,测温范围广,测温准确等优点,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。新型电子体温计利用电子感温,灵敏度高,也适合无法长时间安静的儿童,且能在较短的时间内准确测试出体温,探热时间可快至1min。它的测量精度可达±0.1℃,液晶屏直接显示体温数值。 二、设计目标和要求 1.用所学的单片机知识设计制作数字体温计; 2.测量温度范围:误差小于0.1℃ 3.所测的温度值可以由数码管直接显示 4.进一步熟悉Proteus,Protel软件的功能和使用方法 三、方案论证与设计 方案一、设计测温电路。使用热敏电阻之类的器件利用其感温效应,将被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,通过数码管就可以将被测温度显示出来。 方案二、使用温度传感器。现在流行使用单片机设计电路,所以可以采用一只温度传感器DS18B20,此传感器可以很容易就能读取到温度值。 论证:方案一由于需要对被测温度变化的电压或者电流采集,以及进行A/D转换,感温度电路设计会比较麻烦,成本高。而方案二设计只需一个单片机和一个DS18B20就能很容易读取温度值,电路设计简单,况且成本低,体积小,因而采用方案二。 (一)控制部分的方案选择 用可编程逻辑器件设计。主控芯片使用AT89S52单片机,对温度传感器的数据进行采集以及传送给数码管显示。 (二)测温部分的方案选择 本方案采用美国DALLAS半导体公司继DS18B20之后推出的一种改进型智能温度传感器DS18B20作为检测元件,测温范围为-50~100°C,最大分辨率可达0.0625°C。DS18B20可以直接读出被测温度值,而且采用3线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。 (三)显示部分的方案选择 本方案采用七段数码管显示器。其优点是设计简单,可视度高,成本低。避免了LCD的成本高,不方便观察的缺点。 四、硬件设计 (一) 电路设计框图 综上所述,按照系统设计功能的要求,确定硬件由主控制器、测温电路、显示模块、共3个模块组成,设计了硬件整体的框图: 图4.1 数字体温计构成框图 用DS18B20来检测当前的环境温度;STC89S52单片机通过输出各种电脉冲信号来驱动控制各部分正常工作;温度等数据则最终通过数码管模块显示出来。 (二) 系统硬件概述 本电路是以STC89C52单片机为控制核心,该芯片具有在线编程功能,功耗低,能在3.3V的超低压下工作;驱动部分采用74HC537,它是一款高性能、低功耗、,其工作电压为2.5V~5.5V;温度检测模块由DS18B20构成,它采用独特的单线接口仅需一个端口引脚进行通讯, 具有测量精度高、测量范围广等优点,其测温范围在-55~+125℃,工作电压为3v~5.5v;显示部份使用七段数码管显示屏来实现,该显示具有亮度高的特点。 (三) 主要单元电路设计 1、AT89S52单片机简介 AT89S52是一种低功耗、高性能的8位CMOS微控制器,具有8K的可编程Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。引脚排列如图4.2所示。 图4.2 AT89S52引脚图 从引脚功能来看,可将引脚分为三部分: a、电源及时钟引脚 VCC:接+5V电源;VSS:接地;XTAL1和XTAL2:时钟引脚,外接晶体引线端。当使用芯片内部时钟时,此两引脚端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。 b、控制引脚 RST/VPT:RST是复位信号输入端,VPT是备用电源输入端。当RST输入端保持2个机器周期以上高电平时,单片机完成复位初始化操作。当主电源VCC发生故障而突然下降到一定低电压或断电时,第2功能VPT将为片内RAM提供电源以保护片内RAM中的信息不丢失。 ALE/PROG:地址锁存允许信号输出端。在存取外存储器时,用于锁存低8位地址信号。当单片机正常工作后,ALE端就会周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。此引脚的第2功能PROG是对片内带有4K字节EPROM的8751固化程序时,作为编程脉冲输入端。 PSEN:程序存储允许输出端。是片外程序存储器的读选通信号,低电平有效。CPU从外部程序存储器取指令时,PSEN信号会自动产生负脉冲,作为外部程序存储器的选通信号。 EA/VPP:程序存储器地址允许输入端。当EA为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFFH时,将自动转向执行片外程序存储器指令;当EA为低电平时,CPU只执行片外程序存储器指令。对8031单片机,EA必须接低电平。在8751中,当对片内EPROM编程时,该端接21V的编程电压。 C、I/O口引脚 P0.0~P0.7:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。 P1.0~P1.7:P1口是一个具有内部上拉电阻的8位双向I/O口。作为输出口,每位能驱动4个TTL逻辑电平。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。在flash编程和校验时,P1口接收低8位地址字节。 P2.0~P2.7:P2口是一个具有内部上拉电阻的8位双向I/O口。作为输出口,每位能驱动4个TTL逻辑电平。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3.0~P3.7:P3口是一个具有内部上拉电阻的8位双向I/O口。作为输出口,每位能驱动4个TTL逻辑电平。P3口亦作为AT89S52特殊功能(第二功能)使用。在flash编程和校验时,P3口也接收一些控制信号。 2 、单片机主控制模块的设计 本设计中单片机主要负责对外设的控制和各个功能模块间的协调,没有复杂的数据计算,因此,8位的51系列单片机足以胜任。51单片机以其低廉的价格以及较出色的性能成了很多控制系统的首选。它具有丰富的内部资源,较大的数据、程序存储区。一个典型的单片机最小系统一般由时钟电路、复位电路、电源指示灯和外部扩展接口等部分组成,本系统也不例外,当单片机具备了这些最基本的条件后,就可以正常工作了。 单片机的最小系统如图4.3所示,单片机的XTAL0和XTAL1引脚用于连接晶振电路。XTAL0接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL1接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。RESET为复位引脚,连接复位电路,它用于对单片机进行初始化。复位电路包括复位电容(C6)、复位电阻(R3)和复位开关(S4)。VSS为电源地,VCC为电源正。 图4.3 单片机最小系统 单片机最小系统复位、晶振电路简介 (1)复位电路的设计 复位电路是使单片机的CPU或系统中的其他部件处于某一确定的初始状态,并从这上状态开始工作。 ① 单片机常见的复位电路 通常单片机复位电路有两种:上电复位电路,按键复位电路。上电复位电路:上电复位是单片机上电时复位操作,保证单片机上电后立即进入规定的复位状态。它利用的是电容充电的原理来实现的。按键复位电路:它不仅具有上电复位电路的功能,同时它的操作比上电复位电路的操作要简单的多。如果要实现复位的话,只要按下RESET键即可。它主要是利用电阻的分压来实现的 在此设计中,采用的上电自动复位电路。按键复位电路如图4.4所示。 图4.4复位电路 ② 复位电路工作原理 上电复位要求接通电源后,单片机自动实现复位操作。上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。上电与按键均有效的复位电路不仅在上电时可以自动复位,而且在单片机运行期间,利用按键也可以完成复位操作 (2)晶振电路的设计 晶振电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地工作。 通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,如图4. 4Y1、C1、C2。可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,补偿电容通常选择30pF左右的瓷片电容。 2、温度传感器电路设计 数字温度传感器DS18B20是由Dalles半导体公司生产的,它具有耐磨耐碰,体积小,使用方便,封装形式多样(如图4.5),适用于各种狭小空间设备数字测温和控制领域。 图4.5 DS18B20的两种封装 (1)DS18B20的主要特性 ① 适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电。 ② 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 ③ DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。 ④ DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内。 ⑤ 温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。 ⑥ 可编程 的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。 ⑦ 在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。 ⑧ 测量结果直接输出数字温度信号,以"一 线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。 ⑨ 负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。 (2)DS18B20的内部结构 DS18B20内部结构主要由四部分组成:64位光刻ROM 、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器(如图4.6)。 图4.6 DS18B20的内部结构组成 DS18B20的供电方式有两种:寄生电源供电方式和外部电源供电方式。本设计采用外部电源供电方式(如图4.7),DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度。外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。 图4.7 DS18B20引脚接线 引脚说明:GND为接地引脚;DQ为数据输入输出脚。用于单线操作,漏极开路;VCC接电源正; 6、显示模块的设计 本设计中由于要对温度进行显示,所以选择七段数码管模块作为输出。外围电路配置简单,显示亮度高,价格便宜,具有很高的性价比。 五、软件设计 (一) 温度程序流程图 温度读取流程图如图5.1所示。流程图分析:开始进入初始化DS18B20,就是通过主机拉低单线产生复位脉冲然后释放该线,如果有应答脉冲,即发起ROM命令当成功的执行操作命令后,就使用Convert T命令即开始温度转换,当转换完后,又初始化DS18B20是否有应答脉冲,若有,就发起Read Scratchpad(读取暂存器和CRC字节)命令,既同时读出第1,2个字节,即为温度的数据。 (二) 数码管显示程序流程图 显示程序流程图如图5.1。流程图分析:首先对数码管段控制端P2口赋值P2=0x00,然后打开位控制端P2.0,这样的作用是消除显示残影,使显示清晰。显示时先向段控制写入数据,再打开位控制,这样就可以把数据准确地显示到数码管。 六 仿真与调试 (一) Proteus软件运行流程 Proteus ISIS的工作界面是一种标准的Windows界面,如图所示。 包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。 运行Proteus程序后,进入软件的主界面。通过左侧工具栏中的P(从库中选择元件命令)命令,在Pick Devices 左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,最后进行连线。 将所需要的元器件放置好后,绘制成原理图,导入程序仿真图如下 图6.11温度传感器 (二) 硬件调试结果 数字体温计的电路,对于焊接方面不可轻视,只要电路系统中出于一处的错误,就会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺破带有包皮的导线,则会对电路造成短路现象。 在本次数字体温计的设计调试中遇到了很多的问题。回想这些问题只要认真多思考都是可以避免的,以下为主要的问题: (1)由于没有做复位电路,使得输出信号不正常,跟所设计的电平不一样。 (2)烧入程序后,显示亮度不好。 解决:对电路进行测试,如对单片机的输出管脚信号进行测试,观察是否存在漏焊,虚焊,或者元件损坏的现象。若无此问题查看烧写的程序是否正确无误,对程序进行认真修改。当显示亮度不好时阻器的阻值,直到看到合适的亮度为止。 经过多次的反复调试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力。同时在软件的编程方面得到更到的提高,对编程能力得到加强,同时对所学的知识得到很大的提高与巩固。如下为硬件实物图: 图6.21硬件实物图 七 总结 经过一番努力后,数字体温计设计的终于完成。在未做该项设计前,我对18B20这个温度传感器不怎么了解,由于设计的需要我查阅了关于18B20 的资料才发现它的功能是如此强大的,使用又很方便,样子看上去跟普通三极管一样。在设计该体温计的过程中,我首先按照体温计的功能设计出其大致的电路电路方框图,然后分析各个功能模块:温度采集模块、信号转换模块、数码管显示模块的。选好材后画出电路原理图,再到编写程序,最后进行仿真,这次课题设计可以说成功完成。说到编写程序是可花了不少功夫,因为该设计需要精确到小数位的个位,这个可给我带来了苦恼,在同学的帮助下最终解决了这个问题。实验结果表明此温度体温计实现后具有读取方便、显示直观、电路简洁等优点,符合电子仪器仪表的发展趋势,具有良好的市场前景。 在整个设计过程中,充分发挥了人的主观能动性,自主学习,学到了许多没学到的知识。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考查资料,和同学讨论,向老师请教,理清了思路,完成对程序的编写。通过设计提高了对单片机的认识,进一步熟悉和掌握单片机的结构及工作原理。通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术,提高软件设计、调试能力;通过这次设计熟悉以单片机核心的应用系统开发的全过程,掌握硬件电路设计的基本方法和技术,掌握相关电路参数的计算方法。最终较好的完成了设计,达到了预期的目的。 但是由于个人能力的原因,这个没能解决所显示的数字有些闪动的效果,以及焊接技能需要加强锻炼在功能方面是显得非常的简单,只实现了一个最基本的功能,还有许多不足和可以扩展的地方。例如实现公历和农历的转换等,这些有待以后来弥补,还望各位老师予以指正和修改。 参考文献 ①陈贵银,单片机原理及接口技术,电子工业出版社,2010年第1版,346—358 ② 宋卫海、杨德现,数字电子技术,北京大学出版社,2009年第1版,46—58 附录一:系统程序 主程序: #include #include #define uchar unsigned char #define uint unsigned int sbit ds18b20_DQ=P3^6; sbit duan=P3^0; sbit wei=P2^0; sbit dot=P1^7; uchar distemp[5];//装载温度的各个位 uchar count;//定时计数 uchar n;//n负温度标志位,为1表示负温度 /***********延时函数 11us***********/ void delayus(uint t) { for (;t>0;t--); } /**********ds18b20复位函数***********/ void reset_ds18b20() { uchar present; present=1; while(present) { while(present) { ds18b20_DQ=1; _nop_(); _nop_(); ds18b20_DQ=0; //下拉数据线 delayus(50); //延时大于500us ds18b20_DQ=1; //释放数据线 delayus(6); //延时66us (60~240us) present=ds18b20_DQ; //读取数据线状态,若为0,表示初始化成功 } delayus(45); present=!ds18b20_DQ; } ds18b20_DQ=1; } /*********ds18b20写数据函数**************/ void writeonebyte_ds18b20(uchar val) { uchar i; for(i=8;i>0;i--) { ds18b20_DQ=1;_nop_();_nop_(); //从高拉倒低 ds18b20_DQ=0;_nop_();_nop_();_nop_();_nop_(); //5 us ds18b20_DQ=val&0x01; //最低位移出 delayus(6); //66 us val=val/2; //右移1位 } ds18b20_DQ=1; delayus(1); } /**********ds18b20读数据函数*************/ uchar readonebyte_ds18b20() { uchar i; uchar value=0; for(i=8;i>0;i--) { ds18b20_DQ=1;_nop_();_nop_(); value>>=1; ds18b20_DQ=0;_nop_();_nop_();_nop_();_nop_(); //4 us ds18b20_DQ=1;_nop_();_nop_();_nop_();_nop_(); //4 us if(ds18b20_DQ)value|=0x80; delayus(6); //66 us } ds18b20_DQ=1; //delayus(1); return(value); } /*********设置报警温度TH TL和分辨率函数***********/ void setds18b20() { reset_ds18b20(); reset_ds18b20(); writeonebyte_ds18b20(0xcc); //skip rom writeonebyte_ds18b20(0x48);//TH TL数据保存到EEROM } /***读取温度值并转化成实际值********/ void getwendu() { uint temp=0,a,a1;//temp:存储温度临时值 float wendu; uchar n;//n:负温度标志位,为1表示负温度 uchar temp1[2]; /temp1[]:存放温度值的各个位 trans_ds18b20(); reset_ds18b20(); delayus(200); writeonebyte_ds18b20(0xcc); writeonebyte_ds18b20(0x44); reset_ds18b20(); writeonebyte_ds18b20(0xcc); writeonebyte_ds18b20(0xbe); temp1[0]=readonebyte_ds18b20(); temp1[1]=readonebyte_ds18b20(); temp=temp1[1]; temp<<=8; temp=temp|temp1[0]; if((temp1[1]&0x80)==0x80) { n=1;//设置温度正负的标志 temp=0xffff-temp; temp=temp+1; } else n=0; wendu=temp*0.0625;//得到真实十进制温度值,因为DS18B20 temp=wendu*100;//放大十倍,这样做的目的将小数点后第一位 操作。 distemp[0]=temp%10; //百分位 distemp[1]=temp/10%10;//十分位 distemp[2]=temp/100%10;//个位 distemp[3]=temp/1000;//十位 } /************延时函数ms**************/ void delayms(uint ms) //毫秒级延时函数 { uint x,y; for(x=ms;x>0;x--) for(y=110;y>0;y--); } /**********显示为度函数**************/ void display() { unsigned char l[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f,0xbf,0xff}; //0-9的字段码 uchar y[4]={0x04,0x08,0x10,0x20}; //板 uchar i; for(i=0;i<4;i++) { P2=0x00; wei=1; wei=0; if(n==1) { if(distemp[3]==0) //若十位为0 { distemp[3]=11;//十位显示“-” distemp[4]=12;//百位显示“ ” } else { distemp[4]=0x0d; //百位显示“-” } } if(distemp[3]==0) { distemp[3]=12; } if(distemp[3]==0&&distemp[4]==0) //若十位,百位都为0 { distemp[3]=12;//十位显示“ ” distemp[4]=12;//百位显示“ ” } if(distemp[4]==0) //若百位为0 { distemp[4]=12;//百位显示“ ” } P1=l[distemp[i]]; if(i==2) dot=0; duan=1; duan=0; P2=y[i]; wei=1; delayms(1); wei=0; } } /*********定时器0初始化*****************/ void inittimer0() { ET0=1; EA=1; TMOD=0x01; //定时器0 13位定时器 TH0=(65535-50000)/256; TH1=(65535-50000)%256; } /********定时器0中断********************/ void timer0() interrupt 1 { TH0=(65535-50000)/256; TH1=(65535-50000)%256; count++; if(count==10) //500ms读取一次温度 { getwendu(); count=0; } } void main() { TR0=1; inittimer0(); while(1) { display(); } } 致 谢 在学校领导的关怀下;在吴小玲老师的耐心指导下;在各位同学、朋友的贴心帮助下,本设计成功完成。由于该设计较为普通,为了突出它体温计的特点,吴老师给我提了建议,要在精确度上要突出,把小数的显示提高到两位,这样可以让使用者对温度的准确信更为乐观。我想如果没有吴老师这开放性思想的指导我就很难在此有所突破了。她待人和蔼、认真求实的工作作风,对指导毕业设计工作积极负责的态度都深深影响着即将走出社会的我。让我不仅系统的掌握了专业知识体系,也让我有了正确的态度和坚定地信念去面对未来。当然我的亲朋好友、同学也给予了我太多的帮助,大家互相鼓励、一起探讨,奋斗了多个日夜,让我们的毕业设计顺利完成。 最后,我对所有关心我们的领导、老师和同学、朋友表示最为真切的感谢! 指导教师评语: 初评成绩: 指导教师签名: 年 月 日 毕业论文(设计)评审小组意见: 终评成绩: 组长签章: 年 月 日 备注

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高员外,我们会尽快处理。