数字式秒表单片机课程设计_第1页
数字式秒表单片机课程设计_第2页
数字式秒表单片机课程设计_第3页
数字式秒表单片机课程设计_第4页
数字式秒表单片机课程设计_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、 单片机技术课程设计说明书 数字式秒表 学 院: 电气与信息工程学院 学生姓名: 李迎 指导教师: 贾雅琼 职称 副教授 专 业: 电子信息工程 班 级: 电子1402班 学 号: 1430340212 完成时间: 2016年10月21日 湖南工学院单片机技术课程设计课题任务书学院:电气与信息工程学院 专业:电气信息工程指导教师贾雅琼学生姓名李迎课题名称数字式秒表内容及任务一、设计任务设计一个具有特定功能的数字式秒表。二、设计内容1、秒表的硬件系统(1) 、单片机最小系统模块(2)、供电模块(3)、显示模块(4)、键盘模块2、秒表的软件系统(1)、系统监控程序模块(2)、显示程序模块(3)、键

2、盘程序模块三、设计要求该数字式秒表上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。该数字式秒表应具有开始、暂停、连续、清零和停止功能。主要参考资料1李广弟.单片机基础M.第3版.北京:北京航空航天大学出版社, 2003.6.2李全利.单片机原理及应用(C51编程)M.北京:高等教育出版社,2012.12.3马忠梅.单片机的C语言应用程序设计M.第4版.北京:北京航空航天大学出版社,2003.6.4李光飞.单片机C程序设计指导M.北京:北京航空航天大学出版社,2003.01.5李光飞.单片机课程设计实例指导M.北京:北京航空航天大学出版社,2004.9.教研室意见 教研室主任:(

3、签字)年 月 日目 录1 设计任务、功能说明以及总体方案介绍11.1 课题设计任务11.2 设计功能说明11.3 总体方案介绍12 硬件系统总设计32.1 硬件系统设计32.2 硬件电路各模块功能简介32.2.1 AT89S52芯片32.2.2 晶振电路42.2.3 复位电路42.2.4 下载口电路42.2.5 LED数码管显示电路52.2.6 电源电路52.2.7 蜂鸣器电路62.2.8 键盘电路62.3 电路原理图以及实物图72.4 元器件清单73 软件系统的总设计83.1 单片机资源使用情况83.2 监控程序部分83.3 定时中断程序部分93.4 按键扫描程序部分93.5 延时程序部分1

4、04 实物测试与误差分析134.1 实物测试流程及结果图134.2 误差分析144.3 设计体会14结束语16参考文献17致谢18附录19附录A 数字式秒表电路原理图19附录B 电源电路原理图20附录C 电路单片机系统板实物图21附录D 电源电路实物图22附录E 元器件清单23 附录F 程序清单24 摘 要数字式秒表由于它的简单方便,而且在许多比赛中对秒表的精准度要求很高,所以设计一个简易数字式秒表很有必要。设计是应用单片机芯片AT89S52设计出的数字时钟电路,以 8051 单片机为核心的秒表,它采用键盘输入,单片利用单片机的定时器/计数器定时和计数的原理,用LED 数码管以及按键来设计数字

5、式秒表。将软、硬件有机地结合起来,使其拥有正确的计时、暂停、清零并同时可以用数码管显示。关键词: 数字式秒表;AT89S52;数码管;按键1 设计任务、功能说明以及总体方案介绍1.1 课题设计任务 根据单片机课程所学内容,结合其他相关课程知识,设计一个具有特定功能的数字式秒表,具有时间显示、计时、倒计时等功能。1.2 设计功能说明 通过了解8051芯片的的工作原理和工作方式,使用芯片对 LED 数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒、毫秒,并通过对按键的控制实现秒表开始、暂停、连续、清零等功能,时间精确到0.1秒。开始时,秒表上电或按键复位后能自动显示系统提示符“P.”,

