1水温控制器的设计与实现
基于单片机的水温控制系统设计

基于单片机的水温控制系统设计水温控制系统在许多领域中都具有重要的应用价值,例如温室农业、水族馆、游泳池等。
在这些应用中,保持水温在一个合适的范围内对于生物的生存和健康至关重要。
基于单片机的水温控制系统设计是一种有效的方法,它可以实现对水温的精确控制和调节。
本文将详细介绍基于单片机的水温控制系统设计原理、硬件实现和软件编程等方面内容。
第一章研究背景与意义1.1研究背景随着科技的飞速发展,人们对生活品质的追求不断提高,对家电设备的智能化要求也越来越高。
其中,水温控制系统在热水器、空调等家电产品中具有广泛的应用。
精确控制水温对于提高用户体验、节约能源和保护环境具有重要意义。
然而,现有的水温控制系统存在控制精度不高、响应速度慢等问题,因此,研究一种新型的水温控制系统具有重要的实际意义。
1.2研究意义本研究旨在提出一种新型的水温控制系统,通过对水温进行精确控制,提高家电产品的性能和用户体验。
此外,本研究还将探讨系统性能的评估和改进方法,为水温控制领域的研究提供理论支持。
第二章水温控制系统设计原理2.1 水温测量原理本章将介绍水温的测量原理,包括热电偶、热敏电阻、红外传感器等常用温度传感器的原理及特点。
通过对各种传感器的比较,选出适合本研究的温度传感器。
2.2温度传感器选择与应用在本研究中,我们将选择一种具有高精度、快速响应和抗干扰能力的温度传感器。
此外,还将探讨如何将选定的温度传感器应用于水温控制系统,包括传感器的安装位置、信号处理方法等。
2.3控制算法选择与设计本章将分析现有的控制算法,如PID控制、模糊控制、神经网络控制等,并选择一种适合本研究的控制算法。
针对所选控制算法,设计相应的控制电路和程序。
第三章硬件实现3.1控制器选择与搭建本章将讨论控制器的选型,根据系统的需求,选择一款性能稳定、可编程性强、成本合理的控制器。
然后,介绍如何搭建控制器硬件系统,包括控制器与各种外设(如温度传感器、继电器等)的连接方式。
基于单片机的水温控制系统设计

基于单片机的水温控制系统设计摘要:水温控制系统在工业、农业、生活等各个领域广泛应用。
随着技术的发展,单片机控制技术正在越来越多的应用到水温控制领域中。
本文通过对水温控制系统原理的分析,进行了设计和制作,并通过实验结果验证了本设计的可行性和稳定性。
关键词:单片机控制技术;水温控制系统;可行性;稳定性1. 引言水温控制系统在现代社会中应用广泛,水温控制技术的发展和进步为现代社会的科技进步做出了巨大的贡献。
单片机技术作为一种广泛应用的控制技术,可以实现多种不同的控制操作,因此被广泛应用到水温控制系统中。
本文将针对单片机水温控制系统进行分析设计,并进行实验验证。
2. 水温控制系统原理分析水温控制系统的基本结构由传感器、控制器以及执行机构等组成。
其中,传感器负责温度数据的采集,控制器负责处理和分析数据,并控制执行机构实现温度控制。
单片机水温控制系统的实现原理基于以下几个步骤:1)传感器采集温度数据并将数据转换为数字信号。
2)单片机控制器通过间接方式获取传感器采集的温度数字信号,并将其传输到外围设备中。
3)控制器将传输的信息根据其程序所设定的算法进行计算,得到温度数据,从而调整执行机构的作用。
4)执行机构实现接收计算出的数据并通过温度调节装置将温控装置的工作状态调节到所设定的工作状态,最终实现水温控制。
3. 单片机水温控制系统设计根据以上原理设计单片机水温控制系统,具体实现过程如下:1)传感器:选用DS18B20数字温度传感器,将其与单片机进行连接;2)控制器:选用AT89S52单片机,作为水温控制器,通过程序将传感器所采集到的数字信号转化为温度信息,并与设定温度进行比较和判断,控制继电器开关;3)执行机构:选用继电器作为执行机构,通过继电器的开关控制加热器的加热状态,调节水温。
4. 实验验证将设计好的单片机水温控制系统进行实验,实验过程中将设定温度为30℃,获得的实验结果显示在图1中。
图1 实验结果实验结果表明,本设计的单片机水温控制系统能够在设定温度为30℃时以及系统正常工作的情况下,实现对水温的有效控制。
基于单片机的水温水位控制系统设计

