版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
管理信息化物联网温度采集智能家居热水器温度采集智能家居热水器温度采集智能家居热水器摘要随着社会的发展,人类科技的进步,各行各业都在使自己的产品智能化、数字化,因老式的热水器使用煤气或天然气对水进行燃烧加热,用手动的方式调节温度,不仅不能够精确的确定使用者需要的水温,而且还存在一定的危险性。电热水器是一种可供浴室、洗手间及厨房使用的家用电器,随着人们生活质量的提高,现代的家用电热水器已经摒弃了以前的做法,而采用一种更加精确、安全的实施方案。C语言对单片机编程有诸多优点,例如:便于移植、句法检查时错误少、坚固性好、头文件种类诸多,能够方便快捷使用各种函数等。本文采用STC89C52单片机作为控制器,使用C语言编写程序,设计了一款智能家用电热水器。使用按键键盘设定温度,温度可以精确到0.1摄氏度,并使用LED灯显示,能够精确提供用户所需温度的温水。采用DS18B20采集温度,使用LED灯显示,精确的显示出采集的水温。当所需温度高于当前采集的水温时,使用继电器控制外接加热源,当所需温度低于当前采集的水温时,继电器断开不加热。当所需温度高于采集温度时,继电器吸合开始加热。基本实现了智能控制功能。关键字:18B20、STC89C52、热水器II温度采集智能家居热水器ABSTRACTWiththedevelopmentofsociety,theprogressofhumanscienceandtechnology,inallwalksoflifetomaketheirproductsintelligent,digital,becausethewaterheaterusingold-fashionedgasornaturalgasisburnedtoheatwater,adjustthetemperaturemanually,notonlycantheuserneedstobeaccuratelydetermined,andthereissomerisk.Electricwaterheaterisakindofhouseholdappliancesforbathroomandkitchen,restroomuse,alongwiththeimprovementofpeople'slivingquality,householdelectricwaterheatermodernhaverejectedthepreviouspractice,andbyusingamoreaccurate,safeimplementationplan.TheClanguagehasmanyadvantages,suchas:microputerprogrammingfortransplantation,syntaxcheckerrorless,robust,headfiletypemany,canbeconvenienttouseavarietyoffunctions.ThispaperadoptsSTC89C52MCUasthecontroller,theuseofCprogramminglanguage,designedaintelligenthomeelectricwaterheater.Usethekeyboardtosetthetemperature,thetemperaturecanbeaccurateto0.1degreesCelsius,andtheuseofLEDlightsdisplay,canaccuratelyprovidetherequiredtemperatureofwarmwater.TheDS18B20collectiontemperature,theuseofLEDlightsdisplay,displaythetemperaturepreciseacquisition.Whentherequiredtemperatureishigherthantheacquisitionoftemperature,usetherelaytocontroltheexternalheatiIII温度采集智能家居热水器ngsource,whentherequiredtemperatureislowerthanthecurrentcollectingwater,relayoffwithoutheating.Whentherequiredtemperatureishigherthantheacquisitionoftemperature,relaystartsheating.Thebasicrealizationoftheintelligentcontrolfunction.Keywords:18B20、STC89C52、目录1引言12设计内容及性能指标13系统方案比较、设计与论证23.1主控制器模块23.2温度测量23.3设置温度33.4显示模块43.5电源选取44系统器件选择55硬件实现及单元电路设计65.1主控制模块65.2显示模块电路65.3数码管显示驱动电路7IV温度采集智能家居热水器5.4温度传感器(DS18B20)电路75.4.1DS18B20基本介绍75.4.2DS18B20控制方法85.4.3DS18B20供电方式85.5继电器加热控制电路96系统软件设计106.1程序结构分析106.2系统程序流图106.2.1DS18B20初始化程序流程图126.2.2读温度子程序流程图126.3程序编写与调试136.6.1Keil编译器软件简介136.3.2使用Keil软件建立一个工程136.3.3使用Debug进行调试177系统的安装与调试197.1安装步骤197.2电路的调试197.3本章小结19结论19V温度采集智能家居热水器参考文献20附录1整体电路原理图21附录2部分源程序22VI温度采集智能家居热水器1引言水器造成的爆炸、中毒等事故也屡有所闻。消费者对燃气热水器怀有一定的惧怕感,所以燃气热水器渐渐淡出市场。而智能电热水器越来越受到人们的认可。电热水器在中国的历史已经有10多年了,期间也经历了数次起落的过程,在上个世我国在对电热水器水温水位系统的研究已取得很大的成就,并在不断地完善之中。测器是以STC89C52单片机作为主控制元件来能实现热水器里的水温显示在数码管。更进一步的采用继电器实现自动控制加热装置,是单片机应用在工业、农业、国防、温度采集智能家居热水器操作也是不可缺少的。在本设计中,研究智能电热水器的水温检测器非常有意义。2设计内容及性能指标本设计采用51单片机+DS18B20温度传感器+数码管显示+继电器+功能按键组成。DS18B20测精确到0.1EEPOM有连加、减功能。3系统方案比较、设计与论证系统功能的方案。3.1主控制器模块方案1:采用可编程逻辑器件CPLD作为控制器。CPLD密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输度考虑我们放弃了此方案。方案2:温度采集智能家居热水器采用STC89C52单片机作为整个系统的核心,用其控制水温测量控制系统,以实现其——优点。STC89C52I/O多达8K,对于本设计也绰绰有余,更可贵的是STC89C52单片机价格非常低廉。3.2温度测量方案1:采用数字温度芯片DS18B20工业测温元件,此元件线形较好。在0—100摄氏度时,最大线形偏差小于1摄氏度。DS18B20DS18B20和微控制器STC89C52构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51单片机控制,软件编程的自单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC机通信上传数据,另外STC89C52在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。方案2:温度采集智能家居热水器A/DA/D的缺点,并且这种设计需要用到A/D转换电路,感温电路比较麻烦。图1热电偶电路图故本次设计采用了方案一。3.3设置温度方案1:44个接口。方案2:可采用4*4矩阵键盘,该键盘需要8个接口,而我们不需这么多键。综上所述,我们选择第一种方案。3.4显示模块方案1:温度采集智能家居热水器广泛应用。方案2:用LCDLCD内容,而且LCD液晶价格贵,因此我们放弃了此方案。综上所述我们选择方案13.5电源选取由于本系统采用电池供电,我们考虑了如下几种方案为系统供电。方案1:采用5V蓄电池为系统供电。蓄电池具有较强的电流驱动能力以及稳定的电压输弃了此方案。方案2:采用3节1.5V干电池共4.5V器的工作电压稳定能够满足系统的要求,而且电池更换方便。综上所述采用方案24系统器件选择1.温度传感器的选择较多的外部元件支持,且硬件电路复杂,制作成本相对较高。这里采用DALLAS公司的数字温度传感器DS18B20作为测温元件。温度采集智能家居热水器图2外部封装形式图3传感器电路图5硬件实现及单元电路设计5.1主控制模块主控制最系统电路如图4所示。图4单片主控电路5.2显示模块电路显示采用四位数码管显示,当位选打开时,送入相应的段码,则相应的数码管打开,的位选时,时间间隔低于20ms,从人类视觉的角度上看,就仿佛是全部数码管同时显示的一样。显示电路如图5图5数码管显示5.3数码管显示驱动电路三极管8550来驱动4位数码管,不仅简单,而且价格便宜。图6驱动电路5.4温度传感器(DS18B20)电路5.4.1DS18B20基本介绍DS18B20是美国DALLAS半导体公司推出的第一片支持“一线总线”接口的温度直接将温度转化成串行数字信号处理器处理。DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流达到1mA温度采集智能家居热水器I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。系统中。并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。图7温度传感器电路引脚图5.4.2DS18B20控制方法DS18B20有六条控制命令:温度转换44H启动DS18B20进行温度转换读暂存器BEH读暂存器9个字节内容写暂存器4EH将数据写入暂存器的TH、TL字节复制暂存器48H把暂存器的TH、TL字节写到E2RAM中重新调E2RAMB8H把E2RAM中的TH、TL字节写到暂存器TH、TL字节读电源供电方式B4H启动DS18B20发送电源供电方式的信号给主CPU5.4.3DS18B20供电方式DS18B20DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图3.1所示DS18B20一个三极管来完成对总线的上拉。本设计采用电源供电方式,P2.2口接单线总线为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个上拉电阻和STC89C52的P2.2来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D变换操作时,温度采集智能家居热水器总线上必须有强的上拉,上拉开启时间最大为10μs。采用寄生电源供电方式是VDD和GND制DS18B20完成温度转换必须经过3个步骤:初始化。ROM操作指令。存储器操作指令。5.5继电器加热控制电路电路如图8主要是用来给外部加热源加热的。图8继电器加热电路6系统软件设计6.1程序结构分析36.2系统程序流图DS18B209通过调用读温度子程序把存入内存储中的整数部分与小数部分开分存放在不的的两个温度采集智能家居热水器单元中,然后通过调用显示子程序显示出来。图6.2.1DS18B20初始化程序流程图在DS18B20工作之前需要进行初始化,流程图如下:图10初始化程序流程图6.2.2读温度子程序流程图读温度子程序的主要功能是从DS18B20序流程图如下:图11温度子程序流程图6.3程序编写与调试6.6.1Keil编译器软件简介KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,CCKeilC51软件提供丰富的WindowsKeilC51温度采集智能家居热水器势。下面详细介绍KeilC51开发系统各部分功能和使用。图15C51工具包整体结构图KeilC51单片机软件开发系统的整体结构C513.1中uVision与Ishell分别是C51forWindows和forDOS的集成开发环境(IDE),可以IDE本身或其它编辑器编辑CC51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51L51连接定位生成绝对目标文件(.ABS)ABS文件由OH51转换成标准的HexdScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。6.3.2使用Keil软件建立一个工程Keil是目前进行51单片机开发最常用的编译软件。关于Keil的使用,有很多的资料介绍,这里只介绍其整个编译过程,在最短时间内开始使用Easy51DP-2开发板。对于KeilKeil序,都是以一个工程的形式建立的。一个工程里可以有一个或多个*.c文件和*.h文件,但只可以有一个main()函数。一般的做法是将包含main()函数的C文件加入到工程中,其他文件以#include头文件的形式加到这个C文件里。这样,在编译的时候,其他的文件会被自动的导入到工程里来。打开Keil软件后,出现(图16)所示界面。当然,如果Keil在上次关闭时有打开的工程,再一次打开时它会自动加载上一次的工程文件。图16Keil软件主界面温度采集智能家居热水器首先点击Project->NewProject…(Project->OpenProject…为打开一个已经存在的工程),如图17所示。图17Keil软件打开新工程界面点开后,在出现的对话框中选择工程存在路径,单击“保存”后,出现(如图18所示)界面。在此界面上选择电路板上所用的单片机型号:AtmelSTC89C52(或者是AT89S52,视开发板上具体型号而定),单击“确定”。图18选择电路板上所用的单片机型号“是否将8051上电初始化程序添加入工程?如图19所示,这个一般选择“否”。(关于STARTUP.A51的相关内容可查阅相应资料)图19是否将8051上电初始化程序添加入工程这样,就建立了一个空的51工程。File->New建立了一个空的文本框。现在,就可以开始在里面输入你的代码了。保存时注意:如果是用C语言写的程序,则将文本保存成*.c,如果是用汇编写的程序,则将文本存成*.asm。译。因为还没有将程序代码添加到工程里面去。20ProjectWorkspace里的SourceGroup1上右击,选择AddFilestoGroup’SourceGroup1’。在打开的对话框中,选择刚存的文件路径和对应的扩展名。这样,程序就添加进了这个工程。图20添加文件到工程中温度采集智能家居热水器下一步,就开始编译刚输入进去的代码。点击工具栏中的按钮。接着,Keil会打出下面的提示:Buildtarget'Target1'assembling...linking...ProgramSize:data=8.0xdata=0code=100"first"-0Error(s),0Warning(s).“"first"-0Error(s),0Warning(s).”0个错误和0个警告。建立工程的时候,默认是不生成HEX文件的,得在编译做如下设置:单击,或者在ProjectWorkspace里Target1上右击,选择“OptionsforTarget‘Target1’”21选框勾上,点“确定”。现在再点击重新编译,系统提示:“creatinghexfilefrom"first"...”。便会在工程所在文件夹里生成HEX文件。图21生成HEX文件6.3.3使用Debug进行调试Keil有很强大的调试功能,可以显示C程序的反汇编代码、可以计算代码运行的时Debug参看相关书籍资料。图22调试前设置窗口温度采集智能家居热水器22Target不用作修改。设置完成后,单击,进入调试界面(如图23所示)。图23Keil调试界面点击中对应的工具按钮则可以开始调试。另外,“View”下的三个工具在调试中会经常用到如.图24所示,“DisassemblyWindow”显示C“Watch&CallStackWindow”可以显示程序中某一变量的值;“MemoryWindow”可以显示内存中某一地址的值。图24三个常用的调试工具7系统的安装与调试7.1安装步骤1.检查元件的好坏防止出现错误焊件后不便改正。2.放置、焊接各元件间不要超过10s,注意芯片的安装方向。7.2电路的调试温度采集智能家居热水器象还有很多就不一一列举了。7.3本章小结本章的主要内容是电路的测试和调试注意事项结论本设计采用51单片机+DS18B20温度传感器+继电器加热+数码管显示+功能按键组成。DS18B20测精确到0.1EEPOM有连加、减功能。方案正确、可行,各项指标稳定、可靠。参考文献1曹巧媛主编.单片机原理及应用(第二版).北京:电子工业出版社,20022全国大学生电子设计竞赛组委会编.第五届全国大学生电子设计竞赛获奖作品选编(2001),北京:北京理工大学出版社,20033何力民编.单片机高级教程.北京:北京航空大学出版社,20004金发庆等编.传感器技术与应用.北京机械工业出版社,2002551单片机C20086谭浩强著.C程序设计.北京:清华大学出版社,2007;温度采集智能家居热水器7王忠飞,胥芳.MCS-51单片机原理及嵌入式系统应用[M].西安:西安电子科技大学出版社,2007.P268-2738PeterVanDerLinden著,徐波译.C专家编程,人民邮电出版社,2003附录1整体电路原理图附录2部分源程序#include<reg52.h>#include"eepom52.h"#defineucharunsignedchar#defineuintunsignedint/***********************************本设计系统是18b20温度报警系统数码管显示,可设置温度上限高温报警和下限低温报警,报警温度可精确到0.1度,并具有掉电保存功能,数据保存在单片机内部EEPOM中,进入设置界面后如果没有键按下系统会在30秒后自动退出设置界面,人性化的按键设置,按键还具有连加、减功能。**********************************///数码管段选定义789ucharcodesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};//断码//数码管位选定义ucharcodesmg_we[]={0xef,0xdf,0xbf,0x7f};uchardis_smg[8]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};ucharsmg_i=3;//显示数码管的个位数sbitdq=P2^4;//18b20IO口的定义sbitrelay=P2^5;//继电器IO口定义sbitbeep=P2^3;//蜂鸣器IO口定义uchara_a;uinttemperature;//bitflag_300ms;温度采集智能家居热水器ucharkey_can;//按键值的变量ucharmenu_1;//菜单设计的变量uintt_high=300,t_low=100;bitflag_lj_en;//按键连加使能bitflag_lj_3_en;//按键连3次连加后使能加的数就越大了ucharkey_time,flag_value;//用做连加的中间变量bitkey_500ms;ucharflag_clock;ucharzd_break_en,zd_break_value;//自动退出设置界面/***********************1ms延时函数*****************************/voiddelay_1ms(uintq){uinti,j;for(i=0;i<q;i++)for(j=0;j<120;j++);}/***********************小延时函数*****************************/voiddelay_uint(uintq){while(q--);}/***********************数码显示函数*****************************/voiddisplay(){uchari;for(i=0;i<smg_i;i++){P3=smg_we[i];//位选P1=dis_smg[i];//段选delay_1ms(1);P3=0xff;//位选P1=0xff;//消隐}温度采集智能家居热水器}/******************把数据保存到单片机内部eepom中******************/voidwrite_eepom(){SectorErase(0x2000);byte_write(0x2000,t_high%256);byte_write(0x2001,t_high/256);byte_write(0x2002,t_low%256);byte_write(0x2003,t_low/256);byte_write(0x2055,a_a);}/******************把数据从单片机内部eepom中读出来*****************/voidread_eepom(){t_high=byte_read(0x2001);t_high<<=8;t_high|=byte_read(0x2000);t_low=byte_read(0x2003);t_low<<=8;t_low|=byte_read(0x2002);a_a=byte_read(0x2055);}/***********************18b20初始化函数*****************************/voidinit_18b20(){bitq;dq=1;//把总线拿高delay_uint(1);//15usdq=0;//给复位脉冲delay_uint(80);//750usdq=1;//把总线拿高等待delay_uint(10);//110usq=dq;//读取18b20初始化信号温度采集智能家居热水器delay_uint(20);//200usdq=1;//把总线拿高释放总线}/*************写18b20内的数据***************/voidwrite_18b20(uchardat){uchari;for(i=0;i<8;i++){//写数据是低位开始dq=0;//把总线拿低写时间隙开始dq=dat&0x01;//向18b20总线写数据了delay_uint(5);//60usdq=1;//释放总线dat>>=1;}}/*************读取18b20内的数据***************/ucharread_18b20(){uchari,value;for(i=0;i<8;i++){dq=0;//把总线拿低读时间隙开始value>>=1;//读数据是低位开始dq=1;//释放总线if(dq==1)//开始读写数据value|=0x80;delay_uint(5);//60us读一个时间隙最少要保持60us的时间}returnvalue;//返回数据}/*************读取温度的值读出来的是小数***************/uintread_temp()温度采集智能家居热水器{uintvalue;ucharlow;//18b20的时序init_18b20();//初始化18b20write_18b20(0xcc);//跳过64位ROMwrite_18b20(0x44);//启动一次温度转换命令delay_uint(50);//500usinit_18b20();//初始化18b20write_18b20(0xcc);//跳过64位ROMwrite_18b20(0xbe);//发出读取暂存器命令EA=0;low=read_18b20();//读温度低字节value=read_18b20();//读温度高字节EA=1;value<<=8;//把温度的高位左移8位value|=low;//把读出的温度低位放到value的低八位中value*=0.625;//转换到温度值小数returnvalue;//返回读出的温度带小数}/*************定时器0初始化程序***************/voidtime_init(){EA=1;//开总中断TMOD=0X01;//定时器0、定时器1工作方式1ET0=1;//开定时器0中断TR0=1;//允许定时器0定时}/****************独立按键处理函数************************/voidkey(){staticucharkey_new=0,key_old=0,key_value=0;if(key_new==0)温度采集智能家居热水器{//按键松开的时候做松手检测if((P2&0x0f)==0x0f)key_value++;elsekey_value=0;if(key_value>=10){write_eepom();key_value=0;key_new=1;flag_lj_en=0;//关闭连加使能flag_lj_3_en=0;//关闭3秒后使能flag_value=0;//清零}}else{if((P2&0x0f)!=0x0f)key_value++;//按键按下的时候elsekey_value=0;if(key_value>=7){key_value=0;key_new=0;flag_lj_en=1;//连加使能zd_break_en=1;//自动退出设置界使能zd_break_value=0;//自动退出设置界变量清零}}key_can=20;if(key_500ms==1){温度采集智能家居热水器key_500ms=0;zd_break_en=1;//自动退出设置界使能zd_break_value=0;//自动退出设置界变量清零key_new=0;key_old=1;}if((key_new==0)&&(key_old==1)){switch(P2&0x0f){case0x0e:key_can=4;break;//得到k1键值case0x0d:key_can=3;break;//得到k2键值case0x0b:key_can=2;break;//得到k3键值case0x07:key_can=1;break;//得到k4键值}}key_old=key_new;}/****************按键处理数码管显示函数***************/voidkey_with(){if(key_can==4){menu_1++;if(menu_1>=3){menu_1=0;}if(menu_1==0){dis_smg[0]=smg_du[temperature%10];//取温度的小数显示dis_smg[1]=smg_du[temperature/10%10]&0x7f;//取温度的个位显示dis_smg[2]=smg_du[temperature/100%10];//取温度的十位显示温度采集智能家居热水器smg_i=3;}if(menu_1==1){dis_smg[0]=smg_du[t_high%10];//取小数显示dis_smg[1]=smg_du[t_high/10%10]&0x7f;//取个位显示dis_smg[2]=smg_du[t_high/100%10];//取low十位显示dis_smg[3]=0x89;smg_i=4;}if(menu_1==2){dis_smg[0]=smg_du[t_low%10];//取low小数显示dis_smg[1]=smg_du[t_low/10%10]&0x7f;//取个位显示dis_smg[2]=smg_du[t_low/100%10];//取十位显示dis_smg[3]=0xc7;smg_i=4;}}if(menu_1==1)//设置高温报警{if(key_can==3){if(flag_lj_3_en==0)t_high++;//按键按下未松开自动加三次elset_high+=10;//按键按下未松开自动加三次之后每次自动加10if(t_high>990)t_high=990;dis_smg[0]=smg_du[t_high%10];//取小数显示dis_smg[1]=smg_du[t_high/10%10]&0x7f;//取个位显示dis_smg[2]=smg_du[t_high/100%10];//取十位显示dis_smg[3]=0x89;//H温度采集智能家居热水器}if(key_can==2){if(flag_lj_3_en==0)t_high--;//按键按下未松开自动加三次elset_high-=10;//按键按下未松开自动减三次之后每次自动减10if(t_high<=t_low)t_high=t_low+1;dis_smg[0]=smg_du[t_high%10];//取小数显示dis_smg[1]=smg_du[t_high/10%10]&0x7f;//取个位显示dis_smg[2]=smg_du[t_high/100%10];//取十位显示dis_smg[3]=0x89;//H}}if(menu_1==2)//设置低温报警{if(key_can==3){if(flag_lj_3_en==0)t_low++;elset_low+=10;if(t_low>=t_high)t_low=t_high-1;dis_smg[0]=smg_du[t_low%10];//取小数显示dis_smg[1]=smg_du[t_low/10%10]&0x7f;//取个位显示dis_smg[2]=smg_du[t_low/100%10];//取十位显示dis_smg[3]=0xc7;//L}if(key_can==2){if(flag_lj_3_en==0)温度采集智能家居热水器t_low--;elset_low-=10;if(t_low<=10)t_low=10;dis_smg[0]=smg_du[t_low%10];//取小数显示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论