温度检测控制系统_第1页
温度检测控制系统_第2页
温度检测控制系统_第3页
温度检测控制系统_第4页
温度检测控制系统_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

俺処<唸电子系统设计实训报告题目 温度检测控制系统 授课教师学生姓名张秀梅吕丙扬201001503043靳立松201001906006李扬201002002005专 业2010级电子信息工程教学单位物理与电子信息学院完成时间2013年6月20日

目录TOC\o"1-5"\h\z\o"CurrentDocument"一、 课题设计的目的 1\o"CurrentDocument"二、 设计的意义 1\o"CurrentDocument"三、 设计方案 2\o"CurrentDocument"四、 设计总框图 2\o"CurrentDocument"五、 设计模块电路及功能介绍 25.1STC89C52单片机最小系统 35.2温度检测模块 55.3温度报警模块一蜂鸣器 65.4温度控制模块--5V继电器 65.5流水灯模块 75.6数码管显示模块 75.7键盘输入模块 7\o"CurrentDocument"六、 软件设计流程 86.1主程序流程图 86.2读出温度子程序 96.3温度转换命令子程序 96.4计算温度子程序 96.5显示数据刷新子程序 106.6按键扫描处理子程序 10七、 实训过程7.1模块的原理图绘制 117.2PCB板的制作 127.3电路板打孔及焊接 137.4运行程序 167.5系统运行调试中存在的问题 1617八、 总结 1617附录一、 课题设计的目的单片微型计算机体积小、功能强、性价比高等特点,所以广泛应用于电子仪表、家用电器、节能装置、军事装置、机器人、工业控制等诸多领域,使产品小型化、智能化,既提高了产品的功能和质量,又降低了成本,简化了设计。本文主要介绍STC89C52单片机在温度控制中的应用。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,该设计控制器使用单片机STC89C52,测温传感器使用DS18B20,用8位LED发光管,2位数码管显示,以串口传送数据,实现温度显示,能准确达到以上要求。温度测控在工业领域具有广泛的应用,随着传感器技术等一系列相关技术的不断地发展,为智能温度测控系统功能、精度的提高和抗干扰能力的增强提供了条件。设计一种基于STC89C52单片机的温度测量系统的硬件结构及C语言程序,并且阐述其在冷库温度调控方面的应用。该系统结构具有价格低廉,精度高、微型化、抗干扰能力强、易扩展等一系列优点。二、 设计的意义在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和室内中的温度进行检测和控制。采用STC89C52单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且能大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题。在人类的生活环境中,温度扮演着极其重要的角色。温度是工业生产中常见的工艺参数之一,任何物理变化和化学反应过程都与温度密切相关,因此温度控制是生产自动化的重要任务。对于不同生产情况和工艺要求下的温度控制,所采用的加热方式,燃料,控制方案也有所不同。无论你生活在什么地方,从事什么工作,无时无刻不在与温度打着交道。自18世纪工业革命以来,工业发展对是否能掌握温度有着绝对的联系。在冶金、钢铁、石化、水泥、玻璃、医药等等行业,能说多少乎80%的工业部门都不得不考虑着温度的因素。

在这个春夏秋冬四季分明的大中国,对温度的适宜需求越来越受人们的关注,大家都讲究时尚,个性化的生活,对室内温度的需求最好要满足自己的要求想高便能高想低便低的品质生活,这就更需要一个完美的温度测控系统。三、 设计方案考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。电路比较简单,软件设计也比较简单。设计以STC89C52单片机为核心构成的单片机应用系统,整体结构采用模块化设计,以一块STC89C52单片机在主板上作为主控芯片,主板上设计有键盘与显示电路以及RS232串口电路和电路子模块与功能扩展模块的接口,通过子模块接口用户可以按需来组合所需要的子模块,完成温度测控的实现。在通信和监控上,采用PC机监控的方式,PC机和单片机以串行方式通信。并在PC机上配备有相应的仿真开发调试环境。本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。四、 设计总框图图4.1设计框图STC89C52=单片机最小系统图4.1设计框图STC89C52=单片机最小系统键盘输入模块数码管显示模块流水灯模块五、设计模块电路及功能介绍主系统由STC89C52单片机最小系统,温度检测、温度控制、温度报警模块,流水灯模块,数码管显示模块,键盘输入模块构成。5.1STC89C52单片机最小系统如图5.2:VCCS11R4R5lOuFX2C3HH30pF£GXD1920C2ClHFpini,-TvccPL1/TPOOPL2VCCS11R4R5lOuFX2C3HH30pF£GXD1920C2ClHFpini,-TvccPL1/TPOOPL2P01PL3P02PL4P03PL5P04PL6P05PL7P06KESRTP07P30ZRXDEA/VPP3L/1XDALEPP32/INT0PSENP33/INT1P27P34/T0P26P35.T1P25P36.^KP24P37;KI>P23X2P22XIP21GNDP2089S52402&vcc工H~~b~DBSDB7DB6DB5DB4DB3DB2

