版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要本文研究设计了一种用于公共场所及室内具有检测及超限报警功能的甲醛智能测试仪。其设计方案基于89C51单片机,选择瑞士蒙巴波公司的CH20/S-10甲醛传感器。系统将传感器输出的4~20mA的标准信号通过以AD0832为核心的A/D转换电路调理后,经由单片机进行数据处理,最后由LCD显示甲醛浓度值。文中详细介绍了数据采集子系统、数据处理过程以及数据显示子系统和报警电路的设计方法和过程。系统对于采样地点超出规定的甲醛容许浓度时采用三极管驱动的单音频报警电路提醒监测人员。同时,操作人员对于具体报警点的上限值可以通过单片机编程进行设置。
另外,该系统对浓度信号进行了信号补偿等处理,减少了测量误差,因此,具有较高的测量精度,而且结构简单,性能优良。本系统的量程为0-10ppm,精度为0.039ppm。关键词:甲醛检测,数据采集处理系统,硬件电路,软件设计,A/D转换器,AT89C52单片机3目录 3 3 4 4 4 5 5 5 5 6 6 6 8 14 15 17 18 19 21 21 24 25 27 27 27 31 32 32 33 33 35 36 37 38 39第1章绪论1.1引言1.1.1甲醛的特性及危害甲醛是一种无色,有强烈刺激性气味的气体。化学式(HCHO)易溶于水、醇和醚。甲醛在常温下是气态,通常以水溶液形式出现。其37%的水溶液称为福尔马林,医学和科研部门常用于标本的防腐保存。此溶液沸点为19.5℃故在室温时极易挥发,随着温度的上升甲醛的挥发速度加快。在我国有毒化学品优先控制名单中甲醛列居第二位。1.1.2甲醛的来源室内装修所用的合成板材,如胶合板、细木工板、高密度板、刨花板。这些板材中甲醛起胶合剂、防腐剂的作用,主要用于加强板材的硬度、防虫、防腐。板材中残留的和未参与反应的甲醛逐渐向周围环境释放,是室内空气中甲醛的主要来源。用合成板材制造的家具,厂家为了追求利润使用不合格的板材,再粘贴面材料时使用不合格的胶水,造成家具中甲醛含量超标。3.含有甲醛成分并有可能向外界散发的各类装饰材料,如壁纸、地毯、油漆。第2章概述2.1系统总概述本论文主要完成甲醛检测仪软件设计,设计内容包括:A/D转换器程序、控制程序、超标报警、键盘检测、数据显示等。本系统采用单片机为控制核心,以实现便携式甲醛检测仪的基本控制功能。系统主要功能内容包括:数据处理、时间设置、开始测量、超标报警、键盘检测、自动休眠:仪器若不进行称量操作,5分钟后自动进入休眠模式,以降低电源消耗。本系统设计采用功能模块化的设计思想,系统主要分为总体方案设计、硬件和软件的设计三大部分。2.2总体方案设计室内甲醛污染对人身体健康影响较大,标准规定的方法绝大多数是化学分析法,使用的手段是实验室分析仪器主要有比色计、分光光度计、化学滴定、气相和液相色谱。但这些方法费力费时、成本高、自动化程度低过程复杂、大多数过程是人工操作很难做到现场实时控制随着传感器和计算机技术的不断发展,现已有了基于单片机的便携式甲醛测试仪,并且测试测试范围、分辨率、精度、稳定性已接近标准要求。因此本设计可选用基于电化学原理的甲醛传感器,其原理是空气中的甲醛在电极下发生氧化反应,产生的扩散电极电流与空气中的甲醛浓度成正比,通过检测放大电路和放大倍数的调整经A/D转换后送单片机、由单片机现场自动控制检测并显示甲醛浓度。由于甲醛含量超量的话,将对人体健康造成很大的影响。具有民用价值的便携式甲醛检测仪的研制受到了人们的高度重视。设计能够满足生活需要,携带方便的便携式甲醛检测仪迫在眉睫。针对目前的现状,本系统设计遵守体积小,质量轻,性价比高的原则。2.3硬件设计硬件设计部分主要包括:(MCU、A/D、时钟芯片、LCD、外围扩展数据RAM)等芯片的选择;硬件主电路设计、数据采集、模数转换电路设计、液晶显示电路设计、外围扩充存储器接口电路、时钟电路、复位电路、键盘接口电路等功能模块电路设计。2.4软件设计软件设计部分主要包括:编写语言的选择、主程序/子程序流程的设计、功能模块程序的编写、软/硬件结合调试与演示。主要包括一下功能模块:51驱动、检测、液晶显示、时钟、键盘、模数软换。2.5硬件结构框图如图2.1所示图2.1硬件结构框图2.6软件结构框图如图2.2所示图2.2软件结构框图第3章硬件设计3.1硬件选择3.1.1MCU的选择与简介1.单片机的概念和特点现代社会中,尽管PC机的应用已经相当普遍,但是,在工控领域,在日益追求小而精、轻而薄的自动化控制器、自动化仪器仪表、家电产品等方面,PC机仍有所不相适宜的地方。而工业控制、仪器仪表、家电产品等市场广阔,要求PC机技术与之相适应。在这种情况下,单片机应运而生了(也称作微型计算机)。微型计算机的基本机构是由中央处理器、储存器、和I/O设备构成的。所谓的单片机是指将微型计算机3个单元的多个分体中的主要功能用1个集成电路芯片来实现,该芯片具有一个微型计算机的基本功能。这种超大规模集成电路芯片即称为单片微型计算机,通常简称单片机。单片机具有以下特点:(1)受集成度限制,片内存储容量较小,一般8位单片机的ROM小于8/16K字节,RAM小于256字节,但可在外部扩展,通常ROM、RAM可分别扩展至64K字节。(2)可靠性好。芯片本身是按工业测控环境要求设计的,其抗工业噪声干扰优于一般通用CPU;程序指令及常数、表格固化在ROM中不易破坏;许多信号通道均在一个芯片内,故可靠性高。(3)易扩展。片内具有计算机正常运行所必需的部件。芯片外部有许多供扩展用的三总线及并行、串行输入/输出管脚,很容易构成各种规模的计算机应用系统。(4)控制功能强。为了满足工业控制要求,一般单片机的指令系统中具有极丰富的条件分支转移指令、I/O口的逻辑操作以及位处理功能。一般说来,单片机的逻辑控制功能及运行速度均高于同一档次的微处理器。(5)一般单片机内无监控程序或系统通用管理软件,只放置有用户调试好的应用程序。但近年来也开始出现了在片内固化有BASIC解释程序的单片机。2.单片机的发展与趋势由于单片机具有以上特点,因此在工业控制、数据采集、智能仪器仪表、智能化设备和各种家用电器等领域得到广泛的应用。随着微电子工艺水平的提高,近十年来单片微型计算机有了飞速的发展。归纳起来,它是沿着两条路发展的:1.改进集成电路制造工艺,提高芯片的工作速度,降低工作电压和降低功耗:2.在保留共同的CPU体系结构,最基本的外设装置(如异步串行口,定时器等)和一套公用的指令系统的基础上,根据不同的应用领域,把不同的外设装置集成到芯片内,在同一个家族内繁衍滋生出各种型号的单片机。另外在单片机的应用中,可靠性是首要因素,为了扩大单片机的应用范围和领域,提高单片机自身的可靠性是一种有效方法。近年来,单片机的生产厂家在单片机设计上采用了各种提高可靠性的新技术,主要表现在一下几点:(1)EFT(ElectricalFastTransient)技术(2)低噪音布线技术及驱动技术(3)采用低频时钟总之,单片机在目前的发展形势下,表现出几大趋势:可靠性及应用水平越来越高,和internet连接已是一种明显的走向;所集成的部件越来越多;功耗越来越低;和模拟电路结合越来越多。3.单片机选择3.1.3单片机最小系统的实现介绍完以上的单片机系统的核心芯片之后,我们采用AT89C52来实现一个单片机系统能运行起来的需求最小的系统,电路图见图3.1图3.1单片机最小系统图上图由晶振电路和复位电路,AT89C52芯片组成,构成最小的单片机系统,下面详细介绍其中的两个电路。1晶振电路单片机工作的过程中各指令的微操作在时间上有严格的次序,这种微操作的时间次序称作时序,单片机的时钟信号用来为单片机芯片内部各种微操作提供时间基准,89c52的时钟产生方式有两种,一种是内部时钟方式,一种是外部时钟方式。内部时钟方式即在单片机的外部接一个晶振电路与单片机里面的振荡器组合作用产生时钟脉冲信号,外部时钟方式是把外部已有的时钟信号引入到单片机内,此方式常用于多片89C52单片机同时工作,以便于各单片机的同步,一般要求外部信号高电平的持续时间大于20ns.且为频率低于12MHz的方波。对于CHMOS工艺的单片机,外部时钟要由XTAL1端引入,而XTAL2端应悬空。本系统中为了尽量降低功耗的原则,采用了内部时钟方式。电路图见图3.2:图3.2晶振电路图在89C52单片机的内部有一个震荡电路,只要在单片机的XTAL1和XTAL2引脚外接石英晶体(简称晶振)就构成了自激振荡器并在单片机内部产生时钟脉冲信号,图中电容器C1和C2稳定频率和快速起振,电容值在5—30pF,典型值是22pF,晶振CYS选择的是12MHz。2.复位电路复位的意义单片机开始工作的时候,必须处于一种确定的状态,否则,不知哪是第一条程序和如何开始运行程序。端口线电平和输入输出状态不确定可能使外围设备误动作,导致严重事故的发生;内部一些控制寄存器(专用寄存器)内容不确定可能导致定时器溢出、程序尚未开始就要中断及串口乱传向外设发送数据……..因此,任何单片机在开始工作前,都必须进行一次复位过程,使单片机处于一种确定的状态。复位电路原理当在89C52单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。实际应用中,复位操作有两种基本形式:一种是上电复位,另一种是上电与按键均有效的复位,上电复位见图3.3,要求接通电源后,单片机自动实现复位操作。常用的上电复位电路如下图所示。上电瞬间RST引脚获得高电平,随着电容C1的充电,RST引脚的高电平将逐渐下降。图3.3上电复位电路图RST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。该电路典型的电阻和电容参数为:晶振为12MHz时,C1为22uF:R1为8.2;振为6MHz时,C1为22uF,R1为1.本设计中复位电路采用的是开关复位电路,开关S9未按下是上电复位电路,上电复位电路在上电的瞬间,由于电容上的电压不能突变,电容处于充电(导通)状态,故RST脚的电压与VCC相同。随着电容的充电,RST脚上的电压才慢慢下降。选择合理的充电常数,就能保证在开关按下时是RST端有两个机器周期以上的高电平从而使AT89C52内部复位。开关按下时是按键手动复位电路,RST端通过电阻与VCC电源接通,通过电阻的分压就可以实现单片机的复位。电路图见图3.4:图3.5复位电路图3.2.1数据采集系统(1)从传感器过来的电压信号,必须放大,滤波,采集,转换才能被MCU识别和处理。由于假若每一路都设置放大、滤波等器件,那么成本会很大,所以信号的采集一般用多路模拟通路进行选择。然而选择多路模拟开关时必须考虑以下的几个因素:通道数量、切换速度、开关电阻和器件的封装形式。总之数据采集与硬件的选择有很大的关系。(2)甲醛传感器的选择甲醛传感器由甲醛探头CH20传感器组成。甲醛传感器/甲醛模块(CH2O传感器)详细介绍如下表3-3:(3)测量电路测量电路由CH20/S-10甲醛传感器,ADC0832组成。甲醛传感器由甲醛探头和CH20传感器组成。当空气被内部的采样系统吸收后,产生一个与甲醛浓度成正比的电压信号,该电压信号经AD0832与AT89C52单片机相连,在显示器上显示出甲醛的浓度值,当超过国家规定的标准时报警。表3-3传感器参数表名称甲醛传感器CH2O/S-10:测量范围0-10ppm最大负荷50ppm工作寿命空气中3年输出1200±300nA/ppm4-20mA(甲醛模块分辨率0.05ppm温度范围-20℃to45℃压力范围大气压±10%响应时间(T90)〈50seconds湿度范围-20℃to45℃零点输出(纯净空体,20℃)〈0.1ppm最大零点漂移(20℃to40℃)0.1ppm长期漂移〈2%/每月推荐负载值10Ω线性度输出线性重量约32克3.2.2模数转换的选择与简介=1\*GB2⑴实现A/D转换的基本方法很多,有计数法、逐次逼近法、双斜积分法和并行转换法。由于逐次逼近式A/D转换具有速度,分辨率高等优点,而且采用这种方法的ADC芯片成本低,所以我们采用逐次逼近式A/D转换器。逐次逼近型ADC包括1个比较器、一个模数转换器、1个逐次逼近寄存器(SAR)和1个逻辑控制单元。逐次逼近型是将采样信号和已知电压不断进行比较,一个时钟周期完成1位转换,依次类推,转换完成后,输出二进制数。这类型ADC的分辨率和采样速率是相互牵制的。优点是分辨率低于12位时,价格较低,采样速率也很好。=2\*GB2⑵由于ADC0832模数转换器具有8位分辨率、双通道A/D转换、输入输出电平与TTL/CMOS相兼容、5V电源供电时输入电压在0~5V之间、工作频率为250KHZ、转换时间为32微秒、一般功耗仅为15MW等优点,适合本系统的应用,所以我们采用ADC0832为模数转换器件。电路图见图3.5如下:=3\*GB2⑶ADC0832具有以下特点:·8位分辨率;·双通道A/D转换;·输入输出电平与TTL/CMOS相兼容;·5V电源供电时输入电压在0~5V之间;·工作频率为250KHZ,转换时间为32μS;图3.5模数转换电路图·一般功耗仅为15mW;·8P、14P—DIP(双列直插)、PICC多种封装;·商用级芯片温宽为0°Cto+70°C,工业级芯片温宽为−40°Cto+85°C;芯片接口说明:·CS_片选使能,低电平芯片使能。·CH0模拟输入通道0,或作为IN+/-使用。·CH1模拟输入通道1,或作为IN+/-使用。·GND芯片参考0电位(地)。·DI数据信号输入,选择通道控制。·DO数据信号输出,转换数据输出。·CLK芯片时钟输入。·Vcc/REF电源输入及参考电压输入(复用)。ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI数据输入端,可以轻易的实现通道功能的选择。单片机对ADC0832的控制原理:正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能,(4)测量量程本系统的量程为0-10ppm。由于我所使用的是8位ADC0832,所以本系统的精度为:10ppm/256=0.039ppm。3.2.3按键选择与简介=1\*GB2⑴本系统应用有人机对话功能,该功能即能随时发出各种控制命令和数据输入以及和LCD连接显示运行状态和运行结果。键盘分为:独立式和矩阵式两类,每一类按其编码方法又可以分为编码和非编码两种。由于本系统只有UP、DOWN、OK、CANCEL4个控制命令,所需按键较少,所以本系统选择独立式按键。电路图见图3.6:图3.6按键电路图=2\*GB2⑵独立式按键是直接用I/O口线构成的单个按键电路。每个独立式按键占有一根I/O口线。各根I/O口线之间不会相互影响。在此电路中,按键输入部采用低电平有效,上拉电阻保证了按键断开时,I/O口线有确定的高电平,(AT89C52.P1口内部接有上拉电阻)所以就不需要再外接上拉电阻。=3\*GB2⑶键盘抖动的消除:抖动的消除大致可以分为硬件削抖和软件削抖。①硬件削抖是采用硬件电路的方法对键盘的按下抖动及释放抖动进行削抖,经过削抖电路后使按键的电平信号只有两种稳定状态。②软件削抖的基本原理是当检测出键盘闭合时,先执行一个延时子程序产生数毫秒的延时,待接通时的前沿抖动消失后再判别是否有健按下。当按键释放时,也要经过数毫秒延时,待后沿抖动消失后再判别键是否释放。③由于应用硬件削抖还需要外加器件,成本相对较高,所以本系统选择软件延时削抖的方法。3.2.4外围扩充存储器基于AT89C52单片机具有8KB的程序存储器(ROM),256B的数据存储器(RAM),由于考虑到本系统的数据处理与存储所需的容量,现在需要扩充存储器的容量。在应用中要保存一些参数和状态,据了解基于EEPROM的存储芯片是一种很好的选择。我们选定了AT24C128存储器。电路图见图3.8:图3.7外围扩充存储电路图3.2.5时钟芯片选择与简介因为此系统需要记录测量发生的时间,所以需要时钟芯片来记录不同人在不同时间的监测数据,因此我们在系统中加入了时钟芯片。对时钟芯片的要求首先是低功耗,其次是编程简单,缩短程序开发时间,实际上也就缩短了系统用于实际生产所用的开发周期以及成本,在本系统,我们选择了DS1302时钟芯片。=1\*GB2⑴我们时钟电路选择的芯片是DS1302,其内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机通信。而通信时,仅需要3个口线:(1)RES(复位),(2)I/O数据线,(3)SCLK(串行时钟)。时钟/RAM的读/写数据以一字节或多达31字节的字符组方式通信。其工作时功耗很低,广泛应用于电话,传真,便携式仪器等产品领域。=2\*GB2⑵DS1302主要性能有:时实时钟能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年的调整能力;读/写时钟或RAM数据时,有单字节和多字节传送两种方式;与DS1202/TTL兼容。=3\*GB2⑶DS1302引脚概述:X1,X2:振荡源,外接32。768KHZ晶振;SCLK:串行时钟输入端。=4\*GB2⑷日历、时钟寄存器与控制字对照表、日历、时钟寄存器命令字、取值范围以及各位内容对照表。见表3-4。寄存器名命令字取值范围各位内容写操作读操作76543~0秒寄存器80H81H00~59CH10SECSEC分寄存器82H83H00~59010MINMIN时寄存器84H85H01~1200~2312/24010/(A/P)HRHR日寄存器86H87H01~28,29、30、310010DATEDATE月寄存器88H89H01~1200010MMONTH周寄存器8AH8BH01~070000DAY年寄存器8CH8DH01~9910YEARYEAR写保护寄存器8EH8FHWP0000慢充电寄存器90H91HTCSTCSTCSTCSDSDSRSRS时钟突发寄存器BEHBFH表3-4时钟控制字对照表=5\*GB2⑸DS1302数据输入/输出时序数据输入是在输入写命令字的8个SCLK周期之后,在接下来的8个SCLK周期中的每个脉冲的上升沿输入数据,数据从0位开始。如果有额外的SCLK周期,它们将被忽略。数据输出是在输出命令字的8个SCLK周期之后,在接下来的8个SCLK周期中的每个脉冲的下降沿输出数据,数据从0位开始。需要注意的是,第一个数据位在命令字节的最后一位之后的第一个下降沿被输出。只要RST保持高电平,如果有额外的SCLK周期,将重新发送数据字节,即多字节传送。其电路图见图3.8:图3.8时钟电路图3.2.6上拉电阻在主电路图中接在P0口处有一个排阻RP1,由于P0口没有内接上拉电阻,为了为P0口外接线路有确定的高电平,所以要接上排阻RP1,以确保有P0口有稳定的电平。电路连接图见图3.9:图3.9上拉电阻电路图3.2.7液晶显示器简介。对于本系统要有显示装置完成显示功能。显示器最好能够显示数据、图形。考虑到同种LCD显示器的屏幕越大体积越大,功耗越大的特点,在同类产品中选用了AMPIRE128X64液晶显示模块。该型号显示器消耗电量比较低,可以满足系统要求。该类液晶显示模块采用动态的液晶驱动,可用5V供电。1.AMPIRE128X64液晶模块引脚说明AMPIRE128X64液晶共有22个引脚,其引脚说明如表3-5所示:表3-5液晶引脚说明图管脚名称管脚定义/CSA片选1/CSB片选2VSS数字地VDD逻辑电源+5VV0对比度调节R/S指令数据通道R/W读写选择E使能选择DB0-DB7数据线CS1片选1CS2片选2/RES复位信号VEE液晶驱动电源LED+LED背光正电源LED-LED接地端表3-5AMPIRE128X64液晶显示模块与计算机的接口电路有两种方式。它与单片机的接口方法分为直接访问方式和间接控制方式。直接访问方式是把液晶模块作为存储器或I/O设备直接接在单片机的总线上,单片机以访问存储器或I/O设备的方式操作液晶显示模块的工作。间接控制方式则不使用单片机的数据系统,而是利用它的I/0口来实现与显示模块的联系。即将液晶显示模块的数据线与单片机的Pl口连接作为数据总线,另外三根时序控制信号线通常利用单片机的P3口中未被使用的I/O口来控制。这种访问方式不占用存储器空间,它的接口电路与时序无关,其时序完全靠软件编程实现。本系统采用间接控制方式。液晶显示工作原理介绍以下为液晶显示电路接线原理图见图3.10图3.10液晶电路图2.在单片机系统中应用液晶显示器作为输出器件有以下几个有点:显示质量高:由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。数字式接口:液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。体积小、重量轻:液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻的多。功耗低:相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其他显示器要少的多。3.LCD按其显示方式通常可以分为断式、点字符式、点阵式等。还有黑白、多灰度、彩色显示等。液晶显示原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就显示黑色,这样就可以显示出图形。针对于本系统要显示汉字,字母,数字等,以及其在一个界面同时要显示的字数,本系统要以图形的形式显示各运行结果,我们最终选择AMPIRE128x64型号的LCD。=2\*GB2⑵字符显示:字符显示比较复杂,一个字符由16x8点阵组成,即要找到和显示屏是某几个位置对应的RAM区的字节,再使不同的位置为‘1’其他的为‘0’;为‘1’的点亮,为‘0’的不亮,这样就显示出一个字符。4.汉字显示:汉字显示和字符显示的原理差不多,就是一个汉字一般采用图形方式,事先从微机中用字模软件提取要显示的汉字的点阵码,每个汉字占32B,为为两部分,各16B。根据在LCD上开始显示的行列号及每行的列数就可以找出显示RAM的对应地址,送上汉字要显示的第一字节,以此类推,最后送完32B,这样汉字就显示出来了。3.2.8报警电路在单片机应用系统中,一般的工作状态可以通过指示灯或数码显示来指示,供操作人员参考,了解系统的工作状况。但对于某些紧急状态,比如系统检测到的错误状态等,为了使操作人员不至于忽视,及时采取措施,往往还需要有某种更能引人注意,提起警觉的报警信号。这种报警信号通常有三种类型:一是闪光报警,因为闪动的指示灯更能提醒人们注意;二是鸣音报警,发出特定的音响,作用于人的听觉器官,易于引起和加强警觉;三是语音报警,不仅能起到报警作用,还能直接给出警报种类的信息。其中,前两种报警装置因硬件结构简单,软件编程方便,常常在单片机应用系统中使用;而语音报警虽然警报信息较直接,但硬件成本高,结构较复杂,软件量也增加。单频音报警
实现单频音报警的接口电路比较简单,其发音元件通常可采用压电蜂鸣器,当在蜂鸣器两引脚上加3~15V直流工作电压,就能产生3kHZ左右的蜂鸣振荡音响。压电式蜂鸣器结构简单、耗电少,更适于在单片机系统中应用。压电式蜂鸣器,约需10mA的驱动电流,可在某端口接上一只三极管和电阻组成的驱动电路来驱动,如图3.13所示。在图2中,P1.0接三极管基极输入端,当P1.0输出高电平“1”时,三极管导通,蜂鸣器的通电而发音,当P1.0输出低电平“0”时,三极管截止,蜂鸣器停止发音。图3.11单频音报警电路图基于本系统的需求和功耗要求,只需要基本的报警功能即可,我选择采用的是三极管驱动的单音频报警电路。以下为报警电路接线图见图3.12图3.12报警电路图3.2.9硬件仿真环境介绍ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。本章介绍ProteusISIS软件的工作环境和一些基本操作。图3.13ISIS6Professional图标进入ProteusISIS:双击桌面上的ISIS6Professional图标(见图3.15)或者单击屏幕左下方的“开始”→“程序”→“Proteus6Professional”→“ISIS6Professional”,出现如图3.13所示屏幕,表明进入ProteusISIS集成环境。工作界面:ProteusISIS的工作界面是一种标准的Windows界面,如图3.14所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。图3.14工作界面第4章软件设计4.1编写语言的选择对于单片机的开发应用中,逐渐引入了高级语言,C语言就是其中的一种。汇编语言的可控性较高级语言来说更具优越性。程序编写语言比较常见的有C语言、汇编语言。汇编语言的机器代码生成效率高,控制性好,但就是移植性不高。C语言编写的程序比用汇编编写的程序更符合人们的思考习惯。还有很多处理器都支持C编译器,这样意味着处理器也能很快上手。且具有良好的模块化、容易阅读、维护等优点,且编写的模块程序易于移植。基于C语言和汇编语言的优缺点,本系统采用C语言编写方法。软件编写的主体思路是将系统按功能模块化划分,然后根据模块要实现的功能写各个子程序。整个软件程序的编写采用查询式方式编写的。4.2编译软件介绍Keil软件简介:KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。2.KeilC51单片机软件开发系统的整体结构C51工具包的整体结构,如图4.1所示,其中uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。图4.1C51工具包的整体结构图3.运行KEIL51软件见图4.2图4.24.建立项目(1)点击Project菜单,选择弹出的下拉式菜单中的NewProject,如图4.3图4.3接着弹出一个标准Windows文件对话窗口,在"文件名"中输入您的第一个C程序项目名称,"保存"后的文件扩展名为uv2,这是KEILuVision2项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。(2)选择所要的单片机,这里我们选择常用的Ateml公司的AT89C51。完成上面步骤后,我们就可以进行程序的编写了。(3)首先我们要在项目中创建新的程序文件或加入旧程序文件。如果你没有现成的程序,那么就要新建一个程序文件。(4)点击保存新建的程序,也可以用菜单File-Save或快捷键Ctrl+S进行保存。我们把第一个程序命名为test1.c,保存在项目所在的目录中,这时你会发现程序单词有了不同的颜色,说明KEIL的C语法检查生效了。鼠标在屏幕左边的SourceGroup1文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作。我们?quot;AddFiletoGroup'SourceGroup1'"弹出文件窗口,选择刚刚保存的文件,按ADD按钮,关闭文件窗,程序文件已加到项目中了。这时在SourceGroup1文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看。(5)C程序文件已被我们加到了项目中了,下面就剩下编译运行了。进入调试模式软件窗口样式大致如图所示。图中1为运行,当程序处于停止状态时才有效,2为停止,程序处于运行状态时才有效。3是复位,模拟芯片的复位,程序回到最开头处执行。按4我们可以打开5中的串行调试窗口,这个窗口我们可以看到从51芯片的串行口输入输出的字符,这里的第一个项目也正是在这里看运行结果。首先按4打开串行调试窗口,再按运行按钮。要停止程序运行回到文件编辑模式中,就要先按停止按钮再按开启\关闭调试模式按钮。然后我们就可以进行关闭KEIL等相关操作了图4.4(6)生成HEX文件HEX文件格式是Intel公司提出的按地址排列的数据信息,数据宽度为字节,所有数据使用16进制数字表示,常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。打开目录,找到test.Uv2的文件就可以打开先前的项目了。然后右击图4.7中的1项目文件夹,弹出项目功能菜单,选OptionsforTarget'Target1',弹出项目选项设置窗口,同样先选中项目文件夹图标,这时在Project菜单中也有一样的菜单可选。打开项目选项窗口,转到Output选项。图4.5项目选项窗口。图4.6编译信息窗口如上图所示,没有错误,没有警告才算编译成功。4.3主程序模块主程序实现的功能:与硬件相结合实现便携式甲醛检测仪的各个功能。主要是检测与显示,时间调整与显示,数据存储。功能子函数的调用。见图4.7初始化时钟初初始化时钟初始化LCD屏显示开机画面显示时间显示主菜单初始化CPU开始读键图4.7主程序流程图4.4模数转换=1\*GB2⑴模数转换模块的主要功能就是将经放大器放大的模拟电压信号转化为MCU能够处理的数字信号,并传送给MCU。=2\*GB2⑵ADC0832转换的流程图见下图4.8图4.8数转换流程图4.5按键模块=1\*GB2⑴按键时显现人机对话的一个控制按钮,通过按键的操作,对系统进行发送操作指令,后经与MCU串行通信,然后在液晶上显示。=2\*GB2⑵按键查询式的流程图见下图:图4.9按键查询式的流程图4.6时钟模块=1\*GB2⑴DS1302模块主要是用于设置时间和与MCU通信经LCD显示时间。=2\*GB2⑵时钟模块操作流程图见下图:图4.10时钟模块操作流程图4.7液晶显示模块=1\*GB2⑴LCD模块在本系统中主要起着开界面汉字显示,以及各控制效果的显示。采用直接访问方式。=2\*GB2⑵液晶显示的操作流程图见下图4.13:图4.11液晶显示的操作流程图第5章系统仿真前面已经把单片机系统的硬件设计和软件设计完成了,下一步就可以着手进行仿真,因为在设计的过程之中肯定有许多的错误,需要进行仿真来发现错误和调试错误。这样才能使单片机低功耗计数系统的设计更加完善,本次系统仿真采用的是软件仿真,使用的是proteus软件。一,编译结束,添加HEX文件单击PROTEUS运行按钮。二,系统接下来显示,4个基本操作功能。三,选择“开始测量”,单击“OK”键,便有下面测量选择界面四,再按“OK”,则显示检测数据,范围0-10ppm.五,4个功能的操作和演示是相同的,以下为“时间设置”六,小结:本系统原先打算设计“开始测量”、“数据存储”、“时间设置”“通讯设置”等4个基本功能,后由于条件所限,我们并未做出全部的功能,但这次的毕业设计,收获还是很多的!今后我们会进一步进完善该系统。第6章结束语目前,公共场所民用建筑室内需要检测甲醛气体,同样建筑材料中甲醛含量也需要检测。由于甲醛含量超量的话,将对人体健康造成很大的影响。具有民用价值的便携式甲醛检测仪的研制受到了人们的高度重视。设计能够满足生活需要,携带方便的便携式甲醛检测仪迫在眉睫。针对目前的现状,该系统设计遵守体积小,质量轻,性价比高的原则。便携式甲醛检测仪的设计主要分为硬件设计和软件设计。根据设计前对该系统所要实现功能的要求,综合考虑虑我们采用AT89C52单片机为控制核心。我负责软件的设计,因为软件的设计是基于硬件系统,所以我做的软件必须和硬件进行结合相演示。软件是基于汇编与C语言相结合编写的,结合了两种编写语言的优点,具有很好的可控性、模块化和移植性。编写的思路就是模块化的思想,将系统的各个功能进行划分,然后对各个模块进行设计。本系统的主要模块为甲醛检测、A/D转换、液晶显示和时钟设置。软件与硬件相结合的演示的大体流程是:主页面显示4个子菜单功能按键的4个控制进入子菜单有确认和取消按确认实现相应功能(按取消则返回)。由于所学知识的限制,本系统实现的功能不是很健全,但在设计该系统的过程中,让我学会了系统设计的方法,和养成了系统思考的思维方式。首先要了解系统所要实现的功能;其次根据功能去选择相应的硬件资源;再次将一个大的系统进行模块化划分,然后逐一去攻破。最后把所有模块进行优化整合,便得到了一个完整的系统。基于这样的思路,我们共同完成了便携式甲醛检测仪的基本设计。同时由于本设计是采用在proteus上进行仿真,在keil软件上进行编程,最后二者联调,实现设计任务,但在仿真是无法实现甲醛传感器,因此本设计采用滑动变阻器模拟传感器检测甲醛时输出的模拟信号,经AD0832转换输入单片机。致谢对于系里领导的关心和实验室的老师们的辛勤,给我们提供了实验室这样一个良好的设计环境表示深深地感谢;我的毕业课题是便携式甲醛显示器的设计,是一个实际的小工程。作为一个本科生,我对实际的工程设计认识不够,经验不足,难免在设计的整体框架中,有很多的细节没有考虑。我们的指导老师:刘喜峰老师并没有指责,而是给予我们鼓励和很多宝贵的建议,并且悉心引导,给予我们一个比较清晰的设计思路。我们沿着这条经验之路,不断地尝试摸索,慢慢地也掌握了设计的基本流程和思考的方法。我们遇到了很多的难题,比如硬件器件的选择,功能的实现等。然而这样的问题并不是我一个能所能解决的,幸运的是有我们的指导老师的悉心指导和小组搭档的全心帮助,所以一个个看似复杂的问题便迎刃而解。最后我还要再次深深地感谢刘喜峰老师、各位小组成员,正是基于刘老师的悉心指点和大家的全心的帮助,我才能比较顺利地完成毕业设计。谢谢你们.参考文献[1]李维提,郭强.《液晶显示应用技术》北京:电子工业出版社,2000年.[2]北京精电蓬远显示技术有限公司.内藏KS0108B/HD61202控制器图形液晶显示模块使用手册.[3]赵茂泰.《智能仪器原理及应用》北京:电子工业出版社,2001。[4]赵新民.《智能仪器原理及设计》哈尔滨工业大学出版社,1995。[5]徐爱钧,彭爱华.《单片机高级语言C51应用程序设计》〔M〕.北京工业出版社,1999。[6]严蔚敏吴伟民。《数据结构》清华大学出版社,1996[7]马忠梅等.《单片机的C语言应用程序设计》北京:北京航空航天大学出版社,1997[8]李刚林凌王焱编著新概念单片机教程.天津大学出版社,2004年[9]华成英.童诗白.《模拟电子技术基础第三版》北京:高等教育出版社,2004.4.[10]丁元杰.《单片微机原理及应用》.北京:机械工业出版社,1993[11]何立民.《MCS-51系列单片机应用设计》、系统配置与接口技术.[12]陈宝江.翟涌,张幽彤.《MCS单片机应用系统实用指南.》[13]康华光主编电子技术基础:模拟部分武汉:高等教育出版社,1999年附录附录一硬件设计主电路图附录二检测主程序程序#include<AT89X52.H>#include<ctype.h>#include<string.h>#include<stdlib.h>#include<stdio.h>#include<math.h>#include<LCD.h>voidinit_cpu(){EA=1; TR0=1; TR1=1; TMOD=0x11; TH1=0x3c; TL1=0xb0;}/*voidtime1(void)interrupt3using1 {TH1=(65536-50000)/256; TL1=(65536-50000)%256;keyval=P1;}voidmain_menu_initial() { main1_menu[0].menu_count=4; main1_menu[0].display=measurearray; main1_menu[0].subs=NULL; main1_menu[0].children_menus=measure_menu; main1_menu[0].parent_menus=NULL; }voidmeasure_menu_initial(){measure_menu[0].menu_count=2;measure_menu[0].display=qr;measure_menu[0].subs=start_measure_function;measure_menu[0].children_menus=NULL;measure_menu[0].parent_menus=main1_menu;measure_menu[1].menu_count=2;measure_menu[1].display=qx; measure_menu[1].subs=NULL;measure_menu[1].children_menus=NULL;measure_menu[1].parent_menus=main1_menu; }time_menu_initial()//voidled_menu_pro(){ max_item=menu_led->menu_count; switch(keyval) { case0:break; case1: if(user_choosen==0) { user_choosen=max_item; } shuaxin=1; user_choosen--; break; }if(shuaxin) {Clr_Scr(); shuaxin=0; } led_menu_show(); }voidled_menu_show() { ucharn; max_item=menu_led->menu_count; if(max_item>=4) { for(n=0;n<4;n++) {draw_bmp(n*2,20,96,0,menu_led[n].display); } select_item(user_choosen); } else { switch(temp_choosen) {case0: draw_bmp(0,20,96,0,measurearray); break; default: break; } for(n=0;n<max_item;n++) { draw_bmp((n+1)*2,20,32,0,menu_led[n].display); } select_item(user_choosen+1); } } voidselect_item(ucharn){ draw_bmp(n*2,2,16,0,curflag);}voidstart_measure_function(void){main_Menu();}main(){init_cpu();Init_Clock();init_lcd();Disp_Img(FirstPage);delay(2000);ClockMsg();Refresh();delay(2500);Clr_Scr();main_Menu();Clr_Scr();main_menu_initial();measure_menu_initial();store_menu_initial();time_menu_initial();communication_menu_initial(); while(1){keyval=get_key(); led_menu_pro();}}附录三ADC0832程序#defineuintunsignedintuchark,i,j;floatxdatalv;sbitADCS=P3^1;ucharxdatadsw[20];ucharxdatavalue[149];ucharcodetable[]={0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*".",0*/};unsignedintAdc0832(unsignedcharchannel){uchari=0;ucharj;uintdat=0;ucharndat=0;if(channel==0)channel=2;if(channel==1)channel=3;ADDI=1;_nop_();_nop_();ADCS=0;_nop_();_nop_();ADCLK=1;_nop_();_nop_();ADCLK=0;_nop_();_nop_();ADCLK=1;ADDI=channel&0x1;_nop_();_nop_();ADCLK=0;_nop_();_nop_();ADCLK=1;ADDI=(channel>>1)&0x1;_nop_();_nop_();ADCLK=0;ADDI=1;_nop_();_nop_();dat=0;for(i=0;i<8;i++){dat|=ADDO;ADCLK=1;_nop_();_nop_();ADCLK=0;_nop_();_nop_();dat<<=1;if(i==7)dat|=ADDO;}for(i=0;i<8;i++){j=0;j=j|ADDO;ADCLK=1;_nop_();_nop_();ADCLK=0;_nop_();_nop_();j=j<<7;ndat=ndat|j;if(i<7)ndat>>=1;}ADCS=1;ADCLK=0;ADDO=1;dat<<=8;dat|=ndat;return(dat);}voidmain_Menu(){Clr_Scr();CS2=1;CS1=0;hz_disp16(0,32,1,jiaquan);delay(2000);do{/*k=Adc0832(0);l=k/255.0*100.0; ltemp=floor(l); dsw[0]=ltemp/10; dsw[1]=ltemp%10;//sprintf(dsw,"%2.3f",l);//dsw[0]=1;switch(dsw[0]){case0:sz_disp16(2,32,1,sz0);break;case1:……sz_disp16(2,32,1,sz9);}switch(dsw[1]){case0:sz_disp16(2,40,1,sz0);break;case1:……sz_disp16(2,40,1,sz9);}*///sz_disp16(2,40,1,sz0);/*tra(dsw); CS2=1;CS1=0;sz_disp16(2,56,1,value);}while(P1_3);}附录四按键程序#definenullkey0ucharget_key(){ ucharpass,kcodebuf; staticucharlastkcode,keytime=0; staticucharhavekey=0; staticucharkeylock=0; kcodebuf=P1&0xff; keytime++; if(kcodebuf!=lastkcode)keytime=0; if(kcodebuf==0xff) {havekey=0; keylock=0; keytime=0; pass=0;} …… elsepass=nusekey; lastkcode=kcodebuf;return(pass);} /*ucharget_key() elsepass=nusekey;return(pass);}*/附录五时钟程序sbitRST2=P3^5;sbitCLK=P3^6;unsignedcharCurtime[7];idataunsignedcharday,sec,min,hour,date,month,year,hms,n,fla_cou;unsignedcharcodeyejing[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};voidInputByte(unsignedcharDate);voidWriteTo1302(unsignedcharAddr,unsignedcharDate);ReadFrom1302(unsignedcharAddr);voidSetTime(unsignedchar*pSecDa);voidGetTime(unsignedcharCurtime[]);voidInit_T0(void);voidFlashKey(void);voidAdd(void);voidInit_Clock(void);voidRefresh(void);voidStartMenu(void)voidClockMsg(void){Clr_Scr();CS2=1;CS1=0;hz_disp16(1,32,1,xing);CS2=0;CS1=1;hz_disp16(3,0,1,yue);}voidInputByte(unsignedchardat){unsignedchari;ACC=dat;for(i=8;i>0;i--){IO=ACC0;CLK=1;CLK=0;ACC=ACC>>1;}}OutputByte(void)voidSetTime(unsignedchar*pSecDa){……WriteTo1302(0x8e,0x00);for(i=7;i>0;i--){WriteTo1302(Addr,*pSecDa);pSecDa++;Addr+=2;}WriteTo1302(0x8e,0x80);}voidGetTime(void){……for(i=0;i<7;i++){Curtime[i]=ReadFrom1302(Addr);Addr+=2;}sec=Curtime[0];……//Min//hour//day//date//month//year}voidInit_T0(void){TMOD=0x01;TH0=0x3c;}voidT0_flash(void)interrupt1voidFlashKey(void)voidAdd(void)voidInit_Clock(void)voidRefresh(void)voidAdd(void){if(P1_2==0){while(P1_2==0)Refresh();if(KT==1){hms++;switch(n){case1:year=hms;break;}if((sec&0x0f)==0x0a){sec&=0xf0;sec+=0x10;}if(day==8){day=1;}if((sec&0xf0)==0x60){sec&=0x0f;}if(((date&0xf0)==0x30)&((date&0x0f)==0x02)){date&=0x00;} if(((month&0xf0)==0x10)&((month&0x0f)==0x03)){month&=0x00;} if((year&0xf0)==0xa0){year&=0x0f;}Curtime[0]=sec;Curtime[1]=min;……SetTime(&Curtime[0]);}voidInit_Clock(void){K1=1;K2=1;K3=1;K4=1;K5=1;K6=1;K7=1;KT=0;n=0;Init_T0();}voidRefresh(void){GetTime();CS1=1;CS2=0;if(K6){sz_disp16(5,40,1,shuzi[sec&0x0f]);sz_disp16(5,32,1,shuzi[sec>>4]);}else{hz_disp16(5,32,1,kongbai2);}if(K5){sz_disp16(5,8,1,shuzi[min&0x0f]);sz_disp16(5,0,1,shuzi[min>>4]);}else{hz_disp16(5,0,1,kongbai2);}voidState(void){CS1=1;CS2=0;if(KT==1){hz_disp16(1,32,1,tiao); hz_disp16(1,48,1,shi2);}else{hz_disp16(1,32,1,kongbai2); hz_disp16(1,48,1,kongbai2);}附录六液晶程序sbitRST=P2^0;sbitE=P2^1;#defineDisp_On0x3f#defineDisp_Off0x3e#defineCol_Add0x40#definePage_Add0xb8#defineStart_Line0xc0unsignedcharcodemeasurearray[] u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《施工图设计》课件
- 河南省焦作市马村区2025年四年级数学第二学期期末学业水平测试模拟试题含答案
- 《抗菌药物知识培训》课件
- 《特殊类型糖尿病》课件
- 银行业客户经理营销业绩绩效衡量表
- 通知生产部线体设备检修安排调整通知函(5篇)
- 中考英语翻译题型试题讲解
- 跨部门协作效率提升方案
- 保洁员礼仪知识掌握程度测试题
- 河南省洛阳市廛河回族区2025-2026学年数学四年级下学期期末质量检测试题含答案解析
- 2026木材干燥技术创新与质量控制标准报告
- 2026广东江门市公安局警务辅助人员招聘161人(第二批)考试备考题库及答案解析
- 26新五年级上册语文第一次月考检测卷1-2单元
- 【2026公开课】Unit 2 My friends PA Let's learn 教学课件
- 第5课 中国人民站起来了 第2课时 课件(内嵌视频)2026-2027学年道德与法治五年级上册统编版
- IEC 60335-2-9-2024 中文版 家用和类似用途电器安全 烤箱、灶、炉及类似器具特殊要求
- 《5. 睡眠要充足》课件2
- 劲性钢骨梁柱施工方案
- 2026年人文知识竞赛通关题库含答案详解【培优】
- 2026中国印刷电路板组装服务行业现状规模与投资前景预测报告
- 危货运输安全全程管控方案
评论
0/150
提交评论