单片机原理及应用课程设计.doc_第1页
单片机原理及应用课程设计.doc_第2页
单片机原理及应用课程设计.doc_第3页
单片机原理及应用课程设计.doc_第4页
单片机原理及应用课程设计.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及应用课程设计 设计题目:红外遥控电机系统设计 系 别: 电子信息科学与技术 专 业 班: 10 信科 1 班 姓 名: 赵湖北 指 导老 师: 谭保华 - 1 - 目 录 一.课程设计目的及意义 - 2 - 1.1 研究现状: .- 2 - 1.2 研究目的: .- 2 - 1.3 研究的意义: .- 2 - 二、设计要求 .- 3 - 2.1 总体设计 - 3 - 2.2 系统功能 - 4 - 三、设计内容及方法 .- 4 - 3.1 本课题的研究内容 .- 4 - 3.2 本课题研究的实施方案 .- 5 - 四、硬件电路总体设计 .- 5 - 4.1 发射模块 - 5 - 4.2 接收模块 - 7 - 4.3 步进电机的控制 .- 8 - 4.4 数码管显示模块 - 10 - 第五章 程序设计 .- 11 - 5.1 程序完成的功能 - 11 - 5.2 编程语言的选择 - 11 - 5.3 红外发射程序设计 - 13 - 5.4 红外接收 - 14 - 六、 部分程序清单及注释 .- 15 - 6.1 红外已写程序 .- 15 - 6.2 红外线接受程序 .- 19 - 第七章 总结 .- 22 - 参考文献 .- 23 - 一.课程设计目的及意义 1.1 研究现状: 步进电机是一种用电脉冲信号进行控制、并将电脉冲信号转换成相应的角 位移的执行器,也称脉冲电机。每给步进电机输入一个电脉冲信号,其转轴就 转过一个角度,称为步距角,其角位移量与电脉冲数成正比,其转速与电脉冲 信号输入的频率成正比,通过改变频率就可以调节电机的转速。如果步进电机 的各项绕组保持某种通电状态,则其具有自锁能力。步进电机用途广泛,是工 业过程控制及仪表中常用的控制元件之一,例如在机械装置中可以用丝杆把角 度变成直线位移,也可以用步进电机带动螺旋电位器,调节电压或电源,从而 实现对执行机械的控制。步进电机还具有快速起停、精确步进和定位等特点, 因而在机器人、汽车、数控机床、绘图仪、打印机以及光学仪器中得到广泛的 应用。随着生产过程自动化和遥测遥控技术的发展,各种微型控制电机纷纷出 现,并得到了迅速广泛的发展和应用。 1.2 研究目的: 本设计采用单片机组成红外遥控电机转向系统,实现红外接收和解码的功 能,用 8 段数码管显示接收和解码信息的结果,利用主控程序实现对步进电机 正转、反转、启动、停止以及调速等运行状态的控制,结构简单,功能强,运 行可靠,可对电机转向进行良好控制。 1.3 研究的意义: 单片机自 20 世纪 70 年代问世以来,作为微计算机一个很重要的分支,应 用广泛,发展迅速,已对人类产生了巨大的影响。尤其美国 Intel 公司生产的 MCS51 系列单片机,由于其具有集成度高、处理功能强、可靠性好、系统结 构简单、价格低廉、易于使用等优点,在我国已经得到广泛的应用,在智能仪 器仪表、工业检测控制、电力电子、机电一体化等方面取得了瞩目的成果。在 高压、辐射、有毒气体等环境下,直接操作生产设备会影响设备操作者的健康, 甚至影响设备的成本结构为了保证生产的质量、安全和可靠性,遥控技术得到 广泛的应用。红外线遥控具有体积小、方向性好、功耗低、功能强和成本低等 特点,因此该控制器是选用红外线遥控技术,并结合单片机,针对电机系统的 较远距离现场控制而进行设计、又由于电机调速范围宽,具有迟滞性,受负载 影响显著,因此本设计是由单片机完成解码,并控制信号输出,从而较好地实 现电机的远离现场调控,同时通过对本文利用单片机强大的控制能力设计了一 个单片机控制直流电机的控制系统,这不仅使人们更了解单片机的控制功能, 也了解了直流电机的功能和使用和红外线控制的有关特性,这些都为以后的研 究和工作打下了很好的基础,也使我学到了更多的知识。随着红外技术的发展, 红外遥控以其安全方便的特点越来越受人们喜爱,本文的设计就是基于简单红 - 3 - 外遥控而设计的,用简单的红外技术遥控步进电机,控制电机的转动,以达到 省时省力之目的。单片机具有体积小、速度快、性能可靠和价格低廉等优点, 通常在其外部配置外围电路就可构成一完整的控制系统。红外遥控具有抗干扰 能力强、响应速度快、功耗低等众多优点。目前,基于单片机控制的红外遥控 技术已广泛应用于家用电器、智能玩具和工业控制等众多领域,给人们的生产 和生活带来极大的方便。本文设计的以 STC80C51 单片机为核心的红外遥控电机 调速系统具有硬件电路简单、成本低廉、软件编较容易、用电机带动相应的驱 动机构后便是一实用性极强的调速控制系统。 二、设计要求 2.1 总体设计 本设计利用红外遥控器遥控电机的转动等功能,利用红外遥控器控制步进 电机其实和用键盘控制步进电机原理类似只不过按键是用导线传递键是否按下 的信号,而红外则是利用 LED 发射红外线传递按键信息。由于红外采用脉宽调制 的串行码以脉宽为 0.565ms、间隔 0.56ms、周期为 1.125ms 的组合表示二进制 的“0 ” 以脉宽为 0.565ms、间隔 1.685ms、周期为 2.25ms 的组合表示二进 制的“1” 在解码时通过判断高低电平持续时间的长短来识别发送的键值。 控制步进电机正、反方向转动、单步、连续、快慢等动作原理其实并不困 难。步进电机将电脉冲信号转换成角位移,即给一个脉冲,步进电机就转动一 个角度转动的角度大小与施加的脉冲数成正比。因此单步和连续的动作区别只 是单片机给步进电机脉冲个数不同而已。每按一次单步键就是给电机一个脉冲, 而连续则是不断的给电机脉冲,达到连续运转的目的。 单片机的晶振为 12MHz,单周期指令执行时间为 1MHz,由于机械动作需要一 定时间来完成,如果以这么快的速度来给脉冲,电机是不会转动的,因此在两 个脉冲之间必须要有一定时间差,电机才有时间来执行动作。电机转动的速度 与脉冲频率成正比,控制脉冲间隔时间就相当于控制了步进电机的转动角频率 即快慢。 步进电机的转动需要向电机以一定的顺序分配驱动脉冲。如四相单四拍其 脉冲分配的方式和顺序为 A-B-C-D-A,如此周而复始,即可转动。转动方向与脉冲 顺序有关如果给相反脉冲,那么电机就会反转。 根据该系统设计要求,需要通过红外遥控器下按键和显示器来改变步进电机 的运动状态以及显示,只需要红外遥控器中 6 个按键就可满足需求,外加 8 位 LED 数码显示管即可。由于实验箱上只有 8 个连体数码管,因此需要动态扫描。 通过从键盘上输入正、反转命令,按键数值显示在数码管上 ,CPU 再读取正、反转 命令, 加减速后执行。经键盘可完成启动、停止、正转、反转、速度设置控制功 能。 按下红外遥控器上的相关按钮电机执行相关动作,同时数码管上显示按键的 数值,系统大部分都是软件实现的,整个设计框图如下: 图 2.1 系统框图 2.2 系统功能 本系统拟实现: 1. 实现红外遥控的解码; 2. 通过遥控器控制电机的启动、停止、转动方向和幅度的控制; 3. 通过遥控器控制电机的加速、减速; 4. 通过遥控器电机的运转时间; 5. 1 min 内无按键命令进入低功耗状态; 三、设计内容及方法 3.1 本课题的研究内容 本文的主要内容是先阐述课题研究背景、意义,后对红外遥控电机系统的 可行性进行了理论分析的基础上,利用计算机技术、电子技术等,研制出的红 外遥控电机系统硬件部分,编写出相应的软件程序,并进行了调试和试运行。 在软件设计中,我们采用模块化程序设计思想,将软件分为红外接收、红外解 码、电机控制、键盘控制、数码管显示模块,每个模块又由若干小模块组成。 对软件的这种处理不但能使软件的结构清晰,而且有利于软件的调试和修改。 本设计主要包括红外线信号的收发、数码管的显示、步进电动机转向控制等几 个重要功能模块,采用单片机组成红外遥控电机转向系统,实现红外接收和解 码的功能,用 8 段数码管显示接收和解码信息的结果,利用主控程序实现对步 红外遥控按键 红外接收 单片机 数码管显示 步进电机 按键调速 - 5 - 进电机正转、反转、启动、停止以及调速等运行状态的控制,结构简单,功能 强,运行可靠,可对电机转向进行良好控制。 3.2 本课题研究的实施方案 1、熟悉相关理论知识:在本毕业设计中涉及到的各种知识在设计准备前期 都必须有所掌握,这是整个设计的基础。 2、编制软件程序:在对 C 语言巩固加深认识后,着手开始编写程序语言。 在编写之前要对整个测距系统的功能掌握透彻,哪些功能需要通过硬件实现, 哪些功能需要通过软件来实现都必须明确。 3、与硬件联调,脱机运行:在成功编译完程序后,就和硬件电路进行联调, 只有这样才能检测出整个系统功能是否达到完善。 四、硬件电路总体设计 4.1 发射模块 该系统由发射电路和接收电路两部分构成。遥控器发射电路系统框图如图 4.1所示,采用STC89C2051单片机主要是考虑制作遥控器时占用体积小、质量轻, 并能充分利用其硬件资源,并且STC89C2051单片机的工作电压范围宽,可用电 池供电。P1口作显示电路接口,外接2个LED数码管,用于显示设置电机运行的 时问,P1.OP1.6接驱动电路后输出显示数据的字段码,P1.7接非门和驱动电 路输出字位码,采用动态显示方式显示时问。P3.1引脚为串行输出口,输出按 键的代码信号,代码信号用一特殊的字节表示,P3.7引脚输出38 kHz的载波信 号,两信号经调制电路、驱动电路后由红外发射二极管将信号发射出去。遥控 器上的按键较少,所以键盘电路采用独立式按键,设置有复位键键、启动停 止键、加速键、减速键、定时键共5个按键,复位键不占用IO 口,其余4个按 键分别接P3.0,P3.3P3.5,除复位键外,有键按下时产生外部中断,在中断 程序中识别按键并发射该键的代码。 图4.1 发射电路框图 发射电路通过 P0.0-P0.3 四个引脚对应的四个按键控制来发送不同的脉冲 信号,单片机接收到按键信号,按照 NEC 协议发射红外信息码。电路图如下: 晶振电路 P1.x STC89C51 RST P3.a P3.x INT0 P3.y 键盘电路 非门 驱动 1 位 LED 数码管 驱动 驱动调制电路 红外发射 驱动 - 7 - 12YXTAL0.uFC5ap6VKR34dtbsP8S9DINWEUQJ 图 4.2 发射电路图 4.2 接收模块 接收系统框图如下图所示,红外接收电路采用带有解码功能的红外接收器, 不需要软件解码,能简化编程,接收到遥控信号后,将光信号变成电信号,经 放大和整形后送人单片机 P3.2 引脚,P3.2 的第二功能为串行输人口,由软件根 据代码识别相应的按键,然后进行相应的处理。过零检测电路检测变压器输出 的交流电的零点,以零点为起点利用单片机产生控制可控硅的移相脉冲,通过 改变移相角来改变可控硅的导通角,即当移相角较大时,可控硅导通角较小, 输出电压较低,电机转速较慢;当移相角较小时,可控硅的导通角较大,输出 电压较高,电机转速较快。光耦电路的作用是将弱电电路和强电电路分开 红外接收 放大 整形 P3.2 P1 INT0 晶振复位电路 驱动 光耦 可控硅 220V 交流电 过零检测变压器 图 4.3 接收系统框图 具体电路图如下: 1KR205uFCXESTYAL.ap3P46789DINWVUQOdtbs 图 4.4 接收系统电路图 4.3 步进电机的控制 步进电机是一种用电脉冲信号进行控制、并将电脉冲信号转换成相应的角 位移的执行器,也称脉冲电机。每给步进电机输入一个电脉冲信号,其转轴就 转过一个角度,称为步距角,其角位移量与电脉冲数成正比,其转速与电脉冲 信号输入的频率成正比,通过改变频率就可以调节电机的转速。如果步进电机 的各项绕组保持某种通电状态,则其具有自锁能力。 电机的停止 步进电机具有瞬间启动和急速停止的优越特性。故在设计中,不论电机处于 何种状态,只要按下复位键,马上跳转到主程序,停止给脉冲,电机停止运转。 电机单步与连续的控制 电机 - 9 - 给一个脉冲,步进电机就转动一个角度,转动的角度大小与施加的脉冲数成 正比,因此,单步和连续的动作区别只是单片机给步进电机脉冲个数不同而已。 每按一次单步键就是给电机一个脉冲,而连续则是不断的给电机脉冲,达到连 续运转的目的。步进电机的步进角度是 7.5 度,一圈 360 度,需要 48 个脉冲完 成。 电机快慢的控制 单片机的晶振为 12MHz,单周期指令执行时间为 1MHz,由于机械动作需要一 定时间来完成,如果以这么快的速度来给脉冲,电机是不会转动的,因此,在 两个脉冲之间必须要有一定时间差,电机才有时间来执行动作。电机转动的速 度与脉冲频率成正比,控制脉冲间隔时间就相当于控制了步进电机的转动角频 率即快慢。 通过单片机的定时/计数器 T0 来控制,定时产生脉冲的方法称为硬件定时, 该法首先根据定时的时间长短设定定时器的工作模式,然后输入定时器的定时 常数,则定时器就会定时溢出,单片机就会每溢出一次就产生一个脉冲控制步 进电机转动,而改变装载值的大小,就会实现变速。也就是说,步进电机的转 速由单片机内部定时器的中断频率决定的,不断改变定时器的装载初值就可改 变电机的运转速度。 电机正反的控制 步进电机的转动需要向电机以一定的顺序分配驱动脉冲。如四相单四拍,其 脉冲分配的方式和顺序为 A-B-C-D-A,如此周而复始,即可转动。转动方向与脉 冲顺序有关,如果给相反脉冲,那么电机就会反转。 在程序中,步进电机的正反转则是一个公有键,按下转动方向就相反,通过 判断 20 号单元的第一位 20H.0 是 0 还是 1,若是 0 则去查反转的表,否则去查 正转的表,实行起来比较方便。 电机的停止 步进电机具有瞬间启动和急速停止的优越特性。故在设计中,不论电机处于 何种状态,只要按下复位键,马上跳转到主程序,停止给脉冲,电机停止运转。 当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个 固定的角度(称为“步距角”)它的旋转是以固定的角度一步一步运行的。可以 通过控制脉冲个数来控制角位移量,从而达到准确定位的目的 同时可以通过 控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 步进电机与单片机的连接 图 4.5 步进电机的控制 4.4 数码管显示模块 LED(发光二极管 Light Emitting Diode 的英文缩写)是利用 PN 结把电能 转换成光能的固体发光器件,根据制造材料的不同可以发出红、黄、绿、白等 不同色彩的可见光来。LED 的伏安特性类似于普通二极管,正向压降约为 2 伏 左右,工作电流一般在 10 -20 mA 之间较为合适。LED 显示器有多种结构形式, 单段的圆形或方形 LED 常用来显示设备的运行状态,8 段 LED 可以显示各种数 STC80C51 单片机 A 相驱动 B 相驱动 C 相驱动 D 相驱 动 - 11 - 字和字符,所以也称为 LED 数码管,其外形如下图所示。8 段 LED 在控制系统 中应用最为广泛,其接口电路也具有普遍借鉴性。因此,我们介绍 8 段 LED 数 码管显示器。 使用 LED 显示器时,要注意区分这两种不同的接法。为了显示数字或字符, 必须对数字或字符进行编码。七段数码管加上一个小数点,共计 8 段。因此为 LED 显示器提供的编码正好是一个字节。TX 实验板用共阴 LED 显示器,根据电 路连接图显示 16 进制数的编码已列在下表。 共阴数码管码表 0-9:0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, A-F:0x77,0x7c,0x39,0x5e,0x79,0x71, 无显示:0x00 图 4.6 共阴极数码管内部电路示意图 第五章 程序设计 本设计的软件设计部分十分的重要,红外解码与显示,步进电机的控制。 而且程序的设计也是本设计的难点。软件设计运用模块化程序设计思想,对不 同功能的程序进行分别编程,这样不但使得整个软件的层次和结构比较清晰, 而且有利于软件的调试和修改。红外遥控电机的软件设计主要由主程序、红外 接收模块、数码管显示收模块、电机控制模块、键盘控制模块及蜂鸣器模块组 成。 5.1 程序完成的功能 本次设计的程序需要完成的功能有: 红外接收与解码 数码管显示解码结果 对步进电机的控制 键盘以及蜂鸣器的控制 5.2 编程语言的选择 在编程语言的选择上,我主要考虑使用我所学过的汇编语言和 C 语言。下 面将对汇编语言与 C 语言的特点进行比较。 汇编语言是一种面向机器的低级的程序设计语言。它直接利用机器提供的 指令系统编写程序,该类程序的可执行指令是与机器语言程序的指令一一对应 的。汇编语言由于是面向机器的程序设计语言,与具体的计算机硬件有着密切 的关系,因此,可移植性差。但由于汇编指令与机器语言指令一一对应,即一 条汇编语言的可执行指令对应着一条机器语言指令,反之亦然。因此,汇编语 言可直接利用机器硬件系统的许多特性,如寄存器、标志位以及一些特殊指令 等,具有执行速度快、占用内存少等优点。汇编语言的缺点是程序的通用性和 可移植性差;程序比较繁琐,调试困难;目标程序比较庞大,运行速度慢。 C 语言是一种编译型的程序设计语言,它兼顾了多种高级语言的特点,并 具备汇编语言的功能。C 语言有功能丰富的库函数,运算速度快,编译效率高, 有良好的可移植性,而且可以直接实现对系统硬件的控制。C 语言是一种结构 化设计语言,支持由顶向下结构化程序设计技术。C 语言的模块化程序结构可 以使程序模块实现共享。在 C 语言的可读性方面更容易借鉴前人的开发经验, 提高程序的开发水平。 C 语言应用于单片机编程出了上述特点外,还有以下突出特点:编译器可 以自动完成变量存储单元的分配,省去了分配和记录存储单元的繁琐;不必对 单片机和硬件接口的结构有很深入的了解,省去了单片机漫长的学习时间;具 有良好的可移植性,只要将程序略加改动就可以将其应用与其他类型的单片机, 省去了更改单片机型号时重新编写程序的无奈。因此利用 C 语言编写程序可以 - 13 - 大大缩短目标系统软件的开发周期,程序的可读性明显增加,便于改进、扩充、 研制规模更大、性能更完备的系统。C 语言的缺点是生成目标代码比较大,但 随着大规模集成电路的飞速发展,片内 ROM 的空间做到 16/32 KB 的已经很多, 所以代码较大已经不是重要的问题了。目前,支持硬断点的单片机仿真器已能 很好的进行 C 语言程序调试,为使用 C 语言进行单片机编程提供了便利条件。 因此,利用 C 语言进行程序设计已成为单片机开发、应用的必然趋势。 综合以上对两种编程语言特点的比较,并考虑到单片机之间采用串行数据 传送,采用 C 语言编写的话又可以简化许多使用汇编语言时进行浮点运算的不 便。再加上本人对 C 语言程序更加熟悉一点,所以最终决定使用 C 语言为本次 设计的编程语言。 5.3 红外发射程序设计 5.4 红外接收 接收主程序 开始 - 15 - 电机控制的程序框图 初始化 P3.2 等待外部中断 计数器计数 P3.2 等到下降沿 进入外部处理程序中断 接收完一组 六、 部分程序清单及注释 6.1 红外已写程序 #include #define uchar unsigned char #define uint unsigned int uchar const seg_duan=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; uchar irtime = 0; /定时器中断出发时自动加 1 用以计时 irtime256 uchar startflag = 0; /开始接收红外标志判断位 uchar irdata33 = 0; /用以存储接受的 33 个码值的时间值 用以解码 这是存储 一次的红外码其实只有一个值 uchar bitnum; /用做上面数组的数组标志位 uchar irok; /一次红外接收是否完成判断标志位 uchar ircode4 = 0; /红外解码 uchar irdecode = 0; /解码是否完成判断位 - 17 - void EX0init(void) /外部中断 0 初始化 IT0 = 1; / 下降沿触发 EX0 = 1; / 允许外部中断 0 EA = 1; / 开总中断 void TIME0init(void) TMOD=0x02; /定时器 0 工作方式 2,TH0 是重装值,TL0 是初值 TH0=0x00; /重装值 TL0=0x00; /给初值 ET0=1; /开定时器 0 中断 TR0=1; void delay_50us(uint t) uchar j; for(;t 0;t-) for (j = 0;j 1; if (irdatak 6) value = value | 0x80; /第一次的值假如为 1 则共要右移 7 位 移到最低位 k+; ircodej = value; irdecode = 1; /解码完成 void irwork(void) /将解码后的数值 进行显示等处理 switch(ircode2) /判断第三个数码值 case 0: P0 = seg_duan1;break; /1 显示相应的按键值 case 1: P0 = seg_duan2;break; /2 case 2: P0 = seg_duan3;break; /3 case 3: P0 = seg_duan4;break; /4 case 4: P0 = seg_duan5;break; /5 case 5: P0 = seg_duan6;break; /6 case 6: P0 = seg_duan7;break; /7 case 7: P0 = seg_duan8;break; /8 case 8: P0 = seg_duan9;break; /9 irdecode = 0; /处理完成标志 void main(void) EX0init(); TIME0init(); P2 = 0x00; /用第一位数码管显示 while (1) /先接收再处理 if (irok) /如果接收好了则先解码 irhandle(); irok = 0; if (irdecode) irwork(); - 19 - void time0() interrupt 1 /计数溢出时进入中断 计数时间 = irtime 256 irtime+; / 字符型最大 255 void int0() interrupt 0 if (startflag) /第一次是引导码不接收 if(irtime = 32) /检测到引导码 9ms/9ms+4.5ms 则开始接收后面的码 bitnum = 0; irdatabitnum = irtime; irtime = 0; bitnum+; if (bitnum = 33) /一次红外接收完成 bitnum = 0; irok = 1; /标志一次接收完成 else startflag = 1; /第一次进来是开始置位为第二次中断处理 准备 irtime = 0; / 并且第一次来 就开始计时 6.2 红外线接受程序 #include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器 的定义 #define uchar unsigned char #define uint unsigned int sbit IR=P32; /红外接口标志 unsigned char const smg_duan = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /数码管段选 unsigned char const smg_wei = ; /数码管位选 uchar irtime; uchar startflag; uchar irdata33; uchar bitnum; uchar irrece0k; uchar ircode4; uchar irprosok; uchar disp8; void delay_50us(uint t) uchar j; for(;t 0;t-) for (j = 0;j 1; /执行 7 次 if (irdatak 6) value = value | 0x80; k+; ircodej = value; irprosok = 1; void

温馨提示

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

评论

0/150

提交评论