微机原理报告超声波测距_第1页
微机原理报告超声波测距_第2页
微机原理报告超声波测距_第3页
微机原理报告超声波测距_第4页
微机原理报告超声波测距_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、微机原理课程设计报告微机原理课程设计报告2超声波测距系统摘 要随着科学技术的发展,超声波测距应用越来越广泛。本文介绍了一种采用基于8086 CPU 的超声波测距系统。该设计充分利用实验平台的硬件资源,汇编语言编程自动实现超声波的发射与接收控制,通过8253定时器所计超声波往返所经历的的时间,经过换算得到超声波传感器与反射物体之间的距离。利用8279键盘显示电路驱动数码管、可编程并口接口芯片8255驱动液晶显示屏实现距离值得显示。超声波测距有效距离2-30厘米左右,超过一定阈值(300mm)会有灯光和语言报警。关键词:超声波;定时器;时间差测距法;数码管;LCD;报警Ultrasonic Ran

2、ging SystemAbstractWith the development of technology, the ultrasound distance measurement is more and more widely used. This article introduces one ultrasonic ranging system based on 8086. Made the most of hardware and software, it implements the ultrasound-transmitted and ultrasound-received autom

3、atically. It uses the 8253 timer to count the time and then convert it to get the distance between ultrasound sensor and reflector. The digital tube and LCD will display the distance dynamicly. When the distance is larger than 300mm, it will give a light alarm and a voice alarm.Key Words:ultrasound;

4、 timer; digital tube; LCD; alarm目 录摘 要1Abstract1引 言11设计内容22实验设备23设计原理23.1超声波模块23.28253定时器模块43.3数码管显示模块43.4LCD显示模块53.5语音录放模块63.6简单I/O 口扩展电路64设计过程74.1设计思路74.2程序流程84.3程序清单95现象结论105.1现象105.2结论116任务分配127心得体会12参 考 文 献13附 录14引 言随着电子技术的发展,激光、超声波及红外线等非接触式测距方法相继出现。激光测距虽然测距精度高、操作简单,但是受环境的影响比较大,且系统检测维护不便、价格相对昂贵

5、,一般多在军事领域应用。红外测距属于电磁波的一种,而超声波是声波测距,实现起来更容易且不受电磁干扰影响。红外传播速度为3x108 m/s,超声波的传播速度为340m/s,其速度相对电磁波是非常慢的,因此在同等距离的情况下,超声波的传播时间远大于红外,往返时间更易测量。由于超声波有以上优点,所以被广泛应用在工业定位监测、无损伤探测、医疗诊断、移动机器人、海洋捕捞、煤炭检测等领域。特别是在易挥发、易燃、易爆、强腐蚀性等工作环境的恶劣的情况下,超声波测距有巨大的用武之地。超声波测距是利用超声波的波长短、指向性强、能量集中、在介质中传播距离较远的特点来实现对距离的测量。特别是频率在40KHz的超声波在

6、空气中传播效果最佳,因此常用此频率的超声波来检验介质的检测距离。本文介绍了一种以8086 CPU 为控制终端超声波测距系统,利用8253定时器、8255并口接口芯片等外围资源,测量物体与超声波传感器间距离,并用数码管或LCD显示,距离值超过定值(300mm)后会有灯光和语言报警。11 设计内容(1) CPU 通过外扩的 I/O 向超声波发送器发送短时间的40KHz的波束,在通过8253定时器测量接收到该波束的时间,根据声波在空气中的传播速度,计算出距该物的距离。(2) 利用8279键盘/显示接口电路,实现距离值在数码管上显示。(3) 利用编程并口接口芯片8255,实现距离值在 LCD 液晶显示

