基于AT89C2051的电子闹钟设计_第1页
基于AT89C2051的电子闹钟设计_第2页
基于AT89C2051的电子闹钟设计_第3页
基于AT89C2051的电子闹钟设计_第4页
基于AT89C2051的电子闹钟设计_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、基于AT89C2051的电子闹钟设计电子闹钟的电路基本应包括秒指示电路、时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分。4.1电子闹钟的硬件系统框架电子闹钟的系统框架如图4-1示。按键与按钮电路复位等辅助电路位数码管显示电路闹铃声光指示电路电源系统图4-1时钟系统电路原理框图4.2电子闹钟电路的设计及原理电子闹钟电路的设计具体地说有:1.闹铃指示电路设计;2.系统时钟电路设计;3.电子闹钟的显示电路设计;4.系统复位电路设计。以下分别讨论:4.2.1闹铃指示电路的设计图4-2 闹铃指示电路闹铃指示可以有声或光两种形式。本系统采用声音指示,其电路如图4-2所示。其关键元件是蜂鸣器。蜂鸣

2、器有无源和有源两种,前者需要输入声音频率信号才能正常发声,后者则只需外加适当直流电源电压即可,元件内部已封装了音频振荡电路,在得电状态下即起振发声。给予本电路的特点及实现功能的要求,我们选用有源的蜂鸣器。4.2.2系统时钟电路设计振荡电路用于产生单片机工作所需要的时钟信号。单片机内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2 。在芯片的外部有XTAL1和XTAL2之间跨接的晶体振荡器和微调电容,共同构成了一个稳定的自激振荡器。图中的C1、C2电容起着系统时钟频率微调和稳定的作用,因此,应正确选择参数(30±10 pF),并保证其对称性。实验表明,这2

3、个电容元件对闹钟的±走时误差有较大关系。图4-3系统时钟电路4.2.3 电子闹钟的显示电路设计译码是编码的逆过程,在编码时,每一种二进制代码状态都赋予了特定的含义,即都表示了一个确定的信号或者对象。把代码状态的特定含义“翻译”出来的过程叫做译码,实现译码操作的电路称为译码器。本设计采用显示译码器作为译码电路。在数字系统和装置中,显示器和译码器配合使用,或者直接利用译码器驱动显示器,这类译码器叫做显示译码器。本设计采用74LS47译码电路。图4-4 74LS47引脚图中规模集成电路74LS47,是一种常用的七段显示译码器,该电路的输出为低电平有效,即输出为0时,对应字段点亮;输出为1时

4、对应字段熄灭。该译码器能够驱动七段显示器显示015共16个数字的字形。输入A3、A2、A1和A0接收4位二进制码,输出Qa、Qb、Qc、Qd、Qe、Qf和Qg分别驱动七段显示器的a、b、c、d、e、f和g段。74LS47是输出低电平有效的七段字形译码器,它在这里与数码管配合使用。在数字钟电路中,译码器的输入信号就是计数器的输出信号,它的输出端接至数码管。计数器输出的四位BCD码经译码后,变成某个十进制数字对应的控制电平,去驱动数码管各段发光,从而把该数字显示出来。8421BCD码译码器74LS47真值表见表4-1。由表可看出,74LS47的输出为一组七位二进制代码,有效信号为低电平。而共阳极数

5、码管,要求输入为低电平,正好与74LS47的输出电平极性相适配。不必另加反相器。部分引脚功能LT:试灯输入,是为了检查数码管各段是否能正常发光而设置的。当LT=0时,无论输入A3 ,A2 ,A1 ,A0为何种状态,译码器输出均为低电平,若驱动的数码管正常,是显示8。BI:灭灯输入,是为控制多位数码显示的灭灯所设置的。BI=0时。不论LT和输入A3 ,A2 ,A1,A0为何种状态,译码器输出均为高电平,使共阳极7段数码管熄灭。RBI:灭零输入,它是为使不希望显示的0熄灭而设定的。当对每一位A3= A2 =A1 =A0=0时,本应显示0,但是在RBI=0作用下,使译码器输出全1。其结果和加入灭灯信

