




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目四定时器与数码管动态显示,项目描述,定时器用来实现精确定时,是单片机系统的一个重点,应用十分广泛,大家一定要完全理解并熟练掌握定时器的应用。本项目利用定时器设计一个实时时钟,利用六位数码管分别显示时钟的时、分、秒等信息。,定时器,4.1.1定时器的初步认识学习定时器之前,我们先来了解单片机时序中的几个概念:时钟周期、机器周期和指令周期。时钟周期:时钟周期T是时序中最小的时间单位,具体计算的方法就是1/时钟源频率,我们KST-51单片机开发板上用的晶振是11.0592M,那么对于我们这个单片机系统来说,时钟周期=1/11059200秒。,定时器,机器周期:单片机完成一个操作的最短时间。机器周期主要针对汇编语言而言,在汇编语言下程序的每一条语句执行所使用的时间都是机器周期的整数倍,而且语句占用的时间是可以计算出来的。51单片机系列,在其标准架构下一个机器周期是12个时钟周期,也就是12/11059200秒。,定时器,指令周期:执行一条指令(这里指汇编语言指令)所需要的时间称为指令周期,指令周期是时序中的最大单位。由于机器执行不同指令所需时间不同,因此不同指令所包含的机器周期数也不尽相同。51系列单片机的指令可能包括14个不等的机器周期。通常,包含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令,等等。指令所包含的机器周期数决定了指令的运算速度,机器周期数越少的指令,其执行速度越快。,定时器,定时器用来进行定时。定时器内部有一个寄存器,开始计数后,这个寄存器的值每经过一个机器周期就会自动加1,因此,我们可以把机器周期理解为定时器的计数周期。定时器每过一个机器周期的时间,也就是12/11059200秒,数字自动加1。还有一个特别注意的地方,就是钟表是加到60后,秒就自动变成0了,这种情况在单片机或计算机里我们称之为溢出。那定时器加到多少才会溢出呢?后面会讲到定时器有多种工作模式,分别使用不同的位宽(指使用多少个二进制位),假如是16位的定时器,也就是2个字节,最大值就是65535,那么加到65535后,再加1就算溢出,对于51单片机来说,溢出后,这个值会直接变成0。从某一个初始值开始,经过确定的时间后溢出,这个过程就是定时的含义。,定时器,4.1.2定时器的寄存器标准的51单片机内部有T0和T1这两个定时器。(1)定时值存储寄存器下表的寄存器是存储定时器的计数值的。TH0/TL0用于T0,TH1/TL1用于T1。,先学习如何看寄存器,TCON,1、先分清每一位属于哪个模块2、查看每一位是可读、可写、可读写位的哪一种3、看每一位的具体功能以及在0或1时分别是什么状态4、如何通过指令设置寄存器或者寄存器某一位的值5、寄存器的物理地址,定时器,(2)定时器控制寄存器TCON(地址0 x88、可位寻址),TF0/TF1:T0/T1计数溢出标志位。可用于申请中断或供CPU查询。在进入中断服务程序时会自动清零;但在查询方式时必须软件清零。=1:计数溢出;=0:计数未满。TR0/TR1:T0/T1启停控制位。=1:启动计数;=0:停止计数。低四位IE1、IT1、IE0、IT0用于外部中断,下一章再做介绍。,M1,M0:工作方式选择位。=00:13位定时器/计数器;=01:16位定时器/计数器(常用);=10:可自动重装的8位定时器/计数器(常用);=11:T0分为2个8位定时器/计数器;仅适用于T0。C/:定时方式/计数方式选择位。=1:选择计数器工作方式,对T0/T1引脚输入外部事件的负脉冲计数;=0:选择定时器工作方式,对机器周期脉冲计数定时。,定时器,(3)定时器模式寄存器TMOD(地址0 x89、不可位寻址),GATE:门控位,定时器/计数器的启/停可由软件与硬件两者控制=0:软件控制,只由TCON中的启/停控制位TR0/TR1控制定时器/计数器的启/停。=1:硬件控制,由外部中断请求信号/和TCON中的启/停控制位TR0/TR1组合状态控制定时器/计数器的启/停。,定时器,定时器,定时器计数器的4种工作方式,MCS-51单片机的定时器/计数器共有4种工作模式,现以T0为例加以介绍,T1与T0的工作原理相同,但在方式3下,T1停止计数。1工作方式0(M1M0=00,13位定时器/计数器)由TH0的全部8位和TL0的低5位(TL0的高3位未用)构成13位加1计数器,当TL0低5位计数满时直接向TH0进位,并当全部13位计数满溢出时,溢出标志位TF0置“1”。2工作方式1(M1M0=01,16位定时器/计数器)由TH0和TL0构成16位加1计数器,其他特性与工作方式0相同。,定时器,3工作方式2(M1M0=10,自动重装计数初值的8位定时器/计数器)16位定时器/计数器被拆成两个8位寄存器TH0和TL0,CPU在对它们初始化时必须装入相同的定时器/计数器初值。以TL0作计数器,而TH0作为预置寄存器。当计数满溢出时,TF0置“1”,同时TH0将计数初值以硬件方法自动装入TL0。这种工作方式很适合于那些重复计数的应用场合(如串行数据通信的波特率发生器)。,定时器,4、工作方式3(M1M0=11,2个8位定时器/计数器,仅适用于T0)TL0:8位定时器/计数器,使用T0原有控制资源TR0和TF0,其功能和操作与方式0或方式1完全相同。TH0:只能作为8位定时器,借用T1的控制位TR1和TF1,只能对片内机器周期脉冲计数。在方式3模式下,定时器/计数器0可以构成两个定时器或者一个定时器和一个计数器。一般,只有在T1以方式2运行(当波特率发生器用)时,才让T0工作于方式3下。,定时器,定时器,例:设定定时器1为定时工作方式,要求软件启动定时器1按方式2工作。定时器0为计数方式,要求由软件启动定时器0,按方式1工作。怎么来实现这个要求呢?控制定时器1工作在定时方式或计数方式是哪个位?C/T位(D6)是定时或计数功能选择位,当C/T=0时定时/计数器就为定时工作方式。设定定时器1按方式2工作。要使定时/计数器1工作在方式2,M0(D4)M1(D5)的值必须是10。设定定时器0为计数方式。当C/T=1时,就工作在计数器方式。由软件启动定时器0,当门控位GATE=0时,定时/计数器的启停就由软件控制。,定时器,设定定时/计数器工作在方式1,使定时/计数器0工作在方式1,M0(D0)M1(D1)的值必须是01。从上面的分析我们可以知道,只要将TMOD的各位,按规定的要求设置好后,定时器/计数器就会按我们预定的要求工作。我们分析的这个例子最后各位的情况如下:D7D6D5D4D3D2D1D000100101二进制数00100101b=十六进制数25H。所以执行TMOD=0 x25(或者用汇编语言MOVTMOD,#25H)这条指令就可以实现上述要求。,定时器,4.1.3定时器初始化由于定时器/计数器的功能是由软件编程确定的,所以一般在使用前都要对其进行初始化,初始化的步骤一般如下:(1)确定工作方式(即对TMOD赋值);(2)预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1);(3)根据需要开放定时器/计数器中断(直接对IE位赋值)(4)启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。,定时器,下面介绍一下确定时时/计数器初值的具体方法。在不同工作方式下计数器位数不同,最大计数值也不同。现假设最大计数值为M,那么各方式下的最大值M值如下:方式0:M=213=8192方式1:M=216=65536方式2:M=28=256方式3:定时器0分成两个8位计数器,所以两个M均为256。因为定时器/计数器是作“加1”计数,并在计数满溢出时产生中断,因此初值X可以这样计算:X=M-计数值,4、计数器初值的计算,方法:用最大计数量减去需要的计数次数。即:TC=MC其中:TC计数器需要预置的初值;M计数器的模值(最大计数值);方式0时,M=213;方式1时,M=216;方式2,3时,M=28;C计数器计满回0所需的计数值,即设计任务要求的计数值。,例如:流水线上一个包装是12盒,要求每到12盒就产生一个动作,用单片机的工作方式0来控制,则应当预置的初值为:TC=MC=819212=8180,5、定时器初值的计算,定时时间的计算公式为:T=(MTC)T0(或TC=MT/T0)其中:T定时器的定时时间,即设计任务要求的定时时间;T0计数器计数脉冲的周期,即单片机系统主频周期的12倍;M计数器的模值;TC定时器需要预置的初值。若设初值TC=0,则定时器定时时间为最大。若设单片机系统主频为12MHz,则各种工作方式定时器的最大定时时间为?,定时器,例:选择T1方式0用于定时,在P1.1输出周期为1ms方波,晶振fosc=6MHz。解:根据题意,只要使P1.1每隔500us取反一次即可得到1ms的方波,因而T1的定时时间为500us,因定时时间不长,取方式1即可。则M1M0=1;因是定时器方式,所以C/T=0;在此用软件启动T1,所以GATE=0。T0不用,方式字可任意设置,只要不使其进入方式3即可,一般取0,故TMOD=10H。计算500us定时T1初始值:机器周期:T=12/fosc=12/(6106)Hz=2s设初值为X,则:(216X)210-6s=50010-6sX=216-250=65286=FF06H=1111111100000110B因此TH1=FFH,TL1=06H。,定时器,初始化程序如下:TMOD=0 x10;/定时器1方式0TH1=0XFF;TL1=0X06;/装入时间常数TR1=1;/启动定时器,定时器,4.1.4定时器中断1、中断的基本概念中断的定义:所谓“中断”,是指CPU执行正常程序时,系统中出现特殊请求,CPU暂时中止当前的程序,转去处理更紧急的事件(执行中断服务程序),处理完毕(中断服务完成)后,CPU自动返回原程序的过程。中断后转向执行的程序叫中断服务程序或中断处理程序。原程序被断开的位置(地址)叫作断点。发出中断信号的设备称为中断源。中断源要求中断服务所发出的标志信号称为中断请示或中断申请。中断源向CPU发出中断申请,CPU经过判断认为满足条件,则对中断源作出答复,这叫中断响应。中断响应后就去处理中断源的有关请求,即转去执行中断服务程序。,定时器,2.引入中断的主要优点(1)提高CPU工作效率(2)实现实时处理功能(3)实现分时操作,定时器,3.STC89C52中断源STC89C52单片机共有6个中断源。它们分别是:2个外部中断,即4个片内中断,即定时器T0的溢出中断、定时器T1的溢出中断、定时器T2的溢出中断和串行口中断;这6个中断源,可以根据需要随时向CPU发出中断申请。(1)外部中断源外部中断是由外部信号引起的,请求有两种信号触发方式,即低电平触发和下降沿触发。外部中断请求的这两种信号方式,可通过设置寄存器TCON中的IT0和IT1位状态的值来设定。定时器控制寄存器TCON各位定义如下表所示。,定时器,IE0/IE1:外部中断申请标志位(由硬件自动置位,中断响应后转向中断服务程序时,由硬件自动清0)=0:没有外部中断申请;=1:有外部中断申请。IT0/IT1:外部中断请求的触发方式控制位(可由用户通过软件设置)。=0:在INT0/INT1端申请中断的信号低电平有效;=1:在INT0/INT1端申请中断的信号负跳变有效,定时器,(2)定时器溢出中断源定时/计数器中断由单片机内部定时器产生,属于内部中断。STC89C52内部有三个16位的定时器/计数器T0、T1和T2,最常用的是T0和T1,它们以计数的方法来实现定时或计数的。当它作为定时器使用时,其计数信号来自于CPU内部的机器周期脉冲,当它作为计数器使用时,其计数信号来自于CPU的T0(P3.4)、T1(P3.5)引脚。在启动定时/计数器后,每来一个机器周期或在对应的引脚上每检测到一个脉冲信号时,定时/计数器就加1一次,当计数器的值从全1变为全0时,就去置位一个溢出标志位,CPU查询到后就知道有定时/计数器的溢出中断的申请。,定时器,(3)串行中断源串行口中断请求是在单片机芯片内部自动发生的,不需在芯片上设置引入端。串行口中断源分为串行口发送中断和串行口接收中断两种。串行中断是为串行数据传送的需要而设置的。每当串行口发送完一组串行数据时,就会使串行口控制寄存器SCON中的串行发送中断标志位TX置1,每当串行口接收完一组串行数据时,就会使寄存器SCON中的串行接收中断标志位RX置1,作为串行口中断请求标志,产生一个中断请求。串行口控制寄存器SCON的内容如下表所示。,定时器,其中与中断请求标志有关的位如下:TI:串行口发送中断请求标志位当发送完一帧串行数据后,由硬件置“1”;在转向中断服务程序后,需要用软件对该位清“0”。RI:串行口接收中断请求标志位当接收完一帧串行数据后,由硬件置“1”;在转向中断服务程序后,需要用软件对该位清“0”。串行中断请求由TI和RI的逻辑或得到。就是说,无论是发送标志还是接收标志,都会产生串行中断请求。,4中断控制51系列单片机中断系统的硬件结构如下图所示,定时器,定时器,对中断信号进行锁存、屏蔽、优先级控制是通过设置一些特殊功能寄存器,如寄存器TCON、SCON、IE和IP来进行的。(1)中断允许控制寄存器IE(0A8H),EAESET1EX1ET0EX0,EX0/EX1/ET0/ET1/ES位:分别是/,T0/T1,串行口的中断允许控制位。=0:禁止中断;=1:允许中断。EA:总的中断允许控制位(总开关):=0:禁止全部中断;=1:允许中断。,(4)中断优先级控制寄存器IP(0B8H),51单片机有两个中断优先级,即高优先级和低优先级,每个中断源都可设置为高或低中断优先级,以便CPU对所有的中断实现两级中断嵌套。51单片机内部中断系统对各中断源的中断优先级有一个统一的规定,称为自然优先级。如下表所示。,定时器,中断优先级控制寄存器IP(0B8H),PX0/PX1:/优先级控制位:=0:属低优先级;=1:属高优先级。PT0/PT1:T0/T1中断优先级控制位:=0:属低优先级;=1:属高优先级。PS:串行口中断优先级控制位:=0:属低优先级;=1:属高优先级。,定时器,中断优先级处理原则:对同时发生多个中断申请时:不同优先级的中断同时申请:先高后低相同优先级的中断同时申请:按序执行正处理低优先级中断又接到高级别中断:高打断低正处理高优先级中断又接到低级别中断:高不理低,定时器,中断响应的过程,中断请求:中断源将相应请求中断的标志位置“1”,表示发出请求,并由CPU查询。中断响应:在中断允许条件下响应中断。首先保护断点,PC值进栈(先送低8位,再送高8位),然后根据中断标志,将相应的中断服务程序的入口地址送入PC,转去执行中断服务程序。这些工作都是由硬件自动完成的,用户不用考虑。中断服务:根据入口地址转中断服务程序,包含保护现场、执行中断主体、恢复现场。中断返回:执行中断返回RETI指令断点出栈开放中断允许返回原程序,中断服务程序入口地址:中断响应的主要内容就是由硬件自动生成一条长调用指令(LCALLaddr16),CPU执行这条长调用指令便响应中断,转入相应的中断服务程序。这里的addr16就是程序存储器中相应的中断服务程序的入口地址,MCS51的5个中断源的中断服务程序入口地址是固定的,如下表所示。,C51编译器对函数的定义进行了扩展,增加了一个扩展关键字interrupt,C51编译器在编译时对申明为中断服务程序的函数自动舔加了进行了相应的现场保护、阻断其它中断、返回时恢复现场等处理的程序段,中断服务函数的一般形式为:,C51中断服务函数的定义方法,函数类型函数名(形式参数表)interruptn1usingn2n1是中断号,取值范围为031。编译器从8*n13处产生中断向量,基本中断源和中断向量如表4-9所示:,C51编译器扩展了一个关键字using,专门用来选择MCS51系列单片机中不同的工作寄存器组。using后面的n2是一个03的整型常数,分别选中4个不同的工作寄存器组。在定义一个函数时using是一个选项,如果不用该选项,则由编译器选择一个寄存器组作绝对寄存器组访问。需要注意的是,关键字using和interrupt的后面都不允许跟一个带运算符的表达式。关键字using对函数目标代码的影响如下:在函数的入口处将当前工作寄存器组保护到堆栈中,指定的工作寄存器内容不会改变,函数返回之前将被保护的工作寄存器组从堆栈中恢复。带using属性的函数原则上不能返回bit类型的值,并且关键字using不允许用于外部函数,关键字interrupt也不允许用于外部函数。,定时器,5C51中的中断函数在C51中规定,中断服务程序中,必须指定对应的中断号,用中断号确定该中断服务程序是哪个中断所对应的中断服务程序。(1)中断服务程序格式为:void函数名(参数)interruptnusingm函数体语句;其中:Interrupt后面的n是中断号;关键字using后面的m是所选择的寄存器组,取值范围是0-3,定义中断函数时,using是一个选项,可以省略不用。,编写MCS51系列单片机中断程序时应遵循的规则:中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。中断函数没有返回值,如果企图定义一个返回值将得到不正确的结果。在定义中断函数时应将其定义为void类型,以明确说明没有返回值。任何情况下都不能直接调用中断函数,否则会编译出错。如果中断函数中用到浮点运算,必须保存浮点寄存器的状态,当没有其它程序执行浮点运算时可以不保存。C51编译器的数学函数库math.h中,提供了保存浮点寄存器状态的库函数pfsave和恢复浮点寄存器状态的库函数fprestore。如果在中断函数中调用了其它函数,则被调用函数所使用的寄存器组必须与中断函数相同。由于中断的产生不可预测,中断函数对其它函数的调用可能形成递归调用,需要时可将被中断函数所调用的其它函数定义成重入函数。,定时器,4.1.5定时器的应用利用定时器T0中断控制KST-51开发板上的8个LED灯每秒钟闪烁一次。确定TMOD寄存器值设置T0工作在定时模式,工作方式1,起停由TR0控制,有TMOD寄存器结构可知,其初值为0 x01;确定计数初值开发板上使用的晶振为11.0592MHz,最长定时时间是工作在方式1下,其初值为0时,此时定时时间为(216-0)12/(11.0592106)=0.0711s,因此,单纯用定时器无法实现1s的定时。,定时器,一般采用软件计数器进行设计,设计思想为:定义一个软件计数器变量cnt,初始化为0,先用T0实现一个50ms的定时器,定时时间到之后并不是立即闪烁变换(取反P0),而是将计数器cnt的值加1,如果软件计数器cnt到了20,再取反P0,并清除软件计数器中的值,否则直接返回,这样,20次定时中断后才取反一次P0,定时时间为2050=1000ms=1s。因此,定时初值可通过如下公式计算:计算可得,初值X=19456=0 x4C00,可得,TH0=4C,TL0=00。,定时器,确定IE寄存器的值IE寄存器中与定时器T0中断相关的位有两个,中断总开关EA,定时器T0中断允许控制位ET0,若要单片机能相应T0中断,这两个位都应为1.源程序编写#includesbitADDR0=P10;sbitADDR1=P11;sbitADDR2=P12;sbitADDR3=P13;sbitENLED=P14;unsignedcharcnt=0;/定义一个计数变量,记录T0溢出次数,定时器,voidmain()ENLED=0;ADDR3=1;ADDR2=1;ADDR1=1;ADDR0=0;TMOD=0 x01;/设置T0为模式1TH0=0 x4C;/为T0赋初值0 xB800TL0=0 x00;EA=1;ET0=1;TR0=1;/启动T0while(1);,voidclock()interrupt1cnt+;TH0=0 x4C;TL0=0 x00;if(cnt=20)P0=P0;cnt=0;将上述程序编译一下,并下载到单片机中,观察运行结果并分析。,数码管动态显示,4.2.1动态显示的基本原理多个数码管显示数字的时候,我们实际上是轮流点亮数码管(一个时刻内只有一个数码管是亮的),利用人眼的视觉暂留现象(也叫余辉效应),就可以做到看起来是所有数码管都同时亮了,这就是动态显示,也叫做动态扫描。例如:有2个数码管,我们要显示“12”这个数字,先让高位的位选三极管导通,然后控制段选让其显示“1”,延时一定时间后再让低位的位选三极管导通,然后控制段选让其显示“2”。把这个流程以一定的速度循环运行就可以让数码管显示出“12”,由于交替速度非常快,人眼识别到的就是“12”这两位数字同时亮了。,数码管动态显示,那么要多长时间完成一次全部数码管的扫描呢(很明显:整体扫描时间=单个数码管点亮时间*数码管个数)?答案是:10ms以内。只要刷新率大于100Hz,即刷新时间小于10ms,就可以做到无闪烁,这是动态扫描的硬性指标。有最小值的限制吗?理论上没有,但实际上做到更快的刷新却没有任何进步的意义了,因为已经无闪烁了,再快也还是无闪烁,只是徒然增加CPU的负荷而已(因为1秒内要执行更多次的扫描程序)。所以,通常我们设计程序的时候,都是取一个接近10ms,又比较规整的值就行了。,数码管动态显示,4.2.2数码管动态显示应用利用定时中断设计一个电子时钟并通过6位数码管显示时、分、秒。LED数码管动态显示驱动方式动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。,数码管动态显示,在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,但动态显示更能够节省大量的I/O端口,而且功耗更低。,数码管动态显示,60进制计数程序设计说明1)一位计数方法:unsignedchartime=0/定义变量time为计数值,初值为0voidcalc()/计数程序time0+;/计数值加1if(time059)/判断计数是否到59time0=0;/到59,则计数从0重新开始voidconvert()/计数转换程序display_data0=time/10;/对计数值取整得到计数的十位display_data1=time%10;/对计数值求余得到计数的个位,数码管动态显示,2)分别计数方法inttime=0,0/time0用于个位计数,time1用于存放十位计数voidcalc()/计算程序time0+;/个位计数,if(time09)/判断是否计数到9time0=0;/若计数到9,则十位加1,个位重新从0开始time1+;iftime15;/判断十位是否计数到5time1=0/若十位计数到5,则计数重新开始,数码管动态显示,4.2.3源程序编写#include#defineucharunsignedcharsbitADDR0=P10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业节能减排的技术与政策探讨
- 工业电机故障诊断与维护策略
- 工业设计在产品创新中的价值
- 工业节能的智慧能源管理
- 工业设计与产品创新表达
- 工业设计产品外观的色彩搭配与创新性
- 工作环境对教师工作满意度的影响
- 工厂企业消防安全管理
- 工程机械设备安全防护技术
- 工厂环境与职业健康安全培训
- 新材料产业研发与产业化应用实施方案案
- 利用对称性计算图示结构,作弯矩图EI=常数
- 成都市2022级(2025届)高中毕业班摸底测试(零诊)化学试卷(含答案)
- 2024届广东省广州市白云区小升初必考题数学检测卷含解析
- 中医基础理论考试题库及答案五
- 开票税点自动计算器
- 国家开放大学电大《10861理工英语4》期末终考题库及答案
- 广东省中山市2022-2023学年高一年级下册期末统一考试物理试题含解析
- 2024年横州茉莉花投资集团有限责任公司招聘笔试冲刺题(带答案解析)
- 蔬菜栽培学智慧树知到期末考试答案章节答案2024年浙江大学
- JB-T 14320-2022 氧气用止回阀
评论
0/150
提交评论