6、 进入计时准备状态;按下开始键(S1键),会进入计时阶段;按下暂停键(S4键)会计时清零,再一次按下暂停键(S4键)后恢复计时;按下清零键(S3键)会回到计时准备状态;按下倒计时键(S2键)会进入倒计时阶段,按下暂停键(S4键),进入暂停倒计时;再次按下暂停键(S4键)会继续倒计时;按下保存键(S5键)会保存当前的时间,连续按保存键(S5键)会连续保存对应瞬间内的时间值;按下(S6键)会停止当前的保存键值的功能;按下(S7键)会显示第一次保存键值时的时间以及显示保存先后的排名;再按下(S8键)会显示第二次保存键值时的时间,这时再次按下(S7键)会显示第一次保存键值时的时间,按下(S7键)和(S

7、8键)表示的是保存键值排名先后,分别表示上一名和下一名。1.3 总体方案介绍 使用AT89S52单片机作为核心部件,采用12M晶体振荡器及微小电容构成振荡电路;用两个四位一体共阳极数码显示管作为显示部分,构成数字式秒表的主体结构,配合独立式键盘和复位电路完成此秒表的复位、计时、连续、清零、停止各项功能。电路采用单片机的P0口作为数码显示管的段控,采用P2口作为数码管的位控。8个独立式键盘分别接在单片机的P1口上,以及其他部分构成数字式秒表的硬件电路。通过编写程序使用单片机的定时计数器,以及软件延时,中断资源来实现秒计时和相关控制,数字式秒表的硬件整体结构框图如图1所示。 图1 硬件整体结构框图

8、2 硬件系统总设计2.1 硬件系统设计 数字式秒表的硬件系统由单片机芯片AT89S52,复位电路,晶振电路,电源电路,下载电路,8个按键以及LED数码管构成。 2.2 硬件电路各模块功能简介2.2.1 AT89S52芯片 AT89S52简介:(1) 与MCS-51产品相兼容; (2) 具有8KB可改写的Flash 内部程序存储器,可写/擦1000次; (5) 256字节内部RAM; (6) 32根可编程I/O口; (7) 3个16位定时器/计数器; (8) 8个中断源; (9) 可编程中串行口; (10) 低功耗空闲和掉电方式。 芯片是整个电路的核心,功能强大能耗低。减少总电路复杂性,提高电路

9、的稳定性,芯片引脚图如图2所示。 图2 芯片引脚图 2.2.2 晶振电路 89C52单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反相振荡放大器的输入及内部时钟工作电路的输入和来自反相振荡器的输出,反相放大器可以配置为片内振荡器。晶振电路选用52单片机12MHZ的内部振荡方式,电路如图3所示:C3、C4可在20-100PF之间取值,这里取33PF,电容起稳定振荡频率、快速起振的作用。 图3 晶振电路图2.2.3 复位电路 复位电路是让单片机的CPU或系统中的其他部件处于某一确定的初始状态,并从以上状态开始工作。除了进入系统的正常初始化之外,当程序运行发生故障或操作

10、失误导致系统处于锁死状态时,若要重新正常使用,只需按下复位键即可重新启动。电路由一个200欧电阻、一个22微法电容、一个按键组成的复位电路。复位电路图如图4所示。 图4 复位电路图 2.2.4 下载口电路下载口主要是一个十芯的底座,用PC的USB口供电,通过下载口把程序导入单片机芯片内。下载口分别接在单片机的RST引脚以及P15、P16、P17口线上实现数据传送。这样方便软件的设计,也能让我们使用起来十分方便。下载口电路如图5所示。 图5 下载口电路图 2.2.5 LED数码管显示电路 数码管实际上是由二极管构成发光二极管正常工作时,其两端正向压降约为1.6V,正向电流约为10mA,为了使数码

11、管达到一定的亮度而又不至于由于电流过大而损坏,使用三极管S8850作为数码管的驱动,同时在P0口和P2口上串上470欧姆的电阻。设计采用的是LED数码管动态显示方式。采用2个四位一体数码管(共阳极)作为显示窗口,既可以节约成本又能简化电路,加上一个74HC573作为驱动和8个470的电阻起限流的作用。将段控口接在P0口上,位控口接在P2口上,实现对显示的控制,数码管显示电路如图6所示。 图6 数码管显示电路 2.2.6 电源电路 课程设计的电源供电模块电源可以通过计算机的USB口供给,也可使用外部稳定的5V电源供电模块供给。此电路由一个输入为220V,输出为15V的变压器,一个六角开关,一个发

12、光二极管,电容,电阻组成。其中C1为2200F,C2为470F,R1为300欧姆,其中C1与C3组成滤波结构,具有滤波作用。300的电阻与发光二极管串联,是为了保护二极管不会因为电流的突然增大而烧坏。电路最后输出5V的电压,给整个主板电路供电。电源电路图如图7所示。 图7 电源电路2.2.7 蜂鸣器电路 蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它。单片机输出的电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。电路中蜂鸣器的负极接到三极管的基极,三极管的发射极经过限流电阻R13后单片机引脚控制,在数字式秒表设计中,当倒计时到达时,