6、号的结果一样,将0熄灭。 RBO:灭零输出,它和灭灯输入BI共用一端,两者配合使用,可以实现多位数码显示的灭零控制。表 4-1 74LS47真值表字型输入输出NA4A3A2A1abcdefg000000000001100011001111200100010010300110000110401001001100501010100100601010100000701100001111810000000000910010000100最终的显示部分电路图如图所示图4-5 时钟电路的显示电路4.2.4系统复位电路的设计复位电路通常有:1)RC复位电路;2)专用µP监控电路。本设计采用的是RC上

7、电复位电路。RC上电复位电路的实质是一阶充放电电路,系统上电时该电路提供有效的复位信号RST(高电平)直至系统电源稳定后撤销复位信号(低电平)。图4-6C复位电路4.3电源设计 图4-7闹钟的电源系统原理图AT89C2051通常有12v和24v两种型号,对应的时钟频率分别为12MHz和24MHz。考虑到交直流两用的要求和三端稳压电路选用的方便,选择工作电压为5V。ST公司的7805三端稳压芯片最接近标称值(最大输出电流为1.5A)。在设计中,必须保证7805的输入电压Vi和输出电压Vo满足ViVo2.5V,否则失去稳压能力,从功耗角度,此压差太大则增加7805本身功率消耗。因此,选为9V。交流

8、220V电压经TR1降压后,经BR1整流、C3和C6滤波及7805稳压后输出。当交流电源失电或失效时,则自动启用电池组作为备用电源。电压为6V的直流电源通过二极管作用。4.4电子闹钟硬件系统原理图P3.0口接时+键,来控制显示小时的设置。P3.0初始状态为1,每按一次按键,此时显示的时个位加1。P3.1口接分+键,来控制显示分钟的设置。P3.1初始状态为1,每按一次按键,此时显示的分个位加1。P3.2口接定时按键。在电子钟正常走时状态下,P3.2为高电平,按定时键,P3.2变为低电平,触发定时系统,此时可以设置闹铃时间,设置完成后再按确定/ 叫停键即可。P3.3口接12小时/24小时开关,来根

9、据需求选择合适的时间制式。未按开关时,P3.3为高电平,此时为12小时制式;按下开关,P3.3变为低电平,此时为24小时制式。P3.4口接蜂鸣器。P3.4初始状态为1,此时蜂鸣器不响。当到达闹铃时间后P3.4置0,蜂鸣器发出警报。P3.5接秒指示。初始状态为1,每走1s,P3.5取反,以此来进行秒指示。图4-8电子闹钟硬件系统电路原理图图4-9闹钟的电源系统原理图5电子闹钟的软件系统本设计主要由主模块、基本显示模块、时间设置模块、系统走时模块以及闹铃判断模块等组成,下面依次进行介绍:5.1 主模块设计主模块是系统软件的主框架。结构化程序设计一般有“自上而下”和“自下而上”两种方式,基于本设计的

10、思路,我们采用“自上而下”的方法来设计程序。“自上而下”法的核心就是主框架的构建。它的合理与否关系到程序最终的功能的多少和性能的好坏。程序中,对于程序何时跳转、程序何时调用,都要慎重安排。最终确定以下的顺序:设置蜂鸣器,秒指示寄存器清零外部输出置1显示初状态0000设置当前时间启动走时CPU初始化P3.2=0N设置闹铃时间启动走时设置闹铃标志清零,蜂鸣器报警,闹铃存储清零延时闹铃小时到了吗?闹铃分到了吗?Y 显示刷新NN图5-1 主流程图单片机数据缓存单元分配如下:走时时间存储单元:R4、R5、R6定时时间存储单元:R0、R1分别存储时钟时间分位、时位闹铃时间存储单元:38H、39H分别存储第

