PLC水温自动控制系统

合集下载

基于PLC的水温恒温控制系统

基于PLC的水温恒温控制系统

水 , 上升到液 位后 ( 水 一定 的位置 ) 启动搅拌 电机 , , 测量 水箱水温并 与 设定值 比较 , 若温度差 小于 5 , 要采用 P D调节 加热 。当水 温高 于设 I 定值5 0 —1 ℃时 , 要进 冷水 。 当水温 在设 定值 0 5 — ℃范 围内 , 仍采 用 PD调节 加热 。当水温高 于设定值 l ℃以上 时 , 用进水 与风机冷 却 I O 采 同时进行 的方法实现降温控制 。此外对 温度 、 流量 、 加热 的电功 率要 进 行实测并显示 。若进水 时无 流量或加热 、 冷却时水温无变化应报警 。 3恒温控制装置 的 I . / 0设计地址表 本 系统的输入 信号有启 动开关 、 停止 开关 、 液位开关 、 流量检测 开 关、 温度传感 器等。输出信号控制 的对象有 水泵 、 水阀 、 冷却风机 、 搅拌 电机 、 电加 热 、 状态显示 、 温度显示 等。采用 F X系列 P C L 控制 , 其输入 、
冷却 风扇 继 电器
C 3
Y2 2
温度显示 3 信号地址 流量显示 L D E 信号地址
C 4 C 5
Y3 2
Y 4 功率显示 L D 2 E 信号地址
4恒温控制装置 的 I . , o电气接 口设计 图 根 据本系统的控制要求 , I 其 / O电气接 口图设计如图 2 所示。
S 1 X0 B l 系统启 动开关
输 S 2 X1 系统停 止开关 B 5 入 S X1 上 液位 开关 Q1 l 信 号 S 2 X1 下液位 开关 Q 2
K 3 A
K4 A HL
Y 4
K A5 Y 7
搅拌 电机
电加热水 报警指示灯
8 2 码 0~Y1 显示数据用 4 1 Y1 7

plc水温控制课程设计

plc水温控制课程设计

plc水温控制课程设计一、课程目标知识目标:1. 学生能够理解PLC(可编程逻辑控制器)的基本原理和工作流程;2. 学生能够掌握水温控制系统的组成及各部分功能;3. 学生能够运用PLC编程实现对水温的精确控制。

技能目标:1. 学生能够运用所学知识设计简单的水温控制程序;2. 学生能够使用相关工具和仪器进行水温控制系统的调试与优化;3. 学生能够分析并解决实际水温控制过程中出现的问题。

情感态度价值观目标:1. 学生培养对自动化技术的兴趣,提高学习积极性;2. 学生通过团队协作完成课程任务,培养合作精神和沟通能力;3. 学生认识到水温控制在实际生活中的重要性,增强环保意识。

课程性质:本课程属于应用实践性课程,结合理论知识与实际操作,培养学生的动手能力和实际应用能力。

学生特点:学生为具有一定电子、电气基础知识的初中生,对新鲜事物充满好奇,喜欢动手操作。

教学要求:教师需引导学生将所学理论知识应用于实际操作中,注重培养学生的实际操作能力和问题解决能力,将课程目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. 理论知识:- PLC基本原理与结构;- 水温控制系统的组成,包括传感器、执行器、控制器等;- PLC编程基础,如逻辑运算、梯形图编程等;- 水温控制算法,如PID控制原理。

2. 实践操作:- 水温控制系统的搭建,包括电路连接、设备调试等;- PLC编程软件的使用,编写并下载水温控制程序;- 水温控制系统的测试与优化,如调整参数、改进控制效果等。

3. 教学大纲:- 第一课时:PLC基本原理与结构介绍,水温控制系统的概念;- 第二课时:水温控制系统的组成,各部分功能及相互关系;- 第三课时:PLC编程基础,编写简单的水温控制程序;- 第四课时:水温控制算法,PID控制原理及其应用;- 第五课时:实践操作,水温控制系统的搭建与调试;- 第六课时:总结与评价,分析课程实施过程中的优点与不足。

教材章节关联:本教学内容与教材中关于PLC应用、水温控制系统设计等相关章节紧密关联,结合教材内容,确保学生所学知识的科学性和系统性。

基于PLC的热水箱恒温控制系统

基于PLC的热水箱恒温控制系统

基于PLC的热水箱恒温控制系统温度是工业生产中常见的工艺参数之一,任何物理变化和化学反应过程都与温度密切相关。

在科学研究和生产实践的诸多领域中, 温度控制占有着极为重要的地位, 特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足轻重的作用。

对于不同生产情况和工艺要求下的温度控制,所采用的加热方式,燃料,控制方案也有所不同。

例如冶金、机械、食品、化工等各类工业生产中广泛使用的各种加热炉、热处理炉、反应炉等;燃料有煤气、天然气、油、电等。

