基于MSP430的安保系统设计与实现_第1页
基于MSP430的安保系统设计与实现_第2页
基于MSP430的安保系统设计与实现_第3页
基于MSP430的安保系统设计与实现_第4页
基于MSP430的安保系统设计与实现_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

西安欧亚学院本科毕业论文(设计)PAGE241概述1.1技术背景近年来盗窃、入室抢劫财物的现象日益严重,社会治安涉及到每个人的切身利益,现阶段民居和楼宇的安全现状不容乐观,楼宇安检领域产品的需求日益增加。目前市场上生产企业的智能安检电子产品的产品种类繁多,它们的特点是功能强大,但是价格昂贵、体积大、操作维护复杂。所以,目前在国内大多数家庭都没有配置实用的楼宇安检设备。1.2选题意义针对上述原因,我们设计了一种基于MSP430单片机的智能楼宇安检系统。其原理是:利用红外传感器现场监控,并通过异常数据信号无线传输,送至MSP430单片机进行数据处理、分析及存储。对检测到的异常信号发出报警,提醒用户进行处理。它采用无线遥传技术,安装操作也极为方便。本设计定位是小型应用领域,非常适合家庭安保应用。设计实现了多路实时监测功能、异常记录及回放功能以及人性化的人机对话方式、液晶显示和语音提示。基于目前普通家庭对安全技术的迫切需求,其市场需求将十分庞大。如果对其进行商业化运作,必定能够产生巨大的社会效益和经济效益。1.3功能多路巡回、实时监测功能。异常事件显示、提示功能。异常事件时间、次数记录及回放功能。精密时钟及时钟调整功能。红外检测及信号调理功能。数据编码、调制、无线遥传及解码功能。语音提示及音量键控功能。2方案设计2.1信号流程图图2-1信号流程图原理说明:信号采集单元是将有红外传感器感应到的模拟信号经过信号处理单元将模拟信号转换为主控单元需要的矩形脉冲,主控单元对信号进行计算等处理,再将结果显示出来。2.2整体结构框图图2-2检测、编码及发射单元图2-3接收、解码及主控单元原理说明:本系统由两部分组成:检测、编码、发射单元和接收、解码、主控单元。图2-2中,分布在多个监测点的热释电传感器,检测人体信号,经信号调理、整形、数据编码,而后通过射频调制并发送,实现数据遥测、遥传。图2-3中,接收模块接收各监测点的遥传数据信号,经放大、整形后,送至PT2272解码模块,解码后的数据信号送至主控单元,MCU扫描、分析各测点状态,并对异常事件进行处理,包括:状态汉显、语音提示、事件时间、次数记录等功能。本系统人机对话采用TI公司的微功耗16位单片机—MSP430系列芯片,其它大部分外围电路,如电源模块、放大器、基准电源、通讯模块(485)等也采用TI公司产品,另外,还有其它外围电路,如LCD、时钟、语音、功放等模块,构成主控单元,实现强大的工业测控功能。本机人机对话采用键盘、LCD汉字显示和语音提示方式,方便且极具人性化。2.3主控单元连接图我所完成的是主控单元的软件设计,其连接图如下:图2-4主控单元框图原理说明:主控单元的核心部件是MSP430F247单片机。由硬件电路处理好的矩形脉冲信号从MSP430F247单片机的端口输入,MSP430F247单片机对矩形脉冲信号进行处理。所完成的功能有:检测异常信号,显示发生的时间和次数,发出语音提示报警,并存储在单片机的FLASH内。通过键盘操作,可以查看异常信号发生的时间和次数,还可以清除这些信息,并且能设置时间和更改音量的大小。MSP430F2XX介绍MSP430F2XX的时钟模块时钟输入源:MSP430F157基础时钟模块有3个时钟输入源:(1)LFXT1CLK:低频/高频时钟源。可以外接32768Hz的时钟芯片或频率为450kHz~8MHz的标准晶体或共振器。(2)XT2CLK:高频时钟源。需要外接两个震荡电容器。可以外接频率为450kHz~8MHz的标准晶体、共振器和外部时钟输入。较常用的晶体振荡器是8MHz的。(3)DCOCLK:内部数字可控制的RC振荡器。时钟信号:MSP430单片机时钟模块提供3个时钟信号以供给片内各部电路使用,这3个时钟信号分别是:(1)ACLK:辅助时钟信号。ACLK是从LFXT1CLK信号由1/2/4/8分频器分频后所得到的。有BCSCTL1寄存器设置DIVA相应位来决定分频因子。ACLK可提供给CPU外围功能模块作时钟信号使用。(2)MCLK:主时钟信号。MCLK是由3个时钟源所提供的。它们分别是:LFXT1CLK、XT2CLK和DCO时钟源信号。MCLK主要用于MCU和相关系统模块作时钟。同样可设置相关寄存器来决定分频因子及相关的设置。(3)SMCLK:子系统时钟。SMCLK由2个时钟源信号提供,它们分别是XT2CLK和DCO。同样可设置相关寄存器来决定分频因子及相关的设置。当微处理器发生PUC复位后,MCLK和SMCLK配置为DCO时钟模块(默认值为800kHz),ACLK配置为LFXT1时钟模块,并且为低频模式。修改DCOCTL、BCSCTL1和BCSCTL2寄存器的值,可以对系统和各个模块的时钟进行设置。基本定时器所有的MSP430F2XX系列都有一个基本定时器,它由两个8位的计数器组成。这两个8为的计数器也可以级联成一个16位的计数器。基本定时器不仅可以向液晶模块提供分时信号,还可以产生低频时间间隔中断。由于基本定时器没有默认状态,所以在使用之前必需正确设置基本定时器的控制寄存器BTCTL以及计数器1和计数器2,才能保证基本定时器的正常工作。定时器A工作原理TIMER_A寄存器(1)TACTL控制寄存器。TACTL各位的定义如下:SSEL1,SSEL0:选择定时器进入输入分频器的时钟源。00输入时钟源为TACLK,用特定的外部引脚信号;01输入时钟源为ACLK,用辅助时钟;10输入时钟源为MCLK,用系统时钟;11输入时钟源为INCLK。ID1,ID0:输入分频选择。00不分频;012分频;104分频;118分频。MC1,MC0:计数模式控制位。00停止模式;01增计数模式;10连续计数模式;11增/减计数模式。(2)TAR16为计数器。(3)CCTLx捕获/比较控制寄存器。该寄存器各位定义如下:CM1~0:选择捕获模式。00禁止捕获模式;01上升沿捕获;10下降沿捕获;11上升沿与下降沿都捕获。CCIS1~0:在捕获模式中用来定义提供捕获事件的输入源。选择CCIxA;选择CCIxB;选择GND;选择Vcc。SCS:选择捕获信号与定时时钟同步、异步关系。异步捕获;同步捕获。CAP:选择捕获模式还是比较模式。比较模式;捕获模式。CCIEx:捕获/比较模块中断允许位。禁止中断;允许中断。CCIFGx:捕获比较中断标志。捕获模式:寄存器CCRx捕获了定时器TAR值时置位。比较模式:定时器TAR值等于寄存器CCRx值时置位。(4)CCRx捕获/比较寄存器在捕获方式,当满足捕获条件,硬件自动将计数器TAR数据写入该寄存器。其中CCR0经常用作周期寄存器。捕获/比较模块TIMER_A有多个相同的捕获/比较模块,为实时处理提供灵活的手段,每个模块都可用于捕获事件发生的时间或产生定时间隔。当捕获/比较模块共有两种模式:捕获模式和比较模式。本系统主要用捕获模式。当CCTLx中的CAPx=1,该模块工作在捕获模式。这时如果在选定的引脚上发生设定的脉冲触发沿(上升沿、下降沿或任意跳变),则MSP430会通过硬件自动将计数器TAR中的值写入到CCRx中。每个捕获/比较寄存器都能被软件用于时间标记,可用于各种目的。如果是周期信号,则两次上升沿或者两次下降沿之间的时间即为信号的周期,上升沿和下降沿之间的时间则为信号的脉宽(高电平或者低电平的时间长度)。还可以测量软件程序所用时间、测量硬件事件之间的时间、测量系统频率。当捕获完成后,中断标志位CCIFGx被置位。如果总的中断允许位GIE允许,相应的中断允许位CCIEx也允许,则将产生中断请求。3各功能模块程序设计3.1总体程序流程图及原理说明图3-1总体程序流程图系统接通电源后就进行系统初始化,包括关闭看门狗,系统时钟初始化、端口初始化、LCD初始化,外设时钟初始化。初始化完成后进入主环路延时,当接到上位机的开始信号时,时钟、AD开始工作,AD采样频率由时钟决定,每到一个时钟中断,AD采一个点,将采到的数据发送到单片机内,系统开始逐步检测4路信号是否异常。当有异常信号出现,系统把每路异常信号发生的时间、次数记录到单片机的FLASH内。完成后可以进行模式操作、功能操作、增值减值操作等。各操作都有对应的子程序及其流程图。当接收到上位机的结束信号时,时钟、AD停止工作。3.2初始化模块3.2.1初始化总体流程及说明3-2初始化流程图初始化原理说明:系统接通电源后就进行系统初始化,包括关闭看门狗,系统时钟初始化、端口初始化、FLASH初始化,外设时钟初始化。初始化程序:voidmain(void){WDTCTL=WDTPW+WDTHOLD;//关狗run_xt2();//时钟初始化port_init();//端口初始化LcdInit0();//lcd初始化InitSys();//FLASH初始化fflash_init();}3.2.2系统时钟初始化模块程序及说明本系统选择的时钟源工作模式为:使用XT2振荡器,MCLK选择使用XT2CLK,SMCLK选择使用XT2CLK根据本系统要求,设置相应控制字,其时钟初始化函数如下voidrun_xt2(void){unsignedchari;BCSCTL1&=~XT2OFF;//打开XT2振荡器do{IFG1&=~OFIFG;//清除振荡器失效标志for(i=0xFF;i>0;i--);//延时,等待XT2起振}while((IFG1&OFIFG)!=0);//判断XT2是否起振BCSCTL2|=SELM1+SELS;//MCLK=SMCLK=XT2(safe)}端口初始化模块程序端口初始化设置各端口是输出还是输入,输出高电平还是低电平。voidport_init(void){P1DIR|=BIT1+BIT2+BIT3;P1DIR&=~BIT4;P1DIR&=~BIT0;P1OUT|=BIT1+BIT2+BIT3;P2DIR&=0x40;//p2.0p2.1p2.2p2.3,p2.4p2.5p2.7为输出口P2OUT=0x00;P3DIR|=BIT1;P4DIR=0xFF;P4OUT=0x00;P5DIR|=BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6;P5DIR&=~BIT7;P5OUT=0x00;P6DIR|=BIT0+BIT3+BIT4+BIT5+BIT6+BIT7;P6DIR&=~BIT2;P6DIR&=~BIT1;P6OUT=0X00;}FLASH初始化程序说明:读OX10B8中的信息给ho,给FLASH赋初始值0程序代码片段如下:voidfflash_init(void){unsignedcharho[7];read_SegA1(ho,0X10b8);n1=ho[0];n2=ho[1];n3=ho[2];n4=ho[3];if(n1==0xff)n1=0;if(n2==0xff)n2=0;if(n3==0xff)n3=0;if(n4==0xff)n4=0;}定时器A初始化程序及说明说明:本系统采用TIMER_A中的捕获/比较寄存器CCR0,需要设置的工作方式有:TIMER_A的输入时钟源选为辅助时钟ACLK,计数模式选为连续计数模式。捕获模式选为下降沿捕获,提供捕获事件的输入源为CCI0B,同步捕获,捕获模式,允许中断。按此要求设定TIMER_A中CCR0控制寄存器TACTL和捕获/比较控制寄存器CCTL0,其初始化函数如下voidtimerA_init(void){TACTL=TASSEL1+TACLR+ID_3;//SELECTMCLK,clearTAR8分频CCTL0=CCIE;//CCR0interruptenabledCCR0=50000;//中断时间为50ms(TBCCR0/XT2)TACTL|=MC0;//StartTimer_Aincontinuousmode}3.3异常检测处理模块流程图及原理说明流程图:图3-3异常检测流程图原理说明:当有异常信号被检测到,四路红外传感器就开始逐一检测,并对检测到的信号进行处理。异常检测程序片段:{p2h_value=p2hReadKey();//switch(p2h_value){casep2_4SMW:WriteCommand(0x01);p_4way();//*****四路检测break;casep2_5SMW:WriteCommand(0x01);p_3way();//*****三路检测break;casep2_7SMW:WriteCommand(0x01);p_1way();//***一路检测break;default:break;}p1h_value=p1hReadKey();if(p1h_value==p1_4SMW){WriteCommand(0x01);p_2way();}}3.4主环路操作模块流程图及原理说明流程图:说明:没有异常信号被检测到时就可以进行模式、功能、增值、减值等操作,然后就会到正常检测程序片段:p2l_value=p2lReadKey();//检测,有键按下并松开,返回一个键值.switch(p2l_value)//对键值进行处理.采switch语法结构查询{casep2_0SMW:mod_op();//p2.0模式键按下break;casep2_1SMW:fun_op();//p2.1功能键按下break;casep2_2SMW:inc_op();//p2.2“+”键按下break;casep2_3SMW:dec_op();//p2.3“—”键按下break;default:break;//调用默认处理程序4}图3-4主环路操作流程图3.5模式操作模块流程图及原理说明操作模式流程图:图3-5操作模式流程图操作模式原理说明:只要四路传感器都没有异常信号,可以进行模式操作。经过10MS的延时后,判断P2.0是否为0,当P2.0为0进入下一步操作。首先置模式位,同时模式计数器加1,然后判断模式计数器的值并根据其进行相应的操作。操作如下:模式计数器计数值为1:置检查位;检查显示;语音提示模式计数器计数值为2:清检查位;置时钟设置位;时钟设置显示;语音提示模式计数器计数值为3:清时钟设置位;置音量设置位;音量设置显示;语音提示模式计数器计数值为4:清音量位;置清除位;清记录显示;语音提示模式计数器计数值为其它:清记录位;清模式位;清模式计数器模式操作软件设计可以分为4个主要功能模块:检查显示模块;时钟设置显示模块;音量设置显示模块;清记录显示模块。各功能模块的程序如下:模式操作程序:voidmod_op(void){switch(MODCNT){case1:{voice(0x00);//*****检查显示模块程序*****//LineDisp(2,str1);LineDisp(3,str0);CHKSET=1;}break;case2:{voice(0x00);LineDisp(2,str2);LineDisp(3,str0);//*****时钟设置显示模块程序*****//CHKSET=0;CLKSET=1;}break;case3:{voice(0x00);LineDisp(2,str3);LineDisp(3,str0);//*****音量设置显示模块程序*****//CLKSET=0;VOLSET=1;}break;case4:{voice(0x00);LineDisp(2,str4);LineDisp(3,str0);//*****清记录模显示块程序*****//VOLSET=0;EARSET=1;}break;default:{ROOL_OP=1;break;}}}3.6功能选择程序流程图及原理说明功能选择流程图:图3-6功能选择流程图功能操作原理说明:在模式操作的基础上进入功能子程序,也是先延时10MS。然后判断模式位是否为1(即判断是否正在进行模式操作),当模式位为0才能进入下一步。再判断P2.1是否为0,当P2.1为0进行功能选择操作,然后根据功能类型进行相应的操作。操作如下:检查操作:检查操作;语音提示时钟设置:时钟设置;语音提示音量调整:音量调整;语音提示清除记录:清除操作;语音提示同样,功能操作程序设计也可以分为四个功能模块:检查操作模块;时钟设置操作模块;音量调整操作模块;清除记录操作模块。各模块程序段如下:功能操作程序:检查操作模块程序:voidcheck(void){LineDisp(3,str02);WriteCommand(0x01);LineDisp(2,str);Delay(1000000);WriteCommand(0x01);LineDisp(3,str00);LineDisp(2,str01);return;}时钟设置操作模块程序:voidclock(void){FUNCNT++;//*****功能计数器自加1*****//switch(FUNCNT%5){case1:LineDisp(2,str1);LineDisp(3,str00);//*****月调整操作*****//MON_OP=1;break;case2:LineDisp(2,str2);LineDisp(3,str02);//*****日调整操作*****//MON_OP=0;DAY_OP=1;break;case3:LineDisp(2,str3);LineDisp(3,str03);//*****时调整操作*****//DAY_OP=0;HOU_OP=1;break;case4:LineDisp(2,str4);LineDisp(3,str04);//*****分调整操作*****//HOU_OP=0;MIN_OP=1;break;}音量调整操作模块程序:voidvolume(void){…………FUNCNT++;//*****功能计数器自加1*****//switch(FUNCNT%5){case1:lv_voi();LineDisp(2,str4);voice(0x20);LineDisp(3,str00);//大音量调整操作//break;case2:mv_voi();LineDisp(2,str3);voice(0x28);LineDisp(3,str00);//中音量调整操作//break;case3:sv_voi();LineDisp(2,str2);voice(0x30);LineDisp(3,str00);//小音量调整操作//break;case4:nv_voi();LineDisp(2,str1);voice(0x38);LineDisp(3,str00);//静音调整操作//break;default:FUNCNT=0;LineDisp(2,str5);LineDisp(3,str01);break;}}清除记录操作模块程序:voidearse(void){…………if(DEL_OP>=2){LineDisp(2,str1);//*****清除完毕提示****//Delay(2000000);else{LineDisp(2,str00);//*****确认删除?*****//LineDisp(3,str01);//*****删除提示*****//}}3.7时钟调整程序流程图及原理说明时钟增(减)值流程图:图3-7操作模式流程图时钟增减值原理说明:在功能操作的基础上进入时钟增减值子程序。也是先延时10MS。然后判断功能操作上是否时钟调整,要进行时钟调整操作再判断P2.2是否为0,P2.2为0经过调整缓加1才能进入时钟的各项调整.调整操作如下:月调整:月调整操作;语音提示日调整:日调整操作;语音提示时调整:时调整操作;语音提示分调整:分调整操作;语音提示时钟增减值程序同样可以分为四个功能模块:月调整操作模块;日调整操作模块;时调整操作模块;分调整操作模块。各部分程序片段如下:时钟增减值程序:月调整操作模块程序:voidsetime1(void){char*str="月调整:";b++;if(b>12)//月份控制条件b=1;UpData[0]=((UpData1[b]&0x70)>>4)+0x30;//月份的十位UpData[1]=(UpData1[b]&0x0f)+0x30;//月份的个位WriteCommand(0x88);LineDisp(2,str);WriteCommand(0x8D);//写数据for(i=0;i<2;i++){WriteOperate(UpData[i],1);//写数据}}日调整操作模块程序:voidsetime2(void){char*str="日期调整:";b++;if(b>31)b=1;UpData[0]=((UpData1[b]&0x70)>>4)+0x30;UpData[1]=(UpData1[b]&0x0f)+0x30;WriteCommand(0x88);LineDisp(2,str);WriteCommand(0x8D);//写数据for(i=0;i<2;i++)WriteOperate(UpData[i],1);//写数据}时调整操作模块程序:voidsetime3(void){char*str="时调整:";b++;if(b>23)b=0;UpData[0]=((UpData1[b]&0x70)>>4)+0x30;UpData[1]=(UpData1[b]&0x0f)+0x30;WriteCommand(0x88);LineDisp(2,str);WriteCommand(0x8D);//写数据for(i=0;i<2;i++)WriteOperate(UpData[i],1);//写数据}分调整操作模块程序:voidsetime4(void){b++;if(b>59)b=0;UpData[0]=((UpData1[b]&0x70)>>4)+0x30;UpData[1]=(UpData1[b]&0x0f)+0x30;WriteCommand(0x88);LineDisp(2,str);WriteCommand(0x8D);//写数据for(i=0;i<2;i++)WriteOperate(UpData[i],1);//写数据}3.8音量键控程序流程图及原理说明音量键控流程图:图3-8音量键控流程图音量键控原理说明:在功能操作基础上进入音量键控子程序。首先将音量计数器置1,然后逐步加1进行各种音量操作。操作如下:音量计数器为1:大音量设置;语音提示音量计数器为2:中音量设置;语音提示音量计数器为3:小音量设置;语音提示音量计数器为4:静音设置;语音提示音量键控程序同样可以分为四个功能模块:大音量设置模块;中音量设置模块;小音量设置模块;静音设置模块。各模块程序片段如下音量键控程序:小音量调理程序模块:voidsv_voi(void){P6OUT|=BIT0;P5OUT&=~BIT4;}中音量调理模块程序:voidmv_voi(void){P5OUT|=BIT4;P6OUT&=~BIT0;}大音量调理模块程序:voidlv_voi(void){P5OUT&=~BIT4;P6OUT&=~BIT0;}静音调理模块程序:voidnv_voi(void){P6OUT|=BIT0;P5OUT|=BIT4;}4程序设计调试4.1开发工具介绍IAR公司成立于1983年,其编译器已成为业界领先的嵌入式开发平台,广泛应用于移动电话、GPS系统,远程控制、游戏机等含有微处理器的系统的开发中。IAR公司的编译器可以支持超过30种不同的8位、16位、32位处理器。针对MSP430的开发平台全称为IAREmbeddedWorkbenchEW430,简称EW430,其功能非常强大,而且仍然在以很快的速度更新版本。它的基本特点有:①支持ANSIC并包含对EmbeddedC++的支持②内建MSP430特性扩展优化③代码长度和速度有多级优化④支持32位和64位浮点数⑤支持硬件乘法器⑥内部函数支持低功耗模式⑦支持C和汇编语言混合编程。基于这些优点,本智能楼宇安检系统采用EW430开发环境。4.2按键操作调试通过调试,我知道了MSP430电路板上的液晶右边有四个按键,从上到下他们的功能依次是:模式键,功能键,增值键,减值键。系统加电后就自动进行初始化,然后逐一检测4路红外传感器是否有异常信号。这个过程中可以按模式键进行模式操作,每按一次就LCD上就显示一种模式,依次显示为:检查显示,时钟设置,音量设置,清除记录。当LCD显示“检查显示“时,按下功能键就能回放4路传感器检测到的异常信号的时间和次数。同时还有语音提示。当LCD显示“时钟设置“,按一下功能键进入时钟设置界面,每按一次功能键依次能设置月调整,日调整,时调整,分调整,同时月、日、时、分对应的数字反色显示,表示能调整了,再按增值键、减值键分别进行月、日、时、分的增值或减值。同样,当LCD显示“音量设置“时,按一下功能键进入音量设置界面,每按一次能循环设置为大音量,中音量,小音量,静音。出现问题及解决方法系统时钟问题:系统默认使用DCO,使用外部高速晶振XT2时必须自己开启XT2,并延时50us等待XT2起振,然后手工清除IFG1中的OFIFG位。要注意操作顺序:打开XT2->等待XT2稳定->切换系统时钟为XT2。若后面两步操作反了,在通常情况下不会出现问题,但是在电压不稳MCU频繁复位的情况下,非常容易造成MCU死掉,只能掉电后重新上电才能可靠复位。在刚开始调试时,就遇到的问题,即程序执行后,液晶屏不能正常显示汉字,在探讨后,我们终于找到问题的所在,是因为端口上电压变化也是有一定时间的,如果读取太快,就有可能出错。我们在读取数据之前加了一句延时程序。这样修改后,读数据的问题就迎刃而解。这个延时问题在接下来的调试过程中还与到了不止一次,给了我们宝贵的经验,我想我们在以后的设计中肯定不会忽略这种硬件延时。通过调试,代码方面的错误得到解决。在程序规范方面出现很多问题,如在头文件中定义了变量,结果导致编译错误;由于代码中变量非常多,变量命名时重复命名和未定义,导致编译错误。通过基于MSP430的智能楼宇安检系统的

温馨提示

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

评论

0/150

提交评论