11、一次闹钟时间分位、时位,40H、41H分别存储第二次闹钟时间分位、时位。主程序清单如下:ORG 00H ;开始地址AJMP START1 ;跳转到开始程序ORG 03H ;外部中断0入口地址LJMP CLOCK1 ;跳转到闹钟设置程序START1:MOV R0, #00H ;分钟数据BCD码MOV R1, #00H ;小时数据BCD码SETB P3.4 ;关闭蜂鸣器SETB P3.5 ;秒指示置1SETB P3.0 ;按键初始化SETB P3.1SETB P3.2SETB P3.7START:MOV A, R0 ;更新显示LCALL XSMOV A, R1LCALL XS15.2 基本显示模块

12、AT89C2051中 P1为输出口,低四位P1.0-P1.3为要显示的数据的二进制码,高四位P1.4-P1.7为片选口,用来选择具体令哪一个数码管亮。例如想要显示时间10点51 分。先显示分位,51经BCD码调整后变为01010001,存入累加器A中,累加器A先压栈,目的为保护原累加器A中内容,累加器A与00001111相与变为00000001,此操作意为保护低位即要显示的数据。此时00000001与10000000相加为10000001,即最终P1口输出的数据位10000001.高四位1000控制数码管的显示,P1.7、P1.6、P1.5、P1.4分别控制第四个、第三个、第二个、第一个数码管

13、的亮灭,此时P1.7为高电平,所以第四个数码管亮,其余灭。低四位0001送入74LS47,74LS47输入为0001,译码后输出信号为1001111,数码管为共阳极相接,所以最终为第四个数码管显示为1,即分个位为1。释放累加器A,此时交换累加器A中高半字节与低半字节的内容,最终内容变为00010101,再同00001111相与,然后同00100000相加,最终结果为00100101。经片选、74LS47译码后,最终第三个数码管显示为5,即分十位为5。时个位与时十位的显示原理与分个位显示原理相似,唯一不同之处是时个位显示中与累加器A相加的为00100000,时十位显示中与累加器A相加的为0001

14、0000,即第一个数码管的片选信号为0001,第二个数码管的片选信号为0010。每一个数码管显示一个数,调用延时,四个数码管循环点亮,由于调用延时时间为20ms,利用人的视觉暂留生理特性,所以最终看到的为1051,表示10点51分。显示模块程序清单如下:XS:PUSH ACC ;进栈ANL A,#0FH ;保护低位MOV R3, #80H ;设置片选信号ADD A, R3 ;加片选信号 DA A ;累加器内容十进制调整MOV P1, A ;输出数据LCALL FILTER ;调用延时子程序POP ACC ;出栈SWAP A ;累加器交换高半字节与低半字节内容ANL A, #0FH ;保护低位M

15、OV R3, #40H ;设置片选信号ADD A, R3 ;加片选信号MOV P1, A ;输出数据LCALL FILTERRETXS1:PUSH ACC ;进栈ANL A, #0FH ; 保护低位MOV R3, #20H ;设置片选信号ADD A, R3 ;加片选信号MOV P1, A ;输出数据LCALL FILTERPOP ACC ;出栈SWAP AANL A, #0FHMOV R3, #10H ;设置片选信号ADD A, R3MOV P1, ALCALL FILTERRET5.3 时间设定模块初始状态为0000,用累加器存储总的按键次数,累加器内容给R1,从AT89C2051P1口输出

16、,高四位进行片选,低四位送入74ls47经译码后输出,显示其间有一个上下线的判断。具体如下:小时的设置:每按一次时+键,R1内容自动加1,把R1内容给A。A进行BCD调整,判断P3.3的状态,若P3.3等于0,则系统为24小时制式,此时比较A中内容是否满24,满24后A清零,最终输出显示,表示时十位、时个位为00。否则直接输出显示。流程图如下:图5-2 小时的设置的流程图时+键为0时位寄存器加1时数据BCD码调整显示时清零显示判断P3.3=1更新显示NNY满13满24显示时置1显示NYYN分的设置:刷新显示,每按一次分+键R0内容自动加1,把R0内容给A。A进行BCD调整,此时比较A中内容是否

