远程温度测量分析_第1页
远程温度测量分析_第2页
远程温度测量分析_第3页
远程温度测量分析_第4页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、项目编号:2015-2016 学年第一学期微机原理(单片机)课程设计总结报告项目名称:远程温度测量班级:姓名:学号:微机原理(单片机)课程设计任务书项目名称: 远程温度测量内容与要求:上位机:完成界面设计与通讯程序( 1)能够显示温度值,能够设定报警温度阈值上限、下限,当超出报警温度阈值上限、下限时,温度值后又 HIGH或 LOW提示字母。( 2)能够发送短信,显示出收信人姓名,收信人电话,当前测得温度值;能够定时发送温度测量情况短信。( 3)每隔 1 秒将测得的温度值保存至文档中, 如超过阈值,温度值后又 HIGH或 LOW提示字母(4)可以对串口进行设置下位机:完成电路设计与控制程序(1)

2、采用 DS18B20采集温度,采用GSM模块发送短信。(2)通过串口与上位机通讯,并传输温度值,接受阈值设置。(3)发送短信成功时,蜂鸣器鸣叫提示。并将短信内容显示在LCD屏第 2 行(4)将当前温度显示在 LCD 液晶屏上,当超出报警温度阈值上限、下限时,温度值后又 HIGH或 LOW提示字母。项目组任务分担评价表姓名分担任务组内评价LCD显示模块设计与编程,下位机串口通讯程序,DS18B20模块及单片陈墨机下位机编程5上位机温度显示与设置,上位机串口路通讯程序,上位机文件保存及张新宇温度判断程序5课程设计报告评分表总体硬件软件结果明细问题心得参考程序格式内容总分方案设计设计分析清单分析体会

3、文献代码规范陈墨得分张新宇得分微机原理(单片机)课程设计报告目录一、总体方案1二、硬件设计1三、软件设计3四、结果分析或项目所实现的功能、指标5五、明细清单7六、设计调试中遇到的疑难问题及解决方法8七、心得体会与建议8参考文献9附录 A. 下位机程序 .9附录 B. 上位机程序图 .26I一、总体方案远程温度测量总体框图如图1-1 所示。温度测量模块LCD 显示模块控制器文件打印GSM 模块上位机图 1-1远程温度测量总体功能模块示意图图中,温度测量模块是利用DS18B20 进行温度的测量和采集,并直接传递给控制器51 单片机。同时控制器也可以控制温度测量模块的状态。LCD 模块可以显示由控制

4、器得到的温度值,并根据上位机给出的阈值上下限显示出HIGH 或者 LOW。上位机不但可以通过串口改变控制器参数,而且可以利用GSM模块直接发送短信。同时下位机控制器也可以命令GSM模块发送短信。上位机还可以将温度值和是否超过阈值情况打印在txt文档中。二、硬件设计本项目下位机控制器采用的是51 系列单片机STC80C52RC型号。其内置 8 位中央处理单元、256 字节内部数据存储器RAM 、 8k 片内程序存储器( ROM ) 32 个双向输入/输出 (I/O) 口、 3 个 16 位定时 /计数器和5 个两级中断结构,一个全双工串行通信口,片内时钟振荡电路,属于80C51 增强型单片机版本

5、。其价格低廉,低功耗,基本符合经济、环保需求。本项目温度测量传感器采用的DS18B20 。DS18B20 是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。三个引脚中间为温度传输接口,其余两个分别为VCC 和地。本项目LCD 显示模块采用LCD1602 液晶屏,它由若干个5X7 点阵字符1位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。其成本低廉,字符显示效果好,经济效果好。本项目硬件电路连接图如图2-1 所示。图 2-1硬件电路连接图温度模块的DS18B20 中间的2 号引脚接单片机P32, 1 接地

