时间温度万年历电子系统实训报告_第1页
时间温度万年历电子系统实训报告_第2页
时间温度万年历电子系统实训报告_第3页
时间温度万年历电子系统实训报告_第4页
时间温度万年历电子系统实训报告_第5页
已阅读5页,还剩30页未读, 继续免费阅读

下载本文档

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

文档简介

物理与机电工程学院课程设计报告

课程名称:电子系统实训报告

专业班级:2012级电子信息工程(信班

学号:____________________________

学生姓名:____________________________

指导教师:____________________________

完成时间:2015.3.17—2015616

报告成绩:____________________________

评阅意见:

评阅教师日期

时间温度万年历

一、设计任务与要求

1.具有年、月、日、星期、时、分、秒等功能。

2.具有温度计的功能。

3.具有年、月、日、星期、是、分、秒等校准功能。

4.具有复位功能。

二、方案设计与论证

2.1显示模块选择方案与论证:

方案一:

采用LED数码管动态扫描,对于数字显示比较合适而且价格也比较合

适。采用动态扫描法与单片机连接,占用单片机线口少。但是显示容量有所不足,

不太适合采用。

方案二:

采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,

虽然价格比较昂贵,但是比较适合作为本次试验的显示模块。

方案三:

采用点阵式数码管显示。点阵式数码管是由八行八列的发光二极管组

成,对于显示文字比较适合,如采用在显示数字显得太浪费,且难度也相对较高,

所以不用此种作为显示。

经过综合比较最终选择方案二,即选择LED液晶显示屏作为显示模块。

2.2温度采集方案论证:

方案一:

利用传统的温度采集电路,该电路需要经过温度采集、信号放大、滤波、

A\D转换等一系列工作才能得到温度的数字量。因此电路的结构非常复杂,并且

这种方式不仅是电路复杂、元器件个数多,而且温度采集的线性度和准确度都不

理想,抗干扰能力弱,不太适合采用。

方案二:

利用数字温度传感器DS18B20,该温度传感器功率消耗低、准确度高,

而且比传统的温度传感器有着更好的线性表现,并且电路简单是单总线控制,使

得系统的调制和维护比较简单,而且抗干扰能力较传统也比较理想。

经过综合比较最终选择方案二,即选择温度传感器DS18B20作为温度采集。

2.3单片机芯片的选择方案与论证:

方案一:

采用89C51芯片作为硬件核心,89C51是一种带4K字节闪烁可编程

可擦除只读存储器,采用FlashROM,内部具有4KBROM存储空间,能于3V的

超低压工作,而且与MCS-51系列单片机完全兼容,与工业标准的MCS-51指

令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯

片中,89C51是一种高效微控制器,单片机为很多嵌入式控制系统提供了一种

灵活性高且价廉的方案。

方案二:

采用STC12C5A60S2单片机,STC12C5A60S2单片机是宏晶科技生产的

单时钟/机器周期(1T)的单片一机,是高速/低功耗/超强抗干扰的新一代8051单

片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专

用复位电路,2路PW,8路高速10位A/D转换,针对电机控制,强干扰场。

STC12C5A60S2单片机内部有60KB的程序Flash存储器,1KB的数据Flash

存储器,具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误

修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会

对芯片造成损坏,但是总体比较昂贵不太适合学生使用。

经过综合比较最终选择方案一,即选择89C51作为主控制器。

2.4时钟芯片的选择方案和论证:

方案一:

采用单片机定时。单片机集成度高、功能强、可靠性高、体积小、功耗

低、使用方便、价格低廉等一系列优点,单片机的应用领域已从面向工业控制、

通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、

PC机外围以及网络通讯等广大领域。直接采用单片机定时计数器提供秒信号,

计数的脉冲由外部提供,定时的脉冲由外部晶振提供,定时加1的周期为一个

机器周期;定时时间与初值和晶振频率有关。使用程序实现年、月、日、星期、

时、分、秒计数。采用此种方案减少芯片的使用,节约成本,但程序复杂度较

r»i。

方案二:

采用DS1302时钟芯片。DS1302是美国DALLAS公司推出的一种高性

能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、星期、时、分、

秒进行计时,具有闰年补偿功能,工作电压为2.5V〜5.5V。采用双电源供电

(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓

细电流充电的能力。DS1302用于数据记录,特别是对某些具有特殊意义的数据

点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量

系统中。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个

字节的时钟信号或RAM数据。

经过综合比较最终选择方案二,即采用DS1302时钟芯片。

2.5电路设计最终方案确定:

最终选择LED液晶显示屏作为显示模块,选择温度传感器DS18B20作

为温度采集,选择89C51作为主控制器,采用DS1302时钟芯片设计最简单的

最适合学生的比较廉价的温度时间万年历。

三、系统硬件电路设计

3.1元器件清单如下图所示:

32.768晶振1

11.0592晶振1

4脚开关4

10uF电容1

100uF电容1

30pF电容2

1k电阻2

10k电阻1

10k排阻1

10k蓝白电位器1

A89c51单片机1

DS13021

DS18B201

8脚插座1

40脚插座1

16孔排插1

LCD1602液晶显示器1

3.2总体电路结构图如下:

主控模块采用性价比较高的89c51单片机芯片,在其内部烧写好程序,可

通过程序的运行控制测温模块进行测温;测温模块主要是由DS18B20构成,将

其与所测对象进行接触即可获取被测对象的温度数据,而所测得的温度和时钟

芯片测得的实时日历将通过显示模块的液晶显示器以数字形式显示;单片机调

用程序,读取DS1302内寄存器,可以得到万年历的时间数据,经过程序处理就

可以输出在LCD上;键盘电路可对实时日历进行调整。

3.3各单元模块功能分析及模块电路设计

3.3.1复位电路

3.3.2晶振电路

C1

-4

-L

夕

口料2p

则

1叩o

Ip

!瑜n

-CRpo.,up

但PD02p

XPo1H躯□

HL2Ip

Po锹h

ONIp

PDSMDsp

做h6I]

9PQvIP

RMNK,

3.3.3控制电路

PN7欣伯

1

.r1口

I.P1ITT2P3IVRXD

n11

P1.1H2EXP3.1HXD~~iF

/F12pa^irro

口

sP13

b1*

P3.4/TD5

TP1SP3ST1

S

P1J6P3J&WR

PI?PZ3.7何□L

A

EIfT&tP-

ARED

todNI

3.3.4显不模块

四、仿真过程与仿真结果

4.1仿真操作过程:

(1)新建工程。打开Keil,单击Project菜单,在弹出的下拉菜单

选择NewProjecto

(2)选择要保存的路径,输入工程文件名字“时间温度万年历”,保

存。

(3)新建一个工程后弹出一个对话框,根据需要选择使用单片机型号,

单击确定。

(4)单击“File”,选择“New”,新建文件并在其中输入程序代码,然

后保存为C语言文件。

(5)回到编辑界面后,单击“Target1”前面的“+”号,然后在“Source

Group1”单击右键选择"AddFileToGroup'SourceGroup1'”,选中上一步

保存的“时间温度万年历.C”文件。

(6)单击“Project”菜单,选中“BuiltTarget",完成程序的编译,

在工程文件夹中找到“时间温度万年历.hex”文件即可。

(7)打开Proteus软件,新建一个文件将硬件原理图绘入图中。

(8)将KEIL生成的HEX文件下载入单片机中,点击“开始”进行仿真。

4.2仿真结果:

五、电路原理图的绘制、PCB的制作、电路的焊接、实物的展示

5.1电路原理图的绘制

利用AltiumDesigner软件电路原理图绘制时遇到了很多困难,其中遇

到最大的困难时有些元器件无法找到封装,导致原理图转为PCB时无法成功。

后来经过向同学请教以及百度得到了解决。自己也学会了制作封装。这也是

一个很大的收获。

成图如图所示:

5.2PCB制作

制作PCB时发现滑动变阻器的封装是贴片的封装,如下图所示:

经过自己重新绘制滑动变阻器的封装后修改PCB如下:

5.3电路的焊接

电路焊接过程中出现了一些问题(检测时发现电路连接不正常,

经过修改后已经没有得到改善)导致了第一次焊接电路板的失败。

第二次制作的电路板焊接时也出现虚焊,后来经过调试终于可

以正常显示了,焊接电路板如下图所示:

5.4实物的展示

经过最终测试得到实物展示的结果如下图显示:

设置键按下:

n4

0'■''

o・1

口

Mon08:30三

09/12/10.

增加键按下:

.

33

C三

09/12/IS

-r

减小键按下:

复位键按下:

六、实验总结

本次实训完成的结果比较理想,最终成品也达到预期想要的结果,只是本次

实训最让我遗憾的地方。纵观本次实训的所有流程以及最后的结果,发现自己存

在太多的不足。平时上课没有注意积累相应的知识,导致做实验时基本就是处在

很茫然的一个状态,无从下手;幸亏的到同学的帮助才得以使实训可以继续下去。

但是过程依旧充满着波折。对元器件的选择和使用方面出现了很大的难题,由于

对元器件缺乏最基本的认识,所以在设计电路是用错了很多元件,直接导致进行

仿真时达不到所要求的结果,后来借鉴了同学的元器件的使用以后,选择出了正

确的元器件,是的仿真的个方面的指标勉强达到要求。但是在由于对Altium

Designer软件的的使用方法不够了解,在电路图转为PCB的过程中出现了一点

小问题,后来看过同学的操作以后才会这一方法。PCB布线也是一大难点,虽

然有自动布线,但是自动布线后还是有许多方面是不符合要求的,有些线路不可

避免的重复在一起,倒置布线的失败;如此反复多次以后才得以解决这一问题。

在硬件电路焊接和软件程序设计分别完成的基础之上,进行软硬件的结合与

调试。通过下载将在电脑上已完成的程序下载到单片机芯片中。在调试中发现

软件中存在的问题,及时解决问题,确保系统能正常工作并达到设计要求。通过

反复的调试与实验,可以证明该系统能够较好地完成设计所需的基本要求。即能

够正确的显示万年历。在完成软件系统时,刚开始我是用的是11.0592M的晶振,

所有器件正常,后来我换了12M的晶振,结果温度就不正常了,经过认真排查

才发现是由于DS18B20在数据读取时,对时间要求很精确,由于晶振的不同造

成了读数据的错误,经过这次调试,让我更清晰的认识到了时序对元器件的重

要性。经过万年历的设计,让我学到了很多,让我认识到了学习基础知识的重

要性,当设计完整的系统时,要考虑到硬件和软件两者的结合,有时硬件的不

足,我们可以用软件程序来弥补,从而节约硬件成本,在设计软件程序时要模

块化,可以提高程序的可读性。

七、参考文献

[1]李群芳,肖看.单片机原理、接口及应用.北京:清华大学出版社,2007

[2]谭浩强.C语言程序设计.北京:清华大学出版社,2006

[3]张义和,王敏男,许宏昌等.例说51单片机.北京:人民邮电出版社,2008

[4]刘坤,宋戈,赵红波等.51单片机C语言应用技术开发技术大全.北京:人民

邮电出版社,2008

[5]白延敏.51单片机典型系统开发实例精讲.北京:电子工业出版社,2009

[6]周丽娜.Protel99SE电路设计技术.北京:中国铁道出版社,2009

[7]王为青,程国钢.单片机KeilCX应用开发技术.北京:人民邮电出版

社,200751

[8]江志红.51单片机技术与应用系统开发案例精选.北京:清华大学出版

社,2009

八、程序

#include<reg52.h>

#include<intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitlcden=P2A7;//定义下面通过Icden来操作P2A7口,1602液晶使能控制

端

sbitlcdwr=P2A5;//定义下面通过Icdrw来操作P2A5口,1602读写选择端

sbitlcdrs=P2A6;〃定义选数据寄存器选指令寄存器控制端

sbitsck=P3A6;//定义时钟总线

sbitsda=P3A4;//定义DS1302数据总线

sbitrst=P3A5;//DS1320复位

sbitsl=P3AO;〃定义设置按钮

sbits2=P3A1;//定义调时按钮

sbits3=P3A2;//定义确定按钮

sbitDQ=P3A7;//定义DS18B2O通信端口

sbitACC0=ACCA0;

sbitACC7=ACCA7;

charfen,shi,miao,ri,yue,nian,zhou,s1num,s2num,flag1,flag2;

ucharcodetable[]={M20--”};//要写入1602液晶的数据

ucharcodetable1[]={""};//字库中的字可直接以外加""号

的形式直接写入

ucharcode

Weeks[][3]={{"SUN"},{"MON"},{"TUE"},{"WED"},{"THU"},{"FRI"},{"SA

T"},{"SUN"}};

uchari,j;

voiddelayO(uintz)

(

while(z-);

)

voiddelay(uintz)

(

uintx,y;

fbr(x=z;x>0;x—)

for(y=l10;y>0;y");

)

voidwrite_com(ucharcom)

(

lcdwr=0;//Icdwr为读写控制端,lcdwr=0,这里可不写

lcdrs=0;〃液晶rs接口为0时,写指令,rs为1时写数据

P0=com;〃将要写的指令赋给P0口,

delay(5);〃由1602读写操作时序图,先将指令赋给P0口,延时后

将使能

lcden=1;//端Icden置高,再延时一段时间,然后将Icden置低,

这样指令

delay(5);//就写入到LCD了

lcden=0;

voidwrite_data(uchardate)

lcdrs=l;〃与写指令类似,这里Icdrs设为1

PO=date;

delay(5);

lcden=l;

delay(5);

lcden=O;

)

voidinit_1602()

(

lcdwr=0;

lcden=0;

write_com(0x38);〃设置LCD为16*2显示、5*7点阵、8位数据接口

模式

write_com(0x0c);〃开显示、不显示光标

write_com(0x06);〃写一个字符后,地址指针加1

write_com(0x01);〃显示清0

P0=0xff;

)

//DS18B20初始化函数

voidInit_DS18B20(void)

(

unsignedcharx=0;

DQ=1;//DQ复位

delay0(8);〃稍做延时

DQ=0;//单片机将DQ拉低

delay0(80);〃精确延时大于480us

DQ=1;//拉高总线

delay0(14);

x=DQ;〃稍做延时后如果x=0则初始化成功x=l则初始化失败

delay0(20);

)

//DS18B20读一个字节

ucharReadOneChar(void)

(

unsignedchari=0;

unsignedchardat=0;

for(i=8;i>0;i-){

DQ=0;//给脉冲信号

dat»=l;

DQ=1;〃给脉冲信号

if(DQ)dat|=0x80;

delay0(4);

)

return(dat);

)

//DS18B20写一个字节

voidWriteOneChar(unsignedchardat)

(

unsignedchari=0;

for(i=8;i>0;i-){

DQ=0;

DQ=dat&OxOl;

delay0(5);

DQ=1;

dat»=l;

//DS18B20读取温度

uintReadTemperature(void)

(

unsignedchara=0;

unsignedcharb=0;

unsignedinttemp=0;

floattt=O;

Init_DS18B20();

WriteOneChar(OxCC);//跳过读序号列号的操作

WriteOneChar(Ox44);//启动温度转换

Init_DS18B20();

WriteOneChar(OxCC);//跳过读序号列号的操作

WriteOneChar(OxBE);//读取温度寄存器等前两个就是温度

a=ReadOneChar();

b=ReadOneChar();

temp=b;

temp«=8;

temp=temp|a;

if(temp>Oxfff)

(

temp=(〜temp)+l;

flag2=l;

write_com(0x80+0x40+10);

write_data(1-1);

)

else

flag2=0;

write_com(0x80+0x40+10);

write_data(,+,);

)

tt=temp*0.0625;//将温度的高位与低位合并

temp=tt*10+0.5;//对结果进行4舍5入

return(temp);

)

voidgudingtime_1602()

(

ucharnum;

write_com(0x80);〃将指针指向初始位置

for(num=0;num<16;num++)//循环函数,用于将"2012--

"写入液晶

write_data(table[num]);

write_com(0x80+0x40);〃将指针指向1602液晶的第二行

for(num=0;num<16;num++)〃功能与上同,用于将"::

"写入

write_data(table1[num]);

)

voidwrite_sfm(ucharadd,uchartime)//用于在1602上显示年、月、日、时、

分、秒。Add为显示位置,time为要显示的内容

(

ucharshiwei,gewei;

shiwei=time/16;〃将从DS1302中读取的BCD码数

据转化成十六进制十位

gewei=time%16;//十六进制个位

write_com(add+0x80);〃定义显示在液晶的什么位置

write_data(0x30+shiwei);〃由1602液晶字库可知,0~9的数据码

分别对应0x30~0x39

write_data(0x30+gewei);〃初使化中设定了写一个字符后,地

址指针加1,因此这里

}//不用重新光标写位

voidwrite_temp(ucharadd,uinttemp)〃用于在1602上显示年、月、日、时、

分、秒。Add为显示位置,time为要显示的内容

(

ucharshi,ge,xshu;

shi=temp/100;//将从DS1302中读取的BCD码数据转化成

10进制个位和10

ge=temp%100/10;〃进制十位

xshu=temp%10;

write_com(add+0x80);//定义显示在液晶的什么位置

write_data(0x30+shi);〃由1602液晶字库可知,0~9的数据码分别

对应0x30-0x39

write_data(0x30+ge);〃初使化中设定了写一个字符后,地址指针加1,

因此这里

write_com(0x80+0x40+14);

write_data(0x30+xshu);//不用重新光标写位

)

voidwrite_zhou(uchartimel)//用于在1602上显示周信息,与显示

(〃时间日期子函数类似

uchargewei;

gewei=timel%16;〃一周七天,因此只需个位

write_com(0x80+14);

write_data(0x30+gewei);

)

voidInput_lbyte(ucharTD)〃写一字节数据

uchari;

ACC=TD;

for(i=8;i>0;i-)

sda=ACCO;

sck=1;

sck=O;

ACC=ACC»1;

)

)

ucharOutput_lbyte(void)〃读一字节数据

(

uchari;

for(i=8;i>0;i-)

(

ACC=ACC»1;

ACC7=sda;

sck=1;

sck=0;

)

sda=0;

return(ACC);

)

voidwrite_1302(ucharDS_ADD,ucharDS_DAT)〃写操作

(

rst=O;

sck=0;

rst=l;

Input_lbyte(DS_ADD);

Input_lbyte(DS_DAT);

sck=1;

rst=O;

ucharread_1302(ucharDS_ADD)〃读操作

ucharDS_INF;

rst=O;

sck=O;

rst=1;

Input_1byte(DS_ADD);

DS_INF=Output_1byte();

sck=1;

rst=O;

retum(DS_INF);

)

voidinital_1302()

(

write」302(0x8e,0x00);//禁止写保护

write」302(0x90,Oxaa);〃定义充电

write」302(0x80,0x53);//秒

write」302(0x82,0x56);//分

write_l302(0x84,0x09);〃时

write_l302(0x8c,0x15);〃年

write」302(0x88,0x05);〃月

write_l302(0x86,Ox15);//日

write_1302(0x8a,0x03);〃星期

write」302(0x8e,0x80);//开保护

)

voidkeyscan()

(

if(sl==O)//按键1按下且s4在此之前未曾按过

delay(5);

if(sl==O)

flag1=1;

slnum++;

while(!sl);

if(slnum==l)

(

write_com(0x80+4);〃光标移动至I」**位置

write_com(OxOf);〃显示光标

)

if(slnum==2)

(

write_com(0x80+7);

)

if(slnum==3)

{

write_com(0x80+10);

)

if(slnum==4)

(

write_com(0x80+14);

)

if(slnum==5)

(

write_com(0x80+0x40+2);

}

if(slnum==6)

write_com(0x80+0x40+5);

if(slnum==7)

write_com(0x80+0x40+8);

if(slnum==8)

flag1=0;

slnum=0;

write_com(0x0c);〃不显示光标

write_l302(0x8e,0x00);

write_l302(0x80,miao);

write_l302(0x84,shi);

write_l302(0x82,fen);

write_l302(0x8a,zhou);

write_l302(0x8c,nian);

write_l302(0x88,yue);

write_l302(0x86,ri);

write_l302(0x8e,0x80);

gudingtime_1602();

if(slnum!=0)〃按键1按下*次且s4再次之前未曾按过

if(s2==0)

(

delay(5);

if(s2==0)

while(!s2);

if(slnum==l)

intxl,x2;

xIonian%16;

x2=nian/16;

xl++;

if(x2==9&&xl>9)

(

xl=l;

x2=0;

)

if(xl==10)

(

xl=O;

x2++;

)

nian=xl+x2*16;

write_sfm(3,nian);

write_com(0x80+4);

)

if(slnum==2)

{

intxl,x2;

xl=yue%16;

x2=yue/16;

xl++;

if(x2>=1&&x1>=3)

xl=l;

x2=0;

if(xl==10)

(

xl=O;

x2++;

)

yue=xl+x2*16;

write_sfm(6,yue);

write_com(0x80+7);

)

if(slnum==3)

(

intxl,x2;

xl=ri%16;

x2=ri/16;

xl++;

if(x2>=3&&x1>=1)

(

xl=l;

x2=0;

)

if(xl==10)

(

xl=O;

x2++;

)

ri=xl+x2*16;

write_sfm(9,ri);

write_com(0x80+10);

if(slnum==4)

zhou++;

if(zhou==8)

zhou=l;

write_zhou(zhou);

write_com(0x80+14);

)

if(slnum==5)

{

intxl,x2;

xl=shi%16;

x2=shi/16;

xl++;

if(x2>=2&&xl>=4)

(

xl=O;

x2=0;

)

if(xl==10)

(

xl=O;

x2++;

)

shi=xl+x2*16;

write_sfm(l+0x40,shi);

write__com(0x80+0x40+2);

if(slnum==6)

intxl,x2;

xl=fen%16;

x2=fen/16;

xl++;

if(xl==10)

(

xl=O;

x2++;

if(x2==6)

(

x2=0;

)

)

fen=xl+x2*16;

write_sfm(4+0x40,fen);

write_com(0x80+0x40+5);

)

if(slnum==7)

(

intx5,x6;

x5=miao%16;

x6=miao/16;

x5++;

if(x5==10)

(

x5=0;

x6++;

if(x6==6)

x6=0;

)

}

miao=x5+x6*16;

write_sfm(7+0x40,miao);〃将修改的数送到1602

显示

write_com(0x80+0x40+8);〃挪回光标

I

}

)

if(s3==0)

(

delay(5);

if(s3==0)

(

while(!s3);

if(slnum==l)

(

intxl,x2;

xl=nian%16;

x2=nian/16;

xl-;

if(x2<=0&&x1==-1)

(

xl=9;

x2=9;

if(xl==-l)

xl=O;

x2-;

)

nian=xl+x2*16;

write_sfm(3,nian);

write__com(0x80+4);

)

if(slnum==2)

{

intxl,x2;

xl=yue%16;

x2=yue/16;

xl-;

if(x2<=0&&xl<=0)

(

xl=2;

x2=l;

)

if(xl==O)

(

xl=9;

x2-;

)

yue=xl+x2*16;

温馨提示

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

评论

0/150

提交评论