"dbT30pf单片机最小系统

图5.2STC89C52单片机最小系统VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为STC89C52的一些特殊功能口,如下表所示:口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INTO(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信

号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(OOOOH-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。5.2温度检测模块DS1DS18B20POZOUU>GND-||—I I—|VCCriRiIKIKDsnooBZO:亘度丰令图5.2温度检测模块DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9〜12位的数字值读数方式。DS18B20的性能特点如下:a、 独特的单线接口仅需要一个端口引脚进行通信;b、 多个DS18B20可以并联在惟一的三线上,实现多点组网功能c、 无须外部器件;d、 可通过数据线供电,电压范围为3.0~5.5V;e、 零待机功耗;f、 温度以9或12位数字;g、 用户可定义报警设置;h、 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;i、负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图4所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。5.3温度报警模块一蜂鸣器该模块只是用蜂鸣器表示。蜂鸣器响就报警。如图5.3所示:盒度衆善图5.3蜂鸣器5.4温度控制模块--5V继电器GND温度控制模块图5.45V继电器5.5流水灯模块VCC流水灯模块VCC流水灯模块图5.5流水灯模块5.6数码管显示模块由于此文重在说明DS18B20的功能及使用,所以显示部分就采用简单的数码管显示。只显示两位整数,负温度也不显示。如图5.6所示数码管显示模块:LED1LED2DpyAmber-CA DpyAmber-CALED1LED2DpyAmber-CA DpyAmber-CA数码管显示模块图5.6数码管显示模块显示电路采用2位共阳极LED数码管,P0口由上拉电阻提高驱动能力,作为段码输出并作为数码管的驱动。P2口的低四位作为数码管的位选端。5.7键盘输入模块如图:52—K1

t ■:.:■ 53—K3_1S3图封键盘输入模块

GND键盘输入模块所选按键是轻触开关。按一次S1后,会在数码管显示DS18B20内储存的温度上限。按第S2次后就能调节温度的上限,通过S3和S4来调节。按下第3次后恢复到温度的显示。S2是调节温度下限的。操作方法和S1一样。六、软件设计流程6.1主程序流程图主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图3.1所示。图6.1主程序流程图6.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图6.2示6.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用Is显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图6.3所示图6.2读温度流程图发DS18B20图6.2读温度流程图发DS18B20复位命令1发跳过ROM命令1F发温度转换开始命令结束图6.3温度转换流程图6.4计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图6.4所示。

6.5显示数据刷新子程序显示数据刷新子程序主要是对分离后的温度显示数据进行刷新操作,当标志位位为1时将符号显示位移入第一位。程序流程图如图3.5。图6.4计算温度流程图 图6.5显示数据刷新流程图6.6按键扫描处理子程序按键采用扫描查询方式,设置标志位,当标志位为1时,显示设置温度,

七、实训过程我们确定课题《温度检测控制系统》后,我们实际调研、查阅相关资料。然后方案论证与可行性研究,熟悉控制系统功能、设计整体思路。对整体思路进行分析、划分功能模块,画出每个模块的程序流程图。调试系统已划分好模块的功能,系统控制界面编程。继续完成代码部分的编写,并进行调试。完成报告(收集资料,构思报告,撰写报告)。7.1模块的原理图绘制利用Altiumdesigner软件进行原理图的绘制。如下图所示:¥AltiumDesignerRelease10(Platform10.589.22577)-C:\Users\admin\Desktop\电子系统设计课程设计\张養梅课程设计统设计硬件谣统设计.SchDoc*-FreeDocuments,LicensedtoYourName-Subscriptionexpire」口|同HDX?1文件CD猶⑥察看GO工程©雄(BtSt+CD]IMCD仿真器⑸报告®®D(W)帮助凹 g翅▼g■▼土▼(l・O聲*¥C:\Users\admin\Desktop\m^十◎*b”卒图7.1.1原理图原理图绘制好,生成PCB,执行更改并确认无误后,对所生成的PCB自动布线,根据10*10厘米的电路板的具体尺寸和实际元件、线的尺寸布局,采用通孔直径0.8mm,线宽1.0mm。所得PCB如下图所示:TOC\o"1-5"\h\zSAltiumDesignerRelease10(Platform10.589.22577)-C:\User4\adtnin\Detktop\昌孚4*r.PcbDoc-FreeDoeuments.LicencedtoVourName-Subscriptionexpired.Notsignedin. [口|[LJggIGq|*咧I3阂Q-NI話门』占|I二]+::>: |sr-IXI(£1I(NotSaved) ▼[庐卞MO护G口理A嘯jI ▼ ▼FiespropelsNavigatiTPCBPCBFitErFiespropelsNavigatiTPCBPCBFitErK1211.EO7dxzG.9GOmmktNS5Fdy=1-448«wmf=iT89S32oi——RQ•、=eH~R^i-^■•-r-Rs-i-o **■e<ZBZ3-•—*

•HR11YERO-Ii-»g 1-^OHZ=bO\^siR2•&::::图7.2.2PCB板

7.2PCB板的制作打印PCB图(如图7..2.1所示)放进曝光箱里进行曝光,需要注意的是曝光时间须在120秒以上并且注意胶片的正反两面以确保曝光的正确性,待曝光箱发出提示声后取出电路板,如图7..2.2所示:图7..2.1打印PCD 图7..2.2PCB板曝光电路板取出后,把板子放进脱膜溶液中,用刷子不断的刷板子,刷掉蓝油,直到板子上只剩下附有曝光后蓝油的PCB线为止,但应注意刷的时间短些以确保PCB线不被刷断和刷掉。刷版完成后进行对电路板的腐蚀,在腐蚀之前用绳子将板子捆好然后再放进腐蚀机里,腐蚀过程大约需要持续2-5分钟,等到板子上的铜完全被腐蚀。如图7.2.3所示:图7..2.3电路板腐蚀

7.3电路板打孔及焊接根据电路板的焊盘位置和大小进行打孔。特别强调的是STC89C52管脚比较多,插口的针孔一定要对齐,对后续焊接工作减少不必要的麻烦。图7..3.1电路板打孔原件安插完毕后进行电路板的焊接,在焊接的过程中注意不能虚焊,不能使焊接连成一片。如图7.7和图7.8所示:图7..3.2图7..3.2电路板正面图7.3.3电路板反面7.4运行程序详见附录7.5系统运行调试中存在的问题焊接完毕之后进行元器件的检查通常出现以下情况:对照原理图以及PCB电路图,检测是否有焊接错误,线路连接错误。轻摇元器件,查元件脚是否虚焊,通过晃动检测是否有虚焊的情况。用万用表测脚与相连点的阻值,检测能电路是否正常通路。通电测关键点的电压值,检查是否有已损坏的器件需要更换。软件调试中将如附处编写的C语言程序导入单片机,将单片机连接电源,观察单片机控制下运行过程和二极管的闪烁情况和温度报警值是否和预先设计的情况,如果不一致在C++环境中进行程序的改正并且重新运行,直至结果和预先设计的相同。八、总结实训结束了,我们依然沉浸在实训的热情之中。在实训中我们我们整体规划,分阶段、分任务完成。构思整体温度检测模块,分开温度检测、控制、报警模块,STC89C52最小单片机模块,我们熟悉掌握了AltiumDesign软件绘制电路原理图,理解了简单单片机的工作原理和控制方式。在程序编写中,学会了温度控制程序的编写。通过这次实训,我们学到了很多。检验了我们所学的知识,增强了我们动手能力,让理论知识与实际结合起来。感谢老师和同学们的悉心指导。同时,这次实训让我们懂得了怎么去配合做事,怎样的太多去对待一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.(DQ1==O)//定义busy信号(DQ1==O)//定义busy信号〃定义18B20单总线引脚〃定义数码管控制脚〃定义蜂鸣器驱动管脚〃定义继电器控制位〃定义按键控制位〃定义LED管脚}/***************18B20初始化函数附录:程序#include<AT89X52.H>#include"INTRINS.H"#defineBUSY1sbitDQ1=P2A2;sbitLED_0=P2A6;sbitLED_1=P2A7;sbitFM=P2A4;sbitWARN=P2A3;sbitS0=P1A4;sbitS1=P1A5;sbitS2=PM6;sbitS3=P1A7;sbitD0=P1A0;sbitD1=P1A1;sbitD2=P1A2;sbitD3=P1A3;voiddisplay(unsignedchard1,unsignedchard2);〃声明显示函数voidds_reset_1(void); 〃声明18B20复位函数voidwr_ds18_1(chardat);〃声明18B20写入函数voidtime_delay(unsignedchartime);〃声明延时函数intget_temp_1(void);〃声明18B20读入温度函数voidread_ROM(void);〃声明18B20读ROM函数intget_temp_d(void); 〃声明获取温度函数voidds_init(void); 〃声明18B20初始化函数voidds_getT(void);〃声明18B20获得温度显示值函数voidwarn(void); 〃报警降温函数voidkey(void); 〃按键函数/*定义数码管段码=====0-9==========*/unsigned chara[10]={0x12,0xbe,0x83,0x86,0x2e,0x46,0x42,0x9e,0x02,0x06};〃共阳极数码管的段码0123456789/****************以下定'义各币中^变-量unsignedcharResultSignal;intResultTemperatureLH,ResultTemperatureLL,ResultTemperatureH;unsignedcharROM[8];unsignedcharidataTMP;unsignedcharidataTMP_d;unsignedcharf;unsignedcharrd_ds18_1();unsignedintTemH; //温度的整数部分unsignedintnum1=35,num2=0;unsignedintcount=0,count0=0;unsignedintD=0xfe;voidmain(){TMOD=0x11;〃设置定时器0为工作方式1TH0=65536/128;TL0=65536%128;ET0=1;//开定时器0中断TR0=1;〃启动定时器0ds_init(); //18B20初始化while(1){ds_getT();〃使用该函数获得温度,整数部分存储到TemH,小数部分存储到count的低8位display((TemH/10)%10,TemH%10);//温度发送到数码管显示warn();key();voidds_init(void){unsignedintk=0;ds_reset_1();ds_reset_1(); //resetwr_ds18_1(0xcc); //skip

rom_nop_();wr_dsl8_l(0x7f);ds_reset_l();wr_ds18_1(Oxcc);_nop_();wr_ds18_1(0x44);for(k=0;k<11000;k++)time_delay(255);ds_reset_1();}voidds_getT(void){wr_ds18_1(0xcc);wr_ds18_1(0xbe);TemH=get_temp_1();TemH&=OxOOff;}voidcheck_pre_1(void){while(DQ1);while(~DQ1);time_delay(30);}voidread_ROM(void){intn;ds_reset_1();check_pre_1();wr_ds18_1(0x33);for(n=0;n<8;n++){ROM[n]=rd_ds18_1();}}单位单位US,大于/***************j延时 ^序,10us*************/voidtime_delay(unsignedchartime){time=time-10;time=time/6;while(time!=O)time--;}/**//*resetds18b20*/Readabitfrom1820位读取bittmrbit_1(void){idatachari=0;bitdat;DQ1=0;_nop_();DQ1=1;time_delay(50);time_delay(50);voidds_reset_1(void){unsignedcharidatacount=0;DQ1=0;time_delay(240);time_delay(240);DQ1=1;return;}_nop_();_nop_();_nop_();dat=DQ1;returndat;}/*readabetyfromdsl8b20字节/* writeabetyfromds18b20/*readabetyfromdsl8b20字节/* writeabetyfromds18b20写字节*/*/读取*/unsignedcharrd_ds18_1(){unsignedcharidatai,j,dat=O;for(i=1;i<=8;i++){j=tmrbit_1();dat=(j<<(i-1))|dat;}returndat;voidwr_ds18_1(chardat){signedcharidatai=0;unsignedcharidataj;bittestb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb){DQ1=0;_nop_();_nop_();DQ1=1;time_delay(60);}else{DQ1=0;time_delay(50);DQ1=1;_nop_();_nop_();}}}intget_temp_1(void){unsignedcharidataa=0,b=0;unsignedcharidatai;EA=0;ds_reset_1();check_pre_1();wr_ds18_1(0xcc);wr_ds18_1(0x44);while(BUSY1);ds_reset_1();check_pre_1();wr_ds18_1(0xcc);wr_ds18_1(0xbe);a=rd_ds18_1();b=rd_ds18_1();i=b;/*若b为1则为负温i=(i>>4);if(i==0){f=0;TMP=((a»4)|(b<<4));a=(a&0x0f);if(a>8){TMP=(TMP+1);}}else{f=1;a=a>>4;b=b<<4;b=b<<4;TMP=(alb);TMP=〜TMP;TMP=(TMP+1);}EA=1;return(TMP);}intget_temp_d(void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论