6、3 接 VCC 。2LCD1602 直接插在扩展插针接口即可,即1 接地, 2 接 VCC , 3 接地(带保护电阻), 7-14 依次接P0-P7 , 15 接 VCC , 16 接地,其余悬空。具体接线如图 2-1 所示。三、软件设计本项目下位机采用51 单片机做控制器。由DS18B20 得到温度数据后,传递给51 单片机,然后单片机根据得到的数据,在LCD 液晶屏上显示出相应的数值和符号。同时,上位机和下位机进行串口通信,上位机改变下位机参数设定,下位机的温度数据也传递到上位机。( 1) 主程序流程图如3-1 所示。3图 3-1主程序流程图( 2)读取温度值模块流程图如图3-2 所示。开

7、始传感器初始化发跳过读序列号指发温度转换指令读温度值低字节读温度值高字节高低字节合并返回温度值开始图 3-2读取温度值模块流程图本项目串行通信采用的波特率为 19200 ,串口采用方式 2 的工作方式,其计算公式如下:波特率 =( 2SMOD/32 ) *(T1 溢出率 )考虑 电源 管理 寄存 器 PCON,取 PCON 为 0x80 ,所以 波特 率加 倍,令TH1=0xFD,最终得到波特率为 19200.4四、结果分析或项目所实现的功能、指标本项目可实现温度测量功能,可以在LCD 液晶屏和上位机上同时显示温度值。同时还具有远程阈值上下限设置功能,可以在上位机设置温度阈值上下限,超过上限上

8、下位机同时会有HIGH的显示,低于下限上下位机也同时又 LOW 的显示。如图 4-1 和图 4-2 所示,测量温度值为25.7 度,高于温度上限0 度,则上位机和下位机都会显示HIGH字样。(由于拍照时间差会导致温度有微小变化)图 4-1 上位机显示结果(1)5图 4-2 下位机显示结果( 1)当温度低于温度下限时,如图 4-3 和 4-4 所示,上位机和下位机都会显示 LOW 字样。图 4-3上位机显示结果(2)6图 4-4 下位机显示结果( 2)当温度在设置的温度阈值上下限之间时,下位机只显示温度,上位机会显示 NORMAL ,证明温度正常。五、明细清单明细及价格清单如表5-1所示序号名称

9、型号/ 规格数量价格(元)1单片机最小系统板STC89C52RC1702温度传感器DS18B20113液晶显示屏LCD1602134GSM模块GTM9001110表 5-1 明细及价格清单价格总计 70+1+3+110=184 (元)。7六、设计调试中遇到的疑难问题及解决方法张新宇:1、 Labview 将温度保存在txt文件中,文件名义一定要和Labview程序里面的 txt文件命名一致,否则不但不能实现存储其他功能也会出现错误。2、 Labview 即使内有Visa 模板,但是也必须安装Visa 驱动才能正常使用,不安装该驱动串口永远无法读取。3、 Labview不能将主体时序调的太慢,由

10、于是串口通信,太慢会出现错误,“等待下一个整数倍毫秒”函数毫秒倍数设置为10100 为宜。陈墨:1、电源管理寄存器PCON最高位为1 时波特率要乘2,所以设置TH1 为 0xFD波特率才为19200 。2、 DS18B20 要考虑好延时,以保证温度读取完成,避免温度读取失败。3、温度低于0 度时是要将数值取反加1,转换成补码。七、心得体会与建议备注:正式成稿时,删除此备注。每位小组成员需分别说明对知识的深度认识,和学习方法的总结;对项目的进一步展望,可作哪些方面的改进;对老师教学有哪些建议。如:张新宇:本次 课设 我学 习了 之前 从未 用过 的Labview软 件, 了解 了该 如何 用La

11、bview进行串口通讯,以及制作一个上位机程序。它独特的图形编程方法让我受益颇多。软件中的帮助功能也非常强大,往往根本不需要上网搜索打开帮助查阅即可知道问题出在哪里。对于本课题希望老师能够将GSM收发短信和温度测量分开,6 天时间要完成这两个任务真的压力很大,也希望能够更换 GSM模块,华为公司的GTM900B不但已经停产,而且网上资料少,大部分人都采用西门子公司的产品,我想换用西门子公司的产品有助于同学们的学习。8陈墨:本次课设我结合了上学期所学的51 单片机理论知识,第一次完成了一个完整的项目。我学会了该如何写一个完整的代码,该如何将程序烧进单片机,该如何进行单片机程序的调试。在课设中我发