温度控制系统的工艺过程复杂多变,具有不确定性,因此对系统要求更为先进的控制技术和控制理论。

可编程控制器(PLC)可编程控制器是一种工业控制计算机,是继承计算机、自动控制技术和通信技术为一体的新型自动装置。

它具有抗干扰能力强,价格便宜,可靠性强,编程简单,易学易用等特点,在工业领域中深受工程操作人员的喜欢,因此PLC已在工业控制的各个领域中被广泛地使用。

第一章绪论1.1 引言可编程序控制器(Programmable Controller,简称PLC)是以微处理器为基础,综合了计算机技术、控制技术、通讯技术等高新技术的工业装置。

现代PLC不仅具有传统继电器控制系统的控制功能,而且能扩展输入输出模块,特别是可以扩展一些智能控制模块,构成不同的控制系统,将模拟量输入输出控制和现代控制方法融为一体,实现智能控制、闭环控制、多控制功能一体的综合控制系统。

在工农业生产中,常用闭环控制方式控制温度、压力、流量等连续变化的模拟量,PID控制是常见的一种控制方式。

由于其不需要求出控制系统的数学模型,算法简单、鲁棒性好、可靠性高,在使用模拟量控制器的模拟控制系统和使用计算机(包括PLC)的数字控制系统中得到了广泛的应用。

本文针对恒温水箱温控系统的要求,以PLC为温度控制系统的核心,利用PID控制算法实现水箱的恒温控制。

1.2选题的背景温度是是工业上常见的被控参数之一,特别在冶金、化工、机械制造等领域,恒温控制系统被广泛应用于热水器等一些热处理设备中。

基于PLC水箱水位自动控制系统的设计思路

基于PLC水箱水位自动控制系统的设计思路

研发设计I RESEARCH DESIGN摘要:文章就P L C水箱水位自动控制系统的设计思路进行简单论述,该设计思路是采用西门子S7-200P L C为主控制机的多泵恒 压供水控制系统。

在传统水箱供水的基础上,加入了 P L C、变频器等器件,以实现恒压供水。

关键词:P L C:恒压供水;自动控制I基于P L C水箱水位自动控制系统的设计思路■文水是生命之源,水对人民生活与工业生产的影响非常大,同时人们对供水系统的质量和可靠性的要求也很高。

变频恒 压供水系统是集变频技术、PLC技术、现代控制技术等多种 技术于一体,可靠地为人民生活和工业生产提供优质水服务 的一项技术。

1. 恒压供水系统的意义及设计思路众所周知,水是生产生活中不可缺少的重要组成部分。

企业生产和人民生活对水的需求非常大,对来水的量和来水 的压力都有严格的要求。

同时,企业生产和人民生活对水需 求的时段有所不同,企业生产可能是全时段,而人民生活基 本上是在白天。

夏季人民的生活用水就会多些,冬季就会少 些。

这就需要一套系统,既能保证企业生产和人民生活的用 水量和用水压力,又能识别哪个季节哪个时段的用水。

综上 所述,在设计上只要把上述需求转换到水压上就能够解决难 题。

该设计就是从这个点出发,利用PLC对通过压力传感 器采集过来的信息进行分析处理,给出合理的控制信息,进 行恒压供水。

把PLC技术运用在水箱水位控制系统中,具 有很大的发展空间和应用价值。

2.自动控制系统相关组件2. 1PLC组件PLC是可编程逻辑控制器,它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计 数与算术操作等面向用户的指令,并通过数字或模拟式输入 和输出控制,各种类型的机械或生产过程。

当前,P L C已是 适用于工业现场工作的标准设备。

2.2变频器组件变频器是应用变频技术与微电子技术,通过改变电机工 作电源频率方式来控制交流电动机的电力控制设备。

毕业设计(论文)-基于PLC实现的水温控制

毕业设计(论文)-基于PLC实现的水温控制

基于PLC实现的水温控制XXX(陕西理工学院电气工程系自动化专业,2007级2班,陕西汉中723003)指导教师:XXX[摘要]针对工农业生产中现有的水温控制系统可靠性低、控制精度差、成本高等缺点。

我们利用三菱FX0N60-MR型PLC构建了一个水温控制系统对这一问题进行了研究。

在整个控制系统中以电阻炉作为被控对象,以水温为被控变量,以三菱FX0N60-MR型PLC为控制器,输入部分外加光电耦合器,并用按键和数码管构建了人机接口设置目标温度;控制算法的选择经过对模糊控制和PID算法的实验对比,最终选择采用PID。

PLC程序利用梯形图编程语言进行编写。

在系统搭建完成后我们利用试凑法,通过大量实验对PID控制器的参数进行了优化,进过测试系统能够达到设计要求。

除此之外该系统还具有硬件结构简单、系统可靠性高、制作成本低廉、控制器参数易于调试等优点。

能够利用小型PLC实现对水温较高精度的控制。