13、蜂鸣器就会响起。蜂鸣器电路如图8所示。 图8 蜂鸣器电路 2.2.8 键盘电路 键盘电路,此电路主要由8个独立式且任一键都独自连一个I/O口构成,说明它们可以独立实现相应的功能。K1,K2,K3,K4按键分别实现即计时,倒计时以及清零和暂停的功能。当按键被按下时,相应的引脚被拉低,经过扫描后,获得键值,并执行按键功能程序,因此按下不同的按键,将执行不同的功能程序。键盘电路图如图9所示。 图9 键盘电路图2.3 电路原理图以及实物图数字式秒表电路原理图(见附录A)、电源电路原理图(见附表B)电路单片机系统板实物图(见附录C)、电路电源实物图(见附表D)2.4 元器件清单 数字式秒表元器件清单(见

14、附录E)3 软件系统的总设计3.1 单片机资源使用情况 数字式秒表设计除了使用单片机工作所使用的硬件资源(如连接晶振的XTAL1和XTAL2,复位引脚RESET)外,对单片机的硬件资源还做了具体的安排。P0口:P0.0-P0.7作为数码管显示器的段控。P1口:P1.0、P1.2、P1.3、P1.4(由于自己的P1.1口所接的按键不怎么灵敏所以不用P1.1口)作为独立式键盘的输入端。P2口:P2.0-P2.7分别控制数码管LED0-LED7的位控码驱动。3.2 监控程序部分 监控程序是整个程序的主体,主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制。可以对各个中断程序

15、进行调用,协调各个子程序之间的联系。系统初始化后,数码管显示P.。调用键扫描程序,判断是否有键按下,当有键按下时,执行各键对应的键功能。流程图如图10所示。 图10 监控程序流程图 3.3 定时中断程序部分通过AT89S52自身的资源,及定时器来实现定时一秒的功能。由于定时器比单纯的延时精确,所以会让设计的秒表更精确,采用定时器0,用工作方式1。流程图如图11所示。 图11 定时中断流程图3.4 按键扫描程序部分通过按键扫描程序,确认键是否按下,哪个键按下,当有键按下时,得到相应的键值。方便主程序调用时取出键值。此电路中,S1,S2为计时和倒计时键,S3,S4为清零和暂停键,S5,S6为保存键

16、值和停止保存键,S7和S8为排名计数键。此程序部分操作速度快,以及软件结构简单,比较实用于按键较少操作速度较高的场合。程序流程图如图12所示。 图12 按键扫描程序流程图3.5 延时程序部分延时程序是为了保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率大小决定了单片机系统工作的快慢。延时程序也指系统的标准定时时钟。由于视网膜暂留效应,通过调用10毫秒的延时程序,动态逐个点亮数码管。实现时间信息的显示。延时程序流程图如图13所示。 图13 延时程序流程图 3.6 显示程序部分 显示模块通过数码管的动态显示,系统初始化后,数码管显示P.。调用键扫描程序,判断是否有键按下,当有

17、键按下时,各位数码管显示相应数值。本电路通过P1口实现:而每一位的公共端,即LED的位控则由P3口控制,由数码管显示模块显示各段的数据情况。显示程序流程图如图14所示。14 图14 显示程序流程图 4 实物测试与误差分析4.1 实物测试流程及结果图数字式秒表设计中有8个按键,其中S1为计时按键(开始计时),接P1.0口;S2为倒计时键(开始倒计时),接P1.1口;接 S3为清零键(清除计数值),接P1.2口;S4暂停键(暂停计数),接P1.3口;S5为保存键(保存当前计数值),接P1.4口。S6为停止键(停止保存当前计数值)。接P1.5口,S7和S8分别是显示计数值的先后,分别接在P1.6口和

18、P1.7口。电路测试结果如图15图16,图17,图18,图19所示。 图15 “P.”运行状态 把程序导入实验板中,数码管显示P.,如果不按任何键,数码管会一直显示P.,因为没有启动定时器,不会进行计数。 图16 秒表计时状态 按下计时键后,秒表进入计时状态。 图17 清零状态 无论秒表正在工作在哪个按键下,只要按下清零,秒表就会进入清零状态。 图18 倒计时状态 按下S2键(倒计时键)秒表就会进入倒计时工作状态。 图19 保存计数值的结果图当按下S5键时保留计数值,再按下S6键会停止保存,再按下S7和S8键会显示保存计数值的先后。4.2 误差分析 秒表设计是有误差的,但是肉眼是看不到的。通过

