单片机控制系统的调频收音机设计说明_第1页
单片机控制系统的调频收音机设计说明_第2页
单片机控制系统的调频收音机设计说明_第3页
单片机控制系统的调频收音机设计说明_第4页
单片机控制系统的调频收音机设计说明_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、. . . 中北大学课 程 设 计 说 明 书题 目:单片机控制的调频收音机设计中北大学课程设计任务书 2015/2016 学年 第 一 学期学 院: 信息与通信工程学院 专 业: 电子信息科学与技术 课 程 设 计 任 务 书1设计目的:在学习专业基础课和专业课的基础上,主要在电子仪器、微机综合设计与实践、单片机与A/D和D/A和光、计、电综合应用等几个方面开展实践活动,巩固所学知识、培养动手能力。2设计容和要求(包括原始数据、技术参数、条件、设计要求等):设计要求:1) 接收FM信号频率围88108MHz。2) 调制信号频率围10015kHz,最大频偏75kHz。3) 最大不失真输出功率=

2、100mV(负载阻抗8欧)。4) 接收机灵敏度<=1mV。5) 镜像抑制性能优于20dB。6) 能够正常收听FM广播。3设计工作任务与工作量的要求包括课程设计计算说明书(论文)、图纸、实物样品等:设计说明书符合要求;相应器件的工作原理;系统工作原理图;参考文献原文不少于3篇。课 程 设 计 任 务 书4主要参考文献:1 郭天祥.新概念51单片机C语言教程:入门、提高、开发、拓展全攻略.:电子工业.2009(01)2 有德等.单片微型机原理、应用与实验.:复旦大学.20063 康华光.电子技术基础(模拟部分 第五版) 高等教育,20064 康华光.电子技术基础(数字部分 第五版) 高等教育

3、,20075 PhilipsSemiconductors .TEA5767HN Datasheet.20025设计成果形式与要求:设计说明书与相关电路图6工作计划与进度:2016年1月4日 2016年1月 10日:查资料2016年1月 11日 2016年1月 18日:在指导教师指导下设计方案2016年1月 19日 1 月21 日:完成实验或仿真,完成课程设计说明书2016年1月22日 : 答辩学科部主任审查意见:签字:年月日目录一、引言1二、方案设计与论证11、各板块设计12、设计所需各器件、芯片简介23、硬件电路设计104、软件设计145、程序设计166、试仪表与数据33 三、设计心得34四

4、、参考文献35单片机控制的调频收音机设计一、引言 虽然电视、手机、互联网等媒体和各种便携式娱乐设备已经普与到千家万户,但传统的收音机在丰富的娱乐媒介中任然占有重要地位。随着信息化的发展,收音机逐渐数字化,集成化,而且成本越来越低,这使得在各种设备中嵌入收音机的现象更加普遍。TEA5767系列单片数字收音机就被广泛地应用在数字音响,便携式CD、VCD、DVD、MP3、MP4、手机、PDA等数字消费电子系统中。但是该数字收音机芯片与传统的超外差式收音机的调谐原理不太一样,传统的超外差式收音机的固定频率为10.7MZ,而TEA5767系列数字收音机的固定中频为225KHz,由于固定中频不同,锁相环系

5、统的软件控制就有很大的差别,这就给广大芯片应用设计者带来一定的难度。本设计采用宏晶科技生产的8位微控制器STC89C52来控制数字收音机模块TEA5767,构成一个FM数字收音机系统。该收音机的设计具有电路简单易懂、体积小,易调谐的特点,同时该收音机系统还具有抗干扰能力强,频带宽、音质好的优点。关键词:单片机;调频;c语言程序;二、方案设计与论证 本设计是一个数字调频收音机,调频就是频率调制,所谓频率调制就是原来等幅恒频的高频信号的频率,随着调制信号(音频信号)的幅度变化而变化,调频收音机(FM Radio)就是接收这些频率调制的无线电信号,经过解调还原成原信号的电子设备。FM Radio电路

