基于51单片机温度与时钟检测的设计与实现_第1页
基于51单片机温度与时钟检测的设计与实现_第2页
基于51单片机温度与时钟检测的设计与实现_第3页
基于51单片机温度与时钟检测的设计与实现_第4页
基于51单片机温度与时钟检测的设计与实现_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

湖南商务职业技术学院毕业设计

目录

1产品功能分析.....................................................1

2设计方案遴选.....................................................1

2.1单片机的选择...............................................1

2.2显示方案的选择.............................................1

2.3时钟模块的选择.............................................1

2.4温度传感器的选择...........................................1

2.5系统框图设计...............................................1

3产品硬件设计.....................................................2

3.1系统原理图及工作原理........................................2

3.2STC89C52单片机核心电路设计................................2

3.3按键控制电路设计..........................................4

3.4时钟电路...................................................5

3.5测温电路...................................................5

3.6LCD1602液晶显示模块电路...................................6

4产品软件设计......................................................7

4.1主程序流程图................................................7

4.2LCD1602液晶显示程序设计....................................7

4.3产品程序清单...............................................8

5产品使用说明......................................................8

5.1产品装配图................................................8

5.2硬件调试...................................................9

5.3产品使用说明.............................................10

6产品设计技术标准..............................................10

参考资料..........................................................11

附录..............................................................12

附录1元器件清单..............................................12

I

湖南商务职业技术学院毕业设计

附录2电路原理图..............................................12

附录3PCB设计图.............................................14

附录4产品实物图.............................................14

附录5主程序代码.............................................15

II

湖南商务职业技术学院毕业设计

基于51单片机温度与时钟检测的设计与实现

1产品功能分析

从古至今,人们的日常生活和工作方式都离不开对时间的把控和对温度

的了解。随着科技的发展,电子温度时钟逐渐的成为了人们的日常计时工具。

本电子时钟在硬件上面采用了STC89C52单片机作为核心主导,由DS1302时钟

芯片作为时间信号,DS18B20传感器接收温度值,1602液晶显示温度时间。

2设计方案遴选

2.1单片机的选择

采取了单片机作为系统控制器。因为具有可稳当强、性价比高、电压低、

功耗底等优点得到了迅速发展和推广,单片机算术功能强大,自由度大,软件

编程灵活,可以使用软件编程功能实现各种逻辑功能,并且其功耗低,体积小

等优点。

2.2显示方案的选择

方案一:采用LED数码管动态扫描,价格虽适中,其显示数字也合适,并

且和单片机相互连接时占用的接口线少,但因为其需要借助74LS164移位寄存

器进行移位,在电路调试时会有许多的阻碍,所以不采用其作为显示。

方案二:采用LCD液晶显示屏,因为其显示功能强大,也可以显示许多文

字和图形。显示丰富、清晰明了,对使用电子时钟来说,采用1602的液晶屏

就行,价格也还算实惠,所以采用LCD1602液晶显示屏作为显示模块是最佳的

选择。

2.3时钟模块的选择

采用DS1302时钟芯片来使时钟实现,DS1302是一种高性能、低功耗的实

时时钟电路,它能让时、分、秒进行计时,工作时的电压为2.5V~5.5V。采用

了三线接口和CPU同步进行通信,并且可以一次传送多个字节的时钟信号。

DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。其增加了主电

源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。

其主要的特点是采用串行数据传输,可以为掉电保护电源提供可编程的充电功

能,并且可以关闭充电功能。因此,本设计中采用DS1302提供时钟

1

湖南商务职业技术学院毕业设计

2.4温度传感器的选择

采用数字单片智能温度传感器,数字温度传感器包含A/D转换器、温度传

感器、信号处理器、存储器(或寄存器)和接口电路等模块。DS18B20是美国

DALLAS公司生产的一线式数字温度传感器,它的温度测量范围在-55℃~

125℃之间,测温分辨率可以到达0.0625℃,被测温度用符号扩展的16位数字量

方式并以串行形式输出,其工作电源既能采用寄生电源方式产生,也可远端引