[关键词]PLC 温度控制PIDPLC-based temperature control to achieveLiao zhong lin(Grade 07,Class2,Major Automation,Department of Electrical Engineering,Shaanxi University ofTechnology,Hanzhong 723003,Shaanxi)Tutor: Liu pei[Abstract] According to the existing water temperature in the industry and agriculture production control system reliability, low cost, high control precision poor shortcomings. We use mitsubishi FX0N60-MR type PLC has constructed a water temperature control system for this problem is studied. In the whole control system to resistance furnace as controlled object to water temperature as controlled variables, the mitsubishi FX0N60-MR type PLC as the controller, input part plus photoelectric couplers, buttons and digital tube and constructing the man-machine interface set target temperature; The choice of control algorithm based on fuzzy control and PID algorithm experimental, finally choosing PID. PLC program use ladder diagram programming language to write. After the completion of the structures in the system we use trail-and-error, through a large number of experiments of PID controller parameters are optimized, the test system can meet the design requirements. Besides this system also has the hardware structure is simple, system reliability high, production cost is low, and the controller parameters is easy to debug, etc. Can use small PLC to control the water temperature higher accuracy.[Key words] PLC temperature control PID目录绪论 (1)1.设计方案的论证 (2)1.1PLC的选型 (2)1.1.1常用PLC的特点比较 (2)1.1.2本设计PLC的选型 (3)1.2控制方案的选择 (3)1.2.1采用模糊控制的温度控制 (3)1.2.2采用PID算法的温度控制 (3)1.2.3 控制方案的选择 (4)2.硬件电路的设计 (5)2.1PLC硬件资源分配设计 (5)2.2温度传感器 (8)2.2.1 利用温度变送器采集 (8)2.2.2 利用DS18B20采集 (8)2.3输入部分电路设计 (10)2.3.1 设置输入部分电路设计 (10)2.3.2 AD转换结果输入部分电路设计 (10)2.4输出部分电路设计 (10)3.系统软件的设计 (13)3.1PLC编程语言简介 (13)3.2输入部分程序设计 (15)3.3显示部分程序 (15)3.4PID运算部分程序设计 (15)4.系统的调试 (19)4.1硬件调试 (19)4.2软件调试 (19)4.1软硬件联合调试 (19)4.3实验数据 (19)参考文献 (20)英语科技文献翻译 (21)附录 (34)附录A:源程序 (34)附录B:元器件清单 (37)附录C:电路总图 (38)附录D:实物图 (39)致谢 (40)绪论温度控制系统在各行各业的应用虽然很广泛,但从国内生产的温度控制器来讲,总体发展水平仍然不高。

PLC自动控制供水系统-论文

PLC自动控制供水系统-论文
“NC嵌入CP”结构的数控系统。它由开放体系结构运动控制卡+PC机构成。这种运动控制卡通常选用高速DSP作为CUP,具有很强的运动控制和PLC控制能力。它开放的函数库供用户在W工NDOWS平台下自行开发构造所需的控制系统。因而这种开放结构运动控制卡被广泛应用于制造业自动化控制各个领域。如美国DELATATU公司用PMAC多轴运动控制卡构造的PMAC一NC数控系统、旧本MAAZK公司用三菱电机的MELDASMAGIC64构造的MAZATROL640CNC等。
传统的小区供水方式有:恒速泵加压供水、水塔高位水箱供水、气压罐供水、液力藕合器和电池滑差离合器调速的供水方式、单片机变频调速供水系统等方式,其优、缺点如下:
1、恒速泵加压供水方式无法对供水管网的压力做出及时的反应,水泵的增减都依赖人工进行手工操作,自动化程度低,而且为保证供水,机组常处于满负荷运行,不但效率低、耗电量大,而且在用水量较少时,管网长期处于超压运行状态,爆损现象严重,电机硬起动易产生水锤效应,破坏性大,目前较少采用。
目前的供水方式朝向高效节能、自动可靠的方向发展,采用PLC水塔水位控制系统进行供水可以提高供水系统的稳定性和可靠性,同时系统具有良好的节能性,这在能源日益紧缺的今天尤为重要,所以研究设计该系统,对于提高企业效率以及人民的生活水平、降低能耗等方面具有重要的现实意义。
1.2
水位自动控制系统由PLC(核心控制部件)、高低位的水位检测电路、高低水位信号传送给PLC水泵电动机控制电路(PLC控制程序实现的此水位控制)
“PC嵌入NC”结构的数控系统。如FANUC181系统、51emens840D系统、Numl060系统等。这是由于一些数控系统制造商不愿放弃多年来积累的数控软件技术,又想利用计算机丰富的软件资源而开发的产品。然而,尽管它也具有一定的开放性,但由于它的NC部分仍然是传统的数控系统,其体系结构还是不开放的。因此,用户无法介入数控系统的核心。

基于PLC的温湿度自动控制系统的设计

基于PLC的温湿度自动控制系统的设计

