基于STC89C52的音乐倒数计数器(单片机课程设计)_第1页
基于STC89C52的音乐倒数计数器(单片机课程设计)_第2页
基于STC89C52的音乐倒数计数器(单片机课程设计)_第3页
基于STC89C52的音乐倒数计数器(单片机课程设计)_第4页
基于STC89C52的音乐倒数计数器(单片机课程设计)_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、摘摘 要要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而51单片机是各单片机中最为典型和最有代表性的一种。本实验是基于MCS51系列单片机所设计的,可以实现键盘按键与数字动态显示并可以用音乐倒数的计数器。本设计基于单片机技术原理,以单片机芯片STC89C52作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个计数器,包括以下功能:输出时间,按下键就开始计时,并将时间显示在LCD1602显示器上。当倒计数为0时,蜂鸣器就发出音乐声响等等。该计数器系统主要由计数器模块、LCD显示器模块、蜂鸣器模块、键盘模块、复位模块等部分组成

2、。关键词关键词:STC89C52、键盘、LCD1602 显示、蜂鸣器目录目录摘 要.I1 项目概述和要求.11.1 单片机基础知识.11.2 单片机的发展趋势.11.3 项目设计任务与要求.32 系统设计.42.1 框图设计.42.2 部分硬件方案论述 .42.3 电路原理图 .42.4 元件清单 .52.4.1STC89C52 芯片 .52.4.2 字符型 LCD1602.62.4.3 按键控制模块 .82.4.4 其它元件 .83 软件设计 .93.1 程序流程图.94 系统的仿真与调试.124.1 硬件调试.124.2 软件调试.124.3 软硬件调试.125 总结 .13参考文献.14

3、附录程序. 251 项目概述和要求项目概述和要求1.1 单片机基础知识单片机基础知识单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲,一块芯片就成了一台计算机。单片机具有体积小、功能强、应用面广等优点,目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。 现在,这种单片机的使用领域已十分广泛。彩电、冰箱、空调、录像机、VCD、遥控器、游戏机、电饭煲等无处不见单片机的影子,单片机早已深

4、深地融入我们每个人的生活之中。单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极大地提高了生产效率和产品质量。单片机按用途大体上可分为两类,一种是通用型单片机,另一种是专用型单片机。MCS-51 单片机是美国 INTEL 公司于 1980 年推出的产品,与 MCS- 48 单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达 111 条,MCS-51 单片机可以算是相当成功的产品,一直到现在,MCS-51 系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与 MSC-51

5、单片机作为代表进行理论基础学习。MCS-51 系列单片机主要包括 8031、8051 和 8751 等通用产品。1.2 单片机的发展趋势单片机的发展趋势 单片机现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从 8 位、16 位到 32 位,数不胜数,应有尽有,有与主流 C51 系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供了广阔的天地。纵观单片机的发展过程,可以预示单片机的发展趋势,大致有: 一、微型单片化现在常规的单片机普遍都是将中央处理器(CPU) 、随机存取数据存储(RAM) 、只读程序存储器(ROM) 、并行和串行通信接口,中

6、断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如 A/D 转换器、PMW(脉宽调制电路) 、WDT(看门狗) 、有些单片机将 LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其中 SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。二、低功耗 CMOS 化MCS-51 系列的 8031 推出时的功耗达 6

7、30mW,而现在的单片机普遍都在100mW 左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了 CMOS(互补金属氧化物半导体工艺) 。像 80C51 就采用了HMOS(即高密度金属氧化物半导体工艺)和 CHMOS(互补高密度金属氧化物半导体工艺) 。CMOS 虽然功耗低,但由于其物理特征决定其工作速度不够高,而 CHMOS 则具备了高速和低功耗的特点,这些特征,更适合于要求低功耗像电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要途径。 三、主流与多品种共存 现在虽然单片机的品种繁多,各具特色,但仍以 89C51 为核心的单片机占主流,兼容其结构和指令系统的

8、有 PHILIPS 公司的产品,ATMEL 公司的产品和中国台湾的 Winbond 系列单片机。所以 89C51 占据了半壁江山。而Microchip 公司的 PIC 精简指令集合(RISC)也有着强劲的发展势头,中国台湾的 HOLTEX 公司近年的单片机产量与日俱增,与其底价质优的优势,占据一定的市场份额。此外还有 MOTOROLA 公司的产品,日本几大公司的专用单片机。在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补、相辅相成、共同发展的道路。九十年代以后,单片机在结构上采用双 CPU 或内部流水线,CPU 位数有 8位、16 位、32 位,时钟频率