7、电路显示。(4) 超声波测距有效距离为2-30厘米左右,超过阈值(300 mm)会有灯光和语音报警。2 实验设备EL-MUT-III 型微机教学实验系统(本设计用到8279键盘/显示接口、CPU、8255并行接口、LCD 显示电路、8253计数器、244/273 I/O 电路、外扩模块接口、脉冲发生器等)、超声波模块、语音模块等。3 设计原理3.1 超声波模块压电式超声波发生器是利用压电晶体的谐振来工作的。超声波发生器内部结构如图1 所示,它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两

8、电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。本模块中所用的为谐振频率40KHz的超声波传感器。图1 超声波传感器结构1、 超声波传感器的测距原理超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离S,即:S=340t/2,这就是所谓的时间差测距法。2、 超声波传感器电路原理图图2 发射部分原理图图3 接收部分原理图发射部分从Din 插孔输

9、入40KHz 的信号,经2倍幅度放大后加至发射器的两端,同时开始计时。接收部分首先通过一个谐振放大电路取出接收到的40KHz信号,再经LM318进行第二级放大。然后与预设电压V3进行比较,如信号幅度大于V3,则DOUT 端输出一个低脉冲。用此脉冲作为中断请求信号,停止计时。由于障碍物离传感器越远,返回的也越弱,因此可以调节电位器R11改变V3的电压值,从而改变测量范围。在以后的实验中,将V3调至1V左右,此时的测量范围是2cm30cm。3.2 8253定时器模块8253定时器的工作原理为:8253进行定时或计数时,每输入一个时钟信号,便使计数值减1该电路由片8253 组成,8253 的片选输入

10、端插孔CS8253数据口、地址、读写线均已接好,T0、T1、T2时钟输入分别为8252CLK0、8253CLK1、8253CLK2。定时器输出,GATE 控制孔对应如下:OUT0、GATE0、OUT1、GATE1、OUT2、GATE2、CLK2。原理图如下: 图4 8253定时器模块原理图3.3 数码管显示模块8279显示电路由6位共阴极数码管显示,74LS244为段驱动器,75451为位驱动器,可编程键盘电路由片74LS138组成,8279的数据口、地址、读写线、复位、时钟、片选都已经接好,键盘行列扫描线均有插孔输出。键盘行扫描线插孔号为KA0KA3;列扫描线插孔号为RL0RL7;8279

11、还引出CTRL、SHIFT插孔。六位数码管的位选、段选信号可以从8279引入,也可以有外部的其它电路引入,数码管采用动态扫描的方式显示。原理图如下:图5 数码管显示模块原理图3.4 LCD显示模块点阵式LCD 显示电路是在系统板上外挂电正式液晶显示模块,模块的数据线、状态、控制线都通过插孔引出。可直接与系统相连。OCMJ2×8 液晶模块的接口协议为请求/应答(REQ/BUSY) 握手方式。应答BUSY 高电平(BUSY =1) 表示 OCMJ 忙于内部处理,不能接收用户命令;BUSY 低电平(BUSY =0)表示 OCMJ 空闲,等待接收用户命令。发送命令到 OCMJ 可在BUSY

12、=0 后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平REQ信号(REQ =1)通知OCMJ 请求处理当前数据线上的命令或数据。OCMJ 模块在收到外部的REQ 高电平信号后立即读取数据线上的命令或数据,同时将应答线BUSY 变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其它工作,也可不断地查询应答线BUSY 是否为低(BUSY ?=0),如果BUSY=0,表明模块对用户的写操作已经执行完毕。可以再送下一个数据。如向模块发出一个完整的显示汉字的命令,包括坐标及汉字代码在内共需5 个字

13、节,模块在接收到最后一个字节后才开始执行整个命令的内部操作,因此,最后一个字节的应答BUSY 高电平(BUSY =1)持续时间较长,具体的时序图和时间参数说明查阅相关手册。表1 OCMJ2X8(128X32)引脚说明图OCMJ 中文模块引脚说明如下:引脚名称方向说明引脚名称方向说明1VLED+I背光源正极(LED+5V)8DB1I数据12VLED-I背光源负极(LED-OV)9DB2I数据23VSSI地10DB3I数据34VDDI+5V11DB4I数据45REQI请求信号,高电平有效12DB5I数据56BUSYO应答信号=1:已收到数据并正在处理中;应答信号=0:模块空闲,可接收数据13DB6