入。多个DS18B20还可以将数据线并联到CPU的同一根数据线上,CPU只需一

个IO口就能与多个DS18B20进行通信,占用CPU的端口较少,并且制作简

单,外接电路简单

2.5系统框图设计

产品设计系统框图如下图1所示:

按键控制电路

单片机

时钟电路最小系

1602液晶显

示电路

测温电路

图1系统框图

3产品硬件设计

3.1系统原理图及工作原理

整个系统使用了STC89C52单片机作为核心器件,配合多个器件,构成单

片机的最小系统。其它模块围绕着单片机最小系统展开。

其中包括,显示设备使用1602液晶,可以同时显示时、分、秒和温度值

等基本信息;时钟模块采用DS1302芯片,初始化之后,就会开始运行计算时

间,单片机只需进行时间信息的读取即可;温度传感器使用DS18B20,温度值

可以精确到小数后一位。

本设计还设置了3个按钮作为可操作输入设备,可以对当前设置时间进行

2

湖南商务职业技术学院毕业设计

修改设置;最后是供电采用常用的USB5V进行供电

图2电路原理图

3.2STC89C52单片机核心电路设计

STC89C52单片机可以兼容MCS51系统,有着8K可反复擦写(>1000次)

FlashROM,有32个双向I/O口,256x8bit内部RAM,3个16位可编程定时/

计数器中断,其时钟频率为0-24MHZ,有两个串行中断两个外部中断源一个有

八个中断源,两个可读写中口线,三级的加密位,有着低功耗空闲和掉电模

式,软件有设置睡眠和唤醒的功能。并且STC89C52有PDIP、PQFP/TQFP及

PLCC等三种封装形式,以适应不同产品的需求。

STC89C52的最小系统如图3所示,整个最小系统由晶振电路部分、复位电

路部分和电源电路等三个部分组成。

ST89C52单片机引脚图如下图3所示:

3

湖南商务职业技术学院毕业设计

图3STC89C52单片机引脚图

STC89C52单片机原理图实物图如下图4所示:

图4STC89C52单片机实物图

ST89C52单片机原理图个引脚功能如下所示:

端口引脚第二功能注释

P3.0RXD串行口数据接收端

P3.1TXD串行口数据发送端

P3.2/INT0外中断请求0

P3.3/INT1外中断请求1

P3.4T0定时/计数器0外部计数信号输入

P3.5T1定时/计数器1外部计数信号输入

P3.6/WR外部RAM写选通信号输出

P3.7/RD外部RAM读选通信号输出

4

湖南商务职业技术学院毕业设计

图5STC89C52单片机原理图

3.3按键控制电路设计

本电路总共设计了三个按钮都采用了独立键盘的方式

时间键:按住可以依次选择所要调试的时分秒。

加键:按一下就可以让时间键所选中的时分秒加一个时间点。

减键:按一下就可以让时间键所选中的时分秒减一个时间点。

按键的连接图如下图6所示

图6按键原理图

5

湖南商务职业技术学院毕业设计

3.4时钟电路

时钟模块的电路原理图如下图7所示,1,4脚都分别接电路的VCC和GND

上,这2个是芯片工作的电源输入脚。第8脚接了一个纽扣电池当做时钟芯片

的后备电池,可以保证断电后时钟继续行走。第2脚和第3脚接了一个

32.768K的晶振给芯片提供时钟脉冲,最后,第5、6、7依次连接到单片机的

IO口,进行数据的传输.

图7时钟电路原理图

3.5测温电路

测温电路原理图如下图8所示,其电路可以与DS1822程序兼容,他的每

个设备内部ROM上面都烧录了一个专属的64位序列号,不需要外围的元器

件,可供的电压范围在3.0-5.5伏之间。

图8测温电路原理图

3.6LCD1602液晶显示模块电路

液晶显示器其体积小、重量轻、功耗低的特色。由于其功耗低、显示信息

6

湖南商务职业技术学院毕业设计

量大、无辐射、使用时间长,已被广泛应用,本系统显示采用了液晶模块1602