四、结论
基于单片机的智能水箱水位和水温控制系统具有结构简单、成本低、可靠性 高等优点。通过实时监测和控制水箱的水位和水温,可以满足不同用户的需求。 此外,通过优化系统的硬件设计和软件设计,可以进一步提高系统的性能和可靠 性。这种系统不仅可以应用于家庭用水领域,也可以应用于工业生产中的液体控 制,具有广泛的应用前景。
1、抗干扰设计
由于环境因素和设备本身的影响,系统可能会受到干扰。因此,需要在硬件 设计和软件设计中加入抗干扰措施,如滤波电路、软件去抖动等。
2、节能设计
为了降低系统的功耗,可以在软件设计中加入休眠模式和唤醒模式。当系统 不需要工作时,可以进入休眠模式,降低功耗。当有数据需要处理时,系统被唤 醒,进入工作状态。
2、软件设计
系统的软件设计主要实现以下功能:数据的采集、处理、显示和控制。首先, 单片机通过水位传感器和水温传感器采集当前的水位和水温数据。然后,单片机 对采集到的数据进行处理,判断水位和水温是否正常。如果异常,则启动相应的 执行机构进行调节。最后,单片机将处理后的数据通过显示模块进行显示。
三、系统优化
六、结论
本次演示设计了一种基于单片机的水温水位控制系统,实现了温度和水位的 自动检测、调节和控制。该系统具有成本低、可靠性高、易于实现等优点,同时 支持远程控制和节能模式等功能。在家庭、工业和科学研究中具有广泛的应用前 景。
参考自动化技术的普及,智能化设备在日常生活和工业生产中 的应用越来越广泛。其中,基于单片机的智能水箱水位和水温控制系统具有重要 应用价值。这种系统可以实现对水箱水位和水温的实时监测和控制,以适应不同 的应用需求。
系统软件采用C语言编写,主要包括以下几个部分:数据采集、数据处理、 控制输出和远程通信。
1、数据采集:通过I/O端口读取DS18B20和超声波水位传感器的数据。
plc水温控制课程设计

plc水温控制课程设计一、课程目标知识目标:1. 学生能够理解PLC(可编程逻辑控制器)的基本原理和工作流程;2. 学生能够掌握水温控制系统的组成及各部分功能;3. 学生能够运用PLC编程实现对水温的精确控制。
技能目标:1. 学生能够运用所学知识设计简单的水温控制程序;2. 学生能够使用相关工具和仪器进行水温控制系统的调试与优化;3. 学生能够分析并解决实际水温控制过程中出现的问题。
情感态度价值观目标:1. 学生培养对自动化技术的兴趣,提高学习积极性;2. 学生通过团队协作完成课程任务,培养合作精神和沟通能力;3. 学生认识到水温控制在实际生活中的重要性,增强环保意识。
课程性质:本课程属于应用实践性课程,结合理论知识与实际操作,培养学生的动手能力和实际应用能力。
学生特点:学生为具有一定电子、电气基础知识的初中生,对新鲜事物充满好奇,喜欢动手操作。
教学要求:教师需引导学生将所学理论知识应用于实际操作中,注重培养学生的实际操作能力和问题解决能力,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 理论知识:- PLC基本原理与结构;- 水温控制系统的组成,包括传感器、执行器、控制器等;- PLC编程基础,如逻辑运算、梯形图编程等;- 水温控制算法,如PID控制原理。
2. 实践操作:- 水温控制系统的搭建,包括电路连接、设备调试等;- PLC编程软件的使用,编写并下载水温控制程序;- 水温控制系统的测试与优化,如调整参数、改进控制效果等。
3. 教学大纲:- 第一课时:PLC基本原理与结构介绍,水温控制系统的概念;- 第二课时:水温控制系统的组成,各部分功能及相互关系;- 第三课时:PLC编程基础,编写简单的水温控制程序;- 第四课时:水温控制算法,PID控制原理及其应用;- 第五课时:实践操作,水温控制系统的搭建与调试;- 第六课时:总结与评价,分析课程实施过程中的优点与不足。
教材章节关联:本教学内容与教材中关于PLC应用、水温控制系统设计等相关章节紧密关联,结合教材内容,确保学生所学知识的科学性和系统性。
基于单片机的水温控制系统设计