9、高达 20MHZ,片内带有 PWM 输出、监视定时器WDT、可编程计数器阵列 PCA、DMA 传输、调制解调器等。芯片向高度集成化、低功耗方向的发展,使得单片机在大量数据的实时处理、高级通信系统、数字信号处理、复杂工业过程控制、高级机器人以及局域网等方面得到大量应用。这类单片机有 NEC 公司的 MPD7800,MITSUBISHI 公司的M337700,REVKWELL 公司的 R6500。1.3 项目设计任务与要求项目设计任务与要求 设计任务:利用 STC89C52 单片机结合字符型 LCD 显示器设计一个简易的倒数计数器。做一小段时间倒计数,当倒计数为 0 时,则发出一段音乐声响,通知倒

10、计数终了,该做应当做的事。 设计要求:1.字符型 LCD(162)显示器,显示格式为“TIME 分分:秒秒”。2.用 4 个按键操作来设置当前想要倒计数的时间。3.一旦按下键则开始倒计数,当计数为 0 时,发出一阵音乐声。4.程序执行后工作指示灯 LCD 闪动,表示程序开始执行,按下操作键K1K4 动作如下:K1-可调整倒计数的时间 160 分钟。K2-设置倒计数的时间为 5 分钟,显示“0500”。K2-设置倒计数的时间为 10 分钟,显示“1000”。K2-设置倒计数的时间为 20 分钟,显示“2000”。5.复位后 LCD 的画面应能显示倒计时的分钟和秒数,此时按 K1 键,则在 LCD

11、 上显示出设置画面。此时,若: 按 K2 键-增加倒计数的时间 1 分钟。 按 K2 键-减少倒计数的时间 1 分钟。 按 K4 键-设置完成。2 系统设计系统设计2.1 框图设计框图设计框图设计是为了能够从整体上把握系统的各个大的模块以及各个模块之间的联系。同时罗列出需要主要使用到的各个器件,以方面系统开发中器件的选取。通过框图设计,让设计者从整体上把握系统的开发。本系统设计的框图如下图 2-1 所示。AT89C51复位电路蜂鸣器LCD1602键盘图2-1 系统结构框图2.2 部分硬件方案论述部分硬件方案论述LCD1602 显示方式的方案比较。方案一:采用花样显示,花样显示是指 LCD 显示

12、某一屏字符时,采取从左到右或者是从右到左的整屏移动的显示方式。在这种显示方式下,给人的感觉就是程序是在执行的,同时如果控制好了移动一屏的时间间隔的话,在整体视觉上可以达到很好的效果。方案二:采用静态显示,静态显示是指 LCD 显示某一屏字符时,时钟保持当前字符的显示,不使用移屏显示。便于控制,同时能够满足正常的显示效果。由于在显示中存在播放时间的动态变化,这样的话,即使是不产生整屏移动,也能给人动态感,也易于控制。基于以上各种特点,我选择了方案二。2.3 电路原理图电路原理图电路原理图如图 2-2 所示。图 2-2 电路原理图2.4 元件清单元件清单2.4.1 AT89C51 芯片芯片STC8

13、9C52 芯片图如下图 2-3 所示。图 2-3 AT89C51 芯片图主要性能:与 MCS-51 单片机产品兼容 、8K 字节在系统可编程 Flash 存储器、 1000 次擦写周期、全静态操作:0Hz33Hz 、三级加密程序存储器 、 32 个可编程 I/O 口线、三个 16 位定时器/计数器八个中断源、全双工 UART 串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针、掉电标识符 。功能特性描述STC89C52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51

14、产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在线系统可编程Flash,使得 STC89C52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 STC89C52 具有以下标准功能: 8k 字节 Flash,256 字节 RAM, 32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位 定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RA