可以显示2行16个字符,能十分方便的显示一些常用的符号、英文字母或者

阿拉伯数字。通过自定义还可以显示一些十分简单的汉字。

LCD1602引脚功能表如图所示:

编号符号引脚说明

1VSS电源地极

2VDD电源正极

3VL液晶显示偏压

4RS数据/命令选择

5R/W读/写选择

6E使能信号

7D0-D7数据

8BLA背光源正极

9BLK背光源负极

图9液晶显示器电路原理图

图10液晶显示器实物图

7

湖南商务职业技术学院毕业设计

4产品软件设计

本产品采用了C语言和KEILC51的编程环境,运用了相对简单的模块化

设计,形成了整体的程序。

4.1主程序流程图

开始

液晶初始化

时钟芯片初始化

读取时间信息

显示时间信息

读取温度值

显示温度值

设置按键是

按下?

否进入时钟设置

结束

图11程序流程图

8

湖南商务职业技术学院毕业设计

4.2LCD1602液晶显示程序设计

开始

定位行列坐标

显示一个字符

否数据显

示完?

结束

图12液晶显示流程图

液晶显示在一开始显示之前,必须要先确定一个位置,这个代表在其中哪

个方位显示,好比在第二行第五列这个位置。只要完成这个坐标定位后就可以

显示其中的内容。要注意它在显示的时候是一个定位一个定位的完成的。每当

显示一个字符串或者一个数字的时候,只需要在最开始的时候完成好一个定

位,在这之后地每一个字符串或者数字都会跳转到后面一个位置,不需要对其

每一个字符取定位。

4.3产品程序清单

初始化

完成产品软件

显示程序

主程序流程图设计始

main.c

时钟程序

温度传感器程序

图13程序清单

9

湖南商务职业技术学院毕业设计

通过相应的软件对所需要的产品进行程序编写,编写完成后对其进行相

应的编译测试,如编译失败,则进行相应修改,编译成功则通过相应软件烧录

到ST89C52单片机芯片内。

图14编译成功图

5产品使用说明

5.1产品装配图

本产品STC89C52单片机、温度传感器、时钟芯片、液晶等器件组成。

装配图如下:

10

湖南商务职业技术学院毕业设计

1602液晶显示

排阻ST89C52

温度传感器

30pF电容12M晶振

电阻独石电容

时钟芯片

纽扣电池

晶振

加键

电源开关减键

设置时间按

图15装配图

5.2硬件调试

在组装前所以的元器件都应该测试一遍,以确保所用元器件全都合格。

分立元件时应仔细辨明器件的正反向,标志应该放置在比较容易看到的地

方以方便检查和调试。

上电检测产品是否正常运转。

11

湖南商务职业技术学院毕业设计

将所写的程序烧录单片机中。

程序烧录成功的界面图如下:

图16程序烧录成功图

5.3产品使用说明

1接通电源,然后按下开关键,温度传感器和时钟模块自动检测温度和

显示时间。

2首次接通电源需要手动去调试时间,温度不需要。

3当调试好后其显示屏会按照周围的环境温度和所设置的时间准确播

报。

6产品设计技术标准

[1]J-STD-001E电气与电子组件的焊接要求

[2]IPC-A-610D(中文版),IPC-A-610E电子组件的可接受性要求

12

湖南商务职业技术学院毕业设计

[3]IPC-7711/21电子组件和电路板的返工&返修

[4]GB/T11457-2006信息技术软件工程术语;

[5]GB/T8566-2007信息技术软件生存周期过程标准;

[6]GB/T8567-2006计算机软件文档编制规范。

13

湖南商务职业技术学院毕业设计

参考资料

[1]郑郁正.单片机原理及应用.成都:四川大学出版社,2003.9.

[2]王怀平,王仁波,胡开明.Proteus仿真设计基于单片机AT89C51的电子万年历[J].科技广场,2008,

10:197-198.

[3]潘永雄,沙河.电子线路CAD实用教程(第三版).西安:西安电子科技大学出版社,2007.7

(2009.8重印).

