数字闹钟的设计

上传人:kfc****89 文档编号:142723489 上传时间:2022-08-25 格式:DOC 页数:15 大小:150.01KB
收藏 版权申诉 举报 下载
数字闹钟的设计_第1页
第1页 / 共15页
数字闹钟的设计_第2页
第2页 / 共15页
数字闹钟的设计_第3页
第3页 / 共15页
资源描述:

《数字闹钟的设计》由会员分享,可在线阅读,更多相关《数字闹钟的设计(15页珍藏版)》请在装配图网上搜索。

1、数字闹钟的设计系统的设计要求本课题要求设计一个24小时的数字闹钟,该数字闹钟的面板如图9.1所示,它包括以下几个组成部分:(1)显示屏,由7个七段数码管组成,其中6个用于显示当前时间(时:分:秒)或设置的闹钟时间,而另一个则用于显示系统内部产生的周期性循环变化的待选预置数字; (2)YES(确认)键:用于输入新的时间或新的闹钟时间时,对每位待选预置数字输入的确认;(3)TIME(时间)键:用于确定新的时间设置;(4)ALARM(闹钟)键:用于确定新的闹钟时间设置,或显示已设置的闹钟时间;(5)扬声器,在当前时钟时间与闹钟时间相同时,发出蜂鸣声。该数字闹钟的具体功能要求如下:(1)计时功能:这是

2、本数字闹钟设计的基本功能,每隔1秒钟计时一次,并在显示屏上显示当前时间;(2)闹钟功能::如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声;(3)设置新的计时器时间:系统内部产生的周期性循环变化的待选预置数字,当用户按”YES”键后则该数字将作为预置数字输入;在输入过程中,输入数字在显示屏上从右到左依次显示,例如,用户要设置新的时间12:48:56,则按顺序先后输入”1”,”2”,”4”,”8”,”5”,”6”,与之对应,显示屏依次显示的信息为:”1”,”12”,”124”,”1248”,”12485”,”124856”。如果用户在输入任意几个数字后较长时间内,例如5秒,没有按任何键,则计

3、时器恢复到正常的计时显示状态。(4)设置新的闹钟时间:用户用YES键输入新的时间,然后按”ALARM”键确认,过程与3类似。(5)显示所设置闹钟时间:在正常计时显示状态下,用户直接按下“ALARM”键则已设置的闹钟时间显示在显示屏上。根据该系统的设计功能要求,整个系统大致包括如下几个组成部分:用于预置数字输入的预置数字缓冲器;用于数字闹钟计时的计数器;用于保存闹钟时间的寄存器;用于显示的七段数码显示电路以及控制以上各个部分协同工作的控制器。图1 数字闹钟面板图系统的总体设计图2 计时器的外部端口根据该数字闹钟的设计要求,我们可得到其外部端口如图2所示。各个输入/输出端口的作用如下:(1) CL

4、K为外部时钟信号,RESET为复位信号。(2) 当YES为高电平时(YES= 1),表示用户选择了某个预置数字。(3) 当ALARM_BUTTON为高电平时,表示用户按下ALARM键。(4) 当TIME_BUTTON为高电平时,表示用户按下TIME键。(5) SEG7是数据动态扫描显示的公共八段数码显示管驱动端,而LEDW则是数码管的位选择端,它经过外接的38译码器译码后接数码管的公共端COM。(6) SOUND_ALARM用于控制扬声器发声,当SOUND_ALARM = 1时,扬声器发出蜂鸣,表示到了设定的闹钟时间。根据系统的设计要求,整个系统可分为闹钟控制器、预置寄存器、分频电路、时间计数