14、I数据67DB0I数据014DB7I数据7模块上DB0DB7 插孔对应于位数据线;BUSY、REQ 插孔分别对应于图中相应的引脚。3.5 语音录放模块语音录放模块由单片语音录放芯片ISD2560及其外围电路组成。本电路中ISD2560采用按钮控制操作方式,A9、A8、A6接VCC,A1A5、A7均接GND,A0由CA0插孔引出,用于控制是否进入检索模式。ISD2560的音频输出端SP+、SP-经过音频功放LM386驱动喇叭。电位器R8(对应于模块上VOLUME电位器)用于调节喇叭的增益。原理图如下:图6 语音录放模块原理图3.6 简单I/O 口扩展电路输入缓冲电路由74LS244 组成,输出锁

15、存电路由上升沿锁存器74LS273 组成。74LS244 是一个扩展输入口,74LS273 是一个扩展输出口,同时它们都是一个单向驱动器,以减轻总线的负担。74LS244 的输入信号由插孔IN0IN7 输入,插孔CS244 是其选通信号,其它信号线已接好;74LS273 的输出信号由插孔O0O7输出,插孔CS273 是其选通信号,其它信号线已接好。其原理图如下:图7 I/O 口扩展电路原理图4 设计过程4.1 设计思路测距部分:8086芯片通过I/O口扩展电路,与超声波模块相连接。给超声波模块发送一个40KHz的信号,超声波发射器向某一方向发射超声波,在发射时刻的同时8253定时器开始计时;超

16、声波在空气中传播,途中碰到障碍物就立即返回来;超声波接收器收到反射波就立即停止计时。时间差测距法处理数据:超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离S,即:S=340t/2。 显示部分:利用8279键盘/显示接口电路,数码管动态扫描实现距离值实时显示。利用编程并口接口芯片8255,根据液晶屏的握手接口协议,实现距离值在 LCD 液晶显示电路显示。报警部分:超声波测距有效距离为2-30厘米左右,超过阈值(300 mm)会有灯光和语音报警,即用8255的B端口驱动LED灯和语音录放模块的报警。8086控制终端8253定时器障碍物超声波模块发射电

17、路8255可编程并口接口芯片图8 设计思路示意图语音报警LCD显示超声波模块接收电路74LS273扩展输出口74LS244扩展输入口LED报警8279键盘显示电路数码管显示4.2 程序流程(1) 超声波测距,距离值用数码管显示,程序流程图如下:8253定时器初始化数码管显示距离值距离值处理计数差值转换为距离值读取定时器计数值超声波模块收到返回信号?图9 Sonic_LED.asm流程图是否8279键盘显示电路初始化超声波模块发送信号,定时器开始计数开始(2) 超声波测距,距离值用液晶屏显示,并添加了LED灯报警和语音模块报警功能。程序流程图如下:是距离值是否大于300mm8253定时器初始化L

18、CD显示距离值距离值处理计数差值转换为距离值读取定时器计数值超声波模块收到返回信号?图10 Sonic_LCD.asm流程图是否LCD初始化超声波模块发送信号,定时器开始计数开始报警否4.3 程序清单SonicLED.asm为超声波测距,距离值用数码管显示程序,程序清单见附件。Sonic_LCD.asm为超声波测距,距离值用液晶屏显示,并添加报警功能程序,程序清单见附件。5 现象结论5.1 现象(1) 数码管显示CS0接CS8253,8253CLK0接CLK1,CS1接CS273,273的输出O0接超声波模块上的Din,CS2接CS244,244的输入I0接超声波模块上的DOUT。线连好后,启