12、现了查阅资料的重要性,初始化程序,中断,以及LCD 输出程序都可以通过参考资料来完善。课程建议希望以后能够在理论学习时增加单片机的学习课时,让我们对于单片机有更多的了解和认识,这样才能更科学,更容易地完成本次课设。参考文献1周月霞,孙传友 .DS18B20 硬件连接及软件编程J.传感器世界.2001(12)2 农静 , 郑宗亚 , 刘志杰 . 单总线数字温度传感 DS18B20 原理及应用 J. 贵州师范大学学报 ( 自然科学版 ). 2007(03)3易丽华,黄俊.基于 AT89C51 单片机与DS18B20 的温度测量系统J.电子与封装 .2009 ( 05 )4 周青云 , 王建勋 .

13、基于 USB接口与 LabVIEW 的数据采集系统设计 J. 实验室研究与探索 . 2011(08)5 王建勋,周青云 . 基于 DS18B20 和 LabVIEW 的温度监测系统 J. 实验室研究与探索 .2012 ( 03)6 吕向锋 , 高洪林 , 马亮 , 王新华 . 基于 LabVIEW串口通信的研究 J. 国外电子测量技术 .2009 ( 12)附录 A.下位机程序#include"Reg52.H"/调用MCS51 寄存器头文件#include"intrins.H"#include "LCD1602.H"#include

14、"DS18B20B.H"#include"stdio.h"#include<math.h>9#define uchar unsigned char#define uint unsigned int#define SKIP_ROM_COMMAND0xCC/ 跳过 ROM 匹配操作#defineCONVERT_TEMPERATURE0x44/启动温度转换#defineREAD_SCRATCHPAD0xBE/ 读温度中间暂存寄存器#define N 45872/N=50ms/1.09usUINT8PresencePlusA;/DS18B20A 应答

15、脉冲/* 定义引脚单片机DS18B20P16DQA*/sbitDQA = P32;/定义DS18B20A数据线long Voltage_value;int y=0,z=0;uchar flag,b,t_cnt;float a4;int t,z;unionint t;uchar c2; temp2;float Temp1,aa=30,bb=26;uchar tt2;uchar rxbuf5;uchar rbi=0;uint TTT;/* 初始化DS18B20A.*/void DS18B20A_Init( void )DQA= 0;/MCU产生复位信号10DelayUs(130);/ 低电平至少保

16、持480UsDelayUs(130);DQA =1;/ MCU释放信号线DelayUs(40);/延时15-60us ,等待DS18B20A应答 , 为了保证准确,最好在60US 以后再采集数据PresencePlusA= DQA;/ 接收应答,返回0 为成功 ,1 为失败DelayUs(30);/ 延时/* 向 DS18B20A发送一个字节数据.*/void DS18B20A_WiteData( UINT8 mByte )UINT8 i;for( i = 0; i < 8 ; i+ )DQA = 0;/ MCU拉低信号线,启动传输DQA = mByte & 0x01;/ 发送数

17、据到信号线上DelayUs(50);/ 延时至少大于60us, 小于120usDQA = 1;/MCU释放信号线mByte >>= 1;/ 数 据右移一位DelayUs(10);/连续写的话 ,稍微延时/* 从 DS18B20读取数据,返回读取到的数据*/UINT8 DS18B20A_ReadData( void )UINT8 i;UINT8 Data = 0;11for( i = 0; i < 8 ; i+ )DQA =0;/ MCU拉低信号线,启动传输,低电平需大于1usData>>=1;/ 数据右移一位DQA = 1;/MCU释放信号线if(DQA=1 )/

18、 单片机读取信号线上数据, 需要在15US 以内采集完Data |= 0x80;DelayUs(40);/延时45usreturn( Data);/ 返回读取到的数据/*DS18B20A 温度转换 . 返回 UINT16 Temp: 返回读出的温度 .*/ UINT16 TemperatureA_Conversion( ) UINT8 HighByte;UINT8 LowByte;UINT16 Temp;/温度DS18B20A_Init();/ 初始化DS18B20Aif( PresencePlusA = 0 )DS18B20A_WiteData(SKIP_ROM_COMMAND);/跳过RO