[4]谭浩强.C程序设计(第三版).北京:清华大学出版社,2005(2007重印).

14

湖南商务职业技术学院毕业设计

附录

附录1元器件清单

基于51单片机温度检测与时钟的设计与实现20移动互联1班杨文斌

序号元件标号元件名称规格数量

1BT1电池1

2C1电解电容10uF1

3C2,C3独石电容30pF2

4J1po1

K1,K2,

5开关3

K3

6LCD1液晶16021

7R1电阻1031

8R3电阻1031

9R4电位器10K1

10R5电阻4.7K1

11SW1开关1

12U1单片机STC89C521

13U2时钟芯片1

14U3温度传感器DS18B201

15X1晶振12M1

16X2晶振32.768K1

15

湖南商务职业技术学院毕业设计

附录2电路原理图

16

湖南商务职业技术学院毕业设计

附录3PCB设计图

17

湖南商务职业技术学院毕业设计

附录4产品实物图

18

湖南商务职业技术学院毕业设计

附录5主程序代码

基于51单片机温度检测与时钟的设计与实现

//移动互联应用技术1班杨文斌

#include<reg52.h>

#include<intrins.h>

#defineucharunsignedchar//以后unsignedchar就可以用uchar代

#defineuintunsignedint//以后unsignedint就可以用uint代替

sbitLcdRs_P=P2^7;//1602液晶的RS管脚

sbitLcdRw_P=P2^6;//1602液晶的RW管脚

sbitLcdEn_P=P2^5;//1602液晶的EN管脚

sbitRST_P=P1^3;//时钟芯片DS1302的RST管脚

sbitSDA_P=P1^2;//时钟芯片DS1302的SDA管脚

sbitSCK_P=P1^1;//时钟芯片DS1302的SCK管脚

sbitKeySet_P=P3^2;//设置时间按键

sbitKeyDown_P=P3^3;//减按键

sbitKeyUp_P=P3^4;//加按键

sbitDQ=P2^0;//DS18B20传感器的引脚定义

ucharTimeBuff[3]={18,30,50};//时间数组

//TimeBuff[0]代表小时,范围00-23

//TimeBuff[1]代表分钟,范围00-59

//TimeBuff[2]代表秒钟,范围00-59

/*********************************************************/

//毫秒级的延时函数,time是要延时的毫秒数

/*********************************************************/

voidDelayMs(uinttime)

{

uinti,j;

for(i=0;i<time;i++)

for(j=0;j<112;j++);

}

/*********************************************************/

//延时15微秒

/*********************************************************/

19

湖南商务职业技术学院毕业设计

voidDelay15us(void)

{

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

}

/*********************************************************/

//复位DS18B20(初始化)

/*********************************************************/

voidDS18B20_ReSet(void)

{

uchari;

DQ=0;

i=240;

while(--i);

DQ=1;

i=30;

while(--i);

while(~DQ);

i=4;

while(--i);

}

/*********************************************************/

//向DS18B20写入一个字节

/*********************************************************/

voidDS18B20_WriteByte(uchardat)

{

ucharj;

20

湖南商务职业技术学院毕业设计

ucharbtmp;

for(j=0;j<8;j++)

{

btmp=0x01;

btmp=btmp<<j;

btmp=btmp&dat;

if(btmp>0)//写1

{

DQ=0;

Delay15us();

DQ=1;

Delay15us();

Delay15us();

Delay15us();

Delay15us();

}

else//写0

{

DQ=0;

Delay15us();

Delay15us();

Delay15us();

Delay15us();

DQ=1;

Delay15us();

}

}

}

/*********************************************************/

//读取温度值

/*********************************************************/

intDS18B20_ReadTemp(void)