5、器、闹钟寄存器、显示驱动控制器等6个模块,其总体设计原理图如图3所示。各图 3 系统总体设计原理图个模块的作用介绍如下:(1) 闹钟控制器(CONTROL):它是整个系统正常有序工作的核心,按设计要求产生相应的控制逻辑,以控制其他各部分的协调工作。 (2) 预置寄存器(KEYBUFFER):这时一个预置数字产生器和移位寄存器的结合体。通过对YES进行操作,选择输入欲输入的数字,暂存用户输入的数字,并且用户每输入一个数字,暂存数字移位一次,实现用户输入数字在显示器上从右到左的依次显示。(3) 分频电路(DIVIDER):将较高速的外部时钟频率分频成每秒钟一次的时钟频率,以便进行时钟计数。(4)

6、时间计数器(COUNTER):实际上是一个异步复位、异步置数的累加器,通常情况下进行时钟累加计数,必要时可置入新的时钟值,然后从该值开始新的计数。(5) 闹钟寄存器(REG):用于保存用户设置的闹钟时间,是一个异步复位寄存器。(6) 显示驱动器(DRIVER):根据需要显示当前时间、用户设置的闹钟时间或用户输入的预置时间,同时判断当前时间是否已到了闹钟时间,实际上是一个多路选择器加比较器。对具体数据的显示,采用的是动态扫描显示方式。闹钟控制器的设计图4 闹钟控制器的外部端口 闹钟控制器的外部端口如图4所示,各端口的作用如下:(1) CLK为外部时钟信号,RESET为复位信号。(2) 当KEY为

7、高电平(KEY= 1)时,表示用户按下数字键(“0”“9”)。(3) 当ALARM_BUTTON为高电平时,表示用户按下“ALARM”键。(4) 当TIME_BUTTON为高电平时,表示用户按下“TIME”键。(5) 当LOAD_NEW_A为高电平时,控制(闹钟时间寄存器)加载新的闹钟时间值。(6) 当LOAD_NEW_C为高电平时,控制(时钟计数器)设置新的时间值。(7) 当SHOW_NEW_TIME为高电平时,控制(七段数码显示电路)显示新的时间值,即用户输入的预置时间;否则,当SHOW_NEW_TIME为低电平时,根据SHOW_A信号的值控制显示当前时间或闹钟时间。此时,当SHOW_A为

8、高电平时,控制显示闹钟时间,否则,显示当前时间。控制器的功能可以通过有限状态自动机(FSM)的方式来实现。根据设计要求及端口设置,需要五个状态来实现:S0:表示电路初态即正常时钟计数状态,完成计时功能。S1:接收预置数字输入状态。在状态S0时用户按下“YES”键后进入此状态。在此状态下,显示屏上显示的是用户预置的数字。S2:设置新的闹钟时间。在状态S1时用户按下ALARM键后进入此状态。S3:设置新的计时器时间。在状态S1时用户按下TIME键后进入此状态。S4:显示闹钟时间。在状态S0时用户直接按下ALARM键后进入此状态。在此状态下,显示屏上显示的是所设置的闹钟时间。注意:在此状态下,用户按

9、下ALARM键后,显示屏上保持显示闹钟时间,经过一段时间以后,再返回状态S0显示计时器时间。相应的状态转换及控制如表1所示。表1 控制器状态转换及控制输出表当前状态控制输入(条件)下一状态控制输出(动作)S0YES = 1S1SHOW_NEW_TIME = 1ALARM_BUTTON = 1S4SHOW_A = 1否则S0-S1YES = 1S1SHOW_NEW_TIME = 1ALARM_BUTTON = 1S2LOAD_NEW_A = 1TIME_BUTTON = 1S3LOAD_NEW_C = 1否则(超时)否S1SHOW_NEW_TIME = 1, “超时”判断处理是S0-S2ALAR

10、M_BUTTON = 1S2LOAD_NEW_A = 1否则S0-S3TIME_BUTTON = 1S3LOAD_NEW_C = 1否则S0-S4ALARM_BUTTON = 1S4SHOW_A = 1否则(超时)否S4SHOW_A = 1, “超时”判断处理是S0-表1中没有显式说明的控制信号赋值,表示信号的值为零。例如在状态S0,当信号YES =1时,SHOW_NEW_TIME信号的赋值为1,而其他信号LOAD_NEW_A、LOAD_NEW_C和SHOW_A的值此时都赋为0。另外,表中关于“超时”判断处理的处理细节见VHDL源程序中的有关部分。由于在整个系统中有多个模块需要用到自行设计的数

