版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机综合应用课程设计报告书计算机综合应用课程设计说明书 -基于串行通信控制的PWM脉冲发生系统学 号: 姓 名: 09030101 班 级: 09计一 指导教师: 2012年6月18日- 2012年7 月6日目录摘要2关键字2一.引言3二. 工作原理3三. 硬件设计43.1 亮灯设计43.2七段码LED显示设计53.3中断原理53.4定时器工作原理63.5串口通信原理7四. 软件设计94.1定时中断程序104.2串行通信子程序11五. 软硬件测试12六通信协议136.1通信协议136.2串行通信协议13七结论15八. 结束语15九附录16十. 参考文献25摘要脉冲宽度调制(PWM)是英文“P
2、ulse Width Modulation”的缩写,简称脉宽调制。它是用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量,通信,功率控制与变换等许多领域。一种模拟控制方式,根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶 体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定。脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。
3、电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。要带宽足够,任何模拟值都可以使PWM进行编码。关键字定时器;中断;串行口;PWM基于串行通信控制的PWM脉冲发生一. 引言随着电子技术的发展,出现了多种PWM技术,其中包括:相电压控制PWM、脉宽PWM法、随机PWM、SPWM法、线电压控制PWM等。本实验是把每一脉冲宽度均相等的脉冲列作为PWM波形,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化。这个系统是单片机发送一定数目的PWM脉冲控制
4、LED等的明亮程度,利用上位机和下位机的串口通信协议,上位机向下位机发送脉宽百分比和频率信号,下位机接收信号并做出相应的反映,如通过跳脉宽百分比控制等的明亮程度,通过调频率控制灯是否闪烁。二. 工作原理 89C52上位机串口图2-1系统工作原理下位机通过接收上位机发送的数据计算出相应的参数,由P1口输出所得的波形,从而控制LED灯的亮度及闪烁。 使用定时器中断产生脉冲,对时间常数计算:100Hz :周期1×102秒,晶振11.0592M,次数为(1000000/100)/12*11.0592=461,时间常数65536461FE33脉宽的实现可由总的次数乘以占空比来实现,所得的次数即
5、为高电平所需持续的次数再计算出时间常数即可对定时器实现高低电平持续时间的设定。三. 硬件设计通过上位机发送所接收到的数据,来控制流水灯的亮暗。利用发送的频率求出周期,需要用定时器0的中断程序来重新设置定时器的初始数据来控制流水灯亮暗的时间,从而达到调亮调暗的效果。 P1 P0 89C52LED灯上位机LED七段显示器三极管驱动七段显示驱动串口 图3-1系统框图3.1 亮灯设计流水灯低电平点亮P1为输出口图3-2流水灯控制电路图3.2七段码LED显示设计该七段码显示器为共阴七段显示器 图3-3七段码显示器原理图 图3-4七段显示控制电路由上图可知有两个锁存器分别实现对七段显示器的段选和位选信号的
6、锁存,这些信号均由P0口输出。且两个锁存器的使能信号DULA和WELA分别由P2.6和P2.7控制,均为高电平有效。3.3中断原理中断系统由与中断有关的特殊功能寄存器、中断入口、顺序查询逻辑电路等组成,包括5个中断请求源,4个用于中断控制的寄存器IE、IP、ECON和SCON来控制中断、中断的开关和各种中断源优先级的确定。外部中断请求源:即外中断0和1,经由外部引脚引入的,在单片机上有两个引脚,名称为INT0、INT1,也就是P3.2、P3.3这两个引脚。在内部的TCON中有四位是与外中断有关的。IT0:INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT
7、0=1,INT0为负跳变触发方式。这两种方式的差异将在以后再谈。IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。IT1、IE1的用途和IT0、IE0相同。内部中断请求源:TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。TF1:与TF0类似。TI、RI:串行口发送、接收中断。中断允许寄存器IE:在MCS51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。表3-1中断允许寄存器IEEAXXESET1EX1ET0EX0其中
8、,EA是总开关,如果EA=0,则所有中断都不允许;ES:串行口中断允许;ET1:定时器1中断允许;EX1:外中断1中断允许;ET0:定时器0中断允许;EX0:外中断0中断允许;中断响应过程:CPU响应中断时,首先把当前指令的下一条指令(就是中断返回后将要执行的指令)的地址送入堆栈,然后根据中断标记,将相应的中断入口地址送入PC,PC是程序指针,CPU取指令就根据PC中的值,PC中是什么值,就会到什么地方去取指令,所以程序就会转到中断入口处继续执行。3.4定时器工作原理80C51单片机内部设有两个16位的可编程定时器/计数器。可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由
9、指令来确定和改变。在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。其访问地址依次为8AH-8DH。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。TMOD主要是用于选定定时器的工作方式。定时器方式控制寄存器TMOD在特殊功能寄存器中,字节地址为8
10、9H,无位地址。TMOD的格式如下图所示。 图3-5 TMOD由图可见,TMOD的高4位用于T1,低4使用于T0,4种符号的含义如下:GATE:门控制位。GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器计数器的打开或关闭。CT:定时器计数器选择位。C/T1,为计数器方式;CT0,为定时器方式。M1M0:工作方式选择位,定时器计数器的4种工作方式由M1M0设定。表3-2 定时器4种工作方式工作方式功能描述00工作方式013位计数器01工作方式116位计数器10工作方式2自动再装入8位计数器11工作方式3定时器0:分成2个8位计数器定时器1:停止计数3.5串口通信原理口通讯对单片
11、机而言意义重大,不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的控制。由于其所需电缆线少,接线简单,所以在较远距离传输中,得到了广泛的运用。波特率选择:波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)。MSC-51串行端口在四种工作模式下有不同的波特率计算方法。在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。这要根据系统的运作特点,确定通信的频率范围。然后考虑通信时钟误差。使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。通信协议的使用:通信协议是通
12、信设备在通信前的约定。单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。假定我们需要在PC机与单片机之间进行通信,在双方程式设计过程中,有如下约定:0xA1:单片机读取P0端口数据,并将读取数据返回PC机;0xA2:单片机从PC机接收一段控制数据;0xA3:单片机操作成功信息。在系统工作过程中,单片机接收到PC机数据信息后,便查找协议,完成相应的操作。当单片机接收到0xA1时,读取P0端口数据,并将读取数据返回PC机;当单片机接收到0xA2时,单片机等待从PC机接收一段控制数据;当PC机接收到0xA3时,就表明单片机操作已经成功。硬件连接:51单片机有一个全双工的串
13、行通讯口,所以单片机和计算机之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如计算机的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和计算机的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。图3-6使用MAX
14、232串口通信电路图四. 软件设计NYY七段码显示串行中断RI=0RI=1NTI=0接收数据Y定时器中断高电平定时初始化Flag=0Flag=1低电平定时初始化Flag=1N接收数组下标清零rid=0开始rid<3计算次数图4-1下位机总程序框图图4-2上位机用户界面图4.1定时中断程序已知晶振频率为11.0592MHZ,用T0定时/计数器,进行50ms的定时(T0定时/计数器的初始值为TH0=4CH,TL0=00H)。采用中断方式进行溢出次数累计,计满20次即到秒计时。从秒到分,从分到时的计时,可通过累加器和数值比较实现。流程框图如图4-3所示图4-3定时中断程序框图使用定时器中断产生
15、脉冲,对时间常数计算:100Hz :周期1×102秒,晶振11.0592M,次数为(1000000/100)/12*11.0592=461,时间常数65536461FE33脉宽的实现可由总的次数乘以占空比来实现,所得的次数即为高电平所需持续的次数再计算出时间常数即可对定时器实现高低电平持续时间的设定。4.2串行通信子程序本实验中使用了自定义通信协议,一帧数据由5个字节组成。第一个字节为0;第二个字节和第三个字节分别为频率的高8位和低8位;第四个字节为占空比(0-100);第五个字节为校验位,是前四个字节数据的异或和。 表4-1自定义串行通信协议初始位(00)频率的高8位频率的低8位占
16、空比校验位采用中断方式设计串行通信程序,在PC机上发送数据,串行通信程序框图如图4-4所示图4-4串行通信子程序框图 串行通讯模块:使用串行中断,只接受数据,自定义通讯协议,例如:主机发 0 0 100 100 0,表示需发生100HZ脉冲和100%的高电平脉宽;主机发0 0 100 50 86,表示需发生100HZ脉冲和50%的高电平脉宽;五. 软硬件测试在无法确定上位机与下位机是否已能正确进行通信之前我们可以用串口调试程序调试,这样可以帮助发现下位机程序中存在的问题。有利于整个系统快速高效地在之前步骤都确定正确的情况下进行开发,从而在出现错误时可基本确定是当前步骤出现错误而与前期开发关系不
17、大,利于问题的发现与改正。用串口调试程序对下位机程序进行调试,在下位机程序功能实现正常后将上位机程序与下位机程序进行联合调试,在串行通信过程中传送的是字节,因此在上位机程序中要定义字节数组来保存要发送的数据。发送过程中还需注意的问题有波特率、串行口、校验位、数据位和停止位的设置,以及发送顺序和接收顺序的一致性。上位机程序还要做好异常处理的工作从而实现良好的人机对话。给用户一个简洁明了的操作体验。硬件测试环境是89C52实验板,软件环境是Keil uVision2和串口助手。测试结果与预测结果一致功能实现正常。六通信协议6.1通信协议所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方
18、式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S OSI七层参考模型中的数据链路层。目前,采用的通信协议有两类:异步协议和同步协议。同步协议又有面向字符和面向比特以及面向字节计数三种。其中,面向字节计数的同步协议主要用于DEC公司的网络体系结构中。6.2串行通信协议串行通信协议分同步协议和异步协议异步通信协议的实例起止式异步协议:起止式异步协议的特点是一个字符一个字符传输,并且传送一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。其格式如图3所示。每一个字符的前
19、面都有一位起始位(低电平,逻辑值0),字符本身有57位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位,或意味半,或二位停止位,停止位后面是不定长度的空闲位。停止位和空闲位都规定为高电平(逻辑值),这样就保证起始位开始处一定有一个下跳沿。这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起始式协议。传送时,数据的低位在前,高位在后。面向字符的同步协议:这种协议的典型代表是IBM公司的二进制同步通信协议(BSC)。它的特点是一次传送由若干个字符组成的数据块,而不是只传送一个字符,并规定了10个字符作为这个数据块的开头与结束标志以及整个传输过程的控制信息,它们也叫做通信
20、控制字。由于被传送的数据块是由字符组成,故被称作面向字符的协议。本实验以字符串的形式发送数据,本实验使用的波特率为9600,没有奇偶校验,8个数据位和一个停止位。上位机通信协议:Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load SerialPort1.BaudRate = 9600 SerialPort1.StopBits = 1 SerialPort1.DataBits = 8 SerialPort1.Parity = IO.Ports.
21、Parity.None SerialPort1.ReadTimeout = 10End Sub下位机接收函数:void chuanxing() interrupt 4 if(RI) RI=0; d=0;if(rid<5) recrid=SBUF; rid+;if(rid=5) temp=rec0rec1rec2rec3; if(temp=rec4) hebing(rec1,rec2); hz=t1(pwmt); h=t2(rec3,hz); l=hz-h; else TI=0;七结论在整个实验过程中效果和功能都已实现,在20HZ到30HZ的频率范围内,整个流水灯还是有闪烁的现象产生,随着
22、频率的增大,闪烁也逐渐消失。脉宽是从0%到100%,流水灯的亮度也随着变亮。上位机发送字节是三个一起发出去的,而下位机也会根据三个字节的先后分别取出并进行运用。但这个还存在一些问题,比如程序中使用的是整数的除法运算没有小数这就导致了运算存在较大误差,这样的误差在频率较低时并不影响系统的正常运行,但随着频率的升高这样的误差就会越来越明显,以至于在1KHz及以上频率时调节的效果很不明显。另外由于定时中断和串行中断的频繁产生,其间还伴有大量运算而导致占用较多的CPU时间,这就使得七段码显示时出现字迹较暗,偶尔还会闪烁的现象。八. 结束语经过这三周的课程设计,使我了解到了什么叫做PWM,以及他的工作原
23、理。同时也是对之前学过的知识的一次综合运用,不仅提高了我的编程能力同时还巩固了我的C51硬件知识。在大三下学期我们学习了单片机的一些基本结构和一些基本的编程,在编程之前我们应先看懂单片机的原理图,知道怎样的一个实现过程。在这次实验中碰到了一些问题,我是做下位机的,在我做这个课题时我遇到了这样一个问题就是在频率较高(如几千赫兹时)对定时器的初始值进行设定时就会出现设定无效果的情况但在频率为几十和几百时一切正常,不知是我的程序存在不足还是受C51芯片性能的制约而导致这样的情况。我知道PC机和下位机是通过串口通信的,也是这课设的重点,我在这问题上在网站上看了很多的写法,其中要解决的问题就是对接收的字
24、节数据进行处理得到我想要的数据如程序中频率是一个unsigned int型变量而接收的数据是字节数据这就需要将两个字节的数据合并成频率。当然频率的实现和脉宽的调节也是一个难点,但知道了原理后也就不是什么问题了。反而觉得这还是挺容易的,难的是在C51单片机11.0592MHz这样的频率下如何合理安排计算过程尽量少的占用其CPU,从而尽可能好地达到预期的效果。在课设过程中我学到了很多的知识也积累了不少经验。自学当然能学到很多知识同时也能解决不少问题,但仅靠自己也是不行的,团队的合作也是很重要的。九附录上位机代码如下:(VB.NET)Public Class Form1 Dim g As Graph
25、ics Dim drawbrush As New SolidBrush(Color.Red) Dim open As Boolean = False Dim send(5) As Byte Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load g = Me.CreateGraphics SerialPort1.PortName = "com4" SerialPort1.BaudRate = 9600 SerialPort1.
26、StopBits = 1 SerialPort1.DataBits = 8 SerialPort1.Parity = IO.Ports.Parity.None SerialPort1.ReadTimeout = 10 ComboBox1.Text = "com4" ComboBox2.Text = "9600" ComboBox3.Text = "8" ComboBox4.Text = "1" TrackBar1.Value = 100 TrackBar2.Value = 100 Timer1.Enabled =
27、False End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged SerialPort1.PortName = ComboBox1.Text End Sub Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventA
28、rgs) Handles ComboBox2.SelectedIndexChanged If ComboBox2.Text = "256000" Then SerialPort1.BaudRate = 256000 End If If ComboBox2.Text = "128000" Then SerialPort1.BaudRate = 128000 End If If ComboBox2.Text = "115200" Then SerialPort1.BaudRate = 115200 End If If ComboBox2.
29、Text = "57600" Then SerialPort1.BaudRate = 57600 End If If ComboBox2.Text = "38400" Then SerialPort1.BaudRate = 38400 End If If ComboBox2.Text = "28800" Then SerialPort1.BaudRate = 28800 End If If ComboBox2.Text = "19200" Then SerialPort1.BaudRate = 19200 End
30、If If ComboBox2.Text = "14400" Then SerialPort1.BaudRate = 14400 End If If ComboBox2.Text = "9600" Then SerialPort1.BaudRate = 9600 End If If ComboBox2.Text = "4800" Then SerialPort1.BaudRate = 4800 End If If ComboBox2.Text = "2400" Then SerialPort1.BaudRate =
31、 2400 End If If ComboBox2.Text = "1200" Then SerialPort1.BaudRate = 1200 End If If ComboBox2.Text = "600" Then SerialPort1.BaudRate = 600 End If End Sub Private Sub ComboBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox3.Select
32、edIndexChanged If ComboBox3.Text = "8" Then SerialPort1.DataBits = 8 End If If ComboBox3.Text = "7" Then SerialPort1.DataBits = 7 End If If ComboBox3.Text = "6" Then SerialPort1.DataBits = 6 End If If ComboBox3.Text = "5" Then SerialPort1.DataBits = 5 End If I
33、f ComboBox3.Text = "4" Then SerialPort1.DataBits = 4 End If End Sub Private Sub ComboBox4_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox4.SelectedIndexChanged If ComboBox4.Text = "1" Then SerialPort1.StopBits = 1 End If If ComboB
34、ox4.Text = "2" Then SerialPort1.StopBits = 2 End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If open = False Then Try SerialPort1.Open() Catch ex As Exception MsgBox("端口不存在或已被另一个进程打开!") Exit Sub End Try op
35、en = True Button1.Text = "关闭串口" Else Button1.Text = "打开串口" SerialPort1.Close() open = False Timer1.Enabled = False End If End Sub Private Sub TrackBar1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TrackBar1.MouseDown Timer1.Enabled = T
36、rue End Sub Private Sub TrackBar1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TrackBar1.MouseUp Timer1.Enabled = False End Sub Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll Label7.Text = T
37、rackBar1.Value & "Hz" send(0) = 0 send(1) = 0 send(2) = TrackBar1.Value send(3) = TrackBar2.Value send(4) = send(0) Xor send(1) Xor send(2) Xor send(3) End Sub Private Sub TrackBar2_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TrackBar2.Mous
38、eDown Timer1.Enabled = True End Sub Private Sub TrackBar2_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TrackBar2.MouseUp Timer1.Enabled = False End Sub Private Sub TrackBar2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar
39、2.Scroll Label8.Text = TrackBar2.Value & "%" send(0) = 0 send(1) = 0 send(2) = TrackBar1.Value send(3) = TrackBar2.Value send(4) = send(0) Xor send(1) Xor send(2) Xor send(3) End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
40、 send(0) = 0 send(1) = 0 send(2) = TrackBar1.Value send(3) = TrackBar2.Value send(4) = send(0) Xor send(1) Xor send(2) Xor send(3) Try SerialPort1.Write(send, 0, 5) Catch ex As InvalidOperationException Timer1.Enabled = False MsgBox("串口被关闭!") Exit Sub End Try End SubEnd Class下位机代码如下:#inclu
41、de "reg52.h"unsigned char code tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char rec5,flag=0,d=0,rid=0,temp;unsigned int pwmt,b,hz,h,l;sbit P2_7=P27;sbit P2_6=P26;void display(unsigned char x, unsigned char y) P0=0x00; P2_6=1; switch(x) case 0:if(rec3=100) P0=0x3f; else P0=tabrec3%10; break; case 1:if(rec3=100) P0=0x3f; else P0=tabrec3/10; break; case 2:if(rec3=100) P0=0x06; break; case 3:if(rec2=100) P0=0x3f; else P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 招投标项目成本控制与优化
- 节能减排廉洁自律招投标守则
- 咖啡馆租赁合同草稿
- 腹股沟斜疝修补术后护理
- 建筑施工劳务合同:旅游设施建设
- 医疗机构市场营销与市场定位
- 公路充电设施维护合同范本
- 木材加工安全事故预防
- 屋顶修复漏水施工合同
- 制造业用工规范承诺书
- 2020 ACLS-PC-SA课前自我测试试题及答案
- 黏膜给药制剂-精品医学课件
- (完整版)物理化学上教案
- 软土地基处理预应力管桩施工要点
- 小儿危重症的早期识别(ppt)课件
- 《纸的发明》优秀ppt(共22张ppt)课件
- 外国古代建筑史-古罗马
- 世界银行招标采购指南
- 《对折剪纸》教学设计
- 720--消防自动喷水灭火系统(干式)讲解
- 认识四边形评课稿
评论
0/150
提交评论