{

ucharj;

intb,temp=0;

DS18B20_ReSet();//产生复位脉

DS18B20_WriteByte(0xcc);//忽略ROM指令

DS18B20_WriteByte(0x44);//启动温度转换指令

21

湖南商务职业技术学院毕业设计

DS18B20_ReSet();//产生复位脉

DS18B20_WriteByte(0xcc);//忽略ROM指令

DS18B20_WriteByte(0xbe);//读取温度指令

for(j=0;j<16;j++)//读取温度数量

{

DQ=0;

_nop_();

_nop_();

DQ=1;

Delay15us();

b=DQ;

Delay15us();

Delay15us();

Delay15us();

b=b<<j;

temp=temp|b;

}

temp=temp*0.0625*10;//合成温度值并放大10倍

return(temp);//返回检测到的温度值

}

/*********************************************************/

//1602液晶写命令函数,cmd就是要写入的命令

/*********************************************************/

voidLcdWriteCmd(ucharcmd)

{

LcdRs_P=0;

LcdRw_P=0;

LcdEn_P=0;

P0=cmd;

DelayMs(2);

LcdEn_P=1;

DelayMs(2);

LcdEn_P=0;

}

/*********************************************************/

//1602液晶写数据函数,dat就是要写入的数据

/*********************************************************/

22

湖南商务职业技术学院毕业设计

voidLcdWriteData(uchardat)

{

LcdRs_P=1;

LcdRw_P=0;

LcdEn_P=0;

P0=dat;

DelayMs(2);

LcdEn_P=1;

DelayMs(2);

LcdEn_P=0;

}

/*********************************************************/

//1602液晶初始化函数

/*********************************************************/

voidLcdInit()

{

LcdWriteCmd(0x38);//16*2显示,5*7点阵,8位数据口

LcdWriteCmd(0x0C);//开显示,不显示光标

LcdWriteCmd(0x06);//地址加1,当写入数据后光标右移

LcdWriteCmd(0x01);//清屏

}

/*********************************************************/

//液晶光标定位函数

/*********************************************************/

voidLcdGotoXY(ucharline,ucharcolumn)

{

//第一行

if(line==0)

LcdWriteCmd(0x80+column);

//第二行

if(line==1)

LcdWriteCmd(0x80+0x40+column);

}

/*********************************************************/

//液晶输出字符串函数

/*********************************************************/

voidLcdPrintStr(uchar*str)

{

while(*str!='\0')

23

湖南商务职业技术学院毕业设计

LcdWriteData(*str++);

}

/*********************************************************/

//液晶显示内容的初始化

/*********************************************************/

voidLcdShowInit()

{

LcdGotoXY(0,0);

LcdPrintStr("T=C");

LcdGotoXY(1,0);

LcdPrintStr("::")

LcdGotoXY(0,10);//温度单位摄氏度上面的圆圈符号

LcdWriteData(0xdf);

}

/*********************************************************/

//液晶输出数字

/*********************************************************/

voidLcdPrintNum(ucharnum)

{

LcdWriteData(num/10+48);//十位

LcdWriteData(num%10+48);//个位

}

/*********************************************************/

//刷新时间显示

/*********************************************************/

voidFlashTime()

{

LcdGotoXY(1,4);//小时

LcdPrintNum(TimeBuff[0]);

LcdGotoXY(1,7);//分钟

LcdPrintNum(TimeBuff[1]);

LcdGotoXY(1,10);//秒钟

LcdPrintNum(TimeBuff[2]);

}

/*********************************************************/

//温度值的显示

/*********************************************************/

24

湖南商务职业技术学院毕业设计

voidLcdPrintTemp(inttemp)

{

if(temp<0)

{

LcdWriteData('-');//显示负号

temp=0-temp;//负数转为正数

}

else

{

LcdWriteData(temp/1000+0x30);//显示百位

}

LcdWriteData(temp%1000/100+0x30);//显示十位

LcdWriteData(temp%100/10+0x30);//显示个位

LcdWriteData('.');//显示小数点

LcdWriteData(temp%10+0x30);//显示小数后一位小数

}

/*********************************************************/

//初始化DS1302

/*********************************************************/

voidDS1302_Init(void)

{

RST_P=0;//RST脚置低

SCK_P=0;//SCK脚置低

SDA_P=0;//SDA脚置低

}

/*********************************************************/

//从DS1302读出一字节数据

/*********************************************************/

