• 572.00 KB
  • 2022-04-22 13:51:29 发布

自动灭火系统毕业设计论文.doc

  • 42页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'武汉理工大学毕业设计(论文)自动灭火系统毕业设计论文1绪论1.1课题背景火灾,作为一种具有突发性和强破坏性的灾害现象,严重危害人类生命财产安全和自然环境。据统计,在众多的灾种中,火灾造成的直接损失约为地震的5倍,仅次于干旱和洪涝,而火灾发生的频度则居于各灾种之首。千百年来,人类和火灾进行了长期的斗争,积累了许多防火、灭火的经验教训。随着社会的不断发展,人们对于火灾的认识不断加深,针对火灾初期不同特征的各种探测方法越来越多。人类逐步掌握了火的燃烧机理,燃烧条件和燃烧发展的过程,创造了各种各样防火、灭火的方法。在上世纪70年代后期,开始出现一门新兴的多学科交叉应用基础科学,火灾科学,其中心内容就是用现代高科技手段研究火灾发生、发展和防治的机理和规律,为火灾防治提供新的思想、理论和方法,使得人类对火灾的研究进入了科学化、系统化的轨道,并促进了防火、灭火技术的进步。本文基于上述考虑,通过研发全自动灭火控制系统,满足了用户的不同使用环境的需要。通过温度传感器和烟雾传感器检测出信号,也可通过控制电路使电话自动拨号(119),并报告现场地址。这对有效、快速扑救具有积极意义。本系统适用于各种消防环境,尤其适合于不能用水做灭火介质的地方,如图书馆、档案馆、计算机房等处。因单片机集成度高,故该装置具有结构简单,可靠性高,成本低等优点。1.2自动灭火系统设计的意义仓库自动报警灭火系统。美国现在已制定了相关规范对其推广,英国、澳大利亚、也在使用,实践证明仓库内安装该系统能够扑救仓库初期火灾,保护仓库财产安全,降低火灾损失以及为抢救货物提供足够的时间并能及时报警。随着我国自动报警灭火系统的不断发展,自动报警灭火系统大大的降低了火灾的危害性,把火灾给人们带来的经济损失将到了最低,为确保人的生命及财产安全提供了保障。-42- 武汉理工大学毕业设计(论文)在本次自动报警灭火系统采用了烟雾传感器之间的互锁模式进行控制,避免了因烟雾在仓库中的扩散而引起的其他非着火区域的错误报警与灭火,大大减少了系统的误报率,有很强的实用意义。且在本次设计中还采用了先报警后灭火的报警灭火模式,给管理人员提供了有效的火灾确认时间,大大减少了因误报带来的损失,具有很强的实用价值。1.3自动灭火系统的总体设计方案单片机温度传感器信号处理电路烟雾传感器AD转换器液晶显示设定阀值驱动电路灭火装置的启动故障复位报警电路电压比较器图1-1设计原理框图图1-1基本上完整的说明了整个系统硬件部分的设计思路,首先是外界的温度信号和烟雾浓度信号被我们采集,然后通过转化,这里需要做一下说明,由于温度传感器选用的是集成的DS18B20,自带AD转换,而烟雾传感器输出的信号作为辅助判断,我们为了节约成本,只需要知道其是否在危险范围内,因此通过简单的电压比较器即可实现(具体见后文),输入信号进入单片机后,即可由MCU进行判断,然后通过一系列I/O端口发出电平信号,来驱动外界的灭火设备。我们可以通过连接的键盘,达到故障复位,阀值设定等。我们可参考附录的总体电路图,键盘部分、声光报警部分、驱动电路部分均是通过软件编程来控制其运行的。-42- 武汉理工大学毕业设计(论文)2自动灭火系统中火灾探测器的选择2.1概述对于一个自动灭火系统更而言,火灾探测器像是整个系统的一扇窗户,是对外界信息就行读取的渠道,它的重要性也就不言而喻了。如何正确有效的选取火灾探测器,对于整个自动灭火系统有着实质性的影响。下面我们现对火灾发生的相关特征进行简单的了解,以确定我们需要从哪些方面来进行火灾的检测。火灾初期有阴燃阶段,产生大量的烟和少量的热,很少或没有火焰辐射,火灾中期发展迅速,产生大量热、烟和火焰辐射。我们针对现场的这些信息收集,诸如温度、烟雾浓度(产生的气体)、火焰等,来判断火灾是否发生,这是火灾探测基本思路。因此,我们可以很清楚的知道了探测器需要完成的任务,即对温度、烟雾浓度、火焰等相关信息的获取。鉴于本次自动灭火系统主要适用于计算机房、通讯机房、配电房、油浸变压器、自备发电机房、图书馆、档案室、博物馆及票据、文物资料库等场所,我们可以通过对温度和烟雾浓度的检测来判断火灾是否发生。由于场所的不定性,在不同高度的建筑物设置火灾探测器时可参照表2-1的规定。表2-1点型感烟、感温火灾探测器的实用高度房间高度(m)感烟探测器感温探测器一级二级三级12,数据P0口输入,引脚P2.6,P2.7和P3.6,P3.7的电平设置见表3-4,PSEN为低电平,RST保持高电平,EA/引脚是编程电源的输入端,按要求加上编程电源,ALE/PROG引脚输入编程脉冲(负脉冲)。编程时,可采用4—20MHz的时钟震荡器,AT89C51编程方法如下:1在地址线上加上要编程单元的地址信号。2在数据线上加上要写入的数据字节。3激活相应的控制信号。4在高电压编程方式时,将EA/端加上+12V编程电压。5每对Flash存储阵列写入一个字节或每写入一个程序加密位,加上一个ALE/PROG编程脉冲。改变编程单元的地址和写入的数据,重复1—5步骤,直到全部文件编程结束。每个字节写入周期是自身定时的,通常约为1.5ms。4.2.6数据查询AT89C51单片机用数据查询方式来检测一个写周期是否结束,在一个写周期中,如需读取最后写入的那个字节,则读出的数据的最高位(P0.7)是原来写入字节最高位的反码。写周期完成后,有效的数据就会出现在所有输出端上,此时,可进入下一个字节写周期,写周期开始后,可在任意时刻进行数据查询。4.2.7Ready/Busy字节编程的进度可通过“RDY/BSY”输出信号监测,编程期间,ALE变成高电平“H”后P3.4(RDY/BSY)端电平被拉低,表示正在编程状态(忙状态)。编程结束后,P3.4变为高电平准备就绪状态。4.2.8复位电路在振荡,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片器运行时机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的0000H处开始运行程序。该芯片的复位脚为9脚,所以复位电路接STC89C52RC的9脚,具体电路如下图所示。当采用的晶体频率是6-42- 武汉理工大学毕业设计(论文)MHZ时,可取C=22UF,R=1K;当采用的晶体频率为12MHZ时,可取C=10UF,R=8.2K。不过这都是最佳的组合,也可以有其它大小的电容电阻,只要符合电路要求就可以,如本文就采用22UF的电容和10K的电阻。图4-3复位电路4.3AT89C51与上位机的接口电路本次的串口通信的设计主要是考虑到其可扩展性进行设计的,由于灭火系统可能用于多点和网络型的实时监测,这对于数据的处理要求较高,需要接到上位机PC,为此我们设计了一个基于RS232的串口通信,以备扩展需要,下面就基于RS232的串口通信做简单的介绍。1.RS232协议标准RS232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5V~+15V,负电平在-5V~-15V电平。当无数据传输时,线上为TTL电平,从开始数据传输到结束,线上电平从TTL电平到RS232电平再返回TTL电平。接收器典型的电平在+3V~+12V与-3V~-12V。由于发送电平与接收电平的差仅为2~3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传输距离最大为约15m,最高速率为20kbps。2.MAX232简介RS232用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态规定不通,因此要用RS232总线进行串行通信时需外接电路以实现电平转换。在发送端用驱动器将TTL电平转换成RS232电平,在接收端用接收器将RS232电平再转换成TTL电平。MAX232内部有电荷汞电压转换器,可将+5V电源变换成RS232所需的±10V电压,以实现电压的转换,既符合RS232的技术,又可实现+5V单电源供电,所以MAX收发器电路给短距离串行通信带来极大的方便。-42- 武汉理工大学毕业设计(论文)3.硬件连接    单片机有一个全双工的串行通讯口,所以单片机和计算机之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,计算机的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,采用专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。采用三线制连接串口,也就是说和计算机的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。电路如图4-4所示,MAX232的第11脚和单片机的11脚连接,第12脚和单片机的10脚连接,第15脚和单片机的20脚连接。图4-4基于rs232串口通信电路-42- 武汉理工大学毕业设计(论文)5自动灭火系统外接硬件系统5.1报警部分本次报警部分分2个部分,一个是LED灯光的闪烁,一个是蜂鸣器的报警。LED报警:由2个不同颜色的二极管组成,分别接到单片机的P0.5和P0.6,其中P0.5为黄色,预警,即烟雾浓度指示灯,当烟雾浓度不满足测试值时便开始发光;P0.6端口接红色LED,即温度超过阀值便开始不停的闪烁(闪烁容易引起人们的注意),发出火灾警告。蜂鸣器报警下图6-1为声音报警部分的电路图,通过简单的三极管Q9014驱动电路和蜂鸣器构成,其中一个电阻是偏置电阻,给三极管提供偏置电压。这个电路的工作过程可简单的描叙如下:驱动电路的输入端与单片机的I/O口相连,当I/O口输出一个高电平,三极管Q的基极B得到高电平,三极管导通,电流从VCC经集电极C流向发射极E,并流入蜂鸣器BP,这样蜂鸣器BP得到工作电流而发出“滴滴”的提示音。图5-1蜂鸣器报警电路5.2自动灭火电路驱动部分-42- 武汉理工大学毕业设计(论文)5.2.1概述本部分由两组构成,一组用来作为初级阶段的火灾驱动,一组作为下一阶段的火灾驱动,具体的灭火设备和选用的物质和现场紧密相关的。5.2.2固态继电器SRR固态继电器又名固态开关。是一种新颖的四端以弱控器的无触点功率控制元件。一般施加输入信号后其主控回路呈导通状态,无信号时呈阻断状态,固态继电器为一个四端组件:两个输入控制器,两个输出受控端。它由三部分组成:输入控制部分、隔离部分及输出受控部分。输入控制部分一般由限流电阻或恒流电路及光电二极管组成;隔离部分一般由光电隔离器组成,也有用变压器隔离的。输出部分一般由光敏控制器、电压过零控制器、驱动器、可控硅及阻容吸收部分组成,固态继电器的如图6-2所示。恒流电路发光二极管过零控制器光敏检测器与门驱动器可控硅图5-2SRR的结构组成示意图5.2.3固态继电器特点(1)输入控制电压低(3~14V),驱动电流小(3~15mA),输入控制电压与TTL、DTL、HTL电平兼容,直流或脉冲电压均能作输入控制电压;(2)输出与输入之间采用光电隔离,可实现在以弱控强的同时,做到强电与弱电完全隔离,两部分之间的安全绝缘电压大于2kV,符合国际电气标准UL的器件;(3)输出无触点、无噪音、无火花、开关速度快;-42- 武汉理工大学毕业设计(论文)(4)输出部分内部一般含有RC过压吸收电路,以防止瞬间过压而损坏固态继电器;(5)有多种规格可选择:输入有电阻限流直流、恒流直流、交流等类型。输出有直流输出方式和交流输出方式。输出额定电压有(220~380V)交流电压及(30~180V)直流电压。交流输出中有过零触发型和非过零触发型(移相型);(6)过零触发型固态继电器对外界的干扰非常小;(7)采用环氧树脂全灌封装,具有防尘、耐湿、寿命长等优点。5.2.4驱动电路部分如下为图6-3,当AT89C51输出为高电平信号时,经过或非门后为低电平信号固态继电器SSR导通,使电磁阀开通,从而达到自动喷淋效果。相反,输出为低电平信号时,经过或非门为高电平信号,固态继电器SSR截止。图5-3SRR驱动电路5.3灭火相关的知识一些介绍按照燃烧原理,一切灭火方法的原理是将灭火剂直接喷射到燃烧的物体上。或者将灭火剂喷洒在火源附近的物质上,使其不因火焰热辐射作用而形成新的火点。以下为几种常用的方法:冷却灭火法: 这种灭火法的原理是将灭火剂直接喷射到燃烧的物体上,以降低燃烧的温度于燃点之下,使燃烧停止。或者将灭火剂喷洒在火源附近的物质上,使其不因火焰热辐射作用而形成新的火点。冷却灭火法是灭火的一种主要方法,常用水和二氧化碳作灭火剂冷却降温灭火。灭火剂在灭火过程中不参与燃烧过程中的化学反应。这种方法属于物理灭火方法。隔离灭火法:-42- 武汉理工大学毕业设计(论文)隔离灭火法是将正在燃烧的物质和周围未燃烧的可燃物质隔离或移开,中断可燃物质的供给,使燃烧因缺少可燃物而停止。具体方法有:1、把火源附近的可燃、易燃、易爆和助燃物品搬走; 2、关闭可燃气体、液体管道的阀门,以减少和阻止可燃物质进入燃烧区;3、设法阻拦流散的易燃、可燃液体; 4、拆除与火源相毗连的易燃建筑物,形成防止火势蔓延的空间地带。窒息灭火法:窒息灭火法是阻止空气流入燃烧区或用不燃烧区或用不燃物质冲淡空气,使燃烧物得不到足够的氧气而熄灭的灭火方法。具体方法是:1、用沙土、水泥、湿麻袋、湿棉被等不燃或难燃物质覆盖燃烧物;2、喷洒雾状水、干粉、泡沫等灭火剂覆盖燃烧物; 3、用水蒸气或氮气、二氧化碳等惰性气体灌注发生火灾的容器、设备;4、密闭起火建筑、设备和孔洞;5、把不燃的气体或不燃液体(如二氧化碳、氮气、四氯化碳等)喷洒到燃烧物区域内或燃烧物上。目前市场上存在的灭火设备大多基于以上几种灭火原理设计而成的,对于不同的场所和情况,我们可以灵活的安装和选用灭火设备,以达到最佳的经济效益和灭火效果。5.4显示部分本次的显示部分采用4位的七段共阴数码管显示,部分电路如5-1图所示,通过P2端口提供段选信号来点亮各位和小数点,再通过p0.1、p0.2来进行位选信号的输出,即每次输出的数据送到个位、十位还是百位或是小数位,也就是动态显示。七段数码管有不同的尺寸,以适应不同场合的需要。它的七个显示段可以独立地控制发光或者熄灭,这样一来不同段组合的就形成了不同的数字或者英文字母。所谓共阴就是7个数码管的负极相连接到GND,而正极由我们来控制;共阳就是这7个发光二极管的正极相连,接到电源正极,而负极则是有我们来控制。在实际的应用中选择共阴或是共阳取决于设计的方便性,本次我们采用共阴。-42- 武汉理工大学毕业设计(论文)图5-4显示电路5.5键盘的设计思路键盘在单片机应用系统中能实现向单片机输入数据、传送命令等功能,是人工干预单片机的主要手段。按键是一种常开型按钮开关。平时(常态时),按键的两个触点处于断开状态,按下键时它们才闭合(短路)。本次键盘采用最简单的上拉电阻和开关与单片机接口相连,由于本次I/O端口的数目足够,故直接与8个端口相连构成8键组成的键盘系统,可参考总电路图,其功用如下:启动、停止、确认、取消、数字加1、数字减1、设置、空白键(为了设计时可以做成4*2)。启动与停止是通过中断来实现的,分别接单片机的INT0和INT1,主要适用于人为的控制系统的运作,即启动按下,不管外界的情况如何,SSR1SRR2控制端输出高电平,整个灭火设备进入工作状态;设置键、确认、取消、数字+1、数字-1是用来调节温度上限设定的阀值,即报警预设值的设定,初始状态我们给它设定为70摄氏度,可以人为根据现场的环境来增减。CPU通过中断响应和随机扫描两种方式来获取键盘的信号,然后转到内部的程序来执行相应的步骤,具体的可参考程序流程图部分-42- 武汉理工大学毕业设计(论文)6自动灭火系统软件设计介绍软件流程是程序编写的核心,也是整个控制系统工作的核心思想,因此一个合理有效的流程构思显得尤为重要。主程序的主要功能是负责读取烟雾浓度信号,温度的实时显示,读出并处理DS18B20的当前温度值,同时通过扫描和中断来调用键盘子程序达到阀值调整、故障人工操作等。如图7-1为整个程序的主程序流程图。图6-1主程序流程图参照附录的汇编程序做下简单的部分原理解释,系统初始化主要是对波特率的设置,单片机与上位机之间的传输是串口,因此需要一个8位的UART,对波特率设置是必须的;同时也对中断的允许位进行了设定,中断申请是靠外部的INTO和INT1输入电平来决定,一旦提出了中断申请,立马转去执行中断子程序SETUP和STOP;系统初始化完成后,转去判断烟雾输入电平的高低,从而进行初步火灾的判断,决定是否执行启动2路继电器,无论怎样都要转去执行温度本分的信号采集和比较,这部分也是本次程序设计的核心和难点。DS18B20的初始化步骤如下:-42- 武汉理工大学毕业设计(论文)(1)先将数据线置高电平“1”。(2)延时(该时间要求的不是很严格,但是尽可能的短一点)(3)数据线拉到低电平“0”。(4)延时750微秒(该时间的时间范围可以从480到960微秒)。(5)数据线拉到高电平“1”。(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。(8)将数据线再次拉高到高电平“1”后结束。接下来要进行的是DS18B20的写操作如下为操作步骤:(1)数据线先置低电平“0”。(2)延时确定的时间为15微秒。(3)按从低位到高位的顺序发送字节(一次只发送一位)。(4)延时时间为45微秒。(5)将数据线拉到高电平。(6)重复上(1)到(6)的操作直到所有的字节全部发送完为止。(7)最后将数据线拉高。如下为DS18B20的读操作步骤:(1)将数据线拉高“1”。(2)延时2微秒。(3)将数据线拉低“0”。(4)延时15微秒。(5)将数据线拉高“1”。(6)延时15微秒。(7)读数据线的状态得到1个状态位,并进行数据处理。(8)延时30微秒。完成DS18B20温度的读取,然后与设定的上限值进行比较,决定是否启动2路继电器和相关的报警措施。同时要对键盘进行扫描,确定是否改变温度上限值,可参考键盘子程序部分KEYWORK,主要能实现的内容如下,按下设置键,开始进入温度上限改变的程序,按+,个位会自动增加1,如果超过10,则执行个位清零,十位+1,:按下-,则个位会自动减1,如果个位数字为0,则执行十位减1,个位数值变为9。接下来如果收到COFIRM,则设定的数值就成功了,若是DELE,则取消设置,保存原有的数值,转到主程序继续执行。-42- 武汉理工大学毕业设计(论文)7结论本次毕业设计历时3个月,期间各种查阅资料,询问老师相关的前沿信息,终于在今天基本上完成所有的设计包括说明书的撰写,心里异常的高心,在此先要感谢我的指导老师黎水平老师,再要感谢下平时相互讨论的同学和学校方面的督促,在你们的帮助下,我才得以完成本次毕业设计。在拿到自动灭火这个课题时,首先要做的事就是对课题的任务,要求和条件进行仔细的分析和研究,找出关键问题,根据关键问题提出实现的原理和方法,并画出原理框图。原理方案确定好了之后就是细节部分的研究,这也是非常的复杂,单就传感器的选择就要考虑各种因素,加上本次的设计对场所的不定性要求,我尽量比较全面的考虑问题,以使整个系统有足够强的扩展性,可以在多种场合有其一定程度的价值性。当所有的因素的排除或考虑以后,先对电路图进行了绘制,采用了Protel绘制的。后期主要是软件方面的设计,由于本次传感器的特性,软件实质是整个系统的核心。鉴于之前对于单片机的编程掌握程度不够,这次设计之前大量的阅读和查阅相关的程序,然后用汇编语言进行了本次软件的编写,再次也多亏了相关书籍的帮助。本次毕业设计使我对本专业有了个更加完美的认识,更进一步的认识到测控技术与仪器的研究领域,我想这期间的经验将对我以后工作生活学习产生不可磨灭的影响。-42- 武汉理工大学毕业设计(论文)参考文献[1]张宏林.VisualC++串口通信与工程实践[M].北京:人民邮电出版社,2008.[2]赖寿宏主编.微型计算机控制技术.北京:机械工业出版,2003.[3]徐爱钧.单片机高级语言C51应用程序设计[M].北京:电子工业出版社,2002.[4]杨欣.51单片机从零开始[M].北京:清华大学出版社,2009.[5]谢自美.电子线路设计.实验.测试(第二版)[M].武汉:华中科技大学出版社,2000.[6]江国强.现代数字逻辑电路.北京:电子工业出版社,2002.[7]张国雄.测控电路.北京:机械工业出版社,2002.[8]李刚.现代测控电路.北京:高等教育出版社,2004.[9]赵茂泰.智能仪器原理及应用.北京:电子工业出版社,1999.[10]施文康.检测技术.北京:机械工业出版社,2002.[11]陈守仁.自动检测技术及仪表.北京:机械工业出版社,1998.[12]王永华.现代电气控制及PLC技术.北京:北京航空航天大学出版社,2003:[13]陈立定.电器控制于可编程控制器.广州:华南理工大学出版社,2001:[14]姜文源.建筑火灭设计手册.北京:中国建筑工业出版社,1997:[15]盛建.火灾报警自动消防系统.北京:天津大学出版社,2001[16]WestGermany.IntersectionWithoutSignals[M].ProceedingofanInternationalWorkshop16-18March,1998.[17]RichardonB,RodriquezD.ITSindevelopingcountries:strategicopportunities[J].InITSQuartely,1997.-42- 武汉理工大学毕业设计(论文)致谢首先感谢指导老师黎水平不吝赐教,这些日子对我们多方监督通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学四年的学习成果。虽然在这次设计中对于知识的运用和衔接还不够熟练,但是我将在以后的工作和学习中继续努力、不断完善。这三个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的学习和发展打下了良好的基础。回首在工大的学习生活,有苦有乐,感谢很多老师给予我的关心,爱护和栽培。四年的生活与07级的众同学朝夕相处,在即将毕业的前夕祝愿大家把这段回忆永远存在心中。我敬爱的父母二十多年来为我的成长费尽心血,倾注了无微不至的爱,他们的殷切希望也是我前进的动力。由于自身水平有限,设计中一定存在很多不足之处,敬请各位老师批评指正。-42- 武汉理工大学毕业设计(论文)附录A:程序(汇编语言)单片机内存分配申明!*************************************************LED0EQUP0.0;数码管小数位位选LED1EQUP0.1;数码管个位位选LED2EQUP0.2;数码管十位位选LED3EQUP0.3;数码管百位位选TEMPHEQU31H;用于保存读出温度的高8位TEMPLEQU30H;用于保存读出温度的低8位DIS0EQU40H;显示缓冲寄存器小数位DIS1EQU41H;显示缓冲寄存器个数位DIS2EQU42H;显示缓冲寄存器十数位DIS3EQU43H;显示缓冲寄存器百数位TEMPHCEQU44H;温度转换寄存器高8位TEMPLCEQU45H;温度转换寄存器低八位TMSETVHEQU33H;报警上限设定值BT_VLEQU34H;当前显示数据DISH_VLEQU24H;报警上限个位数存放内存位置DISH_VHEQU23H;报警上限十位数存放内存位置TEMPER_LEQU35H;用于保存读出温度的低8位TEMPER_HEQU36H;用于保存读出温度的高8位TMROMVHEQU37H;报警上限;**************************************************CHK_0BITP3.2;数据脚定义CHK_1BITP3.3CHK_2BITP1.2CHK_3BITP1.3CHK_4BITP1.4CHK_5BITP1.5CHK_6BITP1.6CHK_7BITP1.7;**************************************************ORG0000H;程序入口地址AJMPSTARTORG0003HLJMPSETUPORG0013HLJMPSTOPSTART:MOVTMOD,#20H;波特率设置MOVTL1,#0E8H;送初值的低8位-42- 武汉理工大学毕业设计(论文)MOVTH1,#0E8HSETBEA;CPU允许中断请求SETBEX1;允许外部中断源1中断SETBEX0;允许外部中断源0中断CLRET1;定时器T1中断允许位置0SETBTR1;启动T1MOVSCON,#40HMOVPCON,#00HCLRES;禁止串行口中断MOVR0,#40HMOVR2,#04HJNBP1.0SRR2SRR2:SETBP3.7CLRP0.5;-------------------------------------------MOVP1,#0FFH;MOVP2,#0FFH;MOVDISH_VL,#00H;MOVDISH_VH,#00H;MOVTEMPH,#00H;MOVTEMPL,#00H;MOVTMSETVH,#32H;报警预设上限值;**************************************************LCALLSET_18B20;先复位DS18B20MOVA,#0CCH;跳过ROM匹配LCALLWRITE_18B20;MOVA,#0B8H;发出读温度命令LCALLWRITE_18B20;LCALLGET_TEMPER;调用读温度子程序LCALLCONVTEMP;温度BCD码计算处理子程序LCALLDISPBCD;显示区BCD码温度值刷新子程序;**************************************MOVA,TMSETVH;调上限设置值到调整显示寄存ANLA,#0FH;MOVDISH_VL,A;MOVA,TMSETVH;SWAPA;ANLA,#0FH;MOVDISH_VH,A;;****************************************MAIN:MOVTEMPHC,#00H;给转换寄存器高8位清零MOVTEMPLC,#00H;给转换寄存器低8位清零-42- 武汉理工大学毕业设计(论文)JNBCHK_0,KEYWORK;判断按键是否按下JNBCHK_1,KEYWORKJNBCHK_2,KEYWORKJNBCHK_3,KEYWORKJNBCHK_4,KEYWORKJNBCHK_5,KEYWORKJNBCHK_6,KEYWORKJNBCHK_7,KEYWORKLCALLGET_TEMPER;调用读温度子程序LCALLCONVTEMP;调用数据处理程序LCALLDISPBCD;调用BCD码刷新子程序LCALLDISPLY;调用显示子程序LCALLBT_WORK;调用当前值转换子程序LCALLEMGERCY;调用报警程序LCALLTRSA;调用发送程序AJMPMAIN;转主程序;****************************************KEYWORK:KEYWORK1:LCALLDELAYT;调延时去抖;****************************************JNBCHK_0,K0WORKCHK_0是否按下,按下转LCALLDELAYTJNBCHK_1,K1WORK;CHK_1是否按下,按下转JNBCHK_2,TEMRESETJNBCHK_7,K5WORKAJMPKEYWORK1;转去扫描按键;按键功能程序;***************************************K0WORK:CLRP0.5CLRP0.6SETBP0.7SETBP3.7AJMPKEYWORK1K1WORK:CLRP0.7CLRP3.7SETBP0.5SETBP0.6AJMPKEYWORK1TEMRESET:JNBCHK_3,K3WORKJNBCHK_4,K4WORKLCALLDELAY-42- 武汉理工大学毕业设计(论文)AJMPKEYWORK1K3WORK:INCDISH_VL;上限值+1调整程序MOVA,DISH_VL;CJNEA,#10,OUT;MOVDISH_VL,#00H;INCDISH_VH;MOVA,DISH_VH;CJNEA,#10,,OUT;MOVDISH_VH,#00H;K4WORK:DECDISH_VLMOVA,DISH_VLCJNEA,#00,OUTMOVDISH_VL,#09HDECDISH_VHMOVA,DISH_VHCJNEA,#00,OUTMOVDISH_VH,#09HOUT:JNBCHK_5,COFIRMJNBCHK_6,DELECONFIRM:MOVDIS1,DISH_VL;MOVDIS2,DISH_VH;AJMPKEYWORK1DELE:AJMPKEYWORK1K5WORK:NOPAJMPKEYWORK1;;*************************************MOVA,DISH_VL;写入设定上限值MOVTMSETVH,A;MOVA,DISH_VH;SWAPA;ORLA,TMSETVH;MOVTMSETVH,A;LCALLWRITE_18B20;;***************************************LCALLSET_18B20;先复位DS18B20MOVA,#0CCH;跳过ROM匹配LCALLWRITE_18B20;-42- 武汉理工大学毕业设计(论文)MOVA,#48H;温度上限和下值COPY回E2PRAMLCALLWRITE_18B20;AJMPMAIN;转主程序报警和驱动外设程序;*************************************EMGERCY:MOVA,BT_VL;CJNEA,TMSETVL,X0;比较当前温度与设定下限温度值LCALLBIAOJING;LJMPOUT;X0:JNCX1;LCALLBIAOJING;LJMPOUT;X1:CJNEA,TMSETVH,X2;LCALLBIAOJING;LJMPOUT;X2:JCGUAN;LCALLBIAOJING;OUT:RET;*************************************EMGERCY:CLRP0.6;开标志灯SETBP0.4;开蜂鸣器SETBP0.7RETGUAN:SETBP0.6;关标志灯CLRP0.4;关蜂鸣器RET;当前值转换子程序;************************************BT_WORK:MOVBT_VL,#00H;MOVBT_VL,DIS1;当前显示保存转换程序MOVA,DIS2;SWAPA;ORLA,BT_VL;MOVBT_VL,A;RET;;读温度子程序;**************************************GET_TEMPER:LCALLSET_18B20JBF0,TSS1RETTSS1:MOVA,#0CCHLCALLWRITE_18B20MOVA,#44H-42- 武汉理工大学毕业设计(论文)LCALLWRITE_18B20LCALLDISPLYLCALLSET_18B20MOVA,#0CCHLCALLWRITE_18B20MOVA,#0BEHLCALLWRITE_18B20LCALLREAD_18B20RET;**************************************;18B20读数程序SET_18B20:SETBP1.1NOPCLRP1.1MOVR2,#250DJNZR2,$SETBP1.1MOVR2,#30DJNZR2,$JNBP1.1,INIT1AJMPSET_18B20INIT1:SETBF0CPLP1.4MOVR2,#250DJNZR2,$SETBP1.1RETWRITE_18B20:MOVR2,#8WR0:CLRP1.1MOVR3,#6DJNZR3,$RRCAMOVP1.1,CMOVR3,#20DJNZR3,$SETBP1.1NOPNOPDJNZR2,WR0SETBP1.1RET********************************************READ_18B20:-42- 武汉理工大学毕业设计(论文)MOVR4,#4;将温度高位和低位从DS18B20中读出MOVR1,#TEMPER_L;RE0:MOVR2,#8RE1:SETBP1.1NOPNOPCLRP1.1MOVR3,#4DJNZR3,$SETBP1.1MOVR3,#4DJNZR3,$MOVC,P1.1RRCAMOVR3,#30DJNZR3,$DJNZR2,RE1MOV@R1,AINCR1DJNZR4,RE0MOVTEMPL,TEMPER_L;MOVTEMPH,TEMPER_H;MOVTMSETVH,TMROMVHMOVTMSETVL,TMROMVLRET显示子程序*****************************************DISPLY:MOVDPTR,#ZIXING;送字型码首地址MOVA,DIS0;取小数MOVCA,@A+DPTR;取对应字型码SETBLED0SETBLED1SETBLED2SETBLED3CLRLED0MOVP2,A;送字型码LCALLDELAY0MOVA,DIS1;取各位MOVCA,@A+DPTR;取对应字型码CLRACC.7;清最高位显示小数点SETBLED0SETBLED1-42- 武汉理工大学毕业设计(论文)SETBLED2SETBLED3CLRLED1MOVP2,A;送字型码LCALLDELAY0MOVA,DIS2;取十位MOVCA,@A+DPTR;取对应字型码SETBLED0SETBLED1SETBLED2SETBLED3CLRLED2MOVP2,A;送字型码LCALLDELAY0MOVA,DIS3;取百位MOVCA,@A+DPTR;取对应字型码SETBLED0SETBLED1SETBLED2SETBLED3CLRLED3MOVP2,A;送字型码LCALLDELAY0RETZIXING:DB0FH,06H,5BH,4FH,66H,6DH;共阴数码管字型码DB7DH,07H;****************************************************DISPLYT:MOVDPTR,#ZIXINGT;送字型码首地址MOVDIS0,#00HMOVA,DIS0;取小数MOVCA,@A+DPTR;取对应字型码SETBLED0SETBLED1SETBLED2SETBLED3CLRLED0MOVP2,A;送字型码LCALLDELAY0MOVA,DIS1;取各位MOVCA,@A+DPTR;取对应字型码-42- 武汉理工大学毕业设计(论文)CLRACC.7;清最高位显示小数点SETBLED0SETBLED1SETBLED2SETBLED3CLRLED1MOVP2,A;送字型码LCALLDELAY0MOVA,DIS2;取十位MOVCA,@A+DPTR;取对应字型码SETBLED0SETBLED1SETBLED2SETBLED3CLRLED2MOVP2,A;送字型码LCALLDELAY0MOVDIS3,#00HMOVA,DIS3;取百位MOVCA,@A+DPTR;取对应字型码SETBLED0SETBLED1SETBLED2SETBLED3CLRLED3MOVP2,A;送字型码LCALLDELAY0RETZIXINGT:DB0FH,06H,5BH,4FH,66H,6DH;共阴数码管字型码DB7DH,07H;延迟子程序;****************************************DELAY0:MOVR6,#1FHDEL0:MOVR5,#0BHDEL1:NOPDJNZR5,DEL1DJNZR6,DEL0RET;处理温度BCD码子程序-42- 武汉理工大学毕业设计(论文);*************************************CONVTEMP:MOVA,TEMPH;ANLA,#80H;JZTEMPC11;判断温度是否在零下?ACC=0,则跳转到TEMPC11CLRC;温度值补码变成原码MOVA,TEMPL;CPLAACC的每一位值反相;ADDA,#01H;MOVTEMPL,A;MOVA,TEMPH;CPLA;ADDCA,#00H;MOVTEMPH,A;;**************************************TEMPC11:MOVA,TEMPL;计算整数位温度BCD值ANLA,#0F0H;SWAPA;MOVTEMPL,A;MOVA,TEMPH;ANLA,#0FH;SWAPA;ORLA,TEMPL;LCALLHEX2BCD1;调用单字节十六进制转BCD子程序;************************************MOVTEMPL,A;ANLA,#0F0H;SWAPA;ORLA,TEMPHC;TEMPHCLOW=十位数BCDMOVTEMPHC,A;MOVA,TEMPL;ANLA,#0FH;SWAPA;TEMPLCHI=个位数BCDORLA,TEMPLC;MOVTEMPLC,A;MOVA,R7;JZTEMPOUT;ANLA,#0FH;SWAPA;MOVR7,A;MOVA,TEMPHC;TEMPHCHI=百位数BCDANLA,#0FH;ORLA,R7;MOVTEMPHC,A;TEMPOUT:RET;-42- 武汉理工大学毕业设计(论文);显示区BCD码温度值刷新子程序;**************************************DISPBCD:MOVA,TEMPLC;温度数据移入显示寄存器ANLA,#00H;MOVDIS0,A;显示小数MOVA,TEMPLC;SWAPA;ANLA,#0FH;MOVDIS1,A;显示个位MOVA,TEMPHC;ANLA,#0HF;MOVDIS2,A;显示十位MOVA,TEMPHC;SWAPA;ANLA,#0FH;MOVDIS3,A;显示百位MOVA,TEMPHC;ANLA,#0F0H;RET;;单字节十六进制转BCD;*************************************HEX2BCD1:MOVB,#64H;十六进制转BCD码DIVAB;MOVR7,A;R7送百位数MOVA,#0AH;XCHA,B;DIVAB;SWAPA;ORLA,BRET;;****************************************接收子程序TRSA:MOVA,@R0MOVSBUF,AJNBTI,$CLRTIINCRODJNZR2,TRSARET;*************************************DELAYT:MOVR6,#15;延时子程序DT:LCALLDISPLYTDJNZR6,DT-42- 武汉理工大学毕业设计(论文)RETSETUP:CLRP0.5CLRP0.6SETBP0.7SETBP3.7STOP:CLRP0.7CLRP3.7SETBP0.5SETBP0.6END附录2,总体电路图-42- 武汉理工大学毕业设计(论文)-42-'