摘 要 :本 设 计 采 用 三菱 F X 2 N 系 列 可 编 程 控 制 器 来 实 现 温 室 大 棚 的 自动 化 控 制 。温 度 、湿 度 等 环 境 因子 在 植 物 生 长 过 程 中起 重 要 作 用 , 因此 在 检 测 环 境 因 子 时 ,要 考 虑 到 精度 、反 应 速 度 以及 方 便 设 备 连 接 等 问 题 ,故 采 用 温 湿 度 一 体 传 感 器 对 环 境 指 标 进 行 检 测 ,传 感 器 将
中 图 分类 号 :T P 2 7 1 + . 4 文 献 标 识 码 :A 文 章 编 号 :2 0 9 5 — 5 5 5 3 f 2 0 1 5 1 0 2 — 0 2 4 6 — 0 3
陈会 莲 , 谷 明月 , 郑艳博 , 闫颖 . 基于 P L C的 温 湿度 自动控 制 系 统 的设 计 [ J 】 . 中 国农 机 化学 报 , 2 0 1 5 , 3 6 ( 2 ) : 2 4 6 ~ 2 4 8 C h e n Hu i l i a n , G u Mi n g y u e , Z h e n g Y a n b o , Y a h Yi n g . D e s i g n o f a u t o m a t i c c o n t r o l s y s t e m o f t e m p e r a t u r e a n d h u m i d i t y b a s e d o n P L C l J 1 . J o u r n a l o f
由于P L C 的输 出触 点 负载 能 力 铰低 .如 果 由输 出
等 本 系 统 选 用 具 有 较 高 性 价 比 的 三 菱 F X 2 N系 列
P L C作 为 现 场 控 制 设 备 。 传 感 器 选 用 L T M8 9 0 1 ,它

plc泳池水循环自动控制设计

plc泳池水循环自动控制设计

plc泳池水循环自动控制设计PLC泳池水循环自动控制设计一、引言泳池是人们休闲娱乐的场所,为了保证泳池水的清洁和水质的稳定,需要进行水循环和处理。

传统的泳池水循环控制方式通常依靠人工操作,效率低下且易出错。

为了解决这一问题,本文将介绍一种基于PLC(可编程逻辑控制器)的泳池水循环自动控制设计方案。

二、设计原理1. 传感器监测:设计中将安装多个传感器,包括水位传感器、PH 值传感器和温度传感器,用于实时监测泳池水的水位、酸碱度和温度信息。

2. PLC控制器:PLC作为控制核心,通过接收传感器信号,并根据预设的控制策略,实现对泳池水循环设备的自动控制。

3. 自动控制策略:根据泳池水的水位、酸碱度和温度信息,PLC将根据预设的控制策略进行自动调节。

当水位过低时,PLC将打开补水阀,补充适量的水;当水位过高时,PLC将关闭进水阀;当PH 值过高或过低时,PLC将开启酸碱度调节装置,实现自动调节;当水温过高或过低时,PLC将启动加热或制冷设备。

4. 过滤和消毒装置:PLC还将控制过滤和消毒装置的运行,根据预设的时间间隔或水质监测结果,自动开启和关闭泵、过滤器和消毒装置,确保泳池水的清洁和卫生。

三、系统组成1. 传感器部分:水位传感器、PH值传感器和温度传感器。

2. 控制器部分:PLC控制器,负责接收传感器信号,并实现自动控制策略。

3. 执行部分:包括补水阀、进水阀、酸碱度调节装置、加热和制冷设备、过滤器和消毒装置等。

四、系统工作流程1. 系统启动:当泳池水循环自动控制系统启动时,PLC控制器将读取传感器信息,并根据预设策略进行判断和控制。

2. 水位控制:如果水位过低,PLC将打开补水阀,补充适量的水;如果水位过高,PLC将关闭进水阀。

3. 酸碱度控制:如果PH值过高或过低,PLC将开启酸碱度调节装置,通过控制酸碱溶液的加入量,实现自动调节。

4. 温度控制:如果水温过高或过低,PLC将启动加热或制冷设备,通过控制加热或制冷装置的运行,实现水温的调节。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实现对温度的采集和转换,大大简化了电路的复杂度,以及算法的要求。

首先先来介绍一下DS18B20这块传感器的特性及其功能: DSl8B20的管脚及特点 DS18B20可编程温度传感器3 个管脚。

图4-3 温度传感器DS18B20(如图:1) GND为接地线,DQ为数据输入输出接口,通过一个较弱的上拉电阻与单片机相连。

VDD为电源接口,既可由数据线提供电源,又可由外部提供电源,范围3.O~5.5 V。

本文使用外部电源供电。

主要特点有:1.用户可自设定报警上下限温度值。

2.不需要外部组件,能测量-55~+125℃范围内的温度。

3.-10℃ ~ +85℃范围内的测温准确度为±0.5℃。

4.通过编程可实现9~l2位的数字读数方式,可在至多750 ms内将温度转换成12 位的数字,测温分辨率可达0.0625℃。

5. 独特的单总线接口方式,与微处理器连接时仅需要一条线即可实现与微处理器双向通讯。

主要由4部分组成:64位光刻R0M、温度传感器、非易失性的温度报警触发器TH和TL、配置寄存器。

R0M 中的64位序列号是出厂前被光刻好的,他可以看作是该DSISB20的地址序列码,每个DSI8B20的64位序列号均不相同。

高低温报警触发器TH 和TL,配置寄存器均由一个字节的E2PROM组成,使用一个存储器功能命令可对 TH,TL或配置寄存器写入。

其次配置寄存器中R1,R0决定温度转换的精度位数:R1R0=’00’,9位精度,最大转换时间为93.75 ms;R1R0 = ‘01’,10位精度,最大转换时间为187.5 ms;R1R0 = ‘10’, 11位精度,最大转换时间为375 ms;R1R0 =’11’,12位精度,最大转换时间为750 ms;未编程时默认为12位精度。

本系统采用的也是12位的精度。

DS18B20的内存结构 DSI8B2 0温度传感器的内部存储器包括一个高速暂存RAM (便笺式的内部存储器)和一个非易失性的可电擦除的EEPROM,后者存放高温和低温触发器TH,TL和结构寄存器。

便笺存储器包含图5-1最小系统2. 继电器模块下图是一个继电器的图,继电器和单片机的P1.3口进行通讯。

如图5-2继电器RK10kQKK1REDKJK0JK1JK2T03.显示模块该显示模块的动态显示数码管,我们用到前面四个数码管,P0口是送字符的,P2口是用来位选数码管的。

各个数码管都是单片机的输出,输出断码一样,为了显示不同的数字,采用动态显示。

如图5-3。

图5-3 动态显示数码管4.芯片系统本系统采用的是AT89C51芯片。

下面是它的引脚图。

如图5-4如图5-4 AT89C51芯片5.DS18B20简介DS18B20是最新的单线温度传感器,体积小,适用电压宽,经济。

下面是DS18B20的管脚配置和结构。

如图5-4DS18B20的管脚配置和结构如图5-5引脚定义1. DQ为数字信号输出/输入端2.GND为电源地3.VDD为外接电源输入端6.单片机与DS18B20连接图六.软件设计说明本系统采用的是循环查询方式,来显示和控制温度的。

1.总模块的流程图图8-1流程图2.各个模块的流程图读取温度DS18B20模块的流程如图8-2S18B20模块的流程七.操作指引按键功能1. Enter →P1.5(k2)2. Up →P1.6(k3)3. Down →P1.7(k4)显示温度1. 未插DS18B20时,数码管显示错误888.8.2. 插入DS18B20是,数码管显示当前温度XX.X设定温度1.按下Enter,数码管温度显示停止,显示的数字变的比以前亮。

2.这时可以按Up和Down来调节当前温度。

3.调节好后,按Enter退出。

这时数字变的又暗了,数码管继续显示当前温度继电随着设定的温度,依据情况跳变。

致谢此次能顺利完成毕业设计,除了我自身的不懈努力以外,还得到了身边许多人的帮助,有同学、有校友、还有老师,他们在我帮助我解决了很多问题,他们帮助让我学到了许多知识,少走了很多弯路。

为此,在这里我要对那些予以我帮助和支持每一位老师和同学表示衷心的感谢。

此外,还要特别感谢我的指导老师陆中宏老师。

在整个毕业设计过程中,老师总是很扼要的指出问题所在,一针见血,帮我解决了很多烦恼的问题。

并且他在繁忙的工作之余,他还能抽出宝贵时间主动来指导我的毕业设计,并对我设计中的每一个环节,每一个步骤和方案的设计都做了一一的了解、纠正和补充。

老师在我的开题报告和论文上的帮助也是很多的,凭借他的学识、经验和文采帮助我完成了整个毕业设计。

再次郑重地向他说声:谢谢您,老师!附录单片机DS18B20水温控制系统设计程序源码TEMPERATURE_L DATA 31H ;DS18B20低8位BufferTEMPERATURE_H DATA 30H ;DS18B20高8位BufferTEMPERATURE_HC DATA 32H ;计算后的百位和十位的BCD码存放BU FFERTEMPERATURE_LC DATA 33H ;计算后的个位和小数位的BCD码存放BUFFERTEMPERATURE_ZH DATA 34H ;计算后十位和个位HEX码的存放BUFFERDIS_BUF_X DATA 35H ;数码管小数位BufferDIS_BUF_G DATA 36H ;数码管个位BufferDIS_BUF_S DATA 37H ;数码管十位BufferDIS_BUF_B DATA 38H ;数码管百位BufferKEY_BUF_G DATA 39H ;键盘输入后,的个位值KEY_BUF_S DATA 49H ;键盘输入后,的十位值KEY_BUF_B DATA 41H ;键盘输入后,的百位值K_UP EQU P1.5 ;上调按钮K_DOWN EQU P1.6 ;下调按钮K_ENTER EQU P1.7 ;输入数据确认按钮P_DS18B20 EQU P3.3 ;读取DS18B20的输入端口P_SWITCH EQU P1.3 ;继电器控制端口,1-风扇,0-电炉FLAG EQU 20H.0 ;标志位,确定是否存在DS18B20ENTER_FLAG EQU 20H.1 ;键盘输入的标志位,为0说明键盘正在输入,为1说明键盘输入退出;程序开始执行ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,#60H ;初始化MOV KEY_BUF_G,#00H ;由于KEY_BUF是由用户输入的,所以先赋值初始化MOV KEY_BUF_S,#00HMOV KEY_BUF_B,#00HNEXT:LCALL READ_TEMP ;调用读温度子程序JB FLAG,NORMAL ;判断是否有DS18B20的存在CALL ERR ;不存在时显示错误信息AJMP NEXTNORMAL: LCALL DATA_DEA ;处理从DS18B20得到的数据LCALL SET_DIS_BUF ;赋值给DIS_BUF_X,G,S,BLCALL DISPLAY ;调用数码管显示子程序LCALL SCAN_KEY ;扫描键盘LCALL SWITCH ;处理继电器AJMP NEXT;程序名称:ERR;功能:程序出错处理,显示四个8,即8888;入口参数:无;出口参数:DIS_BUF_X,DIS_BUF_G, DIS_BUF_S, DIS_BUF_BERR: MOV DIS_BUF_X,#08H ;如果没有找到DS18B20,那么就显示错误,错误显示为888MOV DIS_BUF_G,#08HMOV DIS_BUF_S,#08HMOV DIS_BUF_B,#08HLCALL DISPLAYRET;程序名称:DATA_DEAL;功能:处理采集后的的数据;入口参数:TEMPERATURE_L;出口参数:DIS_BUF_G, DIS_BUF_S, DIS_BUF_BDATA_DEAL:MOV A,TEMPERATURE_H ;判温度是否零下ANL A,#80HJZ TEMPC1 ;A为0,说明是正数,跳往TEMPC1,如果是负数, ;则对低8为进行补码处理 CLR CMOV A,TEMPERATURE_L ;二进制数求补(双字节)CPL A ;取反加1ADD A,#01HMOV TEMPERATURE_L,A ;取补码后存回TEMPERATURE_L,此时TEMPERATURE_L里面的值就能表示温;度了,不过还要继续处理一下。

MOV A,TEMPERATURE_HCPL AADDC A,#00H ;高位TEMPERATURE _H取反,加上从低位TEMPERATURE_L进来的位MOV TEMPERATURE_H,A ;写回TEMPERATURE_HMOV TEMPERATURE_HC,#0BHSJMP TEMPC11TEMPC1: MOV TEMPERATURE_HC,#0AHTEMPC11:MOV A,TEMPERATURE_HCSWAP AMOV TEMPERATURE_HC,AMOV A,TEMPERATURE_LANL A,#0FH ;取A低4位(小数位,单位是0.0625),得出来的数要乘以0.0625,通过查表来算出值MOV DPTR,#TEMPDOTTABMOVC A,@A+DPTR ;查表MOV TEMPERATURE_LC,A ;TEMPERATURE_LC LOW=小数部分 BCDMOV DIS_BUF_X,A ;小数位的BCD码送入显示b uffer中MOV A,TEMPERATURE_L ;整数部分ANL A,#0F0H ;得到个位‘单个数值SWAP A ;SWAP后就得到个位真正的个位MOV TEMPERATURE_L,AMOV A,TEMPERATURE_HANL A,#0FHSWAP AORL A,TEMPERATURE_LMOV TEMPERATURE_ZH,A ;组合后的值存入TEMPERATURE_ ZHLCALL HtoB ;转换HEx值成为BC D码MOV TEMPERATURE_L,A ;TEMPERATURE_L目前存入的是十位和个位的BC ;D编码ANL A,#0F0HSWAP AORL A,TEMPERATURE_HC ;TEMPERATURE_HC LOW位 = 十位数 BCDMOV TEMPERATURE_HC,AMOV A,TEMPERATURE_LANL A,#0FHSWAP A ;TEMPERATURE_ LC HI位 = 个位数 BCDORL A,TEMPERATURE_LCMOV TEMPERATURE_LC,AMOV A,R7JZ TEMPC12ANL A,#0FHSWAP AMOV R7,AMOV A,TEMPERATURE_HC ;TEMPERATURE_HC HI = 百位数 BCDANL A,#0FHORL A,R7MOV TEMPERATURE_HC,ATEMPC12:RET; 小数部分码表TEMPDOTTAB: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H,06H,07H,08H,0 8H,09H,09H;0.0625->00H;0.0625*2 = 0.125->01H;0.0625*3 = 0.1875->01H;0.0625*4 = 0.25->02H;0.0625*5 = 0.3125->03H;以此类推..........;程序名称:HtoB;功能:十六进制转 BCD;入口参数:A;出口参数:R7HtoB: MOV B,#064H ;100DIV AB ;a/100MOV R7,A ;MOV A,#0AHXCH A,BDIV ABSWAP AORL A,BRET;程序名称:INIT_TEMP;功能:初始化DS18B20,确定DS18B20是否是存在的;入口参数:无;出口参数:FLAGINIT_TEMP:SETB P_DS18B20NOPCLR P_DS18B20 ;主机发出延时537微秒的复位低脉冲MOV R0,#6BHMOV R1,#04HTSR1: DJNZ R0,$MOV 40,#6BHDJNZ R1,TSR1SETB P_DS18B20 ;然后拉高数据线,释放总线进入接受状态NOPNOPNOPMOV R0,#32HTSR2: JNB P_DS18B20,TSR3 ;等待DS18B20回应DJNZ R0,TSR2LJMP TSR4 ;延时TSR3: SETB FLAG ;置标志位,表示D S1820存在LJMP TSR5TSR4: CLR FLAG ;清标志位,表示DS1820不存在LJMP TSR7TSR5: MOV R0,#06BHTSR6: DJNZ R0,TSR6 ;时序要求延时一段时间TSR7: SETB P_DS18B20RET;程序名称:READ_TEMP;功能:读取DS18B20的数据;入口参数:TEMPERATURE_L,TEMPERATURE_H;出口参数:无READ_TEMP:SETB P_DS18B20LCALL INIT_TEMP ;先复位DS18B20JB FLAG,TSS2RET ;判断DS1820是否存在?若DS18B20不存在则返回TSS2: MOV A,#0CCH ;跳过ROM匹配LCALL WRITE_18B20MOV A,#44H ;发出温度转换命令LCALL WRITE_18B20;LCALL DISPLAY ;等待AD转换结束,12位的话750微秒LCALL INIT_TEMP ;准备读温度前先复位MOV A,#0CCH ;跳过ROM匹配LCALL WRITE_18B20MOV A,#0BEH ;发出读温度命令LCALL WRITE_18B20LCALL READ_18B20 ;将读出的温度数据保存到35H/36HRET;具体的步骤:初始化完后当拉低电平开始产生写时隙-》15微妙之内送入一位数据-》15~60微妙1820来;采样读取它;程序名称:WRITE_18B20;功能:将A保存的数值写入DS1820中,有具体的时序要求,详细参考附图的说明;入口参数:A 寄存器;出口参数:无WRITE_18B20:MOV R2,#8 ;一共8位数据,串行通信CLR CWR1: CLR P_DS18B20MOV R3,#07DJNZ R3,$RRC A ;循环右移MOV P_DS18B20,CMOV R3,#3CHDJNZ R3,$ ;23*2 = 46微妙SETB P_DS18B20NOPDJNZ R2,WR1 ;A里面一共是8位,所以要送8次SETB P_DS18B20 ;释放总线RET;程序名称:READ_18B20;功能:读取18B20中的数据,由于是串行通信,每次读取一个,循环8次读取;入口参数:TEMPRATURE_L;出口参数:无READ_18B20:MOV R4,#4 ;将温度高位和低位从D S18B20中读出MOV R1,#TEMPERATURE_LRE00: MOV R2,#8 ;数据一共有8位RE01: CLR CSETB P_DS18B20NOPNOPCLR P_DS18B20NOPNOPNOPSETB P_DS18B20MOV R3,#09RE10: DJNZ R3,RE10MOV C,P_DS18B20MOV R3,#3CHRE20: DJNZ R3,RE20RRC ADJNZ R2,RE01MOV @R1,ADEC R1DJNZ R4,RE00RET;程序名称:SCAN_KEY;功能:扫描键盘;入口参数:DIS_BUF_G,DIS_BUF_S,DIS_BUF_B;出口参数:KEY_BUF_G,KEY_BUF_S,kEY_BUF_BSCAN_KEY:JB K_ENTER,QUIT ;如果又Enter键入,则开始键盘输入LCALL K_DELAYJB K_ENTER,QUITCLR ENTER_FLAG ;每次进来都赋值输入标志,设置为0MOV KEY_BUF_G,DIS_BUF_G ;将当前的温度赋值给KEY_BUF,也就是说是以当 ;前温度为基准,进行加减的MOV KEY_BUF_S,DIS_BUF_SMOV KEY_BUF_B,DIS_BUF_BK_LOOP:JB ENTER_FLAG,QUIT ;如果输入完成,ENTER_F LAG则为1,退出键盘程序JB K_ENTER,KUPCALL PRO_ENTERKUP: JB K_UP,KDOWNCALL PRO_UPKDOWN:JB K_DOWN,LOOPACALL PRO_DOWNLOOPA:LCALL DISPLAYSJMP K_LOOPQUIT: RET;程序名称:PRO_ENTER;功能:确认键盘输入和退出键盘输入;入口参数:ENTER_FLAG;出口参数:ENTER_FLAGPRO_ENTER:CALL K_DELAYJB K_ENTER,K_LOOP ;按钮抖动处理SETB ENTER_FLAGCALL K_DELAYRET;程序名称:PRO_UP;功能:数值上调处理;入口参数:KEY_BUF_G,KEY_BUF_S,KEY_BUF_B;出口参数:DIS_BUF_G,DIS_BUF_S,DIS_BUF_BPRO_UP:CALL K_DELAYJB K_UP,K_LOOP ;按钮抖动处理INC KEY_BUF_G ;个位增一MOV A,KEY_BUF_GCJNE A,#0AH,UPNEXT ;个位增加到10,回0MOV KEY_BUF_G,#00HINC KEY_BUF_S ;十位加一MOV A,KEY_BUF_SCJNE A,#0AH,UPNEXT ;十位超过99,溢出了MOV R0,#200ERROR1:LCALL ERR ;出错,显示8888 DJNZ R0,ERROR1DEC KEY_BUF_S ;退回99MOV KEY_BUF_G,#09HUPNEXT:MOV DIS_BUF_G,KEY_BUF_GMOV DIS_BUF_S,KEY_BUF_SMOV DIS_BUF_B,KEY_BUF_BCALL K_DELAYRET;程序名称:PRO_DOWN;功能:数值下调处理;入口参数:KEY_BUF_G,KEY_BUF_S,KEY_BUF_B;出口参数:DIS_BUF_G,DIS_BUF_S,DIS_BUF_BPRO_DOWN:CALL K_DELAYJB K_DOWN,K_LOOP ;按钮抖动处理DEC KEY_BUF_G ;个位减一MOV A,KEY_BUF_GCJNE A,#0FFH,DOWNNEXT ;个位减到0,回到9MOV KEY_BUF_G,#09HDEC KEY_BUF_S ;十位减一MOV A,KEY_BUF_SCJNE A,#0FFH,DOWNNEXT;十位低于0,溢出了MOV R0,#200ERROR2:LCALL ERR ;出错,显示8888 DJNZ R0,ERROR2INC KEY_BUF_S ;退回00MOV KEY_BUF_G,#00HDOWNNEXT:MOV DIS_BUF_G,KEY_BUF_G ;增加完成后,赋值退出,然后DISPLAY显示出来MOV DIS_BUF_S,KEY_BUF_SMOV DIS_BUF_B,KEY_BUF_BCALL K_DELAYRETK_DELAY: ;键盘抖动延时子程序MOV R6,#250DL20MS_1:MOV R7,#200DJNZ R7,$DJNZ R6, DL20MS_1RET;继电器控制SWITCH:MOV A,KEY_BUF_G ;三个Buffer都是0的话,说明还没有输入数值, ;l直接退出JNZ SNEXTMOV A,KEY_BUF_SJNZ SNEXTMOV A,KEY_BUF_BJZ SQUITSNEXT: CALL SET_DIS_BUFMOV A,KEY_BUF_SSUBB A,DIS_BUF_SJC COOLJNZ HOT ;十位如果相等,那么继续比较个位MOV A,KEY_BUF_GSUBB A,DIS_BUF_GJC COOLHOT: CLR P_SWITCH ;P_SWITCH 为0说明当前温度小于设定温度,要升 ;温,所以接电炉SJMP SQUITCOOL: SETB P_SWITCH ;P_SWITCH 为1说明当前温度大于设定温度,要降温, ;所以接风扇SQUIT:RET;程序名称:SET_DIS_BUF;功能:赋值给DIS_BUF_G, DIS_BUF_S, DIS_BUF_B;入口参数:TEMPERATURE_LC,TEMPERATURE_HC;出口参数:DIS_BUF_G, DIS_BUF_S, DIS_BUF_BSET_DIS_BUF:MOV A,TEMPERATURE_LCANL A,#0FHMOV DIS_BUF_X,A ;小数位MOV A,TEMPERATURE_LCSWAP AANL A,#0FHMOV DIS_BUF_G,A ;个位MOV A,TEMPERATURE_HCANL A,#0FHMOV DIS_BUF_S,A ;十位MOV A,TEMPERATURE_HCSWAP AANL A,#0FHMOV DIS_BUF_B,A ;百位MOV A,TEMPERATURE_HCANL A,#0F0HCJNE A,#010H,NEXT0SJMP NEXT1NEXT0: MOV A,TEMPERATURE_HCANL A,#0FHJNZ NEXT1 ;十位数是0MOV A,TEMPERATURE_HCSWAP AANL A,#0FHMOV 73H,#0AH ;符号位不显示MOV 72H,A ;十位数显示符号NEXT1: RET;程序名称:DISPLAY;功能:显示数据到数码管中。

相关文档
最新文档