6、一般主要由接收天线、振荡器、混频器、AGC(自动增益控制)、中频放大器、中频限幅器、中频滤波器、鉴频器、低频静噪电路、搜索调谐电路、信号检测电路与频率锁定环路、音频输出电路等组成。本设计就是用单片机控制集成了上述所有FM功能的专用芯片,设计一个数字FM收音机系统。1 各板块设计本设计采用模块化设计,整个系统由控制模块、FM音频模块、电源模块和功放模块组成,系统的整体方案框图如下图(1):图(1)系统方案设计框图(1)控制模块。控制模块是本设计的核心,通过外围电路和向TEA5767芯片写入相关程序,控制部分要实现能够改变收音机的接收频率、工作模式、音量等各项参数的功能。因此必须需要一个微控制器才

7、能达到要求,本设计采用STC89C52单片机作为系统的控制核心。(2)无线FM模块。采用相关厂家生产的TEA5767模块来实现。(3)电源模块 单片机的供电电压要3.8V5.5V,TEA5767的供电电压要2.5V5.0V。由于收音机模块的应用围很广,比如手机中就采用3.7V锂电池供电,DVD、电视等系统中则是对220V市电进行变压后供电。本设计中采用7805稳压芯片对系统进行供电,由于这个电源可以很容易得到,设计中不再单独给出。(4)功放模块 TEA5767音频输出具有立体声方式,也可以采用单声道输出,具体方式可以通过编程设定,为简化设计,本设计采用单声道输出,功放芯片使用TDA2030,供

8、电采用+5V供电,设计中不给出电源设计。2 设计所需各器件、芯片简介(1)单片机简介本设计采用宏晶科技生产的STC89C52芯片,芯片采用40脚双列直插式封装,32个I/O口,芯片工作电压3.8 5.5V,工作温度0-70°C(商业级),工作频率可高达30MHz,芯片的外形和引脚见下图(2)图(2) STC89C52外形和引脚图STC89C52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧

9、的8 位CPU 和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 STC89C52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口,片晶振与时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。(2)FM芯片简

10、介2.1 TEA5767芯片简介FM模块的控核心芯片采用飞利浦公司的TEA5767数字立体声FM芯片,该芯片把所有的FM功能都集成到一个不足6*6平方米的用HVQFN40封装的小方块中。芯片工作电压2.5V5.0V,典型值是3V;RF接收频率围是76108MHz,(最强信号+噪声)/噪声的值在60dB左右,失真度在0.4%左右;双声道音频输出的电压在6090mV左右,带宽为22.5KHz。芯片的引脚分布与其引脚定义分别见图(3)和表(1),图(4)是芯片的应用结构框图。图(3)TEA5767芯片引脚分布管脚定义管脚定义1 空脚21空脚2锁相环输出22左声道输出3本振23右声道输出4本振24软静

11、音时间常数5本振电源25检波输出6数字地26基准7数字电源27中频中心频率调整时间常数8数据线28中频限幅器退藕19时钟线29中频限幅退藕210空脚30空脚11三线读写控制31空脚12总线模式选择32增益控制13总线使能端33模拟地14软口134模拟电源15软口235射频输入116晶振36高频地17晶振37射频输入218相位滤波38高放AGC时间常数19导频低通滤波39锁相环开关输出20空脚40空脚表(1) TEA5767管脚定义图(4)TEA5767应用结构框图参见部结构框图,TEA5767主要具有以下特征:(1)集成高灵敏度的低噪声放大器。(2)FM到中频的混频器可以工作在87.5-108

12、MHz的欧美频段或76-91MHz的日本频段,并且可预设接收日本108MHz的电视音频信号的能力。(3) 射频具有自动增益控制功能,并且LC调谐振荡器只需固定片装电感。(4)置的FM解调器可以省去外部鉴频器,并且FM的中频选择性可以在芯片部完成。(5)可以采用32.768KHz或13MHz的振荡器产生参考时钟或可以直接输入6.5MHz的时钟信号。(6)集成锁相环调谐系统(7)可以通过I2C或三线串行总线来获取中频计数器值或接收的高频信号电平,以便进行自动调谐功能,本设计采用第一种方式,详细的I2C通信介绍请见第5节。(8)SNC(立体声噪音抑制)、HCC(高频衰减控制)、静音处理等可以通过串行