基于单片机的水温控制系统设计引言在能源日益紧张的今天,电热水器,饮水机,电饭煲之类的家用电器在保温时,由于其简单的温控系统,利用温敏电阻来实现温控,因而会造成很大的能源浪费浪费。
利用 AT89C51 单片机为核心,配合温度传感器,信号处理电路,显示电路,输出控制电路,故障报警电路等组成,软件选用汇编语言编程。
单片机可将温度传感器检测到的水温模拟量转换成数字量,显示于LED 显示器上。
该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。
本设计任务和主要内容设计并制作一个水温自动控制系统,控制对象为1升净水,容器为搪瓷器皿。
水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变。
本设计主要内容如下:(1)温度设定范围为40~90℃,最小区分度为1℃,标定温度≤1℃。
(2)环境温度降低时温度控制的静态误差≤1℃。
(3)用十进制数码管显示水的实际温度。
(4)采用适当的控制方法,当设定温度突变(由40℃提高到60℃)时,减小系统的调节时间和超调量。
(5)温度控制的静态误差≤0.2℃。
系统主要硬件电路设计单片机控制系统原理框图温度采样电路选用传感器AD590。
其测量范围在-50℃--+150℃,满刻度范围误差为±0.3℃,当电源电压在5—10V之间,稳定度为1﹪时,误差只有±0.01℃。
此器件具有体积小、质量轻、线形度好、性能稳定等优点。
系统的信号采集电路主要由温度传感器(AD590)、基准电压(7812)及A/D转换电路(ADC0804)三部分组成。
信号采集电路温度控制电路此部分电路主要由光电耦合器MOC3041和双向可控硅BTA12组成。
MOC3041光电耦合器的耐压值为400v,它的输出级由过零触发的双向可控硅构成,它控制着主电路双向可控硅的导通和关闭。
100Ω电阻与0.01uF 电容组成双向可控硅保护电路。
部分控制电路系统主程序设计主程序流程图。
基于单片机的水温控制器设计

基于单片机的水温控制器设计引言水温控制在很多领域中都具有重要的应用价值,例如温室、鱼缸、热水器等。
基于单片机的水温控制器能够自动调控水温,提高水温的稳定性和准确性。
本文将介绍如何设计一个基于单片机的水温控制器,以实现对水温的精确控制。
一、硬件设计1.单片机选择选择一个合适的单片机对于设计一个稳定可靠的水温控制器至关重要。
常用的单片机有STC89C52、AT89C52等。
在选择时应考虑单片机的性能、功耗、接口等因素。
2.温度传感器温度传感器用于检测水温,常用的有NTC热敏电阻和DS18B20数字温度传感器。
NTC热敏电阻价格便宜,但精度较低,DS18B20精度高,但价格相对较贵。
3.加热装置加热装置用于根据温度控制器的输出信号进行加热或制冷。
可以选择加热丝、加热管或半导体制冷片等。
4.驱动电路驱动电路用于将单片机的输出信号转换为合适的电流或电压,驱动加热装置。
可以选择晶体管或继电器等。
5.显示模块可以选择液晶显示屏或LED数码管等显示水温的数值。
二、软件设计1.初始化设置首先,对单片机进行初始化设置,包括引脚配置、定时器设置等。
然后,设置温度传感器和加热装置的引脚。
最后,设置温度范围,以便根据实际需求进行调整。
2.温度检测使用温度传感器检测水温,并将读取到的温度值转换为数字形式,以便进行比较和控制。
可以使用ADC(模拟-数字转换)模块转换模拟信号为数字信号。
3.控制算法本设计中可以采用PID控制算法进行水温控制。
PID(Proportional-Integral-Derivative)控制算法根据设定值和反馈值之间的差异来计算控制信号。
可以根据需求进行参数调整,以获得更好的控制效果。
4.显示和报警使用显示模块显示当前水温的数值,并在温度超出设定值时触发报警功能。
报警可以采用声音、灯光等形式。
5.控制输出根据PID算法计算出的控制信号,控制驱动电路,驱动加热装置或制冷装置,以实现水温的调节。
总结基于单片机的水温控制器能够实现对水温的精确控制。
温度控制器设计

