欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    水温自动控制系统方案.docx

    • 资源ID:20151       资源大小:790.35KB        全文页数:54页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    水温自动控制系统方案.docx

    一、 课题任务设计并制作一个水温自动控制系统,对1.5L净水进行加。水温保持在一定围且由人工设定。细节要求如下:1.温度设定围为4090 ,最小分辨率为0.1,误差1。2.可通过LCD显示屏显示温度目标值与实时温度。3.可以通过键盘调整目标温度的数值。二、 方案比较1. 系统模块设计为完成任务目标,可以将系统分为如下几个部分:5V直流电供电模块、测温模块、80C52单片机控制系统、键盘控制电路、温度显示模块、继电器控制模块、强电加热电路。通过各模块之间的相互配合,可以完成水温检测、液晶显示、目标值设置、水温控制等功能。系统方框图如下:2. 5V直流电供电模块方案一:直接用GP品牌的9v电池,然后接通过三端稳压芯片7805稳压成5伏直流电源提供给单片机系统使用,接两个5伏电源的滤波电容后输出。方案二:通过变压器,将220v的市电转换成9v左右的交流电,变压器输出端的9V电压经桥式整流并电容滤波。要得到一个比较稳定的5v电压,在这里接一个三端稳压器的元件7805。由于需要给继电器提供稳定的5V电压,而方案一中导致电池的过度损耗,无法稳定带动继电器持续工作,所以我们选用能够提供更加稳定5v电源的方案二。3. 测温模块经查阅资料,IC式感温器在市场上应用比较广泛的有以下几种:AD590:电流输出型的测温组件,温度每升高1 摄氏度,电流增加1A,温度测量围在-55 150之间。其所采集到的数据需经A/D 转换,才能得到实际的温度值。DS18B20:含AD转换器,所以除了测量温度外,它还可以把温度值以数字的方式<9 B i t > 送出,因此线路连接十分简单,它无需其他外加电路,直接输出数字量,可直接与单片机通信,读取测温数据。它能够达到0.5的固有分辨率,使用读取温度暂存寄存器的方法还能达到0.0625以上精度,温度测量围在-55125 之间,应用方便。SMARTEC感温组件:这是一只3个管脚感温IC,温度测量围在-45 13,误差可以保持在0.7 以。max6225/6626:最大测温围也是-55+125,带有串行总线接口,测量温度在可测围的的误差在4以,较大,故舍弃该方案。本设计选用DS18B20感温IC,这是因其性能参数符合设计要求,接口简单,部集成了A/D 转换,测温更简便,精度较高,反应速度快,且经过市场考察,该芯片易购买,使用方便。下面是DS18B20感温IC的实物和接口图片4. 80C52单片机控制系统AT89C52是一个低电压,高性能CMOS 8位单片机,片含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器RAM,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。5. 键盘控制电路方案一:四键设定,一个十位控制键,一个个位控制键,一个位控制键,一个确认键,通过四键的配合设定为度,该方案接线和程序简单,但实际操作不太便捷。方案二:矩阵键盘设定,通过按键输入不同数字实现温度的设定,电路连接比较简单,程序较方案一复杂,但已经在学习过程中接触过矩阵键盘的编程技巧,有一定的可行性,且操作起来更加符合我们的日常习惯。本次设计暂定采用矩阵键盘来作为温度设定电路的输入。6. 温度显示模块方案一:使用数码管显示,通过数码管显示被测温度和设定温度。该方案程序简单,且已学习过其编程技巧,但硬件占用单片机I/O口较多,对于尽量节约端口,让线路简单来说不是好方法,而且显示也不够直观灵活,只能显示数字,。方案二:使用液晶屏1602显示。1602可显示两行字符及数字,可以用来显示设定温度及测量温度,较之数码管显示更加清晰直观,虽然此前没有接触过相关知识,但该器件上手比较容易,可以在短期学会其使用方法。1602较之数码管更加符合本次设计要求,因此使用1602作为显示器件。7. 继电器控制模块方案一:采用普通的控制方法,即水温温度到达临界温度时,控制继电器开闭。但由于水温变化快,且惯性大,不易控制精度。 方案二:采用PWM控制加PID算法,通过采用PWM可以产生一个波形,而PWM波形的占空比是通过PID算法调节,这样就可以通过控制加热电路的开、断时间比来控制加热器功率进而控制温度的变化,从而使精度提高。此方法中硬件上可以使用固态继电器或晶闸管控制加热器工作。我们选择方案二。三、 电路设计1. 电源电路整个系统需要使用5V直流电和220V交流电。电源电路采用变压器与稳压模块,将工频电压降为5V直流电,为系统供电。首先用变压器模块20V交流电降为9V交流电,接入整流电桥,变为直流电输出,再使用三端稳压芯片7805稳压为5V。L7805输出端要联上电解电容,滤除交流电干扰,防止损坏单片机系统。LM7805最大可以输出1A的电流,部有限流式短路保护,短时间,例如几秒钟的时间,输出端对地2脚短路并不会使7805烧坏。2. 温度传感器DS18B20温度传感器只有三根外引线:单线数据传输总线端口DQ ,外供电源线VDD,共用地线GND。外部供电方式<VDD接+5V,且数据传输总线接4.7k的上拉电阻,其接口电路如下图外接电源工作方式所示。3. 单片机最小系统单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路4. 按键、显示电路这部分实际上是一个单片机最小系统的基本电路,键盘选用矩阵键盘可满足要求,通过按键输入不同数字实现温度的设定。   在显示方面选用常用的1602液晶显示模块。通过相应的程序,可以实现温度的实时显示,电路连接也比较简单,只需连接数据总线,和三根控制线即可实现数据控制,实现显示功能。1602显示电路5. 继电器温控单片机驱动继电器的通断,从而比较容易的实现对小功率电热棒的加热。本系统利用继电器的吸合与否来实现水温的自动化控制。本次设计采用型号为JRC-21F的继电器。其特点有: 1.超小型,低功耗; 2.触点型式:1H,1Z<1A.AC> 3.触点负载:2A,120VAC; 4.外型尺寸:15.7X10.4X11.4 如图是驱动较大功率继电器的接口,当p1.1连接单片机的输出口输出低电平时,Q1导通,继电器吸合;当p1.1输出高电平时,Q1截止,继电器断开。由于继电器吸合时电流比较大,所以在单片机与继电器之间增加了光电耦合器件作为隔离电路。R3是光电耦合输出管的限流电阻,R4是驱动管Q1基极泄放电阻。整体硬件电路见附录四、 程序设计程序结构包括:主程序、传感器测温程序、lcd1602显示程序、键盘扫描程序、PID计算程序、PWM波形发生程序。主程序流程图如下所示:传感器测温程序流程图:lcd1602显示程序流程图:键盘扫描程序流程图:温度比较与PID计算程序流程图:PWM波形发生程序定时器中断流程图:五、 测试方案1.静态测试:室温状态下,分别用温度计与18B20传感器检测水温,观察两者是否有误差。2.动态测试:用继电器控制"热得快"对1升水加热,用键盘设定需加热温度值,观察、记录1602显示屏上实时水温值的变化过程和每次改变温度设定值后PID调节的超调量。多次调试并和修改PID参数来完善该系统。检验水温的稳定值是否满足设计目标的要求。六、 系统调试1.加热水量与加热器的功率确定加热器水量与功率应当构成匹配,加热水量过多或功率过小会导致加热时间过长,而加热水量过少或功率过大会使超调增大,不利于控制。我们选择1L的容器作为测试对象,预计将20摄氏度的水加热到100摄氏度需要5分钟。经过计算这样的加热器功率至少为1120w,因此选择1000w的加热管。满足1L的容器很多,但是广口的盆水位较低,不利于加热管的安放。经过努力,找到了合适的容器实物见附件,恰能使得加热棒处于最为合适的水位深度。2.上下层温差的优化和电动机电源的选择电动机本不在设计的围里面,但是随着系统调试的进行,发现容器中的的水很难实现热均匀。容器中上下层温差过大,导致温度传感器所测数据极不准确,滞后过大,非常不利于控制。所以又添加一个直流减速电机带动桨叶加速冷热水对流,从而让容器里面的水受热均匀,方便测温模块对系统水温的实时监测。这一额外的电动机没有在事先考虑的器件电气匹配围,所以当它与加热模块一同共用5v的直流电源时,已超出了整流模块所能提供的最大电流,于是又添加了一个电源给电动机供电。3. PID程序的修改调试当实际水温与目标值差距过大时,加热器只需满功率工作<或完全停止工作>即可满足要求。此时采用PID控制意义不大,且PID控制围很大,参数很难整定,而微分环节也容易受到干扰导致加热器无法满功率运行。因此,在满足控制精度的前提下,可将PID控制的围缩小到设定温度的±1之。围缩小后,PID参数容易调整,控制效果明显增强。经过调试后PID参数分别为Proportion = 10,Integral = 8,Derivative =6。4.PWM波周期的调试PWM波的周期越短,控制的精度越高。但PWM波形的输出需要单片机中断程序进行控制,中断频率过高会干扰单片机中主程序的运行。测温模块18B50对时间的要求非常严格,因此测温模块读取数据期间会与中断程序冲突。若18B20读数期间允许中断中断会导致其温度输出出现大量错误;若不允许中断会导致PWM波周期频繁变化。经过调试,将PWM波周期设为5s。七、 数据测试与处理1.静态温度的测试室温状态下,分别用温度计与18B20传感器检测水温,得到结果分别为。温度计显示17.5,18B20传感器显示温度17.9,在误差允许的围,满足要求。2.动态温度的测试:令测温系统工作,对1.5L净水加热,设定温度分别为50,60,80,每10s记录一次显示屏幕上的数据,绘制其温度变化曲线,并计算温度控制的超调量,稳态误差。温度数据及曲线如下:(1) 目标温度50度:时间10s01234567温度303030.130.531.13232.733.5时间10s89101112151718温度34.535.336.137.138.140.642.343.2时间10s1920212324252627温度44.14545.847.648.449.149.750.8时间10s2829303132333435温度51.251.651.851.851.851.851.851.7时间10s3639404346515457温度51.651.351.150.850.650.550.350.1时间10s6063646668697072温度5049.849.950.150.550.750.750.7时间10s7578818487889091温度50.550.450.250.149.949.85050时间10s92温度50超调量为3.6%(2) 目标温度60度:时间10s01234567温度5050.551.151.852.653.554.155时间10s89101112131415温度55.856.657.558.358.959.860.361.2时间10s1617181920212427温度61.561.661.661.661.561.461.160.8时间10s3032333436374041温度60.460.260.16059.86060.260.3时间10s4245474850525354温度60.360.2606059.859.960.160.3时间10s5657温度60.460.3超调量为2.5%(3) 目标温度80度:时间10s01234567温度6060.861.462.162.863.764.565.3时间10s89101112131516.5温度66.166.867.668.369.170.371.372.4时间10s1819212223242526温度73.574.375.676.47777.778.478.9时间10s2728293031323334温度79.580.180.380.580.580.380.280.1时间10s35363738.539404142温度79.879.679.479.379.379.379.479.4时间10s4344454647484950温度79.579.679.779.879.9808079.9时间10s5152535455565758温度79.779.679.679.679.779.779.880时间10s5960616263温度80.180808080超调量为0.6%由以上温度曲线可以看出,水温能够保持在设定温度上下,控制过程中超调量<4%,且稳态时的误差在为±0.3,满足系统设计要求。八、 设计总结通过本次应用系统设计,在很大程度上提高了我们的独立思考、分析判断以及动手实践能力,也对系统设计过程以及设计过程中应注意的问题有了初步的认识,加深了我们对所学知识的理解。出于对自身知识及可获取的学习资源的考虑,我组本次电子综合设计的选题最终定为水温自动控制系统的设计,该题目为往年电设题目,参考资料较易获取且基本未超出我们现掌握的知识水平。在参考了书本及网络上的设计思想之后,我们确定了该系统的设计方案初稿,并讨论了设计方案的可行性。讨论确定出实验所需器材以及组员的分工,由一名组员进行程序的编写,另外两名组员进行硬件电路的焊接及调试。经过几次检查、调试以及修改之后,基本实现了本次设计的部分预期目标:可通过LCD显示屏显示温度目标值与实时温度,可以通过键盘调整目标温度的数值等功能。在系统调试过程中,遇到一些问题:1.由于一开始没有估计好器件占用的空间,所购万用板太小,无法满足实验要求,之后又换用了一个较大的万用板。在最小系统焊接完成后,由于没有搞清楚按键的部接线,使单片机一直处于复位状态,无常工作,后用万用表排查出该错误。2.在加热控制器件的选择上花费了较多精力,开始的设计方案是用光电耦合器配合双向晶闸管利用PWM波控制加热功率来实现温度的稳定,但在硬件实验时发现控制导通无法实现,且电压、电流余量有限,不能满足设计要求。便换用了固态继电器配合三极管来实现功率控制。3.在完成基本功能后,发现由于水温分布不均匀,温度传感器无法及时检测到水温变化以改变加热功率,减小超调量,又在原系统中增加了电机搅拌器以使水温分布均匀。4. 在PID参数整定中,发现初始的PID算法过于简单,造成被控变量误差与稳定性均较差。普通的位置PID算法很难满足水温控制系统的要求。查阅资料后,缩小了PID控制的围,在满足控制精度的前提下,温控围缩小到设定温度的±1之。围缩小后,PID参数容易调整,控制效果明显增强。这些问题的解决帮助我们融合所学的知识,极大提高了我们动手能力。通过对本设计的反思总结,加深了对机械,单片机,自动控制等多方面知识的理解,也激发了我们对电子设计的极大兴趣,这对我们以后的学习生活有着十分重要的作用。 九、 参考文献1.海成.AVR单片机原理及测控工程应用 .航空航天大学2.周润景 晓霞.单片机实用系统设计与仿真经典实例.电子工业3.维成 加国.单片机原理与应用及C51程序设计.清华大学4.大学生电子设计竞赛组委会.第五届全国电子设计竞赛获奖作品选编.理工大学5.黄志伟 全国大学生电子设计竞赛系统设计。航空航天6.51黑电子论坛.51hei./bbs/十、 附录1. 电路原理图2.程序#include <REG52.H>#include<intrins.h>#include<math.h>#include<string.h>#define uchar unsigned char#define uint unsigned intsbit DQ =P27; /定义端口sbit RS=P25;sbit RW=P24;sbit EN=P23;sbit output=P20;sbit P0_0=P00;sbit P0_1=P01;sbit P0_2=P02;sbit P0_3=P03;uchar flag;/flag为温度值的正负号标志单元uchar c2;/18b20的直接输出量 uint cc,cc2;/变量cc为18b20输出量的直接计算值,cc2为放大100倍温度值 float cc1;/cc1为温度值uchar buff110="Set temp: "/1602屏显示uchar buff210="Cur temp: "/1602屏显示uchar set_c2='5','0'/用于温度设置及1602屏显示uchar buff36="+00.0 "/1602屏显示uchar temper,set_temper=50;/temper用于PID的测量值<整数>,set_temper用于PID参考值uint s;/PID的测量值<小数>struct PID unsigned int SetPoint; / 设定目标 unsigned int Proportion; / 比例常数 unsigned int Integral; / 积分常数 unsigned int Derivative; / 微分常数 unsigned int LastError; / Error-1unsigned int PrevError; / Error-2unsigned int SumError; / Sums of Errors;struct PID spid; / 创建PID结构uint rout; / PID Outputuint rin; / PID Inputunsigned char high_time,low_time,count=0;/占空比调节参数void delay<uint useconds> /延时程序 for<useconds>0;useconds->uchar ow_reset<void> /复位18B20 uchar presence; DQ = 0; / DQ 低电平 delay<50> / 480ms DQ = 1; / DQ 高电平 delay<3> / 等待 presence = DQ; / presence 信号 delay<25> return<presence> / 0允许, 1禁止 uchar read_byte<void> /从单总线上读取一个字节18B20 uchar i; uchar value = 0; for <i=8;i>0;i-> value>>=1; DQ = 0; DQ = 1; delay<1> if<DQ>value|=0x80; delay<6> return<value>void write_byte<uchar val> /向单总线上写一个字节18B20 uchar i; for <i=8; i>0; i-> / 一次写一位 DQ = 0; DQ = val&0x01; delay<5> DQ = 1; val=val/2; delay<5>void Read_Temperature<void> /读取温度18B20 ow_reset<> write_byte<0xCC> / 跳过 ROM write_byte<0xBE> / 读 c1=read_byte<>/低字节 c0=read_byte<>/高字节 ow_reset<> write_byte<0xCC> write_byte<0x44> / 再次开始 cc=c0*256.0+c1;/ 18b20输出量的直接计算值 if <c0>0xf8> flag=1;cc=cc+1;else flag=0; cc1=cc*0.0625; /计算出温度值 cc2=cc1*100;/温度值放大100倍,放在整型变量中便于取数字c0=<c0<<4>&0x7f; s=<unsigned int><c1&0x0f> s=<s*100>/16;/温度值小数部分 c1=c1>>4; temper=c0|c1;/温度值整数部分delay<1000>/用于PID的测量温度值 return;void fbusy<>/检查忙函数1602P1 = 0xff;RS = 0;RW = 1;EN = 1;EN = 0;while<<P1 & 0x80>>EN = 0;EN = 1;void wc51r<uchar j>/写命令函数1602 fbusy<>EN = 0;RS = 0;RW = 0;EN = 1;P1 = j;EN = 0;void wc51ddr<uchar j>/写数据函数1602fbusy<>/读状态;EN = 0;RS = 1;RW = 0;EN = 1;P1 = j;EN = 0;void init<>/1602初始化wc51r<0x01> /清屏wc51r<0x38> /使用8位数据,显示两行,使用5*7的字型wc51r<0x0c> /显示器开,光标开,字符不闪烁wc51r<0x06> /字符不动,光标自动右移一格void display<void> /1602显示程序1<初始化显示>uchar k;delay<10>init<>wc51r<0x80> /写入显示缓冲区起始地址为第1行第1列for <k=0;k<10;k+>/第一行显示提示信息"Set temp:" wc51ddr<buff1k>for <k=0;k<2;k+> wc51ddr<set_ck>/显示设定的温度wc51r<0xc0> /写入显示缓冲区起始地址为第2行第1列for <k=0;k<10;k+> /第二行显示提示信息"Cur temp:" wc51ddr<buff2k>buff31=cc2/1000+0x30;if < buff31=0x30> buff31=0x20;/取出十位,转换成字符,如果十位是0不显示。buff32=cc2/100%10+0x30;/取出个位,转换成字符buff34=cc2/10%10+0x30;/取出小数点后一位,转换成字符if <flag=1> buff30='-'else buff30='+' for <k=0;k<6;k+>/第二行显示温度 wc51ddr<buff3k> void display2<void> /1602显示程序2循环显示uchar k;delay<10>wc51r<0xca>buff31=cc2/1000+0x30;if < buff31=0x30> buff31=0x20;/取出十位,转换成字符,如果十位是0不显示。 buff32=cc2/100%10+0x30;/取出个位,转换成字符 buff34=cc2/10%10+0x30;/取出小数点后一位,转换成字符 if <flag=1> buff30='-'else buff30='+' for <k=0;k<6;k+>/第二行显示温度 wc51ddr<buff3k>uchar scan_key<>/键盘检测程序,16个按键输出序号116uchar set_num=0;uchar dushu,dushu1;P0=0xff;P0_0=0;/扫描第一行dushu=P0;dushu=dushu&0xf0;if<dushu!=0xf0>delay<900>dushu=P0;dushu=dushu&0xf0;if<dushu!=0xf0>dushu1=dushu;while<dushu!=0xf0>dushu=P0;dushu=dushu&0xf0;delay<900>dushu=P0;dushu=dushu&0xf0;while<dushu!=0xf0>dushu=P0;dushu=dushu&0xf0;if<dushu1=0xe0>set_num=1;else if<dushu1=0xd0>set_num=2;else if<dushu1=0xb0>set_num=3;else if<dushu1=0x70>set_num=4;P0_0=1;delay<900>P0_1=0;/扫描第二行dushu=P0;dushu=dushu&0xf0;if<dushu!=0xf0>delay<900>dushu=P0;dushu=dushu&0xf0;if<dushu!=0xf0>dushu1=dushu;while<dushu!=0xf0>dushu=P0;dushu=dushu&0xf0;delay<900>dushu=P0;dushu=dushu&0xf0;while<dushu!=0xf0>dushu=P0;dushu=dushu&0xf0;if<dushu1=0xe0>set_num=5;else if<dushu1=0xd0>set_num=6;else if<dushu1=0xb0>set_num=7;else if<dushu1=0x70>set_num=8;P0_1=1;P0_2=0;/扫描第三行dushu=P0;dushu=dushu&0xf0;if<dushu!=0xf0>delay<900>dushu=P0;dushu=dushu&0xf0;if<dushu!=0xf0>dushu1=dushu;while<dushu!=0xf0>dushu=P0;dushu=dushu&0xf0;delay<900>dushu=P0;dushu=dushu&0xf0;while<dushu!=0xf0>dushu=P0;dushu=dushu&0xf0;if<dushu1=0xe0>set_num=9;else if<dushu1=0xd0>set_num=10;else if<dushu1=0xb0>set_num=11;else if<dushu1=0x70>set_num=12;P0_2=1;delay<900>P0_3=0;/扫描第四行dushu=P0;dushu=dushu&0xf0;if<dushu!=0xf0>delay<900>dushu=P0;dushu=dushu&0xf0;if<dushu!=0xf0>dushu1=dushu;while<dushu!=0xf0>dushu=P0;dushu=dushu&0xf0;delay<900>dushu=P0;dushu=dushu&0xf0;while<dushu!=0xf0>dushu=P0;dushu=dushu&0xf0;if<dushu1=0xe0>set_num=13;else if<dushu1=0xd0>set_num=14;else if<dushu1=0xb0>set_num=15;else if<dushu1=0x70>set_num=16;P0_3=1;delay<900>return set_num;void PIDInit <struct PID *pp>/PID结构体空间分配 memset < pp,0,sizeof<struct PID>>unsigned int PIDCalc< struct PID *pp, unsigned int NextPoint >/PID计算部分unsigned int dError,Error;Error = pp->SetPoint - NextPoint; / 偏差pp->SumError += Error; / 积分dError = pp->LastError - pp->PrevError; / 当前微分pp->PrevError = pp->LastError;pp->LastError = Error;return <pp->Proportion * Error / 比例项+ pp->Integral * pp->SumError / 积分项+ pp->Derivative * dError> / 微分项compare_temper<>/温度比较处理程序 unsigned char i; if<set_temper>temper> if<set_temper-temper>1> high_time=100; low_time=0; else f

    注意事项

    本文(水温自动控制系统方案.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开