15、M、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash2.4.2 字符型字符型 LCD1602字符型 lcd1602 如下图 2-4 所示。图 2-4 lcd1602 图1602 字符型 LCD 通常有 14 条引脚线或 16 条引脚线的 LCD,多出来的 2 条线是背光电源线。VCC(15 脚)和地线 GND(16 脚),其控制原理与 14 脚的 LCD 完全一样,各引脚符号及其功能表如下表 2-1 所示。表 2-1 LCD 各引脚及其功能表引脚符号功能说明

16、1VSS一般接地2VDD接电源(+5V)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度)。4RSRS 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择指令寄存器。4RSRS 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择指令寄存器。5R/WR/W 为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6EE(或 EN)端为使能(enable)端,下降沿使能。7DB0低 4 位三态、 双向数据总线 0 位(最低位)8DB1低 4 位三态、 双向数据总线

17、1 位9DB2低 4 位三态、 双向数据总线 2 位10DB3低 4 位三态、 双向数据总线 3 位11DB4高 4 位三态、 双向数据总线 4 位12DB5高 4 位三态、 双向数据总线 5 位13DB6高 4 位三态、 双向数据总线 6 位14DB7高 4 位三态、 双向数据总线 7 位(最高位)(也是 busy flag)15BLA背光电源正极16BLK背光 电源负极2.4.3 按键控制模块按键控制模块按键用于控制数码显示、LCD 显示、扬声器等模块的工作。通过扫描按键是否按下,来设定各模块的工作情况,使各模块可以在按键的控制下,有序地进行工作。设计中使用单个按键实现单个功能,属于较为简

18、单的控制方式。在多功能系统设计的试验中我们使用四个按键分别与单片机的p1.0、p1.1、p1.2、p1.3 相连。通过按下相应的按键来处理相应的程序。如下图2-5 所示。图 2-5 按键控制模块图2.4.4 其它元件其它元件 其它元件图如下图 2-6 所示。 图 2-6 其它元件图113 软件设计软件设计3.1 程序流程图程序流程图主程序开始初始化,然后扫描键盘、复位电路和计数器。当键盘按键有按下时,调整计数器值,LCD 显示新值。当复位键有按下时,计数器复位为开机画面,当计数器值倒计为 0 时,蜂鸣器发出声音,计数器停止倒计,程序结束。主程序流程图、lcd 显示流程图和按键流程图分别如下图

19、3-1、图 3-2 和图 3-3所示。蜂鸣器发声初始化调整计数器值扫描键盘扫描计数器按键是否有按下?计数值是否为0?开始结束LCD显示计数值计数器停止倒计数是是否否扫描复位电路复位?是否 图 3-1 主程序流程图12开始是否有程序执行Lcd闪动是否有键按下lcd显示相应时间复位键是否按下lcd显示倒计时的分钟和秒数是否有键按下lcd显示相应设置画面退出是是是是否否否否图3-2 lcd显示流程图13开始初始化按键扫描有键按下按键处理,确定模式时间显示模式根据按键状态显示相应时间段时间修改模式根据按键状态修改时间NONOYESYES图 3-3 按键流程图144 系统的仿真与调试系统的仿真与调试4.

20、1 硬件调试硬件调试 硬件调试分为静态调试和动态调试,对于硬件调试而言,只要认真焊接,硬件一般不会出现什么问题的。静态调试一般采用的工具是万用表,它是在用户系统未工作时的一种硬件检测。动态调试是在用户系统工作的情况下发现和排查错误的一种硬件检测。调试步骤是:首先把电路分为若干模块,调试过程中与该模块无关的元件可以不加考虑,这样可把故障限定在一定的范围内;故障清除后,把各个模块合在一起进行联调,即可完成整个硬件调试工作。4.2 软件调试软件调试软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。4.3 软硬件调试软硬件调试软硬件联调是指把调试无误的软件

21、程序烧制进单片机芯片内部,通上电源后,检查硬件工作是否有预期的效果,如果没有则需要检测软件是否在实现功能上有欠缺。若有错误,通过改写软件来调试,直至达到预期效果,则设计圆满成功。本课程设计调试结果如下图 4-1 所示。15图 4-1 调试结果图实物图片165 总结总结经过将近两个星期的课程设计,简单带有 LCD 显示的音乐倒数计数器基本完成,系统基本功能基本实现,测试运行也基本正常。该系统基本上完成了计数闹时的功能。当然这个系统还存在许多有待完善的地方: 功能相对较少,有待于添加,比方说没有时钟功能; 焊接工艺比较差,布局有点凌乱。这次课程设计的时间虽然不算很长,但使我对很多东西有了更深刻的认