温度控制器设计一、设计任务设计一个可以驱动1kW加热负载的水温控制器,具体要求如下:1、能够测量温度,温度用数字显示。
2、测量温度范围0~100℃,测量精度为0.5℃。
3、能够设置水温控制温度,设定范围40~90℃,且连续可调。
设置温度用数字显示。
4、水温控制精度≤±2℃。
5、当超过设定的温度20℃时,产生声、光报警。
二、设计方案分析根据设计要求,该温度控制器是既可以测量温度也可以控制温度,其组成框图如图1所示。
图1 温度控制器原理框图因为要求对温度进行测量显示,所以首先采用温度传感器,将温度变化转换成相应的电信号,并通过放大、滤波后送A/D转换器变成数字信号,然后进行译码显示。
若要求温度被控制在设定值附近,则要求将实际测量温度的信号与温度的设定值(基准电压)进行比较,根据比较结果(输出状态)来驱动执行机构,实现自动地控制、调节系统的温度。
测量的温度可以与另一个设定的温度上限比较器相比较,当温度超过上限温度值时,比较器产生报警信号输出。
1、温度检测及信号处理温度检测是温控系统的最关键部分,它只接影响整个系统的测量、控制精度。
目前检测温度的传感器很多,其测量范围、应用场合等也不尽相同。
例如热电偶温度传感器目前在工业生产和科学研究中已得到了广泛的应用,它是将温度信号转化成电动势。
目前热电偶温度传感器已形成系列化和标准化,主要优点是:它属于自发电型传感器,测量温度时可以不需要外加电源;结构简单,使用方便,热电偶的电极不受大小和形状的限制;测量温度范围广,高温热电偶测温高达1800℃以上,低温热电偶可测-260℃以下,目前主要用在高温测量工业生产现场中。
热电阻温度传感器是利用电阻值随温度升高而增大这一特性来测量温度的,目前应用较为广泛的热材料是铜和铂。
在铜电阻和铂电阻中,铂电阻性能最好,非常适合测量-200~+960℃范围内的温度。
国内统一设计的工业用铂电阻常用的分度号有Pt25、Pt100等,Pt100即表示该电阻的阻值在0℃时为100Ω。
水温控制系统开题报告