17、满60,满60后A清零,然后输出显示,表示分十位、分个位为00,否则直接输出显示。流程图如下所示:按分+键,P3.1为0分满60分显示显示分位寄存器加1分数据BCD码调整分清零YN刷新显示N 图5-3 分钟设置的流程图时间设置模块的程序清单如下:MADD:JB P3.1, HADD ;判断分+1按键是否操作 JNB P3.1, $ ;等待释放按键 INC R0 ;内容自加1MM1:MOV A, R0 ;设定分 ADD A, #00HDA A ;十进制调整 CJNE A, #60H, M1 MOV A, #00HM1:MOV R0, ALCALL XSMOV A, R1LCALL XS1HADD

18、:MOV A, R0 ;更新显示LCALL XSMOV A, R1LCALL XS1JB P3.0, OK ;设置小时数据JNB P3.0, $INC R1HH1:MOV A, R1ADD A, #00HDA AJB P3.3, HHH ;制式判断CJNE A, #24H, H1 ;24小时制式MOV A, #00HAJMP H1HHH:CJNE A, #13H,H1 ;12小时制式MOV A, #01HH1:MOV R1, A ;更新显示LCALL XS1MOV A, R0LCALL XS5.4 系统走时模块更新显示,调用基本循环单元,基本循环单元计时时间为1s,满1s P3.5取反,进行秒

19、指示,并进行闹铃判断。满60秒分加1并进行闹铃判断,满60分时加1,分清零并进行闹铃判断,BCD调整并输出显示。12小时制式时,时满13则时赋新值为1,24小时制时,时满24则赋新值为0并输出显示。流程图如下:设置初值设置外部中断开启定时器设置定时/计时工作方式闹钟判断N更新显示秒指示取反闹钟判断显示分位寄存器加1BCD码调整显示到60分闹铃判断Y小时赋新值#01到60S了吗?时位寄存器加1时数据BCD码调整时赋#00NY满13小时3满24小时显示NYYN判断P3.3=1NY图5-4 系统走时模块流程图系统走时模块程序的清单:TIME: MOV A, R0 ;更新显示LCALL XS MOV

20、A, R1LCALL XS1 DJNZ R4, LOOP ;闹铃判断CPL P3.5 ;秒指示取反MOV R4, #35 ;设定秒指示时间DJNZ R5, LOOP ;闹铃判断INC R0MOV A, R0ADD A, #00HDA ACJNE A, #60H,TT1 ; 分不满60分钟,跳转MOV A, #00H ;分满60分清零TT1:MOV R0, AMOV A, R0LCALL XS ;刷新显示MOV A, R1LCALL XS1MOV R5, #60DJNZ R6, LOOP ;闹铃判断INC R1MOV A, R1ADD A, #00HDA AJB P3.3, TTT ;判断制式的

21、选择CJNE A, #24H, TT2 ;24小时制与24比较MOV A, #00HAJMP TT2TTT:CJNE A, #13H, TT2 ;12小时与13比较MOV A, #01HTT2:MOV R1, AMOV A, R0LCALL XS ;刷新显示MOV A, R1LCALL XS1MOV R6, #605.5 闹铃判断模块设置闹铃时间后正常走时,时间每变化一秒都要进行闹铃判断。当前小时与闹铃小时相同时进行分钟判断不同时正常走时。当前分钟与闹铃分钟相同时则启动闹铃不同时正常走时。闹铃响时按叫停键后闹铃停止,存储闹铃时间的单元自动清零时钟正常走时。流程图如下所示: CLR P3.4蜂鸣