19、理论分析,有三种可能:主程序调用显示函数,延时函数,键扫描函数,CPU执行相关的函数时需要时间,造成误差。软件产生的误差:经过下载到板子,在第一次测试时,定时器的初值为0xd8f0,在13分钟后误差达到了一秒,分析应该是程序本身跳到定时器0中断去需要时间,从而所引起的误差。经过计算并权衡,第二次测试把初值设置成0xd8f6,结果在四十分钟的时候出现了一秒的误差。在经过计算之后第三次测试将初值设置为0xd8f8,第三次测试效果很好,在60分钟的时候误差还控制在一秒之内。硬件系统:由于元器件的布局,PCB走线的不同,产生一定的干扰。特别是在晶振高频信号的作用下,硬件系统可能随之产生一定的误差,按按

20、键时会有抖动期,同时板子反应也需要一定时间,但开始和暂停都会产生按键抖动,所以这部分的误差应该较小。同时制板做的质量不是很好,所以不能够排除整体设计对单片机有影响,所以在用板子计时时会有一些误差。4.3 设计体会 经过本次单片机数字式秒表的课程设计,也对单片机有了一次深入的理解,并能够提升将来在学习工作中遇到的单片机设计问题,在实际的设计过程中,刚开始规划不合理,走了很多弯路,后来通过使用中断,合理的设计便解决了所有的按键和现实问题,在实物制作方面,也出现了许多虚焊,后面一一解决。在程序设计中,更加深入的了解了中断的使用和本质,合理利用这些,会使程序简化而不会出错。 结束语在课程设计中,经历了

21、很长一段时间,老师很早就把课程设计的任务书发给了我们,然后给了我们很长的时间去选择自己要做的课题。理论知识的学习,老师的教导,加上实验课自己编程操作,让自己积累了很多经验。所以在这次设计中,从容地去解决遇到的问题,实在无法解决,就去问同学,跟同学一起讨论,上网百度相关知识。此次设计中,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重

22、重,但可喜的是最终都得到了解决。本次数字式秒表的软件设计中发现了很多问题。在按键调整时间时,在没有释放键盘的状态下,数码管是灭的。在解决问题的过程中,我将问题定位在键扫描的缺陷。修改的方法是将键扫描程序中的延时函数用显示函数代替。这样,CUP在执行键扫描时一直在调用显示函数,以免造成CPU不送有效地时间数据,长按键盘数码管不显示的情况。在时,分,秒的减1过程中,比如用时作为例子,当时减到0时,如果在减1时,本应该为21,但出现了乱码,在一次又一次的修改,调试中,才解决了这个问题。 为期一学期的单片机课程学习就要结束了,经过本次课程设计后,才发现自己掌握的单片机很少很少。学习单片机技术不光学习单

23、片机的理论知识,更要将其运用于生活实践当中。从当初做试验板,再到单片机实验,然后最后的数字式秒表课程设计。老师告诉了我们任务,期初是给我们制定了单片机学习要求。在理论授课中不断地教授我们相关设计的知识,督促我们完成任务。有的时候,自己感觉已经掌握得差不多了,但是实际操作起来就有问题出现了。每次编写程序,都要把程序下载在实物中看结果,然后通过结果来分析我程序的错误跟漏洞,又或者是在KEIL软件中调试,查看哪里错误。非常感谢老师对我的教导跟帮助,同时也感谢同学对我的帮助,才能让我完成得比较顺利。在这次设计中,让我学到了很多,理论与实际是要相结合的,那样才会有完美的结果。参考文献1 李广弟.单片机基

24、础M.北京:北京航空大学出版社,2007.06.28302 邱光源.电路(第五版)M.北京:高等教育出版社,2006.32353 张洪润主编.单片机原理及应用M.北京:科学出版社,2002.8.26274 http:/WK 2014致 谢 在数字式秒表课程设计中,我得到了许多人的帮助。首先我要感谢我的父母给我条件去进行学习,其次要感谢我的同学老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次设计的主要原因,重要的是她帮助我解决了许多技术上的难题,让我能把课程设计做的更加完善。也谢谢我的同学雷石秀,在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。

25、 最后再一次感谢所有在设计中帮助过我的良师益友和同学。附 录附录A 数字式秒表电路原理图附录B 电源电路原理图40附录C 电路单片机系统板实物图附录D 电源电路实物图附录E 元器件清单 元器件名称 规格 数目AT89S52单片机AT89S52单片机芯片锁紧座四位一体共阳数码管四位一体共阳数码管插座74HC57374HC573芯片插座晶振发光二极管单排插针三极管蜂鸣器小按键下载口座子六脚按键电源开关USB电源线USB电源线插座电阻电阻电阻电解电容瓷片电容排阻排阻短路冒杜邦线8PPCB板子固定螺钉螺帽USB下载线 40P 40P 40P 20P 20P 12MHz 40P 9012 200 470

