基于无线传感器网路的温度采集显示系统设计.doc_第1页
基于无线传感器网路的温度采集显示系统设计.doc_第2页
基于无线传感器网路的温度采集显示系统设计.doc_第3页
基于无线传感器网路的温度采集显示系统设计.doc_第4页
基于无线传感器网路的温度采集显示系统设计.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

基于无线传感器网路的温度采集显示系统设计基于无线传感器网路的温度采集显示系统设计232.4 基于无线传感器网络的温度采集显示系统设计发送端的功能:采集温度,处理数据,无线传输 接收端的功能:无线接收数据,处理数据,显示数据两部分的大致组成即:发送端的组成:温度传感器,微处理器,无线发射芯片接收端的组成:无线接收模块,微处理器,显示模块2.4.1 发送端的设计单个的发送端的系统框图如图3所示。其中,温度传感器采用了美国Dallas公司的DS18B20数字式温度传感器,微处理器采用采用Atmel公司的单片机AT89C52,无线收发芯片采用Ptr8000无线收发模块。 温度传感器DS18B20微处理器AT89C52无线收发模块Ptr8000图3 发送端系统框图2.4.2接收端的设计无线收发模块Ptr8000微处理器AT89C52显示部分图4 接收部分系统框图3 系统硬件电路分析 本系统实现的无线温度采集显示是由两片板子组成的。温度采集是一个独立的控制系统,它由单片机、温度传感器、复位电路、无线传输模块组成,实现温度的采集发送。另外一片板子是用来接收温度并显示和报警的,它由单片机、复位电路、报警电路、无线传输模块、数码管显示模块组成。用编程实现两片板子之间的温度通信,从而实现温度的短距离无线传输。当温度在设置的报警上下限之内,数码管只管输出接收到的温度,当温度超限的话,微处理器就会从P1.7口输出高电平,控制打铃报警。系统的硬件结构框图如图5所示:3.1 系统电源部分电源部分设计比较简单,由于无线传输的低功耗功能,系统的电源采用电池供电,可以用一块供电稳定的3.7v锂离子电池,或者用可充电干电池三节,以节省资源,并可以使其可长期使用。发射端接收端温度传感器微处理器无线发射芯片微处理器显示无线发射芯片图5 系统总体结构框图3.2 系统温度采集部分电路设计系统的温度采集部分采用美国Dallas公司的DS18B20数字式温度传感器,它用独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。在本系统中采用DS18B20作为温度采集模块。3.2.1 DS18B20简介DS18B20是美国DALLAS公司生产数字温度传感器芯片。DS18B20的封装形式如图6所示:图6 DS18B20的封装1、DS18B20的主要特性:(1)、适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电 (2)、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯 (3)、 DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温 (4)、DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内 (5)、温范围55125,在-10+85时精度为0.5 (6)、可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温 (7)、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快 (8)、测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力 (9)、负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 2、DS18B20的外形和内部结构:DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。3、DS18B20引脚定义: (1)、DQ为数字信号输入/输出端; (2)、GND为电源地; (3)、VDD为外接供电电源输入端(在寄生电源接线方式时接地)。4、DS18B20的计数特性:DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。 高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。 初始时,温度寄存器被预置成-55,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1,这个过程重复进行,直到计数器2计数到0时便停止。初始时,计数器1预置的是与-55相对应的一个预置值。以后计数器1每一个循环的预置数都由斜率累加器提供。为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1计数器所需要的计数个数。 DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25进行比较,若低于0.25,温度寄存器的最低位就置0;若高于0.25,最低位就置1;若高于0.75时,温度寄存器的最低位就进位然后置0。这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最后位代表0.5,四舍五入最大量化误差为1/2LSB,即0.25。 温度寄存器中的温度值以9位数据格式表示,最高位为符号位,其余8位以二进制补码形式表示温度值。测温结束时,这9位数据转存到暂存存储器的前两个字节中,符号位占用第一字节,8位温度数据占据第二字节。 DS18B20测量温度时使用特有的温度测量技术。DS18B20内部的低温度系数振荡器能产生稳定的频率信号;同样的,高温度系数振荡器则将被测温度转换成频率信号。当计数门打开时,DS18B20进行计数,计数门开通时间由高温度系数振荡器决定。芯片内部还有斜率累加器,可对频率的非线性度加以补偿。测量结果存入温度寄存器中。一般情况下的温度值应该为9位,但因符号位扩展成高8位,所以最后以16位补码形式读出。 DS18B20工作过程一般遵循以下协议:初始化ROM操作命令存储器操作命令处理数据。(1)初始化 单总线上的所有处理均从初始化序列开始。初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲。存在脉冲让总线控制器知道DS1820 在总线上且已准备好操作。 (2) ROM操作命令 一旦总线主机检测到从属器件的存在,它便可以发出器件ROM操作命令之一。所有ROM操作命令均为8位长。这些命令列举如下: Read ROM(读ROM)33h 此命令允许总线主机读DS18B20的8位产品系列编码,唯一的48位序列号,以及8位的CRC。此命令只能在总线上仅有一个DS18B20的情况下可以使用。如果总线上存在多于一个的从属器件,那么当所有从片企图同时发送时将发生数据冲突的现象(漏极开路会产生线与的结果)。 Match ROM( 符合ROM)55h 此命令后继以64位的ROM数据序列,允许总线主机对多点总线上特定的DS18B20寻址。只有与64位ROM序列严格相符的DS18B20才能对后继的存贮器操作命令作出响应。所有与64位ROM序列不符的从片将等待复位脉冲。此命令在总线上有单个或多个器件的情况下均可使用。 Skip ROM( 跳过ROM )CCh 在单点总线系统中,此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间。如果在总线上存在多于一个的从属器件而且在Skip ROM命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突(漏极开路下拉会产生线与的效果)。 Search ROM( 搜索ROM)F0h 当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。 Alarm Search(告警搜索)ECh 此命令的流程与搜索ROM命令相同。但是,仅在最近一次温度测量出现告警的情况下,DS18B20才对此命令作出响应。告警的条件定义为温度高于TH 或低于TL。只要DS18B20一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值或者改变TH或TL的设置,使得测量值再一次位于允许的范围之内。贮存在EEPROM内的触发器值用于告警。 3.2.2 测温系统电路连接系统的测温部分用DS18B20芯片来完成,由于DS18B20有两种封装形式,在这里我们选择八引脚SOSI封装,其引脚情况如图7所述。它与单片机的连接电路如图7所示:图7 DS18B20与单片机连接图3.3 系统显示部分电路设计我们最常用的显示是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。此次设计所用到的数码管接法就是共阳极接法。 而现实中经常用到的数码管是制作成的数码管芯片它将二极管集成到一个小芯片上,这样可以直观的显现0-9的数字,它的样式如图8所示:图8 八段数码管共阳极的数码管0f的段编码是这样的:unsigned char code table= /共阳极0f数码管编码0xc0,0xf9,0xa4,0xb0,/030x99,0x92,0x82,0xf8,/470x80,0x90,0x88,0x83,/8b0xc6,0xa1,0x86,0x8e /cf;本系统中采用四片数码管显示温度值,由于数码管的驱动电流别较大,因此可以采用驱动芯片来产生足够大的驱动电流,以驱动数码管。我们选用74系列的驱动芯片,有74LS273芯片、75452、7407、74LS02、74LS04等芯片。具体的连接图参见附录1 硬件电路图设计。3.4 系统无线传输部分电路设计系统的主要部分是无线传输部分,它负责信息的传递,实现单片机之间的交流,其功能相当于有线系统中的导线。在这里我们选用常见的无线传输芯片PTR8000。它的示意图如图9所示:DRAMCDMISOMOSISCKCSNPWRTRX-ENTXENPin4Pin3Pin8Pin7Pin6Pin12Pin11Pin10Pin9Pin2模式控制SPI接口状态输出PTR8000图9 PTR8000输出口图中给出了PTR8000的用户接口,该接口由10个数字输入/输出I/O组成。按照工作可分为三种:1、 模式控制该接口由TRX-CE,TX-EN,PWR组成,控制PTR8000的四种工作模式:掉电和SPI编程模式;待机和SPI编程模式;发射模式;接受模式;各种模式的控制模式见下表1:表1 PTR8000的控制模式PWRTRX-CETX-EN工作模式0XX掉电和SPI编程模式10X待机和SPI编程模式110接收111发射说明:(1)待机模式下功耗约为40微安,此时发射接收电路均关闭,只有SPI接口工作。(2)掉电模式下功耗约为2.5微安,此时所有电路关闭,进入最省电状态。(3)在待机和掉电模式下PTR8000均不能接收,发送数据,可以进行配置。2、SPI接口SPI 接口由SCK、MISO、MOSI以及CSN组成:(1) 在配置模式下,单片机通过SPI接口配置PTR8000的工作参数;(2) 在发射/接收模式下,单片机SPI接口发送和接收数据;3、状态输出接口提供载波检测输出CD,地址匹配输出AM,数据就绪输出DR。PTR8000的引脚功能如下表2所示:表2 PTR8000的引脚功能管脚功能方向Pin1VCC正电源1.9-3.6V输入IPin2TXENTXEN=“1”发射模式,“0”接收模式IPin3TRX-CE使能发射/接收模式(区别于配置模式)IPin4PWRPower down模式IPin5uCLK时钟分频输出OPin6CD载波检测输出OPin7AM地址匹配输出OPin8DR数据就绪输出OPin9MISOSPI输出OPin10MOSISPI输入IPin11SCKSPI时钟IPin12CSNSPI使能,低有效IPin13GND电源地Pin14GND电源地由于与RF协议相关的高速信号处理部分已经嵌入在模块内部PTR8000可与各种低成本单片机配合使用也可以与DSP等高速处理器配合使用PTR8000提供一个SPI 接速率由微控制器自己设定的接口速度决定在RX模式中地址匹配AM和数据准备就绪DR信号通知MCU一个有效的地址和数据包已经各自接收完成微控制器即可通过SPI读取接收的数据在TX模式中PTR8000自动产生前导码和CRC校验码数据准备就绪DR信号通知MCU数据传输已经完成这意味着降低MCU的存储器需求也就是降低MCU成本同时缩短软件开发时间。1、配置编程上电以后MCU首先配置PTR8000模块先将PWR TXEN TRX_CE设为配置模式,MCU通过SPI将配置数据移入PTR8000模块在掉电和待机模式工作后配置内容仍然有效配置数据只有当电源撤除后才会丢失。2、发射模式(1)当MCU有数据需要发往规定节点时接收节点的地址TX-address和有效数据TX-payload通过SPI接口传送给PTR8000应用协议或MCU设置接口速度。(2)MCU设置TRX_CE TX_EN为高来启动传输(3)PTR8000内部处理n无线系统自动上电数据包完成加前导码和CRC校验码数据包发送100kbps GFSK曼切斯特编码。(4)如果AUTO_RETRAN被设置为高PTR8000将连续地发送数据包直到 TRX_CE被设置为低。(5)当TRX_CE被设置为低时PTR8000结束数据传输并将自己设置成待机模式。发射模式时序图如图10所示:图10 PTR8000发送时序图3、接收模式(1)通过设置TRX_CE高TX_EN 低来选择RX模式2 650us以后PTR8000监测空中的信息。(2)当PTR8000发现和接收频率相同的载波时载波检测CD被置高。(3)当PTR8000接收到有效的地址时地址匹配AM被置高。(4)当PTR8000接收到有效的数据包CRC校验正确时PTR8000去掉前导码地址和CRC位。数据准备就绪DR被置高(5)MCU设置TRX_CE低进入standby模式待机模式。(6)MCU可以以合适的速率通过SPI接口读出有效数据。(7)当所有的有效数据被读出后PTR8000将AM和DR置低。接收模式时序图如图11所示:图11 PTR8000接收时序图3.5 系统报警电路系统的报警电路采用一个三极管9013和一个电铃组成,其电路图如图12所示:图12 报警电路其中,S2的功能时手动接触报警按钮,电铃为报警器, P1.7输出报警信号。放大器的输出端。4 系统软件设计本无线温度采集传输系统的软件设计主要包括:芯片的初始化、PTR8000收发模块的设置、AT89C52的数据处理程序。它有两个板子,因此程序的设计需要两个。第一个主要控制温度采集和传输,第二个主要控制接收信息并通过数码管显示出来。4.1 发送端程序流程图系统的发送端流程图主要包括:处理器初始化、DS18B20的初始化、PTR8000初始化等。其流程图如下图14所示:4.2 接收端程序流程图接收端主要有微处理器、PTR8000,PTR8000接收到的数据经过微处理器的处理变成可供显示的量,在数码管上进行显示。它的流程图如下图15所示:4.3 DS18B20的软件设计DS18B20采用单总线数据传输方式,对读写的操作时序要求严格。DS18B20提供了一系列指令来控制传感器的工作,利用这些指令就可以对DS18B20进行操作了。为了操作方便,可编写两个操作函数。源码如下程序所示:启动DS18B20的1次温度转换否是AT89C52初始化开始PTR8000初始化PTR8000设置为发射状态是否有数据输入AT89C52数据处理数据送至PTR8000PTR8000发送图14 发送端流程图void ConvertT(void) RST18B20( ); /初始化WR18B20(0xcc); /跳过多传感器识别 WR18B20(0x44); /启动温度转换/读取DS18B20int ReadT(void)否是开始AT89C52初始化PTR8000初始化PTR8000设置为接收方式是否有数据输入AT89C52等待数据处理数据显示图15 接收端流程图RST18B20( ); /初始化WR18B20(0xcc); /跳过多传感器识别WR18B20(0xbe); /读DS18B20缓存器DPL=RD18B20( ); /温度低位DPH=RD18B20( ); /温度高位return(DPTR); /返回读出的温度值4.4 PTR8000的程序设计PTR8000的初始化程序比较固定,只需定义它的每个接口,然后由单片机对它进行控制,实现无线传输。它初始化端口定义下程序所示:/配置口定义/sbit TXEN=P2.0;sbit TRX_CE =P2.1;sbit PWR=P2.2;/SPI口定义/sbit MISO=P1.0;sbit MOSI=P1.1;sbit SCK= P1.2;sbit CSN =P1.3;/状态输出口/sbit AM =P2.4;sbit DR=P2.5;uchar da=0;/RF寄存器配置/unsigned char idata RFConf11= 0x00, /配置命令/ 0x6C, /CH_NO,配置频段在433.2MHZ 0x0E, /输出功率为10db,不重发,节电为正常模式 0x44, /地址宽度设置,为4字节 0x03,0x03, /接收发送有效数据长度为3字节 0xE7,0xE7,0xE7,0xE7, /接收地址 0xC0, /CRC充许,16位CRC校验16M晶振附 录附录1 系统硬件电路图附1:系统接收显示硬件电路图附2:温度采集模块硬件电路图附录2 系统程序1:发送部分程序#include #include #include #include #define uint unsigned int#define uchar unsigned char/配置口定义/sbit TXEN=P2.0;sbit TRX_CE =P2.1;sbit PWR=P2.2;/SPI口定义/sbit MISO=P1.0;sbit MOSI=P1.1;sbit SCK=P1.2;sbit CSN=P10;/状态输出口/sbit AM =P2.4;sbit DR=P2.5;uchar da=0;/*/RF寄存器配置/unsigned char idata RFConf11= 0x00, /配置命令/ 0x6C, /CH_NO,配置频段在433.2MHZ 0x0E, /输出功率为10db,不重发,节电为正常模式 0x44,/地址宽度设置,为4字节 0x03,0x03, /接收发送有效数据长度为3字节 0xE7,0xE7,0xE7,0xE7,/接收地址 0xC0, /CRC充许,16位CRC校验16M晶振; uchar TxRxBuffer5;/延时/void Delay(uint x) uint i; for(i=0;ix;i+) _nop_(); void SpiWrite(unsigned char b) unsigned char i=8; while (i-) Delay(10); SCK=0; MOSI=(bit)(b&0x80); b=1 ; Delay(10); SCK=1; Delay(10); SCK=0; SCK=0;/from 905 read data/unsigned char SpiRead(void) register unsigned char i=8; unsigned char ddata=0; while (i-) ddata=1 ; SCK=0; Delay(20); ddata|=MISO; SCK=1 ; Delay(20); SCK=0; return ddata;/接收数据包/void RxPacket(void) uchar i; i=0; while(DR) TxRxBufferi = SpiRead(); i+; ;写发射数据命令:20H;读发射数据命令:21H;写发射地址命令:22H;读发射地址命令:23H;读接收数据命令:24Hvoid TxPacket(uchar da) PWR=1; TXEN=1; CSN=0; SpiWrite(0x22); /写发送地址,后面跟4字节地址/ SpiWrite(0xE7); SpiWrite(0xE7); SpiWrite(0xE7); SpiWrite(0xE7); CSN=1; Delay(2); CSN=0; SpiWrite(0x20); /写发送数据命令,后面跟三字节数据/ SpiWrite(da); /SpiWrite(+da); /SpiWrite(+da); /SpiWrite(0x44); /SpiWrite(0x45); CSN=1; Delay(2); TRX_CE=1; /使能发射模式/ Delay(100); /等带发送完成/while(!DR); TRX_CE=0;/等待接收数据包/uchar temp;void Wait_Rec_Packet(void) TXEN=0; TRX_CE=1;PWR=1;Delay(1000); while(1) /if (LCD=1) P0=P0; if(DR) /P0=P0; TRX_CE=0; /如果数据准备好,则进入待机模式,以便SPI口操作 CSN=0; SpiWrite(0x24); RxPacket(); CSN=1; temp=TxRxBuffer0+TxRxBuffer1+TxRxBuffer2; if(temp=0x06) lcdbit=!lcdbit; LCD=lcdbit; P0=P0; /如果接收的数据正确 break; /初始化配置寄存器/void Ini_System(void)uchar i; CSN=1; SCK=0; PWR=1; TRX_CE=0; TXEN=0; Delay(2); CSN=0;SpiWrite( 0x00); /配置命令/ SpiWrite( 0x6C); /CH_NO,配置频段在433.2MHZ SpiWrite( 0x0C); /输出功率为10db,不重发,节电为正常模式 SpiWrite( 0x44); /地址宽度设置,为4字节 SpiWrite( 0x01);SpiWrite( 0x01); /接收发送有效数据长度为1字节 SpiWrite( 0xE7);SpiWrite( 0xE7);SpiWrite( 0xE7);SpiWrite( 0xE7); /接收地址 SpiWrite( 0xDE); for(i=0;i11;i+) SpiWrite(RFConfi); CSN=1; PWR=1; TRX_CE=0; TXEN=0; Delay(1000);void main(void)Ini_System();PWR=0;/P0=0;DR=1;/TxPacket(); while(1) /Wait_Rec_Packet(); /等待接收完成/ for(i=0;i2;i+)/ Delay(65530);TxPacket(da); Delay(5000); Delay(5000);Delay(5000); Delay(5000); Delay(5000); da+;P0=P0; 2.接收部分程序#include #include #include #include #define uint unsigned int#define uchar unsigned charuchar num3;/配置口定义/sbit TXEN=P15;sbit TRX_CE=P35;sbit PWR=P14; /SPI口定义/sbit MISO=P17;sbit MOSI=P11;sbit SCK=P16;sbit CSN=P10;/sbit P2_0 = P20;/状态输出口/sbit AM =P33;sbit DR=P12;sbit LCD=P13;/*/RF寄存器配置/unsigned char idata RFConf11= 0x00, /配置命令/ 0x6C, /CH_NO,配置频段在433.2MHZ 0x0C, /输出功率为10db,不重发,节电为正常模式 0x44, /地址宽度设置,为4字节 0x03,0x03, /接收发送有效数据长度为3字节 0xE7,0xE7,0xE7,0xE7, /接收地址 0xC0, /CRC充许,16位CRC校验16M晶振;uchar TxRxBuffer5;/延时/void Delay(uint x) uint i; for(i=0;ix;i+) _nop_(); void SpiWrite(unsigned char b) unsigned char i=8;SCK=0; while (i-) Delay(10); MOSI=(bit)(b&0x80); b=1 ; Delay(10); SCK=1; Delay(10); SCK=0; SCK=0;unsigned char SpiRead(void) register unsigned char i=8; unsigned char ddata=0;SCK=0; while (i-) ddata=1 ; ddata|=MISO; SCK=1 ; Delay(10); SCK=0 ; Delay(10); SCK=0; return ddata;void RxPacket(void) uchar i; i=0; while(DR) TxRxBuffer0 = SpiRead(); /i+; ;写发射数据命令:20H;读发射数据命令:21H;写发射地址命令:22H;读发射地址命令:23H;读接收数据命令:24H/*void TxPacket(void) PWR=1; TXEN=1; CSN=0; SpiWrite(0x22); /写发送地址,后面跟4字节地址/ SpiWrite(0xE7); SpiWrite(0xE7); SpiWrite(0xE7); SpiWrite(0xE7); CSN=1; Delay(2); CSN=0; SpiW

温馨提示

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

评论

0/150

提交评论