22、器响更新显示判断小时计时是否设定闹铃时间计时计时计时判断分蜂鸣器不响存储闹铃时间单元清零,F0=0YNNNYY图5-5闹钟提醒功能流程图闹铃判断模块程序清单如下所示:LOOP:JBC TF0,LOOP1 ;判断溢出中断MOV A,R0 ;刷新显示LCALL XSMOV A,R1LCALL XS1JNB F0,TIME ;判断设置闹铃标志是否为1MOV A,R1CJNE A,39H,TIME ;判断当前时间与设置小时时间MOV A,R0CJNE A,38H,TIME ;判断分与设置分是时间CLR P3.4 ;闹铃响发出警报JB P3.7,TIME ;停止鸣叫JNB P3.7,$MOV 38H,#

23、00H ;存储闹铃时间单元清零MOV 39H,#00HCLR F0 ;设置闹铃标志清零SETB P3.4 ;蜂鸣器停止报警AJMP TIME ;跳转到走时模块5.6 定时器0初始化设定系统工作在定时器/计数器0且工作方式为1,设置系统外部中断0,定时器/计数器0赋初值,定时时间为50ms。LOOP1:MOV TL0, #0B0H ;设置定时器/计数器0的初值MOV TH0, #3CHSETB TR06仿真Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件,可以仿真、分析(SPICE)各种模拟器件和集成电路。该软件的特点是:实现了单片机仿真和SPICE电路仿真的结合

24、,具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。目前Proteus ISIS支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。Proteus ISIS仿真系统具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,还可以结合Keil C51 进行编程仿真调试,使用起

25、来非常方便1。6.1系统的仿真步骤1.首先应用KEIL软件,打开KEIL软件,通过建立工程,选择芯片为ATMEL下的AT89C2051为系统CPU类型。如图6-1所示:图6-1 调入芯片对话框2.选择好器件,首先生成gg.asm文件,然后在“Project Workspace ”窗口中的“TARGET 1”文件夹上单击右键,在弹出的右键菜单中选择“OPTION FOR TARGET”选项,这时会弹出“OPTION FOR TARGET”对话窗口,在此对话框中选择“OUTPUT”选项卡,选中“CREAT HEX FILE”选项。在KEIL的菜单栏选择“PROJICT”“BUILD TARGET

26、”命令,编译汇编源文件。如果编译成功,则在KEIL的“OUTPU WINDOWS”子窗口中会显示下图所示信息,且在当前文件夹下生成一个hex的文件。在这里我们生成了一个“gg.hex”文件。如果编译不成功,双击“OUTPUT WINDOWS”窗口的错误信息,则会在编辑窗口中指示错误的语句,修改后再进行编译,生成.hex文件。如图所示图6-2 程序编译对话框3.运行ISIS Professional v7.1 SP2的ISIS,打开画好的电路图文件,如图6-3所示:图6-3 完整的电路4.选择SourceAdd/Remove Source File 菜单项,将出现Add/Remove Sourc

27、e Code Files对话框,在Code Generation Tool 选项区,单击下三角按钮,选择ASEM51工具。如图6-4所示:图6-4 调入程序对话框5.选中AT89C2051并单击左键,打开如图6-5所示的对话框。在 Program File 栏添加编译好的十六进制格式的程序文件dianzi.hex ,给AT89C2051输入晶振频率,此处默认为12MHz, 单击OK 按钮完成程序添加工作,下面就可以进行系统仿真。图6-5 调入HEX文件对话框6.2仿真效果ISIS Professional v7.1 SP2所进行的是一种交互式仿真, 在仿真进行中可以对各个控制按钮、开关等进行操

28、作, 系统对输入的响应会被真实的反映出来。1.单击运行按钮启动仿真,初始界面显示0000,等待时间的设定。图6-6 初始状态,为00002.按时+按钮、分+按钮,进行时钟设置,每按按钮一次,对应数据+1,按照所选走时制式显示设置的当前值,若超过正常时钟显示时间,自动跳回0,重新设置。按确认/停叫按钮,保存当前设置值,退出设置状态,开始走时,并进行秒指示。 图6-7设定当前时间,为7点12分开始走时,二极管一亮一灭,变换周期为两秒,既每变化一个状态,时间为一秒。利用二极管的亮灭来进行秒指示 图6-8 二极管亮 图6-9 二极管灭设置当前时间3.按定时键,设定闹铃时间为7点15分,按确定/叫停键确