26、 1K 22uf 33pf 10k 470 3mm11211119211101111184224141141附录F 程序清单*项目名称:数字式秒表设计者:李迎指导老师:贾雅琼班级:电子1402班设计日期:2016年10月21日功能:数字式秒表上电或按键复位后能自动显示系统提示符“P.”,进入准备工 作状态。该数字式秒表应具有开始、暂停、连续、清零和停止功能。操作:(1)复位显示系统提示符“P.”; (2)S1按键是数字式秒表计时键:S2按键是秒表倒计时键,S3按键是 清零按键,S4是暂停键 (3)S5按键是数字式电子钟保存键:S6按键是暂停保存键,S7,S8是 计时次数键。 */* 主程序如下

27、所示:*/全局变量说明模块*/#include<reg52.h>#include<stdio.h>#include<math.h>#include"delay.h"#include"display.h"#include"keyscan.h"#define uchar unsigned char#define uint unsigned int*/延时模块*/#include<reg52.h>#include"delay.h"#define uchar unsigned

28、 char#define uint unsigned intvoid delay(uint xms)uchar i;while(xms-) for(i=0;i<120;i+);*/按键模块*/#include<reg52.h>#include"keyscan.h"#include"delay.h"#define uchar unsigned char#define uint unsigned int/* 函数原型:keychuli();* 功 能:处理与键盘相连的P1口的内容,作为键值。*/uchar keychuli() uchar

29、k; k=P1; /P1口内容送K k=k; /取反 return(k); /返回键值 /* 函数原型:key();* 功 能:键盘扫描函数,函数返回值即键值。*/uchar keyscan() uchar keyzhi,keyzhii; /键盘按键键值临时存放 keyzhi=keychuli(); /调P1口处理函数 if(keyzhi!=0) /有键动作延时去抖动,否则函数返回 delay(5); delay(5); keyzhi=keychuli(); /再次调P1口处理函数 if(keyzhi!=0) /真正有键按下,取键值并暂存 keyzhii=keyzhi; while(keyzh

30、i!=0) /判按键是否释放,没有释放延时去抖动等待释放 delay(200); delay(200); keyzhi=keychuli(); keyzhi=keyzhii; /按键释放后恢复按键键值 return(keyzhi); /返回按键键值 */数码管模块*/#include<reg52.h>#include"delay.h"#include"display.h"#define uchar unsigned char#define uint unsigned intuchar code DKcode=0xc0,0xf9,0xa4,0x

31、b0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0x0c,0xbf,0x7f;/0-9,A-F,灭,“P”,"-",段控码表uchar code WKcode=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;uchar fincode8=18,17,17,17,17,17,17,17;void display() uchar j,k; for(j=0;j<8;j+) P2=WKcodej;k=fincodej;P0=DKcodek;dela

32、y(1);P0=0xff; */主函数*/#include<reg52.h>#include<stdio.h>#include<math.h>#include"delay.h"#include"display.h"#include"keyscan.h"#define uchar unsigned char#define uint unsigned intsbit Buzzer=P31;uchar fincode;uchar cishu=0,b=0,s=0,m=0,ms=0;void main()uc

33、har i=0,l=0,ii=0,yi=1,er=1,san=0,si=1,ss21=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,mss21=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,mm21=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,d=0,v=0; while(yi) v=keyscan(); if(v!=0) TMOD=0x01;TH0=(65536-46083)/256;TL0=(65536-46083)%256; EA=1;ET0=1; switch(v) ca

34、se 0x01:TR0=1;er=1;fincode7=17; fincode1=19;fincode4=19;fincode0=0;fincode2=0;fincode3=0;fincode5=0; while(er) v=keyscan(); if(v!=0)switch(v) case 0x04:TR0=0;er=0;ms=0;s=0;m=0;fincode0=0;fincode1=0;fincode2=0;fincode3=0;fincode4=0; break; /清零键 case 0x08:TR0=0; dodisplay(); v=keyscan(); while(v!=0x08); TR0=1; break; /暂停键 case 0x10:i+;ii=i;ssi=s;mmi=m;ms=mssi;l=1;san=1;break; /保存键 case 0x20:TR0=0;while(san) v=keyscan(); if(v!=0) switch(v) case 0x40:if(l>1)l-;s=ssl;m=mml;ms=mssl;fincode7=l;fincode0=ms%10;fincode2=s%10; fincode5=m%10;fincode3=s/10; elsefincode7=1;fincode3=ss1/10;f

温馨提示

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

评论

0/150

提交评论