《单片机在小型开水锅炉控制系统中的应用.doc》由会员分享,可在线阅读,更多相关《单片机在小型开水锅炉控制系统中的应用.doc(30页珍藏版)》请在三一办公上搜索。
1、本科毕业论文(设计)论文题目:单片机在小型开水锅炉控制系统中的应用学生姓名: 所在院系: 机电学院所学专业: 电气工程及其自动化导师姓名:完成时间:摘 要本系统是基于单片机的水暖锅炉控制,在设计中主要有水位检测、温度检测、压力检测、按键控制、水温控制、水位控制、循环控制、压力控制、显示部分、故障报警等几部分组成来实现供暖控制。主要用水位传感器检测水位,用数字温度传感器DS18B20来检测水温,用五个控制按键来实现按健控制,用三位LED显示器来完成显示部分,用变频器来控制循环泵的转速,用压力传感器检测锅炉内部压力。并且通过模数转换把这些信号送入单片机中。把这些信号与单片机中内部设定的值相比,以判
2、断单片机是否需要进行相应的操作,即是否需要打开鼓风机,是否需要开启补水泵,是否需要加快循环泵的转速等操作,从而实现单片机自动控制的目的。本设计用单片机控制易于实现锅炉供暖、而且有造价低、程序易于调试、一部分出现故障不会影响其他部分的工作、维修方便等优点。 关键词:单片机,传感器,水位,温度,自动控制 Based SCM design of heating boiler controlled syetemAbstractThe systemic design bases controller of CMS water heating of a boiler , it mostly makes u
3、p of measuring water level ,measuring a water temperature ,controlling a keys-press ,controlling a water temperature ,controlling water level ,controlling circulate ,controlling pressure ,showing a part ,giving an alarm order to realize heating controller ,the design adopts Single-Chip Microcomputer
4、 to control boiler heating .It mostly uses a temperature sensor DS18B20 to measure water temperature ,uses water level sensor to measure water level , uses a transducer to control cycle pumps rotate speed ,uses five keys-press to control key-press ,uses three light-emitting diodes display to finish
5、a display parts ,uses a transducer to control rotate speed of cycle pump ,uses a press transducer to measure press in the boiler .It sends those signals to SCM through modulus ,and hold those signals to compare with enactment in the SCM to judge whether SCM need to carry through relevant operation n
6、amely ,whether it needs to open a fan ,whether it needs to turn on a water pump ,whether it needs to quicken rotate speed of a cycle pump and so on .Consequently ,it finishes an aim of SCM auto-controller .The design makes use of the SCM to control boiler which is easy to realize boiler heating ,it
7、is cheap to manufacture ,it is easy to debug its procedure .When a part is in trouble ,it does not infect others and it is convenience to mend ,it is widely to use many of areas.Keywords: Single-Chip Microcomputer, Transducer ,Water Level , Temperature , Auto-control目 录1 绪论52 系统总体方案52.1系统框图52.2系统具体实
8、现方案53 系统硬件设计63.1单片机的配置63.2温度传感器73.3显示部分83.4变频器83.5水位传感器93.6 A/D转换器93.7 压力传感器94 系统的具体设计与实现104.1系统的总体原理图104.2单片机控制系统的流程图104.3电源电路124.4温度控制系统124.5循环泵控制部分134.6水位控制系统134.7压力控制系统154.8键盘部分154.9驱动部分电路154.10显示部分电路164.11自动报警电路165 结束语17致谢17参考文献18附页191 绪论传统的控制方式不能进行远距离的集中控制,自动化程度低,调节精度差,单靠人工操作已不能适应。由于被控对象和过程的非线
9、性、时变性,多参数间的强耦合、随机干扰等因素,使得建立被控对象的精确数学模型变得很困难。在这些复杂的系统面前,传统的控制方法无法满足控制精度,而且系统稳定性差。使用单片机实现供暖锅炉温度控制,具有较高的实用价值和优越性等特点。采用低功耗数字温度传感器进行温度测控,可大大简化设计方案,系统性能也更稳定;采用光电管测控水位,可有效保证水位的自动控制,保证水质无污染,能更好地对锅炉进行自动化控制;单片机不仅有体积小,安装方便,功能较齐全等优点,不仅使控制系统大大的简化而且其强大的功能稳定的输出都将保证锅炉正常供气供暖,保证安全经济运行。2 系统总体方案2.1 系统框图单片机按键控制部分温度检测部分水
10、位检测部分故障报警部分温度控制部分补水控制部分循环控制部分LED显示部分图1 系统框图本系统主要有水位检测、温度检测、按键控制、水温控制、水位控制、循环控制、显示部分、故障报警等几部分组成来实现自动化控制,系统框图如图1所示。2.2 系统具体实现方案本系统采用51系列单片机AT89S51控制锅炉供暖,系统采用手动和自动两种。主要是单片机自动控制,设置有手动/自动切换。包括利用温度控制,补水泵控制、循环泵控制、故障报警。在温度控制部分,用数字温度传感器的值送入单片机与单片机内部设定值进行比较。设定温度1为低水位控制位,温度2为高水位控制位,在当温度低于给定温度1时,蒸汽阀打开给水加热;当温度高于
11、给定温度2时,系统报警。在补水部分,用水位传感器来检测水位,当锅炉汽包水位低于规定的最低水位时系统发出报警,指示灯亮,继电器线圈得电,电磁阀打开,水泵开始注水;炉内的水位到达或超过规定的最高水位时系统发出报警,指示灯亮,线圈失电,电磁阀闭合,停止注水。故障报警部分,当发生故障时指示灯亮,报警零响。在循环控制部分当水温值在设定值内,则开启循环泵。当循环泵1出现故障时,报警系统报警,单片机接收到信号,备用的循环泵2开始代替循环泵1工作。在故障报警部分,当温度控制部分、补水泵部分、循环泵部分出现故障时,报警系统报警。 3 系统硬件设计本系统从经济性,电路结构,系统性能等多方面考虑。选用如下元器件,数
12、字温度传感器DS18B20,压力传感器PT125,单片机AT89S51,LED数码管,变频器,光敏三极管,若干继电器用来控制风机,水泵循环泵等。3.1 单片机的配置AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。A
13、T89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。 此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品
14、的需求。AT89S51具有以下特点:*与MCS-51微控制器产品系列兼容。*片内有4KB可在线重复编程的快闪擦写存储器。*32条可编程I/O线。*程序存储器具有三级加密保护。*可编程全全双工串行通道。*空闲状态维持低功耗和掉电状态保存存储内容。*而且与87C51系列的引脚也完全兼容。3.2 温度传感器 本系统采用的是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器DS18B20,与传统的热敏电阻等测温元件相比,它能直接读出被测度数,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。DS18B20的性能特点:*独特的单线接口仅需一个端口引脚进行通信;*多个DS18B20
15、可以并联在唯一的三线上,实现多点组网功能;*无须外部器件;*可通过数据线供电,电压范围为3.0-5.5V;*零待机功耗;*温度以9或12位数字量读出;*用户还可定义的非易失性温度报警设置;*报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;*负电压特性,电源极性接反时,温度计不会因为发热而烧毁,但不能正常工作。图2 DS18B20引角图DSl8B20的引脚如图3所示。此外DSl8B20数字温度计提供9位(二进制)温度读数,指示器件的温度。信息经过单线接口送入DSl8B20或从DSl8B20送出,因此从主机CPU到DSl8B20仅需一条线(和地线)。DSl8B20的电源可以由数据线本
16、身提供而不需要外部电源。因为每一个DSl8B20在出厂时已经给定了唯一的序号,因此任意多个DSl8B20可以存放在同一条单线总线上。这允许在许多不同的地方放置温度敏感器件。DSl8B20的测量范围从-55摄氏度到+125摄氏度,增量值为0.5摄氏度,可在ls(典型值)内把温度变换成数字。每一个DSl8B20包括一个唯一的64位长的序号,该序号值存放在DSl8B20内部的ROM(只读存贮器)中。开始8位是产品类型编(DSl8B20编码均为10H)。接着的48位是每个器件唯一的序号。最后8位是前面56位的CRC(循环冗余校验)码。DSl8B20中还有用于存储测得的温度值的两个8位存贮器RAM,编号
17、为0号和1号。1号存贮器存放温度值的符号,如果温度为负(摄氏度),则1号存贮器8位全为1,否则全为0。0号存贮器用于存放温度值的补码,LSB(最低位)的1表示0.5摄氏度。将存贮器中的二进制数求补再转换成十进制数并除以2就得到被测温度值(-55摄氏度-125摄氏度)。每只D518B20都可以设置成两种供电方式,即数据总线供电方式和外部供电方式。采取数据总线供电方式可以节省一根导线,但完成温度测量的时间较长,采取外部供电方式则多用一根导线,但测量速度较快,输出数据见下表。表1 DS18B20温度数据关系表温度数据输出(二进制)数据输出(十六进制)+1250000 0111 1101 000007
18、D0+850000 0101 0101 00000550+25.06250000 0001 1001 00010191+10.1250000 0000 1010 001000A2+0.50000 0000 0000 1000000800000 0000 0000 00000000-0.51111 1111 1111 1000FFF8-10.1251111 1111 0101 1110FF5E-25.06251111 1110 0110 1111FE6F-551111 1100 1001 0000FC903.3 显示部分 在单片机系统中,通常用LED数码显示模块来显示各种数字或符号。由于它具有显
19、示清晰、亮度高、使用电压低、光电转换效能高、寿命长的特点,因此使用非常广泛。3.4 变频器在本系统中我们选用ABB公司的ACS600变频器。ACS600变频器具有很宽的功率范围(2.23000kw)可以满足本设计的要求75kw和3kw,优良的速度控制和转矩控制,并具有完整的保护功能以及灵活的编程能力。其重要特性如下:* 无与伦比的电机速度及转矩控制,电机辨识运行及速度自我微调功能。* 内置 PID控制器,降低了您的投资成本。* 工具软件对传动的全方位支持,ACS 600 SingleDrive能在几毫秒内测出电机的实际转速和状态,所以在任何状态下都能立即起动,无起动延时。* 零转速下,不需速度
20、反馈就能提供电机满转矩。* ACS 600 SingleDrive能够提供可控且平稳的最大起动转矩,可达到200%的额定转矩。* 不需特殊硬件的磁通制动模式可以提供最大的制动力矩。* 在磁通优化模式下,电机磁通自动适应于不同的负载以提高效率同时降低电机的噪音,变频器和电机的总效率可提高 1%-10%。* DTC 直接转矩控制,从零速开始不使用电机轴上的脉冲码盘反馈就可以实现电机速度和转矩的精确控制。* 开环转矩阶跃上升时间小于 5毫秒,而不带速度传感器的磁通矢量控制变频器的开环转矩阶跃上升时间却多于100毫秒。3.5 水位传感器用发光二极管和光敏三极管3DU组合来检测水位。3.6 A/D转换器
21、采用常见的ADC0808。ADC0808是带有8位A/D转换器、8路多路开关以及与微型计算机兼容的控制逻辑的CMOS组件,其转换方法为逐次逼近型。在A/D转换器内部含有一个高阻抗斩波稳定比较器,一个带有模拟开关树组的256电阻分压器,以及一个逐次逼近型寄存器。8路的模拟开关由地址锁存器和译码器控制,可以在8个通道中任意访问一个通道的模拟信号。由于多路开关的地址输入部分能够进行锁存和译码,而且三态TTL输出也可以锁存,所以它易于与微型计算机接口直接相连。 3.7 压力传感器设计采用高温高压压力变送器PT125来采集蒸汽室气压,PT125常应用于橡胶、塑料、涤纶锦纶、聚脂、蒸汽等高温的精确测量和控
22、制。其常用参数如下:*量 程:01-450MPa*综合精度:0.1%FS 0.2%FS 0.5%FS 1.0%FS*输 出 :05V *工作温度:-10200-450;*供电电压: 936 V(24VDC)*长期稳定性:0.1%FS/年*负载阻抗:电流型最大800 电压型50K以上*绝缘电阻:大于2000M 100VDC*振动影响:对于20HZ-1KHZ的机械振动,输出变化小于0.1%FS*密封等级:IP65*信号引出:六芯镀金进口接插件*螺纹连接:1/2-20UNF4 系统的具体设计与实现4.1 系统的总体原理图系统的总体原理图如图3所示。4.2 单片机控制系统的流程图单片机控制系统模拟量处
23、理子程序、温度控制部分子程序、循环系统控制子程序、补水泵选择子程序、故障诊断与报警处理。它的流程图如图4所示。状态及PID初始化模拟量处理子程序温度控制部分子程序循环系统控制子程序补水泵选择子程序故障诊断与报警处理图4 控制流程图开始图3 系统原理图4.3 电源电路系统工作电压为5V,电流1.5A。采用原边交流220V,副边10V的变压器,经桥式整流,1000UF电容滤波,7805稳压,可使电源满足求。其原理图如图5所示。BC191000U/25VC201000U/25V1234IN4007C210.017805MAX496220V5V 图5 电源原理图检测温度在设定值1?开蒸汽阀检测温度在设
24、定值2?故障报警NYNY图6温度控制流图图程图)开始返回4.4 温度控制系统传感器是“能感受规定的被测量并按照一定的规律转换成可用输出信号的器件或装置”,它通常由敏感元件和转换元件组成。温度传感器DS18B20将检测到的温度数据由单片机的P2.7口送入。由单片机AT89S51进行运算,换算出测量温度,即水温。它与设定温度相比较,从而控制继电器的通断即(控制蒸汽电磁阀的通断)及报警系统的开闭。当水温高于设定温度时蒸汽阀关,水温刚低于设定温度时,蒸汽阀并不会立即导通,只有当水温底于设定温度1时,蒸汽阀才会导通,给水加热。若水温继续下降,低于设定温度2时,报警系统报警。温度控制部分。将检测到室外温度
25、、出水温度、回水温度与设定温度相比较,从而控制继电器的通断及报警系统的开闭。系统框图如6所示。4.5 循环泵控制部分本系统用两台循环,一台工作一台备用。循环泵部分的子程序部分当出水温度和回水温度在规定范围之内,开启循环泵1,有变频器控制。使锅炉内水循环达到供暖。当循环泵1出现故障时,用备用的循环泵2。循环泵1出现故障即是出水温度与回水温度的差值非常大即设定的最大温差时,循环泵故障报警,改用循环泵2来替代循环泵1工作。被替代的泵在循环顺序中可以自动跳过,顺沿循环. 在循环泵投入或切除的转换过程中需要单片机对变频器的运行参数进行控制,同时为了增加系统的稳定性,避免频繁投切循环泵,在转换过程中要有一
26、段时间间隙。温差为给定停止循环泵。循环框图如图7所示。图7 循环控制流程图 循环泵有故障吗?温差为设定值吗?开启循环泵1温度检测YNN循环泵2工作Y开始返回4.6 水位控制系统水位检测是通过3 对高亮二极管和光敏三极管分别安装在3个不同的位置,由上至下四个输出端口分别接单片机的P0.0、P0.1、P0.2口,实时对锅炉里的水位进行检测。当水位到达某一光敏三极管的位置时,其输出端口就向单片机输出高电平;当水位低于此光敏三极管的位置时,其输出端口就向单片机输出低电平。由上至下的第一个位置为水位上限报警线,即当水位高于此位置时,开水房控制系统就会自动报警,提醒工作人员注意,加水电磁阀有可能出故障;第
27、二个位置是自动停止加水线,即当水位高于此位置时,控制系统会自动关闭加水电磁阀,停止加水;第三个位置是自动加水线,即当水位低于此位置时,控制系统会自动接通加水电磁阀,开水加水;单片机输出控制端P2.3和P0.4分别接继电器KM3和KM4线圈,继电器触点的动作受单片机控制,从而对变频器和补水泵形成自动控制。提醒工作人员注意,加水电磁阀可能出故障。当一台补水泵出现故障时,系统报警,另一台备用的补水泵开始工作,3DU实用电路图如图8所示。水位控制流程框图如图9所示。图 图8 水位监测电路图补水泵1有故障吗?水位下限水位吗?开启补水泵1进行补水水位检测YNN补水泵2工作Y开始返回检测水位为上限水位吗?补
28、水泵1停止补水YN检测水位为上限水位吗?补水泵2停止补水YN图9 水位控制流程图故障报警4.7 压力控制系统 当压力传感器检测到的压力值比单片机内部设定的压力值大时,停止补水系统和关闭鼓风机。设计中将ADC0808作为一个外部扩展的并行I/O口,直接由单片机的P2.0脉冲启动其A/D转换,PT125输出的模拟信号送入IN.0端。而其他输入口端均无效,所以将ADDA-B-C端均置零。收发数据则由中断处理程序来完成,所以除将EOC状态端的状态信号送至外部中断口1端以共向CPU提出中断请求。如果压力值超出预设值时,单片机P2.2输出信号控制继电器KM8从而控制泄压阀动作,保证锅炉正常安全运行,控制电
29、路如图。 图10 压力控制系统电路图4.8 键盘部分按键控制电路由4个开关组成,分别接在单片机P1.0P1.3口。它由4个常开按键构成,直接与单片机I/O口相连,另一端与地相接。当按键闭合时,单片机与之相连的端口变为低电平。S1作为多功能键由软件设置可用于多种功能的转换。当用于温度调节时,4个开关分别用于调整温度的上下限值,以及控制温度的输出。其中S1为多功能键,有软件设置,长按S1后可对两个温度设置的设定。选定设置目标后,第一次按下用于显示采集的温度,第二次按下则进行温度的上限调整,第三次按下进行温度的下限调整,第四次按下则进行采集温度的显示构成循环。S2可以进行移位调整,第一次显示个位,第
30、二次显示十位。S3用于增加一个数,按下一次在原基础之上加1,这个值在0-9-0之间变化。S4用于减少一个数,按下一次在原基础之上减1,这个值在9-0-9之间变化8。对压力的调节也是如此。4.9 驱动部分电路继电器的驱动用8550PNP型三极管。因AT89S51上电复位时,P0,P1,P2,P3口为高电平,此时PNP型三极管基极接高电平,三极管截止,继电器处于断开状态,可使单片机正常复位。在PNP型三极管发射极接二级管4007,可防止三极管断开瞬间,继电器电流不能突变,使三极管造成损坏。4.10 显示部分电路由单片机AT89S51控制,移位寄存器74LS164和共阳7段LED组成。89S51的串
31、行口RXD和TXD为一个全双工串行通信口,但工作在方式0下可作同步移位寄存器,其数据由RXD(P3.0)串行输出或输入;而同步移位时钟由TXD(P3.1)端串行输出,在同步时钟作用下,实现同串行到并行的数据通信。在不需要使用串行通信的场合,利用串行口加芯片74HC164就可构成一个并行输入输出口。数据显示采用共阳数码管,其共阳端接高电平,三个二极管起到限流作用。可通过软件按键等设置显示温度、压力等数值,显示原理图如图12所示。图12 显示原理图4.11 自动报警电路锅炉上限极限水位报警,炉内的水位到达上限极限水位时系统发出报警,指示灯亮。锅炉下限极限水位报警,炉内的水位到达下限极限水位时系统发
32、出报警,指示灯亮。锅炉内压力过高报警,压力传感器检测到锅炉内压力高于设定值时发出报警后。循环泵故障报警,当循环泵开启后,出水与回水温度的差值很大,认为循环泵故障,报警系统报警。5 结束语本系统介绍了单片机在水暖锅炉中的应用,采用数字温度传感器、光敏三极管、压力传感器使硬件系统大为简化。系统精度高,具有良好的人机交互功能。并设有超温、超水位、循环泵失灵等故障报警,有问题立即就能发现。通过自动调节控制温度并实现锅炉内温度和水位的自动控制。保护温度控制在设定值上正常运行不需要人工干预,操作人员劳动强度小。致谢本文是在指导老师的悉心指导下完成的。指导老师具有严谨的治学态度,丰富的实践经验,在治学及做人
33、方面使我受益匪浅。衷心感谢老师对我的关心指导和帮助。参考文献1 谢自美,电子线路设计实验测试J.华中科技大学出版社,2003,2 2 杨国志,王立峰,杨东光,王辉林等. 实用电子制作实例M.福建科学技术出版社,20003 金伟正.单线数字温度传感器的原理及用M.电子工业出版社,20004 王永平,陈建华.基于S7200PLC的高性能电热锅炉控制系统J.仪表技术与传感器,2002,75 潘新民,王艳芳。微型计算机控制技术M.高等教育出版社,2002 6 谈振藩.自动控制专业英语M.哈尔滨工程大学出版社,19997杨智,明丽萍.21世纪燃气锅炉在中国的发展前景J.锅炉制造,2001,78袁希光等.
34、传感器技术手册M.北京国防工业出版社,19869 张洪润,张亚凡。传感技术与应用教程M.清华大学出版社,200510 松井邦彦日著, 梁瑞林译。传感器实用电路设计一制作M科学出版社,200511 李光飞,楼然苗.单片机课程设计实例指导M.北京航空航天大学出版社,200412 李明,徐向东.用容错技术提高锅炉控制系统的可靠性J清华大学学报 1999,1013 吴春旺,陈霞。锅炉汽包水位调节控制系统设计J.电工技术,2006.314 刘星平。基于PLC及其网络的智能炉温控制系统J.电气应用,2006.3附页单片机源程序ORG 0000H AJMP MAIN ORG 0003h AJMP MAINO
35、RG 000bh AJMP MAIN ORG 0013h AJMP MAIN ORG 001bh AJMP MAIN ORG 0023H AJMP MAIN ORG 0030HMAIN: CLR p3.6 MOV p0,#0ffh ACALL QL; MOV 3BH ,#95 MAIN1: MOV 3bh,#95 ACALL WENDU ;温度转换子程序 ACALL DISP ACALL WENCPM ;温度比较子程序 ACALL SHUICPM ;水位检测子程序 ACALL BAOJING ;报警子程序 ACALL DELAY2 AJMP MAIN1; WENCPM: MOV A,37H ;
36、温度比较子程序 CLR C SUBB A,3BH JC BBB1 SETB P2.1 ;关蒸气阀 CLR 20H.0 ACALL ok2 BBB1: MOV A,37H ADD A,#10 CLR C SUBB A,3BH JNC OK2; CLR P2.1;低与设定温度10度开蒸汽阀 MOV A,37H ADD A,#20 CLR C SUBB A,3BH JNC OK2 CLR P2.1;低与设定温度20度开蒸汽阀 SETB 20H.0 RETok2: CLR 20H.0 RET;水位检测子程序SHUICPM:MOV A,P1 ANL A,#0FH MOV 30H,#0FH ;000011
37、11 CJNE A,30H,AAA1 SETB P2.0 SETB 20H.1 ;setb水位状态标志位 AJMP OUT2AAA1: MOV 30H,#0EH ;00001110 CJNE A,30H,AAA2 SETB P2.0 CLR 20H.1 AJMP OUT2AAA2: MOV 30H,#0CH ;00001100 CJNE A,30H,AAA3 CLR 20H.1 CLR p2.0 AJMP OUT2AAA3: MOV 30H,#08H ;00001000 CJNE A,30H,AAA4 CLR P2.0 CLR 20H.1 AJMP OUT2;70AAA4: MOV 30H,#
38、00H ;00000000 CJNE A,30H,AAA5 setb P2.0 SETB 20H.1 AJMP OUT2AAA5: SETB 20H.2 RETOUT2: CLR 20H.2 RETBAOJING: JB 20H.3,OUT6 MOV A,20H MOV 30H,#00H CJNE A,30H,OUT5 AJMP OUT6OUT5: SETB P3.6 JB 20H.4,OUT9 SETB P0.1OUT10: JB 20H.2,OUT11 SETB P0.2OUT12: JB 20H.1,OUT13 SETB P0.3OUT14: JB 20H.0,OUT15 SETB P0
39、.4OUT16: RETOUT6: CLR P3.6 RET OUT9: CLR P0.1 AJMP OUT10 OUT11: CLR P0.2 AJMP OUT12 OUT13: CLR P0.3 AJMP OUT14 OUT15: CLR P0.4 AJMP OUT16 ;总温度子程序 WENDU: ACALL INIT_1820 ACALL RE_CONFIG ACALL GET_TEMPER ACALL TEMPER_COV RET; DS18B20初始化程序INIT_1820:SETB P1.7NOPCLR P1.7MOV R0,#06BHMOV R1,#03HTSR1:DJNZ R
40、0,TSR1 ; 延时MOV R0,#6BHDJNZ R1,TSR1SETB P1.7NOPNOPNOPMOV R0,#25HTSR2:JNB P1.7,TSR3DJNZ R0,TSR2LJMP TSR4 ; 延时TSR3:CLR 20H.4 ; 清标志,表示DSS18B20存在LJMP TSR5TSR4:setb 20H.4 ; setb标志位,表示DSS18B20不存在LJMP TSR7TSR5:MOV R0,#06BHMOV R1,#03HTSR6:DJNZ R0,TSR6 ; 延时MOV R0,#6BHDJNZ R1,TSR6TSR7:SETB P1.7RET; 重新写DS18B20暂
41、存存储器设定值RE_CONFIG:JNB 20H.4,RE_CONFIG1 ; 若DS18B20存在,转RE_CONFIG1RETRE_CONFIG1:MOV A,#0CCH ; 发SKIP ROM命令LCALL WRITE_1820MOV A,#4EH ; 发写暂存存储器命令LCALL WRITE_1820MOV A,#00H ; TH(报警上限)中写入00HLCALL WRITE_1820MOV A,#00H ; TL(报警下限)中写入00HLCALL WRITE_1820MOV A,#1FH ; 选择9位温度分辨率LCALL WRITE_1820RET; 读出转换后的温度值GET_TEMPER:SETB P1.7 ; 定时入口LCALL INIT_1820JNB 20H.4,TSS2RET ; 若DS18B20不存在则返回TSS2:MOV A,#0CCH ; 跳过ROM匹配LCALL WRITE_1820MOV A,#44H ; 发出温度转换命令LCALL WRITE_1820LCALL INIT_1820MOV A,#0CCH ; 跳过ROM匹配LCALL WRITE_1820MOV A,#0BEH ; 发出读温度命令LCALL WRITE