29、认设置闹铃时间,此时闹铃时间存入38H、39H单元,等待闹铃判断时调用。此时蜂鸣器未响。图6-设定闹铃时间10 设置闹铃时间图6-11 蜂鸣器未响4.系统在走时过程中,随时进行闹铃判断。先与当前小时判断,到达小时时间后,再与闹铃分钟判断,两者都相等时,即到达闹铃时间,P3.4置零,触发蜂鸣器报警,发出警报。图6-12 到达闹铃时间蜂鸣器报警电路状态图:图6-设定闹铃时间13 蜂鸣器未响 图6-设定闹铃时间14 蜂鸣器响5.闹铃响后,按确定/叫停键警报停止,时钟继续正常走时。 图6-15 时钟正常走时6.12小时/24小时制式开关,根据需求来选择合适的制式。打开开关,即P3.3为高电平,此时系统

30、为12小时制式,闭合开关,即P3.3为低电平,此时系统为24小时制式。下图为24小时制式时设置的当前时间。图6-16 24小时制式时设定的时间源程序代码:ORG 00HAJMP START1ORG 0003HLJMP CLOCK1START1:MOV R0,#00HMOV R1,#00HSETB P3.4SETB P3.5SETB P3.0SETB P3.1SETB P3.2SETB P3.7START:MOV A,R0LCALL XSMOV A,R1LCALL XS1MADD:JB P3.1,HADDJNB P3.1,$INC R0MM1:MOV A,R0ADD A,#00HDA ACJNE

31、 A,#60H,M1MOV A,#00HM1:MOV R0,ALCALL XSMOV A,R1LCALL XS1HADD:MOV A,R0LCALL XSMOV A,R1LCALL XS1JB P3.0,OKJNB P3.0,$INC R1HH1:MOV A,R1ADD A,#00HDA AJB P3.3,HHHCJNE A,#24H,H1MOV A,#00HAJMP H1HHH:CJNE A,#13H,H1MOV A,#01HH1:MOV R1,ALCALL XS1MOV A,R0LCALL XSOK:JB P3.7,STARTJNB P3.7,$MOV TMOD,#01HMOV IE,#8

32、1HMOV R4,#35MOV R5,#60MOV R6,#60LOOP1:MOV TL0,#0B0HMOV TH0,#3CHSETB TR0TIME:MOV A,R0LCALL XSMOV A,R1LCALL XS1 DJNZ R4,LOOPCPL P3.5MOV R4,#35DJNZ R5,LOOPINC R0MOV A,R0ADD A,#00HDA ACJNE A,#60H,TT1MOV A,#00HTT1:MOV R0,AMOV A,R0LCALL XSMOV A,R1LCALL XS1MOV R5,#60DJNZ R6,LOOPINC R1MOV A,R1ADD A,#00HDA A

33、JB P3.3,TTTCJNE A,#24H,TT2MOV A,#00HAJMP TT2TTT:CJNE A,#13H,TT2 MOV A,#01HTT2:MOV R1,AMOV A,R0LCALL XSMOV A,R1LCALL XS1MOV R6,#60LOOP:JBC TF0,LOOP1MOV A,R0LCALL XSMOV A,R1LCALL XS1JNB F0,TIMEMOV A,R1CJNE A,39H,TIMEMOV A,R0CJNE A,38H,TIMECLR P3.4JB P3.7,TIMEJNB P3.7,$MOV 38H,#00HMOV 39H,#00HCLR F0SETB P3.4AJMP TIMEXS:PUSH ACCANL A,#0FHMOV R3,#80HADD A,R3MOV P1,ALCALL FILTERPOP ACCSWAP AANL A,#0FHMOV R3,#40HADD A,R3MOV P1,AL

温馨提示

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

评论

0/150

提交评论