13、数字接口进行控制。(9)免费调谐立体声解码器。(10)自动调节温度围(在VCCA,VCC(VCO)和VCCD=5V)。22 TEA5767 寄存器描述单片机和TEA5767进行通信有两种方式,一种是I2C模式,一种是三线模式,本设计采用I2C模式,I2C通信协议操作参见第5章。TEA5767的寄存器一共有五位,数据通信的读写顺序为:地址数据字节1数据字节2数据字节3数据字节4数据字节5,下面就对芯片的寄存器进行详细说明。芯片寄存器地址的格式如下:R/W=0为读模式;R/W=1为写模式2.3 FM模块介绍在方案设计时就已经确定FM部分采用按照datasheet推荐的应用设计电路图生产的模块。本设

14、计FM模块采用金秋实生产的B20C封装的完整版收音机模块,外接引脚只有10个,开发者只需要关注引脚而不需要关注模块的部结构,开发方便简单。下图(5)是模块的引脚封装和引脚功能简介(引出引脚的功能和芯片引脚的定义完全一样)。图(5)TEA5767模块引脚图引脚号符号简介1ANT天线接口2MPXFM解调器MPX信号输出(置空)3R右声道输出4L左声道输出5GND地6VCC电源正极7WR读/写模式(仅三线控制有效)8MODE总线模式选择(1为三线模式;0为I2C模式)9CLK总线时钟线输入10DATA总线数据线输入/输出表(23)TEA5767引脚定义表(3)I2C总线简介I2C总线是PHLIPS公

15、司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。它只有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL。典型的I2C结构如图(6)所示图(6)典型的I2C总线结构I2C总线需通过上拉电阻接正电源,当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA与SCL都是线“与”关系。每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混

16、乱,I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。I2C总线的数据字节必需保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。 图(7)是I2C总线字节传送与应答时序 图(7)I2C总线字节传送与应答时序由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结

17、束数据的继续传送。当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机的“非应答”来实现的。然后,从机释放SDA线,以允许主机产生终止信号。I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。 在总线的一次数据传送过程中,可以有以下三种组合方

18、式:(1)主机向从机发送数据,数据传送方向在整个传送过程中不变: A表示应答, A非表示非应答(高电平)。S表示起始信号,P表示终止信号(下同)。(2)主机在第一个字节后,立即从从机读数据(3)在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相。I2C总线的寻址在协议有明确的规定:采用7位的寻址字节(寻址字节是起始信号后的第一个字节),寻址字节的位定义如下其中D7D1位组成从机的地址。D0位是数据传送方向位,为“0”时表示主机向从机写数据,为“1”时表示主机由从机读数据。主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果一

19、样,则认为自己正被主机寻址,根据R/T位将自己确定为发送器或接收器。从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多个一样的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。由于本设计采用的STC89C52单片机没有I2C总线接口,所以要通过模拟来实现,利用软件实现I2C总线的数据传送,即软件与硬件结合的信号模拟。为了保证数据传送的可靠性,标准的I2C总线数据传送有严格的时序要求。I2C总线的起始信号、终止信号、发送“0”与发送“1”的模拟时序如下图(8)所示1。 图(8)I2C总线数据传送模拟时序3.硬件电路设计 按照设计方案,系统硬件电路由电源部分、微控制器部分

20、和FM模块部分组成,下面的介绍将分块对电路进行设计,其中电源部分由于电路原理图(1)微控制器部分 微控制器部分以STC89C52为核心,包括复位电路,晶振电路和按键控制电路,特别注意的是电源输入要加上去藕电容,电路原理图见下图(9) 图(9)微控制器模块原理图(2)TEA5767模块部分原理图 如图(10)所示,R2、R3是I2C数据线和时钟线的上拉电阻,C5是天线的匹配电容,天线用30cm左右的铜导线代替。E1是外接天线,C6、C7和R4、R5构成音频输出网络,8脚接地,选择为工作模式。模块10脚接单片机P2.0,模块9脚接芯片P2.1图(10)TEA5767模块部分原理图(3)功放模块原理

21、图 功放部分采用TDA2030单声道A类音频放大芯片,电路原理图如下所示:图(11)功放电路原理图(4)电路总原理图图(12)电路总原理图4.软件设计软件采用可移植性强的C语言程序来设计,主要由两大部分组成,一个是模拟I2C总线程序,一个是对芯片寄存器进行操作的主程序。对芯片寄存器进行操作的关键是设置接收频率,接收频率设置参数可以通过以下式子得到:FRF:接收频率(kHz)FIR:中频(TEA5767为225kHz)FREFS:参考频率(由TEA5767外接晶振而定),本设计外接32.768kHZ的晶振。4.1软件设计思想软件设计的核心是单片机与TEA5767进行通信,写入相关参数控制无线模块