22、识。平时在课堂上无法掌握的集体操作都有了一定的进步。总结如下: 查阅资料和阅读相关文献的重要性。 向同学请教的重要性,团结协作的重要性。 勤动手的重要性,自己动手,丰衣足食!以前很多时候一遇到问题常常都会问同学,但是通过这次设计,我学会了自己努力解决困难,提高了自己解决问题的能力。 对待任何事情都要有耐心和恒心,遇到问题要冷静地思考,积极找出症结所在,逐个解决。 做事情要步步为营,不能一蹴而就,就像焊接电路,只有确保每一部都真确,才有可能实现整个电路正常工作。通过本次课程设计,我更深刻的认识到了教学实践在大学课程中的重要性,同时也发觉到了自己在学习方面存在的许多不足之处,在以后的学习中我会努力

23、改进这些不足,不断提高自己的动手实践能力。17参考文献参考文献单片机原理及接口技术 第三版(李朝青编)单片机 C 语言程序设计完全自学手册(郭惠 吴迅编)基于 Proteus 的单片机系统设计与仿真实例(蒋辉平 周国雄 编)18#include#define uchar unsigned char#define uint unsigned int#definebusy 0 x80sbit k1=P10;sbit k2=P11;sbit k3=P12;sbit k4=P13;sbit k5=P14;sbit RS=P25; sbit RW=P26; sbit E=P27;sbit led=P20

24、;sbit sound=P37;uchar code tableee= 20:00;uchar code tablee= 10:00;uchar code table= 05:00;uchar code table1=0,1,2,3,4,5,6,7,8,9;uchar code table3=08 wei dian zi;uchar code table2= 3108008066; uchar code table5= 00:00;uchar code table4= TIME OUT!;uchar d,e,num,t,shishi,shige,fenshi,fenge,miaoshi,mia

25、oge,b,b1,a,aa ; uint counter=0;uchar code array= 0 x18, 0 x30, 0 x1C, 0 x10, 0 x20, 0 x40, 0 x1C, 0 x10, 0 x18, 0 x10, 0 x20, 0 x10, 0 x1C, 0 x10, 0 x18, 0 x40, 0 x1C, 0 x20, 0 x20, 0 x20, 0 x1C, 0 x20, 0 x18, 0 x20, 0 x20, 0 x80, 0 xFF, 0 x20, 0 x30, 0 x1C, 0 x10, 0 x18, 0 x20, 0 x15, 0 x20, 0 x1C,

26、 0 x20, 0 x20, 0 x20, 0 x26, 0 x40, 0 x20, 0 x20, 0 x2B, 0 x20, 0 x26, 0 x20, 0 x20, 0 x20, 0 x30, 0 x80, 0 xFF, 0 x20, 0 x20, 0 x1C, 0 x10,19 0 x18, 0 x10, 0 x20, 0 x20, 0 x26, 0 x20, 0 x2B, 0 x20, 0 x30, 0 x20, 0 x2B, 0 x40, 0 x20, 0 x20, 0 x1C, 0 x10, 0 x18, 0 x10, 0 x20, 0 x20, 0 x26, 0 x20, 0 x

27、2B, 0 x20, 0 x30, 0 x20, 0 x2B, 0 x40, 0 x20, 0 x30, 0 x1C, 0 x10, 0 x18, 0 x20, 0 x15, 0 x20, 0 x1C, 0 x20, 0 x20, 0 x20, 0 x26, 0 x40, 0 x20, 0 x20, 0 x2B, 0 x20, 0 x26, 0 x20, 0 x20, 0 x20, 0 x30, 0 x80, 0 x20, 0 x30, 0 x1C, 0 x10, 0 x20, 0 x10, 0 x1C, 0 x10, 0 x20, 0 x20, 0 x26, 0 x20, 0 x2B, 0

28、x20, 0 x30, 0 x20, 0 x2B, 0 x40, 0 x20, 0 x15, 0 x1F, 0 x05, 0 x20, 0 x10, 0 x1C, 0 x10, 0 x20, 0 x20, 0 x26, 0 x20, 0 x2B, 0 x20, 0 x30, 0 x20, 0 x2B, 0 x40, 0 x20, 0 x30, 0 x1C, 0 x10, 0 x18, 0 x20, 0 x15, 0 x20, 0 x1C, 0 x20, 0 x20, 0 x20, 0 x26, 0 x40, 0 x20, 0 x20, 0 x2B, 0 x20, 0 x26, 0 x20, 0

