




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目编号:202015-2016学年第一学期微机原理(单片机)课程设计总结报告项目名称:环境检测仪B 班级: 姓名: 学号:微机原理(单片机)课程设计报告微机原理(单片机)课程设计任务书项目名称:环境检测仪B内容与要求: 上位机:完成界面设计与通讯程序(1)能够显示测得温度值与湿度值,当测得温度值或湿度值超出报警阈值上下限时,相应值后有HIGH或LOW提示字母(2)能够设定报警温度阈值、湿度阈值(3)每隔1秒将温度湿度及当前阈值存入文档(4)可以对串口进行设置下位机:完成电路设计与控制程序(1)采用AM2302采集温度和湿度,当超出报警阈值上下限时,相应指示灯闪烁提示(2)通过串口与上位机通讯(3)将阈值保存至外部存储器,重新复位上电后,阈值不变(4)将当前测得温度值和湿度值显示在LCD屏上,当超出报警阈值时,温度值或湿度值后有HIGH或LOW提示字母项目组任务分担评价表姓名分担任务组内评价LCD显示模块设计与编程、下位机串口通讯程序、上位机串口通讯程序,外部存储器的设计与编程5上位机温湿度显示与设置,保存数据,下位机温度传感器与单片机的设计与编程5课程设计报告评分表内容总体方案硬件设计软件设计结果分析明细清单问题分析心得体会参考文献程序代码格式规范总分得分得分 微机原理(单片机)课程设计报告目录一、总体方案2二、硬件设计32.1 1602液晶显示屏32.2 AM2302数字温湿度传感器52.3 LY5A-L2A V462.4 X504562.5 电路连线图8三、软件设计831设计思路832流程图10四、结果分析或项目所实现的功能、指标114.1 原始数据114.2更改阈值124.3 更改串口设置134.4 检测外部存储器13五、明细清单14六、设计调试中遇到的疑难问题及解决方法14七、心得体会与建议15八、参考文献16九、附录16附录A 上位机程序框图16附录B 下位机源程序17一、总体方案环境监测仪总体功能模块示意图如图1-1所示。控 制 器显示模块温度湿度采集模块 存储模块串口通信模块上位机图1-1 XXXXX总体功能模块示意图图中,温度湿度采集模块由AM2302将温度湿度值输入至单片机中,单片机读取数据并存入内部存储器,数据接收过程中,由于传感器为单总线传输,因此需要及时存储数值,再分别计算得到温度、湿度值;串口通信模块包括上位机串口、下位机串口初始化,波特率9600,数据位8,停止位1,校验位无,允许串行接受状态,串口工作模式1,定时器工作方式2,开串口中断,开总中断;显示模块为显示屏显示当前传感器采集的温度湿度值,当温度湿度值超出阈值时,显示屏显示HIGH或LOW,同时采用两个LED等表示,分别表示温度和湿度是否正常工作;存储模块将当前阈值存于外部存储器中,使重新上电后阈值不变;上位机能够设置串口,调整波特率、数据位、校验位等,并将设定的阈值通过串口传送至下位机,下位机将读得的温度湿度值以及与阈值比较结果传送至上位机并显示,同时每隔1秒将阈值、温度湿度值、阈值比较结果保存至指定文件中;二、硬件设计2.1 1602液晶显示屏2.1.1 引脚说明液晶显示屏有16个管脚,其中1管脚接电源地,2管脚接电源正极,3管脚接液晶显示偏压信号,4管脚接数据/命令选择端,5管脚接读/写选择端,6管脚接使能信号,7-14管脚为数据位,15管脚接背光源正极,16管脚接背光源负极。2.1.2 基本操作时序如下读状态:输入:RS=L,RW=H,E=H 输出:D0-D7=状态字写指令:输入:RS=L,RW=L,D0-D7=指令码,E=高脉冲 输出:无写数据:输入RS=H,RW=H,E=H 输出:D0-D7=数据写数据:输入:RS=H,RW=L,D0-D7=数据,E=高脉冲 输出:无2.1.3 状态字说明2.1.4 初始化过程 延时15ms 写指令38H(不检测忙信号) 延时5ms 写指令38H(不检测忙信号) 延时5ms 写指令38H(不检测忙信号) (以后每次写指令、读/写数据操作之前均需检测忙信号) 写指令38H:显示模式设置 写指令08H:显示关闭 写指令01H:显示清屏 写指令06H:显示光标移动设置 写指令0CH:显示开及光标设置2.1.5 接口时序说明2.2 AM2302数字温湿度传感器2.2.1 概述AM2302数字温湿度传感器是一款有已校准数字信号输出的温湿度符合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质优越、超快响应、干扰能力强、性价比极高等优点。每个AM2302传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。2.2.2 引脚说明接线时,1管脚接VCC,2管脚为串行数据单总线,3管脚接地、电源负极,4管脚悬空。2.2.3 单总线接口DATA用于微处理器与AM2302之间的通讯同步,采用单总线数据格式,一次通讯时间5ms左右,数据传输为40bit,高位先出。数据格式:40bit数据=16bit湿度数据+16bit温度数据+8bit校验和。用户主机(MCU)发送一次开始信号后,AM2302从低功耗模式转换到高速模式,等待主机信号结束后,AM2302发送响应信号,送出40bit的数据,并触发一次信号采集。空闲时总线为高电平,通讯开始时主机(MCU)拉低总线500us后释放总线,延时20-40us后从主机开始检测从机的响应信号。从机的响应信号是一个80us左右的低电平,随后从机在拉高总线80us左右的低电平,随后从机在拉高总线80us左右代表即将进入数据传送。2.3 LY5A-L2A V42.3.1 电源部分电源部份采用两种输入接口。 外电源供电,采用2.1电源座,可外电源DC5V,经单向保护D1接入开关S1。USB供电,USB供电口输入电源也经D1单向保护,送到开关S1。 注:两路电源输入是并连的,因此只选择一路就可以了,以免出问题。2.3.2 扩展电源内部电路的5V电源引出接口,在电源开关之后(即受电源开关的控制),可用于外扩展电路供电。提供三组方面各种场合使用。2.3.3 复位电路51单片机与AVR单片机的复位电平不同,前者为高电平复位,后者为低电平复位,因此设计了插针J1来转换,这也是支持51和AVR的原因所在。 J1的下插针切换复位按键的连接方式VCC和GND,51单片机连接VCC,AVR单片机连接GND,J1的上插针是为了51单片机引入上电复位电路,电容和电阻组成简单的上电复位,而对于AVR单片机内部有上电复位电路且上电复位电平也不同就无需接入,因此J1的上插针有一个空脚。2.4 X50452.4.1 芯片简介CS为片选信号;SO为串行输出;Sl为串行输入;SCK为串行时钟输入;WP为EEPROM写保护输入;RESET为复位信号输出;vss为地;Vcc为电源电压。X5045使用三线总线串行(SPI)外设接口,对芯片进行操作的所有操作码、字节地址及写入的数据都从SI引脚输人,写人数据在串行时钟SCK的上升沿被锁存;从芯片读取的数据从90引脚串行移出,并在SCK的下降沿读出数据。芯片的把关定时器和电压监视器都对单片机提供独立的保护。当电源电压降到45 V以下时,RESET引脚立即自动产生高电平复位信号,并一直保持到电源电压恢复正常;当系统上电或掉电时,RESET引脚也自动产生一个高电平复位信号;当系统发生故障时,只要把关定时器达到其可编程的超时极限,RE疆r引脚立即自动产生一个持续200 ITtS的高电平复位信号。这样,就可有效地防止死机、数据误写及误操作等故障的发生。X5045芯片内部有2Kx 8位的串行EEPROM,可以擦写10万次以上,内部数据可以保存100年以上。应用时可以通过编程对指定的块进行锁定,以防止由于误操作等原因破坏保存的数据。cPu每隔一段时间(可编程设定)向x5045发一个触发信号,否则它将使系统复位,以保证系统不死机。2.4.2 工作原理1)指令:指令X5045有7条指令,对芯片所有操作都是通过对指令寄存器写命令来完成的。所有指令、地址、数据均以高位在前的方式串行传送。2)状态寄存器:X5045内有一个8位状态寄存器,在任何时间都可以通过指令访问其中的内容。复位时为0其格式如下表所示。WIP:只读位,用于指示芯片是否正忙于内部非易失性的写操作;WEL:写使能,指示当前写使能锁存器状态;BLl、BL0:设置EEPRoM块保护的地址范围,下表。WDI、WD0:设置把关定时器的超时周期,见下表。2.5 电路连线图三、软件设计31设计思路1)首先完成下位机功能实现,对各个芯片进行初始化,阈值设为一常数2)完成AM2302数据读取,由于温湿度传感器采用单总线传输,控制器以8位为单位读取数据,并保存在数组中,包括湿度高8位、低8位,温度高8位、低8位,校验和3)完成向1602显示屏写数据,显示数据时依次将数据各个位转化为对应的ASCII码显示4)将读取的温湿度值与阈值进行比较,将值和比较结果在显示屏上显示,当出现报警信息时,有对应的led灯闪烁5)然后实现上位机功能,运用labview对串口进行初始化,上位机、下位机采用相同的波特率、数据位、校验位等。6)上位机中增加设置,包括温湿度阈值、串口初始化,数据保存路径,若更改串口初始化,需在下位机串口初始化程序中做出相应调整7)将下位机读取的温湿度值及报警信息通过串口传送至上位机并显示8)每隔1秒在指定文件中保存上位机中的阈值、温湿度值和报警信息9)外部存储器初始化,定义读写操作,将阈值由下位机保存在外部存储器中,同时在下位机每次工作前读取外部存储器中的值,保存在阈值对应的数组中。32流程图四、结果分析或项目所实现的功能、指标4.1 原始数据波特率9600,数据位8,校验位无;温度上限13.3,温度下限12.2,湿度上限65.2,湿度下限55.5。可以看出,液晶屏和上位机均显示了当前温湿度值以及湿度值低于湿度下限和温度值高于温度上限的报警信息,同时下位机D27和D26同时闪烁,表示湿度和湿度均超出阈值范围。在上位机中指定的文件路径中,保存当前数据,在每行结尾是毫秒计数结果,相邻两行计数结果大约相差1000,即每隔一秒进行数据更新4.2更改阈值波特率9600,数据位8,校验位无;温度上限65.5,温度下限12.2,湿度上限65.2,湿度下限55.5可以看出,液晶屏和上位机均显示了当前温湿度值以及湿度值低于湿度下限的报警信息,同时下位机D26闪烁,表示湿度超出阈值范围。在上位机中指定的文件路径中,由于上位机对阈值进行了修改,文件信息发生改变,在每行结尾是毫秒计数结果,相邻两行计数结果大约相差1000,即每隔一秒进行数据更新4.3 更改串口设置波特率19200,数据位8,校验位无;温度上限65.5,温度下限12.2,湿度上限65.2,湿度下限55.5上位机调整串口设置,将波特率加倍后,需要在下位机程序中做出相同调整,重新烧写程序后,实验效果与实验一相同。4.4 检测外部存储器记录当前液晶屏和上位机显示温湿度信息,断电,重新上点后发现液晶屏和上位机显示信息保持不变,表明阈值以写入外部存储器中并能够在重新上点后读取阈值。五、明细清单元器件名称单价/元个数AM230217.101X50455.1011602液晶屏4.801LY5A-L2A 58.001总成本:85元六、设计调试中遇到的疑难问题及解决方法汪思云:1、上位机保存温湿度信息时无法确定更新周期,在上位机中增加毫秒计数器,并将计数结果同样保存在指定路径中2、上位机保存温湿度信息时无法更改更新周期,需配合下位机程序中的延时函数,在不影响其他芯片正常工作的基础上,更改延时时间可以改变更新周期3、上位机不能检测到串口,需要在LabView中增加NIVISA补丁4、传感器为单总线传输,需要通过移位相或的方式保存数据 王冠中:1、外部存储器供电电压不足,不能使用USB供电,需要通过电源供电2、进行串口通信时,数据类型的处理,上位机向下位机传送阈值信息时采用字符串类型,由下位机提取字符并计算能得到温湿度阈值3、确定何时向外部存储器写数据,在中端服务程序中,当下位机读取上位机阈值信息后即向外部存储器写数据七、心得体会与建议王冠中:本次课程设计通过上位机下位机配合实现环境监测功能,自己主要负责下位机的设计,较为熟练的掌握了Keil的使用,上位机下位机串口通讯设置方法以及外部存储器的读写原理。项目仍可以做出如下改进:当温湿度值超出了阈值范围后,可增加蜂鸣器提示。在教学过程中,希望老师能够更多的对学生进行针对性的指导,由于大多数学生对这类项目尚不了解,会出现很多简单而不易发现的错误,导致耽误大量时间,希望老师能在项目过程中对各个小组可能出现的问题作出提示。 汪思云:本次课程设计让我加深了对单片机的认识,通过对LabView的学习,基本掌握了上位机的设计,采用图形化编程的方式大幅降低了编程难度。另外,对以单总线方式传输数据的传感器有了更深入的了解,学习了如何处理传感器传输的数据。项目可以进一步完善。例如:在上位机中记录各个时刻的温湿度值,并作出温湿度变化曲线图。在本次试验中,我们也碰到了许多问题,比如USB线供电不足导致显示结果出错,后来更换成5v电源线后问题得以解决。在这次实验中我也懂得了,先检查核对实验器材是否错误或者不全在实验的整个过程中是十分重要的,实验器材有误会严重影响整个实验的进度。八、参考文献1 雷升印,周元志X5045芯片在单片机系统中应用的研究武汉理工大学学报,2003,25(3):28-312 数字温湿度传感器 AM2302 说明书济南联诚创发科技有限公司 电子部3 SMC1602A LCM使用说明书长沙太阳人电子有限公司九、附录附录A 上位机程序框图附录B 下位机源程序/头文件,声明,全局变量#include#include#include#include#include#include#define uint unsigned int#define uchar unsigned char#define FOSC 12000000#define BAUD 9600sbit Sensor_SDA=P20;sbit rs=P10;sbit rw=P11;sbit en=P12;sbit led0=P27;sbit led1=P26;sbit led2=P24;sbit led3=P23;sbit led4=P22;unsigned char Sensor_Data5=0x00,0x00,0x00,0x00,0x00;unsigned char Sensor_Check; /校验和unsigned char Sensor_AnswerFlag; /收到起始标志位unsigned char Sensor_ErrorFlag; /读取传感器错误标志unsigned int Sys_CNT;/x5045引脚定义sbit SCK=P03; /将SCK位定义为P3.4引脚sbit SI=P02; /将SI位定义为P3.5引脚sbit SO=P01; /将SO位定义为P3.6引脚sbit CS=P00; /将SCK位定义为P3.7引脚/功能变量定义#define WREN 0x06 /写使能锁存器允许#define WRDI 0x04 /写使能锁存器禁止#define WRSR 0x01 /写状态寄存器#define READ 0x03 /读出#define WRITE 0x02 /写入void UART_init();uchar code table=Temperature;uchar code table1=Humidity;uchar code table2=High;uchar code table3=Low ;uchar buffer,tmp;/uchar num,flag;uint tmp1,tmp2;uint Tmax=250,Tmin=200,Hmax=600,Hmin=100;uchar Receive_buffer16;uint ints=0;/延时/*|* 功能: 延时晶振为12M时*|* 延时大约 1ms *|*/ void delay(unsigned int t) unsigned int i; unsigned int j; for(j=t;j0;j-) for(i=124;i0;i-); /延时大约 1ms/*|* 功能: 延时晶振为12M时 *|* t = 1 为 20us 然后成倍增加10us左右*|*/void delay_us(unsigned char t) while(t-) _nop_(); /LCD初始化void writecomand(uchar pp)rs=0;rw=0;en=0;P0=pp;delay(1);en=1;delay(1);en=0;/*void writedata(uchar dd)rs=1;rw=0;en=0;P0=dd;delay(1);en=1;delay(1);en=0;*/void lcd_init()delay(15);writecomand(0X38);delay(5); /第一次等待5mswritecomand(0X38);delay(5); /第二次等待5mswritecomand(0X38);/显示设置writecomand(0X38); /显示关闭,写08Hwritecomand(0X08);/显示清屏,写01Hwritecomand(0X01);/显示光标移动设置,写06Hwritecomand(0X06);/显示开及光标设置,写0cHwritecomand(0X0c);/LCD相关void lcd_wcom(uchar com)/1602写命令函数rs=0;rw=0;P0=com;delay(5);en=1;delay(5);en=0;void lcd_wdat(uchar dat)/1602写入数据rs=1;rw=0;P0=dat;delay(5);en=1;delay(5);en=0;void lcd_clr()delay(5);rs = 0;rw = 0;P0 = 0x01;en = 1;en = 0;/温湿传感器相关void Clear_Data(void) /接收数据清零int i;for(i=0;i5;i+) Sensor_Datai = 0x00;unsigned char Read_SensorData(void)/读取8位2进制数据unsigned char i;buffer = 0;for(i=0;i8;i+) Sensor_AnswerFlag=2;while(!Sensor_SDA)&Sensor_AnswerFlag+);/检测上次低电平是否结束/延时Min=26us Max50us 跳过数据0 的高电平delay_us(2);/延时30us tmp=0;if(Sensor_SDA) tmp = 1; Sensor_AnswerFlag=2;while(Sensor_SDA&Sensor_AnswerFlag+);/等待高电平结束if(Sensor_AnswerFlag=1)break;buffer =1;buffer |= tmp;return buffer;unsigned char Read_Sensor(void)unsigned char i;Sensor_SDA=0;delay(10); /主机拉低(Min=800US Max=20Ms)Sensor_SDA=1;delay_us(2);/释放总线 延时(Min=30us Max=50us) 延时30usSensor_SDA=1;/主机设为输入 判断传感器响应信号 /Sensor_AnswerFlag=0;/ 传感器响应标志if(!Sensor_SDA)/判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行Sensor_AnswerFlag=2;/收到起始信号/Sys_CNT=0;while(!Sensor_SDA)&Sensor_AnswerFlag+);Sensor_AnswerFlag=2; /判断从机是否发出 80us 的低电平响应信号是否结束/Sys_CNT=0; while(Sensor_SDA&Sensor_AnswerFlag+);/判断从机是否发出 80us 的高电平,如发出则进入数据接收状态/ 数据接收传感器共发送40位数据 / 即5个字节 高位先送 5个字节分别为湿度高位 湿度低位 温度高位 温度低位 校验和/ 校验和为:湿度高位+湿度低位+温度高位+温度低位for(i=0;iTmax)for(ii=0;ii4;ii+)lcd_wdat(table2ii);else if(tmp1Tmin)for(jj=0;jj4;jj+)lcd_wdat(table3jj);else for(ii=0;iiHmax)for(ii=0;ii4;ii+)lcd_wdat(table2ii); else if(tmp2Hmin)for(jj=0;jj4;jj+)lcd_wdat(table3jj);else for(ii=0;ii4;ii+)lcd_wdat( );/串口相关/* 串口程序*/void Uart_init(void) /串口初始化 SCON = 0x50; /REN=1允许串行接受状态,串口工作模式1 TMOD|= 0x21; /定时器工作方式2 / TMOD|= 0x20; /定时器工作方式2 /PCON|= 0x80; PCON|= 0x00; TH1 = 0xFD; /baud /* reload value 9600、数据位8、停止位1。效验位无 (11.0592) TL1 = 0xFD; TR1 = 1; ES = 1; /开串口中断 EA = 1; / 开总中断 void send_data(uint ch)SBUF=ch;while(!TI);TI=0;/*函数功能:从X5045的当前地址读出数据出口参数:x*/unsigned char ReadCurrent(void) unsigned char i; unsigned char x=0x00; /储存从X5045中读出的数据 SCK=1; /将SCK置于已知的高电平状态 for(i=0;i8;i+) SCK=1; /拉高SCK SCK=0; /在SCK的下降沿输出数据 x=1; /将x中的各二进位向左移一位,因为首先读出的是字节的最高位数据 x|=(unsigned char)SO; /将SO上的数据通过按位或运算存入 x return(x); /将读取的数据返回 /*函数功能:写数据到X5045的当前地址入口参数:dat*/void WriteCurrent(unsigned char dat)unsigned char i; SCK=0; /将SCK置于已知的低电平状态 for(i=0;i8;i+) / 循环移入8个位 SI=(bit)(dat&0x80); /通过按位与运算将最高位数据送到S /因为传送时高位在前,低位在后SCK=0; SCK=1; /在SCK上升沿写入数据 dat=1; /将y中的各二进位向左移一位,因为首先写入的是字节的最高位 /*函数功能:写状态寄存器 ,可以设置看门狗的溢出时间及数据保护入口参数:rs; /储存寄存器状态值*/void WriteSR(unsigned char rs) CS=0; /拉低CS,选中X5045 WriteCurrent(WREN); /写使能锁存器允许 CS=1; /拉高CS CS=0; /重新拉低CS,否则下面的写寄存器状态指令将被丢弃 WriteCurrent(WRSR); /写状态寄存器 WriteCurrent(rs); /写入新设定的寄存器状态值 CS=1; /拉高CS/*函数功能:写数据到X5045的指定地址入口参数:addr*/void WriteSet(unsigned char dat,unsigned char addr) SCK=0; /将SCK置于已知状态 CS=0; /拉低CS,选中X5045 WriteCurrent(WREN); /写使能锁存器允许 CS=1; /拉高CS CS=0; /重新拉低CS,否则下面的写入指令将被丢弃 WriteCurrent(WRITE); /写入指令 WriteCurrent(addr); /写入指定地址 WriteCurrent(dat); /写入数据 CS=1; /拉高CS SCK=0; /将SCK置于已知状态/*函数功能:从X5045的指定地址读出数据入口参数:addr出口参数:dat*/unsigned char ReadSet(unsigned char addr) unsigned char dat; SCK=0; /将SCK置于已知状态 CS=0; /拉低CS,选中X5045 WriteCurrent(READ); /开始读 WriteCurrent(addr); /写入指定地址 dat=ReadCurrent(); /读出数据 CS=1; /拉高CS SCK=0; /将SCK置于已知状态 return dat; /返回读出的数据 /*函数功能:看门狗复位程序*/void WatchDog(void) CS=1; /拉高CS CS=0; /CS引脚的一个下降沿复位看门狗定时器 CS=1; /拉高CS/主函数void main()int i,ii,jj,kk=10,kk1=0,kk2=0;unsigned char in8=0;unsigned char out8;lcd_init();/初始化液晶屏lcd_clr();/清空液晶屏WriteSR(0x12); /写状态寄存器(设定看门狗溢出时间为600ms,写不保护) delay(10);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 七年级地理下册 11《中国在世界中》教学设计1 鲁教版五四制
- 发展对象培训班开班仪式
- 人教版四年级数学下册集体备课教案
- 冻干粉灯检培训
- 工程部培训先进经验分享
- 九年级英语上册 Unit 4 I used to be afraid of the dark Section B(3a-Self Check)教学设计(新版)人教新目标版
- 部门人品培训
- 人教部编版八年级历史上册第6课戊戌变法教学设计
- 财税销售培训
- 写作:学写故事(教学设计)八年级语文下册同步备课系列(统编版)
- 水平泵房水泵联合试运转方案及安全技术措施
- 《监察机关监督执法工作规定》测试题试题含答案
- 初中文言文专项训练十篇(含答案)
- 中国政法大学社会主义市场经济概论重点归纳及复习试题(杨干忠版)
- 《蚂蚁和西瓜》课件
- 计量支付用表承包人
- 调Q技术与锁模技术(课堂PPT)
- 快速制作会议座次表、会场座位安排
- 北京牌匾标识设置管理规范北京城管理委员会
- 工厂利器管制办法
- 郫县征地拆迁补偿安置暂行办法
评论
0/150
提交评论