版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.1简易秒表的设计
4.2简易计数器的设计
4.3简易交通灯控制系统的设计
4.4习题实例四定时器/计数器学习目标
◆理解简易交通灯控制系统的电路构成、工作原理和电路中各元器件的作用。
◆理解51单片机的计数器和定时中断,并正确使用。
◆正确使用MedWin软件和Proteus仿真软件。
◆正确理解RETI、RET,掌握中断服务程序设计的基本方法。
工作任务
◆设计与制作简易秒表。
◆设计与制作简易计数器。
◆设计与制作简易交通灯控制系统。4.1简易秒表的设计学习目标◆理解定时器的工作原理和内部结构中各元件的作用。◆正确计算定时时间、定时初始值、计数次数等参数。◆正确使用MedWin软件和Proteus仿真软件。
工作任务◆设计与制作简易秒表。
经过前面知识的学习,我们掌握了单片机的一些基本应用。设计中所需的延时都是用软件延时的方法实现的,占用了CPU大量的时间,使CPU的效率低下,如果将来设计要求需要单片机系统能“同时”完成很多任务,这时还让CPU花费大量时间来做一些无谓的延时就不现实了,所以我们希望有一种机构能代替CPU来实现延时的控制。MCS-51单片机内设置了两个16位的可编程定时器/计数器,它可以在CPU给出具体要求后独立完成延时工作,而且它还具有计数的功能,可以用作计数器,这样就可以很方便地解决很多问题,大大提高CPU的工作效率。生活中我们经常会遇到需定时或计数的场合。例如,午休时间不太长,为了防止睡过头我们会设置好闹钟再睡;啤酒厂打包生产线上要求每10瓶啤酒装箱,这就要数出来,靠人工来操作既耗劳力又费工时。这样的例子生活中还有很多,这些问题都可以通过MCS-51单片机的定时器/计数器轻松解决。现在,我们先来学习MCS-51单片机内的定时器/计数器是如何工作的。
1.定时器/计数器的认识
1)计数概念的引入
很早以前,我们的祖先就开始用计绳结的方法来计数。生活中我们经常要计量一些物件,用什么方法计数更方便呢?用什么工具更省力呢?人们根据不断的试验总结出很多实用的计数方法,例如一般对选票的统计我们会通过画“正”字来计数,仓库点货通常会使用贴标签的方法。计数用的工具也不断发展,从最初用绳结、贝壳、石块进行简单的计数到使用可快速运算的算盘,再到运算能力很强的计算器,再到处理能力极强的计算机,计数工具的飞速发展给人们带来了不可估量的价值。MCS-51单片机内的计数器是一种能自动记录数目的仪器,也是一种计数工具,而且这个计数工具是可编程的。也就是说,我们可以通过不同的指令控制它实现各种计数功能。
2)计数器的容量
任何计数器都有一定的容量限制。例如我们用容量为250mL的杯子来盛水,那么这个杯子就只能盛250mL的水。MCS-51单片机中的计数器也有容量,其容量有多大呢?MCS-51单片机中的计数器是16位的,因此最大计数容量为216(65536)。
3)溢出
我们用杯子接水时,最后总会有一滴水使杯中的水装满到极限,这时如果再有一滴水落下,水就会满出来,用术语来讲就是“溢出”。MCS-51单片机中的计数器也会产生溢出现象。MCS-51单片机中的计数器是加1计数器,当其累加到最大计数容量时,再加1一次就会溢出,同时产生溢出标志(TF0或TF1变为“1”)。
4)定时概念的引入
MCS-51单片机中的计数器除了可以用于计数外,还可以用于定时,为什么呢?下面我们来仔细看看日常用的时钟(指针式)的工作原理。时钟的秒针每走动一次的时间定为1秒,走动60次则为1分钟,走动3600次则为1小时。反过来,我们预先规定秒针走动的次数,例如3600次,当秒针走完了规定的次数我们就知道时间过了1小时,这就是时钟的定时原理。MCS-51单片机的计数器的最大计数容量为65 536,如果每1微秒(1秒=106微秒)计数一次,则当计数器从“0”计数到“65535”时,总共计数了65536次,需要65536微秒,所以可以用于实现65536微秒的定时。所以,MCS-51单片机将定时器和计数器合二为一,计数器记录的是外界发生的事情,而定时器则由单片机提供一个非常稳定的时钟源。
要点:书看到这里,读者可能会问,前面不是已经介绍了用软件延时的方法吗?现在又用定时器来定时,它们有什么区别呢?它们最大的区别就在于:首先,采用软件延时占用CPU的时间,而采用定时器定时可以不占用CPU的时间;其次采用定时器定时比采用软件延时精度高,修改更方便。
2.定时器/计数器的结构
我们刚刚认识了MCS-51单片机中的定时器/计数器的用途,那么怎样才能让它们为我们工作呢?为了解决这个问题,下面先来看看MCS-51单片机定时器/计数器的结构。MCS-51单片机定时器/计数器的结构框图如图4-1所示。图4-1定时器/计数器的结构框图
MCS-51单片机内部设置了两个16位可编程的定时器/计数器T0和T1,它们具有定时和计数两种工作模式以及0~3四种工作方式,用户可通过软件对相应的控制寄存器TCON和TMOD编程来选择合适的工作模式和工作方式。定时器/计数器T0由TL0、TH0构成,定时器/计数器T1由TL1、TH1构成。TCON和TMOD都是特殊功能寄存器,系统复位时,寄存器的所有位都被清零。
1)计数功能
所谓计数功能,就是单片机对外部事件进行计数的功能。外部事件的产生是以脉冲的形式输入单片机的,因此计数功能的实质就是对外部脉冲进行计数。对MCS-51单片机来说,有T0(P3.4)和T1(P3.5)两个信号引脚,分别是两个计数器的输入端,外部每输入1个脉冲(负跳变时有效),内部的计数器加1计数一次。
2)定时功能
定时功能也是通过计数器的计数来实现的,只不过这次的计数脉冲不是外部的脉冲,而是来自单片机内部,每个机器周期计数器加1计数一次。因为一个机器周期等于12个振荡周期,即计数频率为振荡频率的1/12,所以如果单片机采用12MHz的晶振,则机器周期为1μs,计数频率为1 MHz,也就是每微秒计数器加1计数一次。这样就可以很方便地根据计数次数计算出定时时间,也可以倒过来根据定时时间要求计算出计数器的初始值。
注意:单片机系统选用的晶振不同,工作的机器周期就不同。
3)工作方式寄存器TMOD
在单片机中有两个特殊功能寄存器与定时/计数有关,即TMOD和TCON。TMOD和TCON是寄存器的名称,我们在编程时既可以直接用这个名称来指定它们,也可以直接用它们的地址89H和88H来指定它们。下面我们先来认识一下TMOD。TMOD用于控制T0和T1的工作模式和工作方式,其格式如图
4-2所示,它的高4位用于控制T1,低4位用于控制T0。图4-2TMOD寄存器的格式图4-3所示为定时器/计数器在工作方式0的逻辑结构框图,图中X为0或1。TMOD各位的功能说明如下:
(1) GATE——选通控制位(门控位)。当设置GATE=0时,只要用软件对TR0(或TR1)置“1”就可以启动定时器;当设置GATE=1时,只有(或)引脚为“1”,且用软件对TR0(或TR1)置“1”才可启动定时器工作。
(2)
——定时工作方式/计数工作方式选择位。
当设置时,设置为定时工作方式;当设置
时,设置为计数工作方式。图4-3定时器/计数器在工作方式0的逻辑结构框图
(3) M1、M0——工作方式控制位。M1、M0用于设置定时器的工作方式,具体设置如表4-1所示。要点:TMOD不能进行位寻址,只能用字节方式设置工作方式。当只需改变某一个定时器/计数器时,应采用适当的方式防止对另一个定时器/计数器工作方式的改变。比如,我们只需改变T0的工作方式为用方式1计数时,可以先采用逻辑与屏蔽要改变的定时器/计数器,再采用逻辑或设置新的工作方式。具体指令为“ANLTMOD,#0F0H”和“ORLTMOD,#05H”。
4)控制寄存器TCON
TCON用于控制定时器的启动、停止,以及指示定时器的溢出和中断情况。其格式如图4-4所示。图4-4TCON寄存器的格式从图4-4中我们可以看出,TCON也被分成两部分,高4位用作定时器/计数器,低4位则用于中断。各位的定义如下:
(1) TF1——定时器/计数器T1的溢出标志位。当T1被启动计数后,T1从初始值开始加“1”计数,最高位产生溢出时,置TF1为“1”,并向CPU提出中断请求。当CPU响应时,由硬件清零。TF1也可以由程序查询或清零。
(2) TR1——定时器/计数器T1的运行控制位。该位由软件置位和复位。当设置GATE =0 (TMOD的D3位) 时,TR1为“1”表示启动计数,TR1为“0”表示停止计数;当设置GATE=1时,只有当TR1为“1”且(P3.3引脚)为高电平时才可启动计数,若TR1为“0”或为低电平,则停止计数。
(3) TF0——定时器/计数器T0的溢出标志位。TF0的意义和使用方法同TF1类似。
(4) TR0——定时器/计数器T0的运行控制位。该位由软件置位和复位。TR0的意义和使用方法同TR1类似。要点:TCON可以进行位寻址,其各位对应的位地址为88H~8FH (D0~D7),所以对于定时器/计数器的运行控制位,我们可以用指令SETB来置位以启动计数器/定时器计数,用指令CLR来停止定时器/计数器的计数,一切尽在自己的掌握中。
3.定时器/计数器的初始值
从前面“定时器/计数器的认识”部分已经看到这样一种现象,我们有时需要定时器/计数器从某一个初始值开始计数,以实现最终的定时时间或计数的需求。那么,怎样才能设置好定时器/计数器的初始值呢?一般采用的方法如下:
(1)定时模式:初始值 = 最大值-定时时间/Tcy(Tcy为机器周期)。
(2)计数模式:初始值 = 最大值-计数值。
然后将初始值装入相应的定时器/计数器的寄存器中。例如,设定时器/计数器T0为8位加1计数器,要求每隔100μs时间,发一次中断请求(设机器周期为2μs),选定时功能,计数初值为28-100/2 = 206。
又如,设定时器/计数器T0为8位加1计数器,要求检测到150个脉冲时,发一次中断请求 (设机器周期为1μs),选计数功能,计数初值为28-150=106。
4.定时器/计数器的四种工作方式
如上所述,定时器/计数器的工作方式是由TMOD的M1、M0两位来控制的,而定时器/计数器的每种工作方式都各有特点。下面就对定时器/计数器四种工作方式的具体工作情况进行详细介绍。由于T0和T1的结构完全一样,因此以下的应用同样适合于T0(方式3除外)。
1)工作方式0
(1)基本结构。定时器/计数器T1在工作方式0的逻辑结构图如图4-5所示,这种工作方式称为13位定时/计数方式。在该方式下,TL1的低5位和TH1的8位构成13位的计数器,此时TL1的高3位未用。当TL1的低5位计满时,向TH1进位;当TH1溢出后,对中断标志TF1置“1”,同时向CPU提出中断请求。T1是否溢出也可以通过软件查询TF1是否为“1”来判断。我们通过图4-5来仔细分析一下T1工作在方式0下的具体情况。
前面说过,是定时/计数工作方式选择位,当为0时用作定时器,当为1时用作计数器。选择好工作模式后,定时/计数脉冲是否能到达计数器端,还需通过控制端这个开关,显然这个开关不合上,计数脉冲就没法过去,而要使这个开关接通,只有如下两种情况。图4-5定时器/计数器T1在工作方式0的逻辑结构图①当GATE=0时,GATE信号经过非门后是1,与信号经过或门后在输出端(A)总是1,此时A的状态与的状态无关,A再和TR1的信号进行逻辑与。根据逻辑与的规则可知,此时只要TR1=1,与门的输出端(B)即为1,开关闭合,计数脉冲得以畅通无阻;如果TR1=0,则开关断开,计数脉冲无法通过。因此,定时器/计数器是否工作只取决于TR1。②当GATE=1时,GATE信号经过非门后是0,与信号逻辑或,此时输出端(A)信号就取决于,A再和TR1的信号进行逻辑与。根据逻辑与的规则可知,此时只有TR1=1,为高电平时,与门的输出端(B)才为1,开关闭合,计数脉冲得以畅通无阻,否则开关断开,计数脉冲无法通过。这个特性可以用来测量一个信号的高电平的宽度。例如定时器用于测量接于引脚输入的正脉冲宽度,即当引脚由低电平变为高电平时,启动T1开始计数,一旦引脚变为低电平就关闭T1,此时T1计数前后的差值就是引脚输入的正脉冲的宽度。要点:一个定时器/计数器同一时刻要么用作定时器,要么用作计数器,定时和计数是不可能由一个定时器/计数器在同一时刻实现的。
(2)计算初始值。
最大计数值为:213 = 8192。
定时时间:T= (213- T1的初值) × Tcy。
计数个数:S = 213-T1的初值。
(3)定时器/计数器的初始化编程。
①向TMOD寄存器中写入工作方式控制字。
②向定时器/计数器TH0、TL0(或TH1、TL1)装入初值。
③启动定时器/计数器(置位TR0/TR1)。
④如果采用中断方式,则置位ET0(ET1)、EA、IP等中断寄存器。
(4)定时设计:已知单片机晶振频率为6MHz,利用T1的方式0在P1.0引脚输出周期为500μs的方波。
设计思路:
①实现设计要求之前一定要看清楚要求,这里晶振频率采用6MHz,机器周期则为1μs,要输出周期为500μs的方波,方波波形如图4-6所示。实际是250μs高电平、
250μs低电平的周期波形,所以可以利用定时器T1定时
250μs,每次定时时间到,P1.0输出信号反转一次。图4-6方波波形图注意:虽然定时器/计数器T1启动后是自动计数的,但它什么时候计数溢出CPU并不知道,所以要通过不断地查询定时器/计数器T1的溢出标志TF1,看其是否为高电平。若为高电平,则说明定时器/计数器T1溢出,即定时时间到了。② TMOD初始化:
TMOD=00H,MOV TMOD,#00H
工作方式0的控制字如图4-7所示。图4-7工作方式0的控制字③计数初值。
工作方式0的初始值如图4-8所示。图4-8工作方式0的初始值所以,TH1=0FCH,TL1=03H。④ TCON初始化:
TR1=1,SETB TR1
仿真图如图4-9所示。
流程图如图4-10所示。图4-9定时器/计数器工作方式的仿真图图4-10工作方式0的流程图程序设计所需指令表如表4-2所示。若在MedWin软件中单步仿真调试,则可以在“端口”窗口中观察到P1.0口随着程序的单步运行每500μs闪烁一次 (这次所使用的调试方法仅用前面介绍的方法是不够的),稍后会介绍;若在Proteus软件中运行,则可直观用仿真示波器观察P1.0输出的波形。
MedWin仿真过程如下:
①在MedWin中编辑好下面这段程序,然后选择“项目管理”/“编译汇编”编译代码,若没有语法错误,则选择“调试”/“开始调试”进行调试。
②为观察数据方便,读者可以选择“外围部件”/“端口”,打开“端口”窗口。端口中的数据表现形式为:P0~P3口的数据为“1”,则有亮色标识;P0~P3口的数据为“0”,则为灰色。③为观察程序运行每一步的结果,读者可以选择“调试”/“单步”,使程序单步运行。若调试定时器,则不能只用F8等待它的溢出,因为很难捕捉到溢出的时刻。这样我们就很难观察,那么我们怎么办呢?选择“外围部件”/“中断”,打开“中断”窗口,选择定时器T1(Timer1)行,窗口最下端会显示一些可编程的标志位。这些标志位我们以后再理会,现在先找到TF1,用鼠标单击它旁边的复选框,打钩则“溢出”,不打钩则“未溢出”。这样我们就可以很方便地调试了。
④调试成功后,可产生代码,将代码下载到实验板LJ_2,观察效果。要点:方式0在使用时一般都要重装初始值,因为计数器在每次溢出时回到0重新开始计数。为了使每次定时时间一样,我们必须在每次计数器溢出后重装初始值。这个道理和用250mL的杯子取1 L水是一样的。每次装满250mL水时,我们倒空杯子后再接水,如果只要800mL水,且每次取水的量是一样的,每次杯子都装满,那么可以采用每次取
200mL分4次取的方法,这样我们就要保证在每次取水前杯子里已经有50mL的水。
(5)脉冲宽度测量设计。利用T1的门控位GATE测量引脚上出现的脉冲宽度。
设计思路:利用门控位测量脉冲宽度的方法在基本结构中已做了详细的阐述,这里以实际的例子来加以说明。上述要求的实现可以采用T1定时方式工作,由外部脉冲通过控制计数器控制开关,每次开关通过计数器的脉冲信号是一定的,计数值乘以机器周期就是脉冲宽度。当出现高电平时开始计数,当为低电平时停止计数,读出T1的值。要点:由于方式0的最大值为213(8192),所以可以测量的脉冲宽度最宽不能超过它的最大值。
思考:读者可以自己练习利用T1的方式0在P1.0输出周期为1ms的方波。
2)工作方式1
(1)基本结构。定时器/计数器T1在工作方式1的逻辑结构图如图4-11所示,这种工作方式称为16位定时/计数方式。在该方式下,TL1的8位和TH1的8位构成16位的计数器,其他特性与工作方式0相同。图4-11定时器/计数器在工作方式1的逻辑结构框图
(2)计算初始值。
最大计数值:216 =65536。
定时时间:T = (216- T1的初值) × Tcy。
计数个数:S = 216- T1的初值。
(3)定时器/计数器的初始化编程和工作方式0的一样。
(4)设计要求:已知单片机晶振频率为6MHz,利用T1的方式1在P1.0引脚输出周期为500μs的方波。设计思路:
①方波波形和工作方式0中的举例一样。
②如图4-12所示,TMOD初始化:
TMOD=10H,MOV TMOD,#10H图4-12工作方式1的控制字③计数初值:
所以,TH1=0FFH,TL1=83H。
④TCON初始化:
TR1=1,SETB TR1
仿真图如图4-9所示,流程图如图4-13所示,程序设计所需指令表和工作方式0的一样。图4-13工作方式1的流程图
3)工作方式2
(1)基本结构。定时器/计数器T1在工作方式2的逻辑结构图如图4-14所示。这种工作方式将16位计数器拆成两个8位计数器,TL1用作8位计数器,TH1用来保存初始值。每当TL1计数溢出时,TH1会自动将初始值装入到TL1,继续计数,如此循环工作。其他特性与工作方式0的相同。图4-14定时器/计数器在工作方式2的逻辑结构图
(2)计算初始值。
最大计数值:28 = 256。
定时时间:T = (28-T1的初值) × Tcy。
计数个数:S = 28-T1的初值。
(3)定时器/计数器的初始化编程和工作方式0的一样。
(4)设计要求:已知单片机晶振频率为6MHz,利用T1的方式2在P1.0引脚输出周期为500μs的方波。设计思路:
①方波波形和工作方式0中的举例一样。
②如图4-15所示,TMOD初始化:
TMOD=20H,MOV TMOD,#20H图4-15工作方式2控制字计数初值:
所以,TH1 = 83H,TL1 = 83H。
TCON初始化:
TR1
=
1,SETB TR1
仿真图如图4-9所示,流程图如图4-16所示,程序设计所需指令表与工作方式0的一样。图4-16工作方式2的流程图参考程序代码如下:
;***********************************
;文件名:EX4_3.asm功能:定时器在工作方式2实现周期为500μs的方波
;说明:P1.0输出
;***********************************
MedWin仿真过程和工作方式0的一样。
要点:工作方式2与前两种工作方式的区别就在于它有自动重装初始值的功能。这其实有点像生产流水线上,你在组装线的最后一岗,每次流水线上送来的都是已经组装好的半成品,加上你这道工序就成成品了,成品送走后,流水线上又会自动送来新的半成品。你每次工作的基础都是一样的,而每次你完成工作后,成品就送走了。当然,送到你这里的半成品其实也是由其他工友完成的。定时器/计数器的工作方式2每次重装的内容也是程序员事先设置好的,所以使用定时器/计数器前,一定要记得设置计数初始值。
4)工作方式3
定时器/计数器T0在工作方式3的逻辑结构图如图4-17所示。在这种工作方式之下,定时器/计数器T0被拆成2个独立的定时器/计数器。其中,TL0可以用作8位定时器或计数器,而TH0只能用作定时器。根据定时器/计数器T0在工作方式3的逻辑结构图,我们可以很清楚地看到TL0还是用原来的T0的各标志位,而TH0则借用T1的各标志位。因此,T1在T0工作在方式3时无法正常用作定时器或计数器,一般以工作方式2运行,并且不占用TR1、TF1等标志位。通常这种工作方式用于波特率发生器,此时定时器T1用来提供一个时间基准,计数溢出后只是重新装入初始值,再开始计数,所以一般使用工作方式2。图4-17定时器/计数器0在工作方式3的逻辑结构图(a)TL0用作8位定时器/计数器;(b)TH0用作8位定时器;(c)T0工作在方式3,T1工作在方式2的工作示意图设计实例这里不再重复叙述了,读者可以从前面介绍的3种工作方式总结出来。
要点:细心的读者可能会发现,采用定时器来延时对时间的控制仍然不够精确,这是什么原因呢?不是说定时器可以不占用CPU的时间就能很精确地控制时间吗?是的,但是必须利用中断系统,现在采用的仍然是查询方式,CPU通过不断查询是否有溢出标志来判断定时或计数是否符合要求,CPU仍然没有彻底解放出来,所以要真正地提高CPU的效率还要学会后面讲的MCS-51单片机的中断系统。
【练习】
项目:简易秒表的设计。
项目编号:EX4_4。
任务要求:在Proteus中设计简易秒表电路,编程实现简易秒表,时间在0~9秒循环显示,用定时器来实现1 s延时。在MedWin集成开发环境中编辑/编译控制程序,并产生代码,在Porteus平台里仿真系统,撰写练习报告(格式要求见附录A)。
1.设计思路
电路的设计和3.4.2节中的设计一样,编程实现效果的思路也和3.4.2节的差不多,只不过这次延时1 s子程序采用定时器来实现,仿真过程中选用的晶振为12MHz,那么机器周期就为1 μs。由前面定时器/计数器4种工作方式的介绍可知,采用工作方式1定时时间最长,但也只有216(66536)μs,而1s = 106μs,怎么办?我们再想想时钟的设计原理,如果我们也让定时器像时钟指针一样一圈一圈周而复始地工作,那么是不是就能实现呢?所以,我们采用让定时器以50 ms定时溢出一次,当定时器溢出20次时就表示1s到了。
2.设计步骤
(1)设计仿真图如图4-18所示,流程图如图4-19所示。图4-18简易秒表仿真图图4-19简易秒表的流程图(a)单个数码管显示;(b)1s延时子程序
(2)程序设计所需指令表如表4-3所示。
(3参考程序代码如下:
;***********************************
;文件名:EX4_4.asm功能:定时器工作方式1实现简易秒表
;说明:数码管接在P2口
;***********************************
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN: MOV SP,#5FH ;置堆栈栈顶
MOV R0,#20
;设置定时器的循环计数器的初值
MOV TMOD,#01H
;设置定时器T0为定时模式,工作方式1
MOV TH0,#3CH
;设置定时器T0的定时初值
MOV TL0,#0B0H
CLR A
;累加器清零
MOV30H,A
;表格偏移量清零
MOVDPTR,#TAB
;置表格首地址给DPTR注意:这里定时器T0用查询方式进行延时,而通过学习后面的内容会发现用中断方式进行延时就不存在调用子程序,这是为什么呢?
思考:若需要数码管倒计时显示,则应怎样修改程序呢?4.2简易计数器的设计
【练习】项目:简易计数器的设计。项目编号:EX4_5。任务要求:在Proteus中设计简易计数器电路,编程实现计数器T0每输入一次,数码管显示值在当前的基础上加1一次,数值以0~9循环显示。在MedWin集成开发环境中编辑/编译控制程序,并产生代码,在Porteus平台里仿真系统,撰写练习报告(格式要求见附录A)。
1.设计思路
利用T0的计数器功能将一个按键连接在T0引脚上,按键每按一次,就要使数码管显示值加1一次。如果利用T0作为普通的I/O,则可以利
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 精神卫生服务体系基层能力提升实施方案
- 化工企业合成氨装置安全风险管控方案
- 机械伤害事故专项应急预案
- 机械制造企业空压机系统节能降碳技改实施方案
- 2025年四川德阳旌阳职业学院单招综合素质考试题库含完整答案详解【名师系列】
- 2027年渝盛职业学院高职单招职业技能考试题库(满分必刷)附答案详解
- 2024年江苏省扬州市单招职业技能考试模拟试卷【必考】附答案详解
- 2025年河南洛阳伊滨职业学院单招职业技能考试模拟试卷【考点提分】附答案详解
- 2024年河南黄河职业学院高职单招职业技能考试题库附答案详解【能力提升】
- 2025年榆林职业技术学院单招职业技能考试题库及完整答案详解1套
- 2025年版!药食同源物质目录(106种)
- (高清版)DG∕TJ 08-2166-2015 城市地下综合体设计规范
- JJF1033-2023计量标准考核规范
- 《海洋遥感技术》课件
- 自噬流的诱导与检测综合性实验的设计与实践
- 长期处方管理规范-学习课件
- DL∕T 5187.3-2012 火力发电厂运煤设计技术规程 第3部分:运煤自动化
- CJ/T 124-2016 给水用钢骨架聚乙烯塑料复合管件
- JBT 2603-2024 电动悬挂起重机(正式版)
- 低温等离子体和脉冲电场灭菌技术
- 铁路专用线设计规范(试行)(TB 10638-2019)
评论
0/150
提交评论