水温控制系统开题报告水温控制系统开题报告一、引言水温控制系统是一种用于调节水温的技术方案,它在许多领域都有广泛的应用,如家庭生活、工业生产以及科研实验等。
本文将探讨水温控制系统的设计原理、应用场景以及未来发展方向。
二、设计原理水温控制系统的设计原理主要包括传感器、控制器和执行器三个部分。
传感器用于感知水温的变化,常见的传感器有温度传感器和红外线传感器。
控制器根据传感器的反馈信号,通过算法计算出控制水温所需的操作指令。
执行器则负责根据控制器的指令,对水温进行调节,常见的执行器有电加热器和冷却装置。
三、应用场景1. 家庭生活水温控制系统在家庭生活中有着广泛的应用。
例如,我们可以利用水温控制系统来调节淋浴水温,让每个家庭成员都能够享受到舒适的洗浴体验。
此外,水温控制系统还可以应用于家庭温泉、游泳池等场所,提供恒定的水温,增加用户的舒适感。
2. 工业生产在工业生产中,水温控制系统的应用也非常广泛。
例如,在食品加工过程中,水温控制系统可以确保食品在适宜的温度下进行加热或冷却,保证产品的质量和安全。
此外,水温控制系统还可以应用于塑料加工、化工生产等领域,提高生产效率和产品质量。
3. 科研实验在科研实验中,水温控制系统也扮演着重要的角色。
例如,在生物实验中,保持恒定的水温对于细胞培养和生物反应的研究至关重要。
水温控制系统可以提供稳定的实验环境,保证实验结果的可靠性和可重复性。
四、未来发展方向水温控制系统在未来的发展中有着广阔的前景。
随着科技的不断进步,传感器和控制器的性能将不断提高,使得水温控制系统更加智能化和精确化。
同时,随着对能源效率和环境保护的要求越来越高,水温控制系统也将朝着节能、环保的方向发展。
例如,利用太阳能、地热能等可再生能源来供给水温控制系统的能量,减少对传统能源的依赖。
此外,随着物联网技术的快速发展,水温控制系统也将与其他智能设备实现互联互通,形成智能家居或智能工厂的一部分。
通过与其他设备的联动,水温控制系统可以更好地适应用户的需求,提供更加个性化的服务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
水温控制器设计摘要随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。
本设计以保质、节能、安全和方便为基准设计了一套电热壶水温控制系统,能实现在40℃~90℃范围内设定控制温度,且95℃时高温报警,十进制数码管显示温度,在PC机上显示温度曲线等功能,并具有较快响应与较小的超调。
整个系统核心为SPCE061A,前向通道包括传感器及信号放大电路,按键输入电路;后向通道包括三部分:LED 显示电路,上位机通信电路以及控制加热器的继电器驱动电路。
利用SPCE061A的8路10位精度的A/D转换器,完成对水温的实时采样与模数转换,通过数字滤波消除系统干扰,并对温度值进行PID运算处理,以调节加热功率大小。
同时在下位机上通过数码管显示当前温度,通过USB接口传送信息至上位机,可以直接在PC端观察温度的变化曲线,并根据需要进行相应的数据分析和处理,由此完成对水温的采样和控制。
通过验证取得了较满意的结果。
本设计是利用8051 实现对温度自动控制。
在设计中采用了DS18B20数字温度传感器,其具有较高的精确度,可完成对温度的精准测量;在显示模块分别采用串行口和并行口对设定温度和测定温度进行显示。
关键词数字温度传感器(DS18B20,DSl820); LED数码显示器;三个锁存器74LS373。
目录1.硬件设计 (4)1.1 温度检测 (4)1.2 实测温度显示 (4)1.3 温度设定 (5)1.4 设定温度显示 (6)1.5 温度控制 (6)2.软件设计 (7)2.1 工作流程 (7)2.2 功能模块 (7)2.3 资源分配 (7)2.4 功能软件设计 (8)2.4.1 主程序与中断服务子程序 (8)2.4.2 温度设定值检测与显示子程序 (9)2.4.3 当前温度检测子程序 (11)2.4.4 显示子程序 (15)2.4.5 温度控制子程序 (17)2.4.6 报警子程序: (19)总结 (20)参考文献 (20)附录 (20)1.硬件设计1.1 温度检测这部分需用数字温度传感器DS18B20,DSl820数字温度计提供9位(二进制)温度读数,指示器件的温度信息经过单线接口送入DSl820或从DSl820送出,因此从主机CPU到DSl820仅需一条线(和地线)。
DSl820的电源可以由数据线本身提供而不需要外部电源。
因为每一个DSl820在出厂时已经给定了唯一的序号,因此任意多个DSl820可以存放在同一条单线总线上。
这允许在许多不同的地方放置温度敏感器件。
DSl820的测量范围从-55℃到+125℃,增量值为0.5℃,可在l s(典型值)内把温度变换成数字。
P1.6口连接单总线温度传感器DS18B20,如图1.1所示。
p1.6图1.1 温度检测电路1.2 实测温度显示这部分由有3位LED数码显示器,三个锁存器74LS373和三个非门器件组成。
与8051的P0口相连需要输出锁存,三位静态显示电路需要有三位控制锁存部分。
采用并口静态显示电路作为显示接口电路,如图1.2所示。
图1.2 实测温度静态显示电路1.3 温度设定这部分键盘只设置4个功能键,分别是启动、“十位+”、“个位+”和“小数位+”键,P1口低四位作为键盘接口,利用按键可分别实现对温度的十位、个位加一设置和对小数位加2设置。
连续按键可实现40--90℃的温度设置,如图1.3所示。
图1.3 温度设定控制电路1.4 设定温度显示本系统设有3位LED数码显示器,显示设定的温度。
采用串行口扩展的静态显示电路作为显示接口电路。
图1.4 设定温度显示电路1.5 温度控制这部分包括报警器电路和电炉控制电路。
报警电路如图1.5所示,由P1.7口控制,达到设定温度发出报警信号。
图1.5 报警电路电炉加热控制电路如图1.6所示,由P1.4口控制,检测温度超过设定温度时关电炉。
图1.6 电炉加热控制电路2.软件设计2.1 工作流程启动加热电路,对温度进行设定范围(40—90℃),显示预置温度,温度设定后就可以按启动键来启动系统工作了。
温度检测系统不断检测当前温度,并送往显示器显示,达到预置温度后停止加热并报警;当温度下降到下限(比预置温度低2℃)时再启动加热。
这样不断重复上述过程,使温度保持在预定温度范围之内。
按复位键可以随时重新设定预置温度。
2.2 功能模块1、键盘管理:检测键盘输入,接受温度设定,启动工作系统。
2、显示:显示设定温度和检测温度。
3、温度检测:接受温度传感器,转换温度值。
4、温度控制:根据检测到的温度对电炉进行控制。
5、报警:当检测温度达到设定温度发出报警信号。
2.3 资源分配2.4.1 主程序与中断服务子程序2.1 主程序和中断服务子程序的流程图按图2.1所示主程序流程图,可编写出主程序和中断服务子程序。
由于温度有较大的惯性,进行定时器30S定时,30S对温度进行刷新一次。
当采用6MHZ晶振时,每机器周期2us,定时器方式一,最大定时为131ms。
要实现30s定时,还要另外设置一个软件计数器,对定时时间进行计次,累加后实现30s定时。
为了便于计算,取定时时间为120ms,250次,合计30s。
时间常数:T=216 —120*103 /2=5536=15A0主程序:ORG 0000HAJMP MAINORG 000BHAJMP TOINT ;转T0中断服务子程序MAIN: MOV SP ,60H ;置堆栈指针MOV P1,0FH ;置p1.0-P1.3MOV TMOD,#01H ;T0定时器,方式1MOV TH0,#15H ;置T0时间常数MOV TL0,#0A0HSETB ET0 ;T0开中断SETB EASETB TR0 ;T0启动MOV R7,#250 ;置三十秒计数初值LMO:AJMP LM0 ;等待T0中断;定时器中断服务子程序ORG 0200HTOINT: MOV TH0,#15H ;重置定时常数MOV TL0,#0A0HDJNZ R7,BACK ;判断30 秒到否?未到返回MOV R7,#250 ;重置三十秒计数初值LCALL KIN ;调用温度设定值检测与显示子程序LCALL TIN ;调用当前温度检测子程序MOV BT1,TEMP1;送当前温度到显示缓冲区MOV BT0,TEMP0LCALL DISP2 ;调用温度检测显示子程序LCALL CONT ;调用温度控制子程序LCALL ALARM ;调用报警子程序BACK: RETI ;中断返回2.4.2 温度设定值检测与显示子程序图2.2 为温度设定值检测与显示程序流程图。
2.2 温度设定值检测与显示程序流程图KIN: ACALL CHK ;检验温度是否在需求范围MOV BT1,ST1 ;设定温度送显示缓冲区MOV BT0,ST0LCALL DISP1 ;调显示子程序KIN0: ACALL KEY ;读键值JZ KIN0 ;无键闭合,则从新检测ACALL DISP1ACALL DISP1 ;两次调显示子程序延时去抖ACALL KEY ;再检测有无键按下JZ KIN0 ;无键按下重新检测JB ACC.1,S1MOV A,#100 ;十位按下AJMP SUMS1: JB ACC.2,S0MOV A ,#10 ;个位键按下AJMP SUMS0: JB ACC.3,S ;小数位按下,键值加2MOV A,#02SUM: ADD A,ST0MOV ST0,AMOV A,#00HADDC A,ST1MOV ST1,AKIN1: ACALL KEY ;判断闭合键释放JNZ KIN1 ;未释放,继续判断AJMP KIN ;闭合建释放继续扫描键盘S: JNB ACC.0,KIN ;无键闭合重新扫描键盘RETKEY: MOV A,P1CPL AANL A,#0FHRET;判断温度是否在40-90度CHK: MOV A,#84H ;90度低八位送aCLR CSUBB A,ST0 ;低八位减,借位送cyMOV A ,#03H ;90度高八位送aSUBB A,ST1 ;高八位带借位减JC OUTA ;越界转移RETOUTA: MOV ST1,#01H ;将40度写入数据区MOV ST0,#90HRET2.4.3 当前温度检测子程序图2.3为温度检测子程序流程图。
为了确保检测数据的可靠性,采用四点均值滤波法进行软件滤波,即每次测温都使DS18B20连续四次采样,然后取算术平均值作为该次温度检测值。
温度检测值存入TEMP0、TEMP1,R6记录连续采样次数。
图2.3 温度检测子程序流程图TIN : MOV TEMP0,#00H ;清结果单元MOV TEMP0,#00HMOV B,#00H ;清BMOV R6,#04H ;四次取样LOOP: LCALL READAD ;调读取温度子程序ADD A,TEMP0MOV TEMP0,AMOV A,#0ADDC A,TEMP1MOV TEMP1 ,AGN1: MOV A,TEMP0 ;取四次采样平均值CLR CRRC AMOV TEMP0,AMOV A,TEMP1CLR CRRC AMOV TEMP1,AMOV A,TEMP0CLR CRRC AMOV TEMP0,AMOV A,TEMP1CLR CRRC AMOV TEMP1,ADJNZ R6,LOOPRETREADAD:SETB PSW.3 ;设置工作寄存器当前所在的区域CLR EA ;使用ds1820一定要禁止任何中断产生LCALL INT ;调用初使化子程序MOV A,#0CCHLCALL WRITE ;送入跳过ROM命令MOV A, #44HLCALL WRITE ;送入温度转换命令LCALL INT ;温度转换完全,再次初使化ds1820MOV A,#0CCHLCALL WRITE ;送入跳过ROM命令MOV A,#0BEHLCALL WRITE ;送入读温度暂存器命令LCALL READMOV TEMP0,A ;读出温度值低字节存入TEMP0LCALL READMOV TEMP1,A ;读出温度值高字节存入TEMP1SETB EARETINT: ;初始化ds1820子程序CLR EAL0: CLR P1.6 ;ds1820总线为低复位电平MOV R2,#200L1: CLR P1.6DJNZ R2,L1 ;总线复位电平保持400usSETB P1.6 ;释放ds1820总线MOV R2,#30L4: DJNZ R2,L4 ;释放ds1820总线保持60usCLR C ;清存在信号ORL C,P1.6JC L0 ;存在吗?不存在则重新来MOV R6,#80L5: ORL C,P1.6JC L3DJNZ R6,L5SJMP L0L3: MOV R2,#240L2: DJNZ R2,L2RETWRITE: ;向ds1820写操作命令子程序CLR EAMOV R3,#8 ;写入ds1820的bit数,一个字节8个bit WR1: SETB P1.6MOV R4,#8RRC A ;把一个字节data(A)分成8个bit环移给 CCLR P1.6 ;开始写入ds1820总线要处于复位(低)状态WR2: DJNZ R4,WR2 ;ds1820总线复位保持16usMOV P1.6,C ;写入一个bitMOV R4,#20WR3: DJNZ R4,WR3 ;等待40usDJNZ R3,WR1 ;写入下一个bitSETB P1.6 ;重新释放ds1820总线RETREAD:CLR EAMOV R6,#8 ;连续读8个bitRE1: CLR P1.6 ;读前总线保持为低MOV R4,#4NOPSETB P1.6 ;开始读总线释放RE2: DJNZ R4,RE2 ;持续8usMOV C,P1.6 ;从ds1820总线读得一个bitRRC A ;把读得的位值环移给 AMOV R5,#30RE3: DJNZ R5,RE3 ;持续60usDJNZ R6,RE1 ;读下一个bitSETB P1.6 ;重新释放ds1820总线RETEND2.4.4 显示子程序串口显示子程序DISP1: ACALL HTB ;调用BCD转换子程序MOV SCON,#00H ;置串行口为方式0MOV R2,#03H ;显示数据位数送R2MOV R0,#T10 ;显示缓冲区首地址送R0LED: MOV A ,@R0 ;取显示数MOV SBUF,AINC R0WAIT: JBC TI, LED ;发送结束,转下一位,并清中断标志SJMP WAIT ;为发送完,等待RET并口显示子程序DISP2: ACALL HTB ;调用BCD转换子程序MOV R0,#T10MOV R1,#03MOV P2,#01H ;P2.0置1 ,锁存允许LOOP: MOV A ,@R0 ;取数据MOV DPTR,#OUTSEG ;显示端口地址MOVX @DPTR ,AINC R0MOV A,P2RL A ;下一位锁存允许MOV P2,ADJNZ R1,LOOP ;三位未显示完继续RET 显示完,返回HTB:;BCD码转换MOV A,BT0MOV B,#100DIY ABMOV T10,AMOV A,#10XCH A,BDIY ABMOV T1,AMOV T0,BMOV A ,BT1LH: CJNE A,#01H,LH0 ;高位为1时,加256(十进制),否则转移MOV A ,#06HADD A,T0DA AMOV T,AMOV A,#05HADDC A ,T1DA AMOV T1,AMOV A,#02HADDC A,T10DA AMOV T10,ALH0: CJNE A,#02H,LH1 ;高位为2 时,加512(十进制),否则转移MOV A ,#02HADD A,T0DA AMOV T,AMOV A,#01HADDC A ,T1DA AMOV T1,AMOV A,#05HADDC A,T10DA AMOV T10,ALH1: MOV A ,#08H ;高位为3 时,加768(十进制)ADD A,T0DA AMOV T,AMOV A,#06HADDC A ,T1DA AMOV T1,AMOV A,#07HADDC A,T10DA AMOV T10,ALMAP: ;将BCD码转换位显示字型代码MOV R0,T10 ;十位数据字型代码MOV DPTR,#TAB1 ;小数点暗MOV A ,@R0MOV A,@A+DPTRMOV @R0,A;INC R0 ;个位数据字型代码MOV DPTR,#TAB2 ;小数点亮MOV A,@R0MOV A,@A+DPPTRMOV @R0,A;INC R0 ;小数位数据字型代码MOV DPTR,#TAB1 ;小数点暗MOV A,@R0MOV A,@A+DPTRMOV @R0,ARETTAB1: ;共阳小数点暗 0-9 字型代码DB 0C0H 0F9H 0A4H 0B0H 99HDB 92H 82H 0F8H 80H 90HTAB2: ;共阳小数点亮 0-9 字型代码DB 40H 79H 24H 30H 19HDB 12H 02H 78H 00H 10H2.4.5 温度控制子程序将当前温度与预置温度比较,当前温度小于预置温度时,接电炉加热;当前温度大于预置温度时,停止加热;当二者温度相等是电炉保持原来状态;当前温度降低到比预置温度低2度时,再重新启动加热;当前温度超出报警上下限时将启动报警,并停止加热,当前温度可能低于报警下限,为了防止误报,在未达到预置温度时,不允许报警,为此设置了报警允许标志F0。