ucharDS1302_Read_Byte(ucharaddr)

{

uchari;

uchartemp;

RST_P=1;

/*写入目标地址:addr*/

for(i=0;i<8;i++)

{

if(addr&0x01)

SDA_P=1;

else

25

湖南商务职业技术学院毕业设计

SDA_P=0;

SCK_P=1;

_nop_();

SCK_P=0;

_nop_();

addr=addr>>1;

}

/*读出该地址的数据*/

for(i=0;i<8;i++)

{

temp=temp>>1;

if(SDA_P)

temp|=0x80;

else

temp&=0x7F;

SCK_P=1;

_nop_();

SCK_P=0;

_nop_();

}

RST_P=0;

returntemp;

}

/*********************************************************/

//向DS1302写入一字节数据

/*********************************************************/

voidDS1302_Write_Byte(ucharaddr,uchardat)

{

uchari;

RST_P=1;

/*写入目标地址:addr*/

for(i=0;i<8;i++)

{

26

湖南商务职业技术学院毕业设计

if(addr&0x01)

SDA_P=1;

else

SDA_P=0;

SCK_P=1;

_nop_();

SCK_P=0;

_nop_();

addr=addr>>1;

}

/*写入数据:dat*/

for(i=0;i<8;i++)

{

if(dat&0x01)

SDA_P=1;

else

SDA_P=0;

SCK_P=1;

_nop_();

SCK_P=0;

_nop_();

dat=dat>>1;

}

RST_P=0;

}

/*********************************************************/

//向DS1302写入时间数据

/*********************************************************/

voidDS1302_Write_Time()

{

uchari;

uchartemp1;

uchartemp2;

for(i=0;i<3;i++)//十进制转BCD码

{

temp1=(TimeBuff[i]/10)<<4;

27

湖南商务职业技术学院毕业设计

temp2=TimeBuff[i]%10;

TimeBuff[i]=temp1+temp2;

}

DS1302_Write_Byte(0x8E,0x00);//关闭写保护

DS1302_Write_Byte(0x80,0x80);//暂停时钟

DS1302_Write_Byte(0x84,TimeBuff[0]);//时

DS1302_Write_Byte(0x82,TimeBuff[1]);//分

DS1302_Write_Byte(0x80,TimeBuff[2]);//秒

DS1302_Write_Byte(0x80,TimeBuff[2]&0x7F);//运行时钟

DS1302_Write_Byte(0x8E,0x80);//打开写保护

}

/*********************************************************/

//从DS1302读出时间数据

/*********************************************************/

voidDS1302_Read_Time()

{

uchari;

TimeBuff[0]=DS1302_Read_Byte(0x85);//时

TimeBuff[1]=DS1302_Read_Byte(0x83);//分

TimeBuff[2]=(DS1302_Read_Byte(0x81))&0x7F;//秒

for(i=0;i<3;i++)//BCD转十进制

{

TimeBuff[i]=(TimeBuff[i]/16)*10+TimeBuff[i]%16;

}

}

/*********************************************************/

//按键扫描(设置时间)

/*********************************************************/

voidKeyScanf()

{

if(KeySet_P==0)

{

LcdWriteCmd(0x0f);//启动光标闪烁

LcdGotoXY(1,5);//定位光标到小时闪烁

DelayMs(10);//延时等待,消除按键按下的抖动

28

湖南商务职业技术学院毕业设计

while(!KeySet_P);//等待按键释放

DelayMs(10);//延时等待,消除按键松开的抖动

/*调整小时*/

while(1)

if(KeyDown_P==0)//如果减按键被下去

{

if(TimeBuff[0]>0)//判断小时是否大于0

TimeBuff[0]--;//是的话就减去1

LcdGotoXY(1,4);//光标定位到小时的位置

LcdPrintNum(TimeBuff[0]);//刷新显示改变后的小时

LcdGotoXY(1,5);//定位光标到小时闪烁

{

if(TimeBuff[0]<23)//判断小时是否小于23

TimeBuff[0]++;//是的话就加

温馨提示

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

评论

0/150

提交评论