22、运行。本设计只实现基本功能,即实现TEA5767的频率选择,不实现音量控制、电台储存和频率显示。为了便于设计观察,在程序设计时编写了串口通信协议,频率可以通过串口调试软件显示出来,但是在设计硬件的时候没有加入串口,所以这个程序只是供设计参考。根据设计要求,系统实现电台搜索和串口读出,软件设计的流程图如下:图(13)软件设计流程图5、程序设计根据软件流程图,写出相应的程序如下:(1)主程序:#include <reg52.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#inclu

23、de"uart.h"/添加串口头文件#include "I2C.h"/添加I2C头文件sbit s1=P34; /手动减小键P3.4口sbit s2=P35; /手动增加键P3.5口sbit s3=P36; /自动减小键P3.6口sbit s4=P37; /自动增加键P3.7口#define max_freq 108000/最大接收频率108MHz,这里的单位采用的是KHz#define min_freq 87500/最小接收频率87.5MHzunsigned int max_pll=0x339b; /108MHz时的pll,芯片部寄存器有14位用于设置

24、频率unsigned int min_pll=0x299d; /87.5MHz时的pll.unsigned char radio_write_data5=0x2a,0xb6,0x40,0x11,0x40; /要写入TEA5767的数据,数据字节1是0x2a,左右声道正常工作,不采用搜索模式/第一字节后六位和第二字节为pll频率设定,初始频率设定为89.8MHz;第三字节0x40设/定搜索停止标准,ADC输出大小为7时停止搜索,第四字节0x11,晶振设定为/32.786MHz;SWPORT1输出准备好信号;第五字节,6.5MHz锁相环参考频率关闭。unsigned char radio_read

25、_data5; /TEA5767读出的状态unsigned long frequency;unsigned int pll;void delay_ms(unsigned int i) /us延时函数 unsigned int j,k; for(j=i;j>0;j-) for(k=125;k>0;k-);/延时片刻后通过i2c写入数据void radio_write(void)unsigned char i; iic_start(); iic_write8bit(0xc0); /TEA5767写地址 if(!iic_testack() for(i=0;i<5;i+) iic_w

26、rite8bit(radio_write_datai); iic_ack();/每发送一个字节都要进行总线应答测试 iic_stop(); /由频率计算PLLvoid get_pll(void) unsigned char hlsi; unsigned int twpll=0; hlsi=radio_write_data2&0x10; if (hlsi) pll=(unsigned int)(float)(frequency+225)*4)/(float)32.768); /频率单位:khz else pll=(unsigned int)(float)(frequency-225)*4

27、)/(float)32.768); /频率单位:khz/由PLL计算频率void get_frequency(void) unsigned char hlsi; unsigned int npll=0; npll=pll; hlsi=radio_write_data2&0x10; if (hlsi) frequency=(unsigned long)(float)(npll)*(float)8.192-225); /频率单位:KHz else frequency=(unsigned long)(float)(npll)*(float)8.192+225); /频率单位:KHz/读TEA