19、M 匹配操作DS18B20A_WiteData(CONVERT_TEMPERATURE);/启动温度转换while( !DS18B20A_ReadData() );/等待转换完成DS18B20A_Init();/再次初12始化DS18B20Aif( PresencePlusA = 0 )DS18B20A_WiteData( SKIP_ROM_COMMAND );/跳过ROM 匹配操作DS18B20A_WiteData(READ_SCRATCHPAD);/读 取温度LowByte= DS18B20A_ReadData();HighByte = DS18B20A_ReadData();Temp =

20、 ( (UINT16)HighByte << 8 ) | LowByte;/计算温度returnTemp;/ 返回读出的温度/* 串口部分声明*/void Uart_init(void);void Send_data( void );unsigned int SenData; /用来存接收与发送的值void change(float x);/* 串口程序发送*/void Send_data (void)SBUF=SenData;/SUBF接受 / 发送缓冲器while(TI=0);TI=0;/* 串口初始化*/void Uart_init(void)/ 串口初始化SCON=0x50

21、;/REN=1允 许 串 行 接 受 状 态 , 串 口 工 作 模 式1TMOD|= 0x20;/ 定时器工作方式2PCON|= 0x80;TH1= 0xFD;/baud*2reload value 19200、数据位8、停止位1。13效验位无 (11.0592)TL1 = 0xF3;TR1= 1;ES= 1;/ 开串口中断EA= 1;/ 开总中断/ IE = 0x0;void uartSend(uchar s)uchar i;for(i=0;i<2;i+)SBUF=si;while(!TI);TI=0;/* 主函数 */void main( void )UINT8DisplayBuf

22、16;/存储转换后的温度数据int Temp0;UINT8MinusTempFlag= 0;/负数温度标志/*timer0*/TMOD=0x21;TH0=(65536-N)/256;TL0=(65536-N)%256;ET0=1;TR0=1;t_cnt=0;/*uart*/TMOD=0x20;TH1=0xFD; / 波 特 率 19200TL1=0xFD;TR1=1;SM0=0;SM1=1;14REN=1;ES=1;/*/DelayMs( 200 );/上电延时LCD1602_Init();DelayMs( 200 );LCD1602_WriteUSerCode();/写 入用户自定义字符DQ

23、A = 1;LCD1602_SetDisplayPosition(0,1);/ 显示显示位置LCD1602_WriteString("YQ516 Board V2.2");/显示字符DelayMs( 2000 );Uart_init();while(1)Temp0= TemperatureA_Conversion();/ DB18B20A温度转换并显示temp2.t=Temp0;if( Temp0 & 0x8000 )/ 如果温度为负数MinusTempFlag = 1;Temp0 = Temp0;/取反Temp0+=1;/取反后加1elseMinusTempFla

24、g = 0;Temp1 = (float)Temp0 * 0.0625;/计算温度if(MinusTempFlag)/如果是负温度15sprintf(DisplayBuf,"-%7.3f",Temp1);/ 将 Temp1 的数据打印到DisplayBuf中 ,浮点数 ,7 位 ,3 位小数点elsesprintf(DisplayBuf,"%7.3f",Temp1);/将 Temp1的数据打印到DisplayBuf中 ,浮点数 ,7 位 ,3 位小数点LCD1602_SetDisplayPosition(0,1);/显 示 显 示位置LCD1602_Wr

25、iteString(DisplayBuf);/显示温度LCD1602_SetDisplayPosition(9,1);/设置自定义字符位置LCD1602_WriteData(0x00);/写入温度左上角点LCD1602_SetDisplayPosition(10,1);LCD1602_WriteData('C');/写 入温度 Cif(Temp1>aa) LCD1602_SetDisplayPosition(12,1); LCD1602_WriteData('H');LCD1602_SetDisplayPosition(13,1);LCD1602_Writ

26、eData('I');LCD1602_SetDisplayPosition(14,1);LCD1602_WriteData('G');LCD1602_SetDisplayPosition(15,1);LCD1602_WriteData('H');if(Temp1<bb)LCD1602_SetDisplayPosition(12,1);LCD1602_WriteData('L');LCD1602_SetDisplayPosition(13,1);LCD1602_WriteData('O');LCD1602_Se

27、tDisplayPosition(14,1);LCD1602_WriteData('W');LCD1602_SetDisplayPosition(15,1);LCD1602_WriteData(' ');16if(Temp1>bb)&&(Temp1<aa)LCD1602_SetDisplayPosition(12,1);LCD1602_WriteData(' ');LCD1602_SetDisplayPosition(13,1);LCD1602_WriteData(' ');LCD1602_SetDis

28、playPosition(14,1);LCD1602_WriteData(' ');LCD1602_SetDisplayPosition(15,1);LCD1602_WriteData(' ');t=(int)Temp1;void T0_time() interrupt 1TH0=(65536-45872)/256;TL0=(65536-45872)%256;t_cnt+;if(t_cnt=20)/ TTT=(uint)Temp1;/ tt0=(uchar)temp2;/ tt1=(uchar)(TTT&0x0F);uartSend(temp2.c);

29、t_cnt=0;/* 主函数结束*/* 中断4*/void serial() interrupt 4if(RI)rxbufrbi=SBUF;RI=0;rbi+;if(rxbuf0!=0xff) rbi=0;else if(rbi=5)bb=(rxbuf1*255+rxbuf2)/100;aa=(rxbuf3*255+rxbuf4)/100;rbi=0;else TI=0;17/* LCD1602接口子程序.*/#include"reg52.h"/ 调用头文件,单片机内部寄存器都定义在此,用的时候需要先调用typedef unsigned char UINT8;/ 给 uns