11、据类型,并且这些数据类型大部分相同,因此我们为了使用上的方便,可设计一个程序包P_ALARM,该程序既可加在调用该程序包的程序前面,也可加在整个系统的顶层设计程序的前面。但是对于一个比较复杂系统的设计,一般是分模块进行设计和调试,所以加在各个调用该程序包的程序前面会比较方便写。程序包P_ALARM的具体设计如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;PACKAGE P_ALARM ISSUBTYPE T_DIGITAL IS INTEGER RANGE 0 TO 9;SUBTYPE T_SHORT IS INTEGER RANGE 0 TO 6553

12、5;TYPE T_CLOCK_TIME IS ARRAY (5 DOWNTO 0) OF T_DIGITAL;TYPE T_DISPLAY IS ARRAY (5 DOWNTO 0) OF T_DIGITAL;END PACKAGE P_ALARM;根据上面的设计分析,我们可将闹钟控制器的VHDL源程序设计如下:-控制器源程序CONTROL.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.P_ALARM.ALL;ENTITY CONTROL IS PORT(KEY:IN STD_LOGIC; ALARM_BUTTON:IN STD_LO

13、GIC; TIME_BUTTON:IN STD_LOGIC; CLK:IN STD_LOGIC; RESET:IN STD_LOGIC; LOAD_NEW_A:OUT STD_LOGIC; LOAD_NEW_C:OUT STD_LOGIC; SHOW_NEW_TIME:OUT STD_LOGIC; SHOW_A:OUT STD_LOGIC);END ENTITY CONTROL;ARCHITECTURE ART OF CONTROL IS TYPE T_STATE IS(S0,S1,S2,S3,S4); CONSTANT KEY_TIMEOUT:T_SHORT:=500; CONSTANT S

14、HOW_ALARM_TIMEOUT:T_SHORT:=500; SIGNAL CURR_STATE:T_STATE; SIGNAL NEXT_STATE:T_STATE; SIGNAL COUNTER_K:T_SHORT; SIGNAL ENABLE_COUNT_K:STD_LOGIC; SIGNAL COUNT_K_END:STD_LOGIC; SIGNAL COUNTER_A:T_SHORT; SIGNAL ENABLE_COUNT_A:STD_LOGIC; SIGNAL COUNT_A_END:STD_LOGIC; BEGIN PROCESS(CLK,RESET) IS BEGIN IF

15、 RESET=1 THEN CURR_STATE=S0; ELSIF RISING_EDGE(CLK)THEN CURR_STATE=NEXT_STATE; END IF; END PROCESS; PROCESS(KEY,ALARM_BUTTON,TIME_BUTTON,CURR_STATE,COUNT_A_END,COUNT_K_END) BEGIN NEXT_STATE=CURR_STATE; LOAD_NEW_A=0; LOAD_NEW_C=0; SHOW_A=0; SHOW_NEW_TIME=0; ENABLE_COUNT_K=0; ENABLE_COUNT_AIF (KEY=0)

16、THEN NEXT_STATE=S1; SHOW_NEW_TIME=1; ELSIF (ALARM_BUTTON=1) THEN NEXT_STATE=S4; SHOW_A=1; ELSE NEXT_STATEIF (KEY=1) THEN NEXT_STATE=S1; ELSIF (ALARM_BUTTON=1) THEN NEXT_STATE=S2; LOAD_NEW_A=1; ELSIF (TIME_BUTTON=1) THEN NEXT_STATE=S3; LOAD_NEW_C=1; ELSE IF (COUNT_K_END=1) THEN NEXT_STATE=S0; ELSE NE