28、5767状态,并转换成频率void radio_read(void) unsigned char i; unsigned char temp_l,temp_h; pll=0; iic_start(); iic_write8bit(0xc1); /TEA5767读地址 if(!iic_testack() for(i=0;i<5;i+) radio_read_datai=iic_read8bit(); iic_ack();/总线应答 iic_stop(); temp_l=radio_read_data1; temp_h=radio_read_data0; temp_h&=0x3f;

29、pll=temp_h*256+temp_l; get_frequency();/手动设置频率,mode=1,+0.01MHz; mode=0:-0.01MHz ,不用考虑TEA5767用于搜台的/相关位:SM,SUDvoid search(bit mode)/模式输入在p3.4,p3.5口 radio_read(); if(mode) frequency+=10;/每次增加10KHz if(frequency>max_freq) frequency=min_freq;/如果超过最高频率,那么就回到最低频率重新搜索 else frequency-=10; if(frequency<m

30、in_freq) frequency=max_freq;/如果低于最低频率,那么就回到最高频率向下进行减搜索 get_pll(); radio_write_data0=pll/256;/得道pll设定位的高位 radio_write_data1=pll%256;/得道pll设定位的低位 radio_write_data2=0x41;/设定搜索停止 radio_write_data3=0x11;/设定晶振频率 radio_write_data4=0x40;/关6.5M锁相环参考频率 radio_write();/自动搜台,mode=1,频率增加搜台; mode=0:频率减小搜台,不过这个好像不能

31、循环搜台void auto_search(bit mode) radio_read(); if(mode) radio_write_data2=0xb1;/当ADC输出为7时停止搜索 frequency+=20;/搜索频率间隔为20KHz if(frequency>max_freq) frequency=min_freq; else radio_write_data2=0x41; frequency-=20; if(frequency<min_freq) frequency=max_freq; get_pll(); radio_write_data0=pll/256+0x40; /

32、加0x40是将SM置为1 为自动搜索模式 radio_write_data1=pll%256; radio_write_data3=0x11; /SSL1和SSL0控制搜索停止条件 radio_write_data4=0x40; radio_write(); radio_read(); while(!(radio_read_data0&0x80) /搜台成功标志 radio_read(); void main() P3=0xff; UART_Init(); radio_write(); while(1) if(s1=0) delay_ms(1);/按键去抖动 if(s1=0) whil

33、e(s1=0); search(0); send_fre(frequency); if(s2=0) delay_ms(1); if(s2=0) while(s2=0); search(1); send_fre(frequency); if(s3=0) delay_ms(1); if(s3=0) auto_search(0); send_fre(frequency); if(s4=0) delay_ms(1); if(s4=0) auto_search(1); send_fre(frequency); (2)模拟I2C总线协议程序sbit SDA=P20;/数据输出接口定义为2.4口sbit S

34、CL=P21;/时钟输出接口定义为2.1口void Delayus(unsigned int number) while(number-);void DelayMs(unsigned int number) unsigned char temp; for(;number!=0;number-) for(temp=112;temp!=0;temp-); void iic_start() SDA=1; Delayus(4); SCL=1; Delayus(4); SDA=0; Delayus(4); SCL=0; Delayus(4);void iic_stop() SCL=0; Delayus(

35、4); SDA=0; Delayus(4); SCL=1; Delayus(4); SDA=1; Delayus(4);void iic_ack() SDA=0; Delayus(4); SCL=1; Delayus(4); SCL=0; Delayus(4); SDA=1; Delayus(4);void iic_NoAck() SDA=1; Delayus(4); SCL=1; Delayus(4); SCL=0; Delayus(4); SDA=0;bit iic_testack() bit ErrorBit; SDA=1; Delayus(4); SCL=1; Delayus(4);

36、ErrorBit=SDA; Delayus(4); SCL=0; return ErrorBit;void iic_write8bit(unsigned char input) unsigned char temp; for(temp=8;temp!=0;temp-) SDA=(bit)(input&0x80); Delayus(4); SCL=1; Delayus(4); SCL=0; Delayus(4); input=input<<1; unsigned char iic_read8bit() unsigned char temp,rbyte=0; for(temp=

37、8;temp!=0;temp-) SCL=1; Delayus(4); rbyte=rbyte<<1; rbyte=rbyte|(unsigned char)SDA); SCL=0; return rbyte; (3)串口通信头文件程序(参考)/UART 相关函数-/*-函数名:UART_Init()功能: 串口初始化 通讯有关参数初始化 将串口波特率设定为9600bps-*/void UART_Init() /* 通讯有关参数初始化 */ PCON&=0x7f; TH1=0xfd; /* T1 use sio */ TL1=0xfd; /* 选择通讯速率*/ TMOD=0

38、x21; /* T1=MODE2, T0=MODE1,16bit,use time */ PS=1; /* SIO int high 优先级 */ EA=1; ET1=0; SM0=0; SM1=1; /* SM0=0 SM1=1,mode1,10bit */ SM2=0; /* data int,无校验(TB8=bit_duble偶) */ TR1=1; REN=1; RI=0; TI=0; ES=1;/*-函数名:send()功能:用户函数,发送一个字节的数据-*/void send(unsigned char mydata)ES=0;TI=0;SBUF=mydata;while(!TI);TI=0; ES=1;/*-函数名:send_s()功能:用户函数,发送一个字符串-*/void comm(char *parr)

温馨提示

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

评论

0/150

提交评论