30、ignedchar 重新定义一个别名UINT8 ,用的时候直接写UINT8就可以typedef unsigned intUINT16;/ 给 unsignedint 重新定义一个别名UINT16 ,用的时候直接写UINT16就可以/*引脚定义单片机LCD1602P24RSP25RWP26ENP0D0-D7*/sbitLCD_RS= P10;/数据、指令选择信号sbitLCD_RW= P11;/读写选择信号sbitLCD_EN= P12;/读写使能信号#define DATA_PORTP0/数据端口/*1.RS = 1 为数据操作;RS = 0 为写指令或读状态.2. RW = 1 为读选通;R

31、W=0 为写选通 .3.在 EN 下降沿 ,数据被锁存到LCD1602,在 EN 高电平期间,数据被读出.4. D0 - D7, 数据总线 .*/* 命令码 */#defineCLEAR_DISPLAY0x01/ 清18屏/* 功能设置*/#defineSET_OPERATING_MODE0x38/ 工作方式设置/* 0X38: 8 位数据接口;两行显示;5 * 8点阵字符*/* 显示开关控制*/#defineSET_DISPLAY0x08/显示命令#defineSET_DISPLAY_D0x04/开显示#defineSET_DISPLAY_C0x02/开光标#defineSET_DISPLA

32、Y_B0x01/开闪烁/* 输入方式设置*/#defineSET_INPUT_MODE0x06/ 读写数据后, AC 自动加一,画面不动/* DDRAM地址设置 */#defineSET_DDRAM_ADDRESS10x80/ 第一行显示地址0x00-0x2F#defineSET_DDRAM_ADDRESS20xC0/第一行显示地址0x40-0x67/* 延时微秒.输入 : UINT8 Us:要延时的时间3+ US*2.*/void DelayUs( UINT8 Us )while(-Us);/* 延时毫秒.输入 : UINT8 Ms:要延时的Ms 时间 .*/void DelayMs( UI

33、NT16 Ms )UINT8 i;19while (Ms-)for ( i = 0; i < 114; i+ );/大概1MS, 不是很精确/* 检查LCD1602是否忙 .BusyFlag = 1,LCD1602正忙,需等待;BusyFlag = 0,LCD1602空闲,可以写;*/void LCD1602_CheckBusy( void )UINT8BusyFlag;/忙标志BusyFlag = 1;/先置位忙标志while ( BusyFlag )/如果忙,一直等待LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;BusyFlag = DATA_PORT &