29、 x20, 0 x20, 0 x30, 0 x30, 0 x20, 0 x30, 0 x1C, 0 x10, 0 x18, 0 x40, 0 x1C, 0 x20, 0 x20, 0 x20, 0 x26, 0 x40, 0 x13, 0 x60, 0 x18, 0 x20, 0 x15, 0 x40, 0 x13, 0 x40, 0 x18, 0 x80, 0 x00 ;char shi,fen,miao;void delay(uchar z)uchar x,y; for(x=z;x0;x-) for(y=200;y0;y-);20 bit lcd_busy()/测试 LCD 忙碌状态 bi

30、t result; E= 0;RS= 0;/指令RW= 1;/读出 E= 1;delay(4);/高电平读出1us result=(bit)(P0&busy); E= 0; return result; void write_1602cmd(uchar cmd)/写命令 while(lcd_busy(); RS=0; delay(5); RW=0; delay(5); E=0; delay(5); P0=cmd; E=1; delay(10); E=0; void write_1602Data(uchar Data)/写数据 while(lcd_busy(); RS=1; delay(

31、5); RW=0; delay(5); E=0; P0=Data; delay(5); E=1; delay(10); E=0; /lcd 初始化 void LCD_init() 21 write_1602cmd(0 x01);/清屏delay(5);write_1602cmd(0 x38);/功能设定 delay(5); write_1602cmd(0 x0c);/光标不闪烁 delay(5);write_1602cmd(0 x06);/lcd 模式设定,i/d=1(计数地址加 1)delay(5); void init() t=0,led=1; TMOD=0X11;/设置定时器 0,置定时

32、器 1 在工作方式 1 TH0=0 xff; TL0=0 xff; TH1=(65536-50000)/256; /给定时器 1 装初值 TL1=(65536-50000)%256; EA=1;/开启总中断 ET0=1; /开启外部中断 0 中断 ET1=1;/开启定时器 1 中断 TR0=0; TR1=0; LCD_init(); write_1602cmd(0 x80); for(num=0;num14;num+)write_1602Data(table3num);delay(5); write_1602cmd(0 x80+0 x40); for(num=0;num12;num+)writ

33、e_1602Data(table2num);delay(5);void key_check() if(k1=0) delay(10);22 if(k1=0) write_1602cmd(0 x80+0 x40); for(num=0;num12;num+)write_1602Data(table5num);delay(5);if(k2=0) fen+; fenge=fen%10; fenshi=fen/10; write_1602cmd(0 x0f);/打开光标闪烁 write_1602cmd(0 x80+0 x40+7); write_1602Data(table1fenge); write

34、_1602cmd(0 x80+0 x40+6); write_1602Data(table1fenshi);if(k3=0)fen-; fenge=fen%10; fenshi=fen/10; write_1602cmd(0 x0f);/打开光标闪烁 write_1602cmd(0 x80+0 x40+7); write_1602Data(table1fenge); write_1602cmd(0 x80+0 x40+6); write_1602Data(table1fenshi);if(k4=0)TR1=1;write_1602cmd(0 x0c); /关闭光标闪烁 if(k2=0) del

35、ay(10); if(k2=0) write_1602cmd(0 x80+0 x40);23 for(num=0;num12;num+) write_1602Data(tablenum);delay(5); TR1=1;fen=5;miao=0; if(k3=0) delay(10); if(k3=0) write_1602cmd(0 x80+0 x40); for(num=0;num12;num+) write_1602Data(tableenum);delay(5); TR1=1;fen=10;miao=0; if(k4=0) delay(10); if(k4=0) write_1602cmd(0 x80+0 x40); for(num=0;num12;num+) write_1602Data(tableeenum);delay(5); TR1=1;fen=20;miao=0; void sound_delay(uchar n) uchar i; while(n-)24 for(i=0;i2;i+); void playmusic() uint i; uchar sound_signal;/定义音符大小 uchar sound

温馨提示

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

评论

0/150

提交评论