17、XT_STATE=S1; END IF; ENABLE_COUNT_K=1; END IF; SHOW_NEW_TIMEIF (ALARM_BUTTON=1) THEN NEXT_STATE=S2; LOAD_NEW_A=1; ELSE NEXT_STATEIF (TIME_BUTTON=1) THEN NEXT_STATE=S3; LOAD_NEW_C=1; ELSE NEXT_STATEIF (KEY=1) THEN NEXT_STATE=S1; ELSE NEXT_STATE=S4; IF (COUNT_A_END=1) THEN NEXT_STATE=S0; ELSE NEXT_STA

18、TE=S4; SHOW_A=1; END IF; ENABLE_COUNT_ANULL; END CASE; END PROCESS; COUNT_KEY:PROCESS(ENABLE_COUNT_K,CLK) IS BEGIN IF (ENABLE_COUNT_K=0) THEN COUNTER_K=0; COUNT_K_END=KEY_TIMEOUT) THEN COUNT_K_END=1; ELSE COUNTER_K=COUNTER_K+1; END IF; END IF; END PROCESS; COUNT_ALARM:PROCESS(ENABLE_COUNT_A,CLK) IS

19、BEGIN IF(ENABLE_COUNT_A=0) THEN COUNTER_A=0; COUNT_A_END=SHOW_ALARM_TIMEOUT) THEN COUNT_A_END=1; ELSE COUNTER_A=COUNTER_A+1; END IF; END IF; END PROCESS;END ARCHITECTURE ART;预置寄存器的设计这时一个预置数字产生器和移位寄存器的结合体。通过对YES进行操作,选择输入欲输入的数字,暂存用户输入的数字,并且用户每输入一个数字,暂存数字移位一次,实现用户输入数字在显示器上从右到左的依次显示。图5为预置寄存器示意图。图5 预置寄存器

20、示意图-预置寄存器的VHDL源程序KEYBUFFER.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE WORK.P_ALARM.ALL;ENTITY KEYBUFFER IS PORT(KEY:IN STD_LOGIC; CLK:IN STD_LOGIC; RESET:IN STD_LOGIC; KEYNUM:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); NEW_TIME:OUT T_CLOCK_TIME);END ENTITY KEYBUFFER;ARCHIT

21、ECTURE ART OF KEYBUFFER IS SIGNAL N_T:T_CLOCK_TIME; SIGNAL CNT:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL TEMP:T_DIGITAL; BEGIN PROCESS(CLK) IS BEGIN IF (CLKEVENT AND CLK=1) THEN IF CNT=9 THEN CNT=0000; ELSE CNT=CNT+1; END IF; END IF; TEMP=CONV_INTEGER(CNT); KEYNUM=CNT; END PROCESS; SHIFT:PROCESS(RESET,KE

22、Y) IS BEGIN IF (RESET=1) THEN N_T(5)=0; N_T(4)=0; N_T(3)=0; N_T(2)=0; N_T(1)=0; N_T(0)=0; ELSIF (KEYEVENT AND KEY=1) THEN FOR I IN 5 DOWNTO 1 LOOP N_T(I)=N_T(I-1); END LOOP; N_T(0)=TEMP; END IF; END PROCESS; NEW_TIME=N_T;END ARCHITECTURE ART;闹钟寄存器的设计 闹钟寄存器模块的功能是在时钟上升沿同步下,根据LOAD_NEW_A端口的输入信号控制ALARM_T

23、IME端口的输出;当控制信号有效(高电平)时,把NEW_ALARM_TIME端口的输入信号值输出;RESET端口输入信号对ALARM_TIME端口的输出进行异步的清零复位。图18是闹钟寄存器的示意图。图18 闹钟寄存器示意图-闹钟寄存器的源程序REG.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.P_ALARM.ALL;ENTITY REG IS PORT(NEW_ALARM_TIME:IN T_CLOCK_TIME; LOAD_NEW_A:IN STD_LOGIC; CLK:IN STD_LOGIC; RESET:IN STD_LO

24、GIC; ALARM_TIME:OUT T_CLOCK_TIME);END ENTITY REG;ARCHITECTURE ART OF REG IS BEGIN PROCESS(CLK,RESET) IS BEGIN IF RESET=1 THEN ALARM_TIME(0)=0; ALARM_TIME(1)=0; ALARM_TIME(2)=0; ALARM_TIME(3)=0; ALARM_TIME(4)=0; ALARM_TIME(5)=0; ELSE IF RISING_EDGE(CLK) THEN IF LOAD_NEW_A=1 THEN ALARM_TIME=NEW_ALARM_