34、 0x80;DelayUs(1);/稍微延时后继续查询LCD_EN = 0;/拉低EN/* 向 LCD1602写入命令.RS = 0, RW = 0, EN 下降沿将P0 端口命令写入LCD1602 。输入 : UINT8 Cmd:要写入的命令码.*/void LCD1602_WriteCommand( UINT8 Cmd )LCD1602_CheckBusy();/ 检 查LCD1602是否忙20LCD_RS = 0;LCD_RW = 0;LCD_EN = 1;DATA_PORT = Cmd;DelayUs(1);/等待命令写完LCD_EN = 0;/*向 LCD1602写入数据.RS =

35、1, RW = 0, EN 下降沿将P0 端口命令写入LCD1602 。输入 : UINT8 WrData:要写入的数据.*/void LCD1602_WriteData( UINT8 WrData )LCD1602_CheckBusy();/检 查LCD1602是否忙LCD_RS = 1;LCD_RW = 0;LCD_EN = 1;DATA_PORT = WrData;DelayUs(1);/等待数据写完LCD_EN = 0;/*初始化LCD1602.*/void LCD1602_Init()LCD1602_WriteCommand( SET_OPERATING_MODE );/ 8位数据端

36、口,16*2行显示,5*8 字符LCD1602_WriteCommand( SET_DISPLAY | SET_DISPLAY_D );/开显示LCD1602_WriteCommand(SET_INPUT_MODE);/ 读写数据后,移动光标,画面不动LCD1602_WriteCommand( CLEAR_DISPLAY );/清屏/* 设定数据显示位置.输入 : UINT8 Xpos:横向位置;UINT8 Ypos:纵向位置.21*/void LCD1602_SetDisplayPosition( UINT8 Xpos, UINT8 Ypos )if( Ypos = 0x01 )/第一行显示

37、LCD1602_WriteCommand(Xpos| SET_DDRAM_ADDRESS1);/设置显示地址if( Ypos=0x02)/ 第二行显示LCD1602_WriteCommand(Xpos| SET_DDRAM_ADDRESS2);/设置显示地址/* 向 LCD1602写入字符串.输入 : UINT8 *Str:指向字符串缓冲区地址.*/void LCD1602_WriteString( UINT8 *Str )UINT8 ByteCnt = 0;while ( *Str != 0x00 )LCD1602_WriteData( *Str );/写入数据Str+;/指 向下一个要写的

38、数据/* 写入用户自定义字符,CGRAM地址是0-0x3F.*/void LCD1602_WriteUSerCode( )LCD1602_WriteCommand(0x40);/自定义字符CGRAM地址LCD1602_WriteData(0x03);/第 一行数据LCD1602_WriteCommand( 0x41 );22LCD1602_WriteData(0x03);/第 二行数据LCD1602_WriteCommand( 0x42 );LCD1602_WriteData(0x00);/第 三行数据LCD1602_WriteCommand( 0x43 );LCD1602_WriteData

39、(0x00);/第 四行数据LCD1602_WriteCommand( 0x44 );LCD1602_WriteData(0x00);/第 五行数据LCD1602_WriteCommand( 0x45 );LCD1602_WriteData(0x00);/第 六行数据LCD1602_WriteCommand( 0x46 );LCD1602_WriteData(0x00);/第 七行数据LCD1602_WriteCommand( 0x47 );/*DS18B20 温度采集程序 .*/#include"Reg52.H"/ 调用MCS51 寄存器头文件#include"

40、intrins.H"/*#include "LCD1602.H"*/#include"stdio.h"#include"GSM.h"#define SKIP_ROM_COMMAND0xCC/ 跳过 ROM 匹配操作#defineCONVERT_TEMPERATURE0x44/启动温度转换#defineREAD_SCRATCHPAD0xBE/ 读温度中间暂存寄存器UINT8PresencePlusB;/DS18B20应答脉冲/*单片机DS18B20P24DQB23*/sbitDQB= P24;/定义DS18B20数据线/* 初始化DS18B20B.*/void DS18B20B_Init( void )DQB

温馨提示

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

评论

0/150

提交评论