19、动试验箱并连接。编译并链接SonicLED.asm,全速运行。在超声波发送器与接收器的前面放置面积较大的障碍物,数码管上会相应的显示动态距离值(mm)“*-”,误差1-2cm左右。现象如图:图11 超声波测距数码管显示结果(2) LCD显示CS0接CS8253,8253CLK0接CLK1;CS1接CS273,273的输出O0接超声波模块上的Din;CS2接CS244,244的输入I0接超声波模块上的DOUT;CS3接8255CS,8255的PA0PA7接A/D PORT单元的DB0DB7;8255的PC7接A/D PORT的BUSY,8255的PC0接A/D PORT的REQ;8255的PB0

20、接LED0;8255的PB1接语音模块上的PLAY,拨码开关的输出k1接语音模块上的REC。(通过调节拨码开关可以录音)线连好后,启动试验箱并连接。编译并链接SonicLCD.asm,全速运行。在超声波发送器与接收器的前面放置面积较大的障碍物,LCD液晶显示屏上会相应的显示动态距离值(mm)“USTB 超声波测距 *mm”,数据稳定时误差1cm左右。灯光和语音报警功能成功实现:当距离值小于300mm时,LED1偶尔闪烁,语音模块几乎没有声音;距离大于300mm时,LED1长亮,语音模块有声音报警。现象如图:图12 超声波测距LCD显示结果及报警5.2 结论(1) 超声波可以实现有效测距,数据稳

21、定时实验误差1cm左右。误差产生可能与障碍物面积、倾角,周围其它物体,以及超声波模块本身性能等有关系。(2) 考虑到测距时操作等原因,在数据不稳定时,可能会出现与实际距离相差较大的情况。因此实际距离小于300mm时,超声波测距会偶尔会出现大于300mm的结果,从而导致报警失效,即LED1偶尔闪烁,语音模块偶尔有声音。但由于超声波模块采集数据刷新很快, LED1点亮和语音模块有声音的时间不会很长。6 任务分配7 心得体会经过这两周的微机原理课程设计的学习,我感触很多。其一,用实践来检验真理。上学期微机原理课程的学习侧重于理论知识的学习,实验课课时少、任务重,老师给我们例程,我们也只是下载验证,很

22、少花时间去深究汇编程序每句话的作用。经过超声波测距的设计与程序调试,我对8086有了更深一步的认识,对微型计算机原理和汇编语言有了进一步的理解,并且学到了很多课堂上不能学到的东西。有些知识虽然看似很简单,但是操作起来还是有很多要注意的。比如时序问题等等。毕竟理论学习是一种能力,动手实践又是另一种能力。只有两者结合起来,用理论去指导实践,实践的结果反过来修正理论,才是一种真正的学习过程。其二,实践过程要有耐心、认真思考。我们的超声波例程很长,第一眼看到这么长的程序,大家都很反感。但只要静下心来,结合其工作原理认真读程序,最后会发现这个程序并没有那么难于理解。读懂程序后,修改加入LCD显示也就容易

23、多了。并且要做好一件事情绝不可能会一气呵成,遇到问题要沉住气,认真想哪里出了问题。其三,学无止境。相比那些做的快而好的同学,我发现自己的相关知识和动手实践能力还很欠缺,自己还有很大的不足。在以后的学习中,还需要要加注重专业知识和动手能力的培养。其四,团队合作很重要。每个人都有自己的长处,也都有自己的缺点。一个人不能在很短的时间内做很多事情。团队就是一个发挥个人所长,充分利用人力资源的地方。学会合作,才会事半功倍,让事情做的更漂亮。参 考 文 献1 董洁.微机原理课程设计指导书.北京:北京科技大学,2013.2 王忠民著. 微型计算机原理. 西安:西安电子科技大学出版社,2007.3 闫东磊.