25、TIME; END IF; END IF; END IF; END PROCESS;END ARCHITECTURE ART;分频电路的设计图6 分频器示意图本模块的功能是将CLK_IN端口输入的时钟信号分频后送给CLK_OUT端口;当RESET端口输入信号有效(高电平)时,CLK_OUT端口输出信号清零。图6为分频电路示意图。-分频电路的VHDL程序DIVIDER.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.P_ALARM.ALL;ENTITY DIVIDER IS PORT(CLK_IN:STD_LOGIC; RESET:IN

26、STD_LOGIC; CLK_OUT:OUT STD_LOGIC);END ENTITY DIVIDER;ARCHITECTURE ART OF DIVIDER IS CONSTANT DIVIDE_PERIOD:T_SHORT:=6000; BEGIN PROCESS(CLK_IN,RESET) IS VARIABLE CNT:T_SHORT; BEGIN IF (RESET=1) THEN CNT:=0; CLK_OUT=0; ELSIF RISING_EDGE(CLK_IN) THEN IF (CNT=(DIVIDE_PERIOD/2) THEN CLK_OUT=1; CNT:=CNT+

27、1; ELSIF (CNT(DIVIDE_PERIOD-1) THEN CLK_OUT=0; CNT:=CNT+1; ELSE CNT:=0; END IF; END IF; END PROCESS;END ARCHITECTURE ART;时间计数器的设计时间计数器模块的功能是当RESET端口输入信号为高电平时,对CURRENT_TIME端口输出信号清零复位;当LOAD_NEW_C端口输入信号为高电平时,将NEW_CURRENT_TIME端口的输入信号输出给CURRENT_TIME端口。RESET端口的控制优先于LOAD_NEW_C端口。当这两个控制信号都无效时,在时钟上升沿同步下,对CUR

28、RENT_TIME端口输出信号累加1,并根据小时、分钟、秒的规律处理进位。图7是时间计数器模块的示意图。图7 时间计数器示意图-时间计数器的源程序COUNTER.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.P_ALARM.ALL;ENTITY COUNTER IS PORT(NEW_CURRENT_TIME:IN T_CLOCK_TIME; LOAD_NEW_C,CLK,RESET:IN STD_LOGIC; CURRENT_TIME:OUT T_CLOCK_TIME);END ENTITY COUNTER;ARCHITECTURE

29、 ART OF COUNTER IS SIGNAL I_CURRENT_TIME:T_CLOCK_TIME; BEGIN PROCESS(CLK,RESET,LOAD_NEW_C) IS VARIABLE C_T:T_CLOCK_TIME; BEGIN IF RISING_EDGE(CLK) THEN IF RESET=1 THEN I_CURRENT_TIME(5)=0; I_CURRENT_TIME(4)=0; I_CURRENT_TIME(3)=0; I_CURRENT_TIME(2)=0; I_CURRENT_TIME(1)=0; I_CURRENT_TIME(0)=0; ELSIF

30、LOAD_NEW_C=1 THEN I_CURRENT_TIME=NEW_CURRENT_TIME; ELSE C_T:=I_CURRENT_TIME; IF C_T(0)9 THEN C_T(0):=C_T(0)+1; ELSE C_T(0):=0; IF C_T(1)5 THEN C_T(1):=C_T(1)+1; ELSE C_T(1):=0; IF C_T(2)9 THEN C_T(2):=C_T(2)+1; ELSE C_T(2):=0; IF C_T(3)5 THEN C_T(3):=C_T(3)+1; ELSE C_T(3):=0; IF C_T(5)2 THEN IF C_T(

31、4)9 THEN C_T(4):=C_T(4)+1; ELSE C_T(4):=0; C_T(5):=C_T(5)+1; END IF; ELSE IF C_T(4)3 THEN C_T(4):=C_T(4)+1; ELSE C_T(4):=0; C_T(5):=0; END IF; END IF; END IF; END IF; END IF; I_CURRENT_TIME=C_T; END IF; I_CURRENT_TIME=C_T; END IF; END IF; END PROCESS; CURRENT_TIME=I_CURRENT_TIME;END ARCHITECTURE ART

32、;显示驱动器的设计本模块的功能是:当SHOW_NEW_TIME端口输入信号有效(高电平)时,根据NEW_TIME端口输入信号(时间数据),产生相应的六个待显示的数据;当SHOW_NEW_TIME端口输入信号无效(低电平)时,判断SHOW_A端口的输入信号,为高电平时,根据ALARM_TIME端口的输入信号(时间数据)产生相应的六个待显示的数据;为低电平时,根据CURRENT_TIME端口的输入信号,产生相应的六个待显示的数据。对于各个待显示的数据,根据动态扫描显示方式在DRIVER端口输出相应的数据显示驱动信息和数码管选择信息。当ALARM_TIME 端口的输入信号值与CURRENT_TIME

33、端口的输入信号值相同时,SOUND_ALARM端口的输出信号有效(高电平),反之无效。图8为显示驱动器示意图。图8 显示驱动器示意图-显示驱动器源程序DRIVER.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE WORK.P_ALARM.ALL;ENTITY DRIVER IS PORT(KEYNUM:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CLK:IN STD_LOGIC; ALARM_TIME:I

34、N T_CLOCK_TIME; CURRENT_TIME:IN T_CLOCK_TIME; NEW_TIME:IN T_CLOCK_TIME; SHOW_NEW_TIME:IN STD_LOGIC; SHOW_A:IN STD_LOGIC; SOUND_ALARM:OUT STD_LOGIC; LEDW:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); SEG7:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY DRIVER;ARCHITECTURE ART OF DRIVER IS SIGNAL DISPLAY_TIME:T_CLOCK

35、_TIME; SIGNAL TEMP:INTEGER RANGE 0 TO 9; SIGNAL CNT:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN PROCESS(ALARM_TIME,CURRENT_TIME,SHOW_A,SHOW_NEW_TIME) IS BEGIN SOUND_LP:FOR I IN ALARM_TIMERANGE LOOP IF NOT(ALARM_TIME(I)=CURRENT_TIME(I) THEN SOUND_ALARM=0; ELSE SOUND_ALARM=1; END IF; END LOOP SOUND_LP; IF SHO

36、W_NEW_TIME=1 THEN DISPLAY_TIME=NEW_TIME; ELSIF SHOW_A=1 THEN DISPLAY_TIME=ALARM_TIME; ELSIF SHOW_A=0 THEN DISPLAY_TIME=CURRENT_TIME; END IF; END PROCESS; PROCESS(CLK) IS BEGIN IF CLKEVENT AND CLK=1 THEN IF CNT=111 THEN CNT=000; ELSE CNT=CNT+1; END IF; END IF; END PROCESS; LEDW TEMP TEMP TEMP TEMP TEMP TEMP TEMPTEMP SEG7 SEG7 SEG7 SEG7 SEG7 SEG7 SEG7 SEG7 SEG7 SEG7 SEG7=00111111; END CASE; END PROCESS;END ARCHITECTURE ART;统的总装设计根据图3数字闹钟系统的总体设计原理图,请读者用原理图或VHDL文本输入方式自行完成数字闹钟的顶层总装设计。系统的硬件验证根据自己所拥有的EDA实验开发系统的实际情况,将本系统直接或进行适当修改后进行硬件验证。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!