24、基于ATmega8L高精度超声波测距仪的设计.武汉:武汉理工大学,2010.附 录SonicLED.asm; = 超声波测距&数码管显示 =;CS0接CS8253,8253CLK0接CLK1;CS1接CS273,273的输出O0接超声波模块上的Din;CS2接CS244,244的输入I0接超声波模块上的DOUT;= CON8279 EQU 0492H DAT8279 EQU 0490H ASSUME CS:CODE CODE SEGMENT PUBLIC ORG 100H= 8279键盘显示电路初始化 = START: MOV DX,CON8279 MOV AX,0D1H OUT DX

25、,AX ;将全部显示RAM清零 CALL DELAY MOV AX,30H OUT DX,AX ;时钟编程,16分频 MOV AX,08H OUT DX,AX ;键盘显示命令,16个字符显示,左端入口方式 MOV AX,90H OUT DX,AX ;写显示命令,地址自动加一= 8253定时器初始化 = START1: MOV DX,04A6H MOV AX,30H OUT DX,AX ;选择计数器0 MOV DX,04A0H MOV AX,0FFH OUT DX,AX ;计数器0低8位为0ffh MOV AX,0FFH OUT DX,AX ;计数器0高8位为0ffh MOV DX,04B0H

26、MOV CX,10= 超声波模块发送信号 = SEND: MOV AL,0FFH OUT DX,AL ;Din给高电平 MOV AX,0 OUT DX,AL ;Din给低电平 LOOP SEND ;Din高低循环10次形成10个脉冲 MOV CX,10 MOV DX,04C0H MOV BX,0H;= = 超声波模块接收返回信号 = REV: INC BX CMP BX,0FFFFH JE START1 ;若没有收到返回信号,重新发送信号 IN AL,DX ;采集Dout TEST AL,01 JNE REV ;Dout不为0时会跳转到REV REV1: INC BX CMP BX,0FFFF

27、H JE START1 ;若没有收到返回信号,重新发送信号 IN AL,DX ;采集Dout TEST AL,01 JE REV ;Dout不为1时会跳转到REV,即Dout出现低脉冲时程序往下运行 MOV DX,04A0H IN AL,DX MOV BL,AL ;读计数器的低八位放入BL IN AL,DX MOV BH,AL ;读计数器的高八位放入BH MOV AX,0FFFFH SUB AX,BX ;从发出信号到接收信号之间计数器的计数值N;= = 定时器计数值转换为距离值 = SHR AX,1 ;除2 MOV BX,71H MUL BX ;乘113 MOV BX,1000 DIV BX

28、;除1000 MOV DX,00H ;距离d=(1/(3*106) *(N/2)* (340*1000) mm;= 距离值各位分别用一位16进制数表示 = DIV BX MOV CL,12 SHL AX,CL PUSH AX ;得到距离值的千位放到AH的高四位,并压入堆栈 MOV AX,DX MOV DX,00H MOV BX,100 DIV BX AND AX,0FH MOV CL,8 SHL AX,CL ;得到距离值的百位放到AH的低四位 POP CX OR AX,CX PUSH AX ;将距离值的千位和百位组合压栈 MOV AX,DX MOV DX,00H MOV BX,10 DIV B

29、X AND AX,0FH MOV CL,4 SHL AX,CL ;得到距离值的十位放到AL的高四位 POP CX OR AX,CX ;将距离值的千位、百位和十位组合 AND DX,0FH ;得到距离值的个位放到DX的低四位 OR AX,DX ;将距离值的千位、百位、十位和个位组合 MOV BX,AX ;组合的距离值放入BX;= 功能实现 = CALL DISP ;距离值显示在数码管上 CALL DELAY ;延时 JMP START1 ;重新开始计数运行 ;= 延 时 = DELAY: PUSH CX MOV CX,1000 DELAY1: NOP LOOP DELAY1 ;循环1000次 P

30、OP CX RET= 数码管显示 = DISP: MOV DI,OFFSET SEGCOD MOV DX,DAT8279 MOV AX,00H MOV AL,BH AND AL,0F0H MOV CL,4 SHR AL,CL ;距离值千位放入AL ADD DI,AX ;得到千位对应ASCII码的偏移地址 MOV AL,CS:DI OUT DX,AL ;显示千位 NOP NOP MOV DI,OFFSET SEGCOD MOV AL,BH AND AL,0FH ;距离值百位放入AL ADD DI,AX ;得到百位对应ASCII码的偏移地址 MOV AL,CS:DI OUT DX,AL ;显示百位

31、 NOP NOP MOV DI,OFFSET SEGCOD MOV AL,BL AND AL,0F0H MOV CL,4 SHR AL,CL ;距离值十位放入AL ADD DI,AX ;得到十位对应ASCII码的偏移地址 MOV AL,CS:DI OUT DX,AL ;显示十位 NOP NOP MOV DI,OFFSET SEGCOD MOV AL,BL AND AL,0FHH ;距离值个位放入AL ADD DI,AX ;得到个位对应ASCII码的偏移地址 MOV AL,CS:DI OUT DX,AL ;显示个位 MOV AL,40H OUT DX,AL ;显示- OUT DX,AL ;显示-

32、 OUT DX,AL ;显示- OUT DX,AL ;显示- RET= 数码管显示码制 = SEGCOD DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H; 共阴数码管码制 CODE ENDS END STARTSonicLCD.asm;= 超声波测距&LCD显示 =;CS0接CS8253,8253CLK0接CLK1;CS1接CS273,273的输出O0接超声波模块上的Din;CS2接CS244,244的输入I0接超声波模块上的DOUT;CS3接8255CS, 8255的PA0PA7接A/D PORT单

33、元的DB0DB7;8255的PC7接A/D PORT的BUSY,8255的PC0接A/D PORT的REQ;8255的PB0接LED1;8255的PB5接语音模块上的PLAY,拨码开关的输出k1接语音模块上的REC;= ASSUME CS:CODE CODE SEGMENT PUBLIC ORG 100H ;调整偏移量为100H;= LCD初始化 = START: MOV DX, 04D6H MOV AX, 88H OUT DX, AX ;8255控制字(A口方式为输出,PC7输入,PC0输出) MOV AX, 70H OUT DX, AX MOV AL, 0F4H ;PC0输出0 ,REQ给

34、低信号 CALL COMD ;调用 CALL DELAY;= 8253定时器初始化 = START1: MOV DX,04A6H MOV AX,30H OUT DX,AX ;选择计数器0 MOV DX,04A0H MOV AX,0FFH OUT DX,AX ;计数器0低8位为0ffh MOV AX,0FFH OUT DX,AX ;计数器0高8位为0ffh MOV DX,04B0H MOV CX,10;= 超声波模块发送信号 = SEND: MOV AL,0FFH OUT DX,AL ;Din给高电平 MOV AX,0 OUT DX,AL ;Din给低电平 LOOP SEND ;Din高低循环1

35、0次形成10个脉冲 MOV CX,10 MOV DX,04C0H MOV BX,0H;= 超声波模块接收返回信号 = REV: INC BX CMP BX,0FFFFH JE START1 ;若没有收到返回信号,重新发送信号 IN AL,DX ;采集Dout TEST AL,01 JNE REV ;Dout不为0时会跳转到REV REV1: INC BX CMP BX,0FFFFH JE START1 ;若没有收到返回信号,重新发送信号 IN AL,DX ;采集Dout TEST AL,01 JE REV ;Dout不为1时会跳转到REV,即Dout出现低脉冲往下运行 MOV DX,04A0H IN AL,DX MOV BL,AL ;读计数器的低八位放入BL IN AL,DX MOV BH,AL ;读计数器的高八位放入BH MOV AX,0FFFFH SUB AX,BX ;从发出信号到接收信号之间计数器的计数值N;= 定时器计数值转换为距离值 = SHR AX,1 ;除2 MOV BX,71H MUL BX ;乘1

温馨提示

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

评论

0/150

提交评论