基于51单片机的恒温控制系统

合集下载

基于51单片机的水温控制系统设计毕业论文

基于51单片机的水温控制系统设计毕业论文

基于51单片机的水温控制系统设计毕业论文基于单片机的水温控制系统摘要水在人们日常生活和工业生产中有着必不可少的作用,在不同环境和不同的需求中,水温的变化也对我们的生活和工业生产有着重要的影响,为了满足人们在各个领域所需要的水温,水温控制系统在各个领域也应运而生。

随着社会的发展,科技的进步,智能化已经是温控系统发展的主流方向,小到人们生活中的饮水机,大到工业生产中的大型水温加热控制设备等各种水温控制系统发展以趋于成熟。

传统靠人工控制的温度,湿度,液位等信号的测压、力控系统,外围电路比较复杂,测量精度较低,分辨率不高,需进行温度校正;并且他们的体积较大适用不方便,在工业生产中也可能应为各种认为的失误发生意外,针对此问题,本系统设计的目的就是实现一种可连续高精度持续调温的温度控制系统,它应用广泛,功能强大,操作简单,便于携带,是一款既实用又廉价的控制系统。

温度检测控制系统在工业生产中主要职责是对温度进行严格的监测,在温度发生变化不符合规定温度时,系统报警提示并做出相应的温度调整措施,以使得生产能够顺利进行,节省了大量的人工,产品的质量也得到充分的保障,同时也避免了各种潜在意外的发生。

从而提高企业的生产效率。

本系统以89C51单片机为核心,扩展外围控制电路,检测变送电路,按键电路,显示电路,复位电路,时钟电路,电源电路,报警电路;本系统的整体运行过程为:通过按键电路设定理想水温范围,实时水温通过检测变送电路模检测,并将检测到的物理量转化成电信号,然后放大电信号并将模拟量同过A/D 转换为单片机识别的数字量发送给单片机。

单片机系统将实时温度与设定温度进行对比,并通过显示电路将实时温度显示出来,如果实时温度大于设定的最高温度或者低于设定的最低温度一定时间,单片机将触发报警电路对过温或者低温进行警报,同时触发控制电路对水温的控制做出适当的调整,确保水温出在理想的温度值,满足需求。

系统检测变送电路中采用电流型温度传感器AD590将温度的变化量转变成电流量,然后采用OP-07将电流量转换为电压量。

基于51单片机的温度控制系统

基于51单片机的温度控制系统

基于51单片机的温度控制系统0引言在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。

例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。

采用MCS-51单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。

因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题。

本文以它为例进行介绍,希望能收到举一反三和触类旁通的效果。

1硬件电路设计以热电偶为检测元件的单片机温度控制系统电路原理图如图1所示。

1.1 温度检测和变送器温度检测元件和变送器的类型选择与被控温度的范围和精度等级有关。

镍铬/镍铝热电偶适用于0℃-1000℃的温度检测范围,相应输出电压为0mV-41.32mV。

变送器由毫伏变送器和电流/电压变送器组成:毫伏变送器用于把热电偶输出的0mV-41.32mV变换成4mA-20mA的电流;电流/电压变送器用于把毫伏变送器输出的4mA-20mA电流变换成0-5V的电压。

为了提高测量精度,变送器可以进行零点迁移。

例如:若温度测量范围为500℃-1000℃,则热电偶输出为20.6mV-41.32mV,毫伏变送器零点迁移后输出4mA-20mA范围电流。

这样,采用8位A/D转换器就可使量化温度达到1.96℃以内。

1.2接口电路接口电路采用MCS-51系列单片机8031,外围扩展并行接口8155,程序存储器EPROM2764,模数转换器ADC0809等芯片。

由图1可见,在P2.0=0和P2.1=0时,8155选中它内部的RAM工作;在P2.0=1和P2.1=0时,8155选中它内部的三个I/O端口工作。

相应的地址分配为:0000H - 00FFH 8155内部RAM0100H 命令/状态口0101H A 口0102H B 口0103H C 口0104H 定时器低8位口0105H 定时器高8位口8155用作键盘/LED显示器接口电路。

《2024年基于51单片机的温度控制系统设计与实现》范文

《2024年基于51单片机的温度控制系统设计与实现》范文

《基于51单片机的温度控制系统设计与实现》篇一一、引言在现代工业控制领域,温度控制系统的设计与实现至关重要。

为了满足不同场景下对温度精确控制的需求,本文提出了一种基于51单片机的温度控制系统设计与实现方案。

该系统通过51单片机作为核心控制器,结合温度传感器与执行机构,实现了对环境温度的实时监测与精确控制。

二、系统设计1. 硬件设计本系统以51单片机为核心控制器,其具备成本低、开发简单、性能稳定等优点。

硬件部分主要包括51单片机、温度传感器、执行机构(如加热器、制冷器等)、电源模块等。

其中,温度传感器负责实时监测环境温度,将温度信号转换为电信号;执行机构根据控制器的指令进行工作,以实现对环境温度的调节;电源模块为整个系统提供稳定的供电。

2. 软件设计软件部分主要包括单片机程序与上位机监控软件。

单片机程序负责实时采集温度传感器的数据,根据设定的温度阈值,输出控制信号给执行机构,以实现对环境温度的精确控制。

上位机监控软件则负责与单片机进行通信,实时显示环境温度及控制状态,方便用户进行监控与操作。

三、系统实现1. 硬件连接将温度传感器、执行机构等硬件设备与51单片机进行连接。

具体连接方式根据硬件设备的接口类型而定,一般采用串口、并口或GPIO口进行连接。

连接完成后,需进行硬件设备的调试与测试,确保各部分正常工作。

2. 软件编程编写51单片机的程序,实现温度的实时采集、数据处理、控制输出等功能。

程序采用C语言编写,易于阅读与维护。

同时,需编写上位机监控软件,实现与单片机的通信、数据展示、控制指令发送等功能。

3. 系统调试在完成硬件连接与软件编程后,需对整个系统进行调试。

首先,对单片机程序进行调试,确保其能够正确采集温度数据、输出控制信号。

其次,对上位机监控软件进行调试,确保其能够与单片机正常通信、实时显示环境温度及控制状态。

最后,对整个系统进行联调,测试其在实际应用中的性能表现。

四、实验结果与分析通过实验测试,本系统能够实现对环境温度的实时监测与精确控制。

基于51单片机的温度控制系统设计

基于51单片机的温度控制系统设计

基于51单片机的温度控制系统设计引言:随着科技的不断进步,温度控制系统在我们的生活中扮演着越来越重要的角色。

特别是在一些需要精确控制温度的场合,如实验室、医疗设备和工业生产等领域,温度控制系统的设计和应用具有重要意义。

本文将以基于51单片机的温度控制系统设计为主题,探讨其原理、设计要点和实现方法。

一、温度控制系统的原理温度控制系统的基本原理是通过传感器感知环境温度,然后将温度值与设定值进行比较,根据比较结果控制执行器实现温度的调节。

基于51单片机的温度控制系统可以分为三个主要模块:温度传感器模块、控制模块和执行器模块。

1. 温度传感器模块温度传感器模块主要用于感知环境的温度,并将温度值转换成电信号。

常用的温度传感器有热敏电阻、热敏电偶和数字温度传感器等,其中热敏电阻是最常用的一种。

2. 控制模块控制模块是整个温度控制系统的核心,它负责接收传感器传来的温度信号,并与设定值进行比较。

根据比较结果,控制模块会输出相应的控制信号,控制执行器的工作状态。

51单片机作为一种常用的嵌入式控制器,可以实现控制模块的功能。

3. 执行器模块执行器模块根据控制模块输出的控制信号,控制相关设备的工作状态,以实现对温度的调节。

常用的执行器有继电器、电磁阀和电动机等。

二、温度控制系统的设计要点在设计基于51单片机的温度控制系统时,需要考虑以下几个要点:1. 温度传感器的选择根据具体的应用场景和要求,选择合适的温度传感器。

考虑传感器的测量范围、精度、响应时间等因素,并确保传感器与控制模块的兼容性。

2. 控制算法的设计根据温度控制系统的具体要求,设计合适的控制算法。

常用的控制算法有比例控制、比例积分控制和模糊控制等,可以根据实际情况选择适合的算法。

3. 控制信号的输出根据控制算法的结果,设计合适的控制信号输出电路。

控制信号的输出电路需要考虑到执行器的工作电压、电流等参数,确保信号能够正常控制执行器的工作状态。

4. 系统的稳定性和鲁棒性在设计过程中,需要考虑系统的稳定性和鲁棒性。

可实现的基于MCS-51单片机的恒温控制系统的设计

可实现的基于MCS-51单片机的恒温控制系统的设计
从水温检测 、信号处理 、输入 、运算到输 出控制 电阻丝
电压信号 , 经过 A/ D转换 , 保存在采样值 单元 ; 利用键盘
输入 设定温度 , 经温度 标度转换 转化成二 进制数 , 存 保 在片 内设定值 单元 ; 然后调显示子程序 , 多次显示设 定温
加 热功率 以实 现水 温控 制的全 过程 。 单片 机的使 用为 实 现水 温的智 能化控 制 以及提 供 完善 的人机 交互 界面 提供 了可能 。所 以本设 计将 采用 以单 片机为 核心 的直
1 引 言
在 实际生产过程 中, 对各 类加热炉 、热处理炉 、反
度和采样 温度 , 再把采样值与设定值进行 P D运算得 出 I 控 制量 , 用其去 调节可控 硅触发 端的通 断 , 实现对 电阻
应炉和锅炉 中的温度都需监 测和控制 , 从而保 证生产 过
程的顺利进行【 。选择单片机来控制温度不仅具有控制 方便 、简单和灵活性大 等优点 , 而且可 以大幅度提高被 控对 象 的技术指标 , 而大大 提高 产品 的品质和 数量 。 从 以单 片机 为控制核心 的温控 系统 , 具有 非常理想 的控 制
饥; 湍 ; D 转换 ; I A/ P D算 法 文献 : B 文章 编 弓:0 3 2 1 0 81 0 0 0 10 74 ( 0 )0 18 3 2
_I分 类 : P 6 {冬 1J T 44
An E e d d F ut c Prt ciga d Mo i r g S se mb d e a lAr oe t n nt i y t m n on
丝加 热 时间 的控 制 ,以此来调 节 水温 使 其基本Байду номын сангаас保持 恒
定 。主 要性 能 指标 如下 :( 1)温 度设 定 范 围 :35 ~

基于51单片机的温度报警控制系统报告

基于51单片机的温度报警控制系统报告

报告评分批改老师《现代电子综合实验》课程设计报告基于单片机的温度检测控制系统设计学生姓名 学 号专 业 班 级同组学生 提交日期 年 月 日指导教师目录2一、实验目的 .....................................................................................2二、实验要求 .....................................................................................2三、实验开发环境及工具 ...........................................................................2四、按键扫描和液晶显示功能实现 ...................................................................24.1矩阵键盘电路 ...............................................................................4.1.1矩阵键盘电路简介 .....................................................................224.1.2矩阵式按键扫描原理 ...................................................................24.1.3 按键扫描子程序设计思想及流程图 ......................................................34.2 LCD1602显示电路 ..........................................................................34.2.1 LCD1602模块简介 ....................................................................34.2.2 LCD1602模块引脚说明 .................................................................4.2.3 LCD1602控制方式及指令 ..............................................................344.2.4 LCD1602液晶显示子程序设计思想及流程图 ..............................................5五、基于单片机的温度检测控制系统设计过程 .........................................................55.1 系统整体电路框图及功能说明 ................................................................55.2 DS18B20数字温度传感器电路 ..............................................................55.2.1 单总线通信方式简介 ..................................................................65.2.2 DS18B20简介 ......................................................................5.2.3 DS18B20读写操作 ..................................................................665.3 声光报警及控制电路 ........................................................................75.4 软件设计 ..................................................................................5.4.1 主程序设计流程图 ....................................................................775.4.2 DS18B20子程序设计思想及流程图 ...................................................85.4.3 声光报警子程序设计思想及流程图 .....................................................9七、 实验过程及实验结果 ...........................................................................9八、实验中遇到的问题及解决方法 ...................................................................10附件 ............................................................................................一、实验目的(1). 掌握单片机应用系统的设计方法与步骤;(2).掌握硬件电路各功能模块的工作原理、应用电路与编程方法;(3).熟练掌握单总线的应用及编程;(4). 掌握基于单片机的温度检测控制系统的设计与实现。

基于51单片机的温度控制系统设计

基于51单片机的温度控制系统设计
动 力 与 电 气 工 程
S O I E N C E &T E C H N 0 L O G Y
皿圆
基于 5 1单 片机 的温 度 控 制 系统 设计
李先 利 张 家 为 4 0 1 31 1 ) ( 重温 度控 制 系统 的硬件 电路 设计 . 总体 机 构 、 工作 原理 , 键盘 显示 等硬件 电路 、 单 片机及 扩展 几 1 3 ' 电路A / D 转 换和 D / A转换 电路 作 了详细的说 明和论述 。 关键 词 : 单 片机 温度控 制 系统设计 中图 分 类 号 : T P 2 7 4 文献 标 识 码 : A 文章 编号 : 1 6 7 2 -3 7 9 1 ( 2 0 1 3 ) 1 0 ( e ) - 0 1 0 5 - 0 1 本 文 对 单 片 机 的 温 度 控 制 系 统 进 行 论 述的时候 , 主 要 是 从 具 体 的 四 个 组 成 部 分 进行 : 第一是输 入部分 ; 第 二 是 输 出部 分 ; 第 三 是按 键 部 分 ; 第 四是 显 示 部 分 。 温 度 控 制系 统通过 A DC 0 8 0 9 进行 A / D 转换 的形式 对温度传 感器的 实际温度 进行检测 , 同 时 将检测送 到单片机 中 , 如 果 检 测 到 的 值 同 设 定 值 在 比 较 的 时 候 出现 了 偏 差 , 会 对 偏 差值进行修 正 , 得 到 的 控 制 值 对 电机 转 速 进行 控 制 , 实 现 温 度 的控 制 。 这个 公 式 中 , Ama x 代表 的 是 测 量范 围 中的 最 大值 , 而 Ami n 代表 的是 测 量 范 围 中的 最 小值。 因此 , 可以将相应的数值加入公式中 进行计算 。 比如n 是8 的时候 , 而 Y是 3 的 时 候, 就 可 以满 足 相 应 模 数 转 换 器 的 要 求 。 最 常 用 的 模 数 转 换 器 是 ADC 0 8 0 9 , 这 个 转 换 器 的特 点是 价 格 比较 便 宜 , 性能较好 , 同时 有八个通 道 , 并 且 可 以 对 同一 个 参 数 进 行 测定 , 也 可 以 对 不 同 的 参 数进 行 测 定 。 本 次 设 计 中 是 通过 多 通 道 采集 的 方式 来 获取 温 度信号 , 这 样 可 以 对 系 统 的 各 个 要 求 进 行 充 分 的满 足 。 因此 , 本 次 设 计 中 的模 数转 换 所用 的 器件 选 择 用ADC0 8 0 9。 2 . 4 人机 交互 的设 计 人 机 界 面 主要 是 通 过 人 与 机 器 进 行 充 分 的结 合 , 从而对功能的选择、 控 制 参数 以 及 执行进 行设定 , 同时 对 温 度 的 显 示 等 功 能 进行较好 的控制 。 在 单 片 机 的 应 用 系 统 中, 人 机 交 互 是 属 于 外 部 设备 构成 系统 。 这 个 设 计 是 通 过 应 用 系统 同相 应 的 操 作 人 员 进 行相互 的活动 , 通 过 这 种 形 式 让 系 统 同 外 界进行相应 的联 系。 如 果 需 要 一 个 较 为 安全 的应用 系统 , 应 该 拥 有 较 为 灵 活 和 方 便 的交互功 能。 这 个 系 统 不 但 能 够 将 系 统 运 行 的 状 态 较 好 地 展示 出 来 , 同 时 又 可 以 进 行 恰 当的 人 工 干 预 。 2. 5 显示接 口的设计 在单片微机系统中 , 常用的显示器有 : 数码 管显示 器 , 简称 L E D, 液 晶显 示 器 , 简

基于单片机的恒温箱控制系统设计

基于单片机的恒温箱控制系统设计

基于单片机的恒温箱控制系统设计恒温箱是一种用于保持特定温度的设备,广泛应用于实验室、医疗、食品加工等领域。

为了实现对恒温箱的精确控制,我们可以利用单片机来设计一个智能的恒温箱控制系统。

我们需要选择合适的单片机作为控制核心。

常见的单片机有51系列、AVR系列、STM32系列等,我们可以根据实际需求选择合适的型号。

接下来,我们可以通过编程来实现对恒温箱的控制。

在编程之前,我们需要设计一个合适的硬件电路。

一个基本的恒温箱控制系统包括温度传感器、加热器、风扇、显示屏等组件。

温度传感器用于实时监测箱内温度,加热器和风扇用于调节箱内温度,显示屏用于显示当前温度和设定温度。

在编程方面,我们可以利用单片机的IO口和模拟输入输出功能来实现对各个组件的控制。

首先,我们需要通过温度传感器获取到当前的温度值。

然后,我们可以根据设定的温度范围来判断是否需要调节加热器或风扇。

如果当前温度低于设定温度,则启动加热器;如果当前温度高于设定温度,则启动风扇。

通过不断监测和调节,我们可以实现对恒温箱内温度的精确控制。

除了基本的温度控制功能,我们还可以加入一些其他的功能,以提升系统的智能化程度。

例如,我们可以设置定时开关机功能,实现按照设定的时间自动启动和关闭恒温箱。

我们还可以设计一个温度曲线显示功能,实时显示恒温箱内温度的变化趋势。

此外,我们还可以通过串口通信将实时温度数据传输到计算机上,方便用户进行数据分析和记录。

在系统设计过程中,我们需要考虑到安全性和稳定性。

首先,我们需要加入过温保护功能,当温度超过设定的安全范围时,系统会自动关闭加热器并发出警报。

其次,我们需要合理设计硬件电路,确保电路的稳定性和可靠性。

此外,我们还需要进行充分的测试和调试,确保系统工作正常并能够稳定运行。

基于单片机的恒温箱控制系统设计可以实现对恒温箱内温度的精确控制。

通过合理的硬件设计和编程,我们可以实现恒温箱的智能化控制,提升系统的功能和性能。

这不仅可以满足实验室、医疗、食品加工等领域对恒温箱的需求,还可以为科研人员提供一个稳定、可靠的实验环境。

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

课程设计报告项目名称:基于51单片机的恒温控制系统项目主持人:_________孔亮 ___________班级:_______09电子信息工程_________学号:_________0928401116___________摘要本恒温控制系统设计采用现在流行的51系列单片机,配以DS18B20数字温度传感器,能够较精确的控制温度,并显示设定温度与当前温度。

单片机将检测到的温度信号与设定的温度进行比较,根据两者差值输出相应占空比的PWM波,近而实现对温度的线性控制。

本系统的加热功率为0~10W,供电电源为直流10V,调温范围理论上可达+0℃~100℃,温度调节精度为±0.5℃。

关键词:51单片机;恒温控制;DS18B20;线性控制。

AbstractThis temperature control system design using popular MCS-51 microcontroller, with digital temperature sensor DS18B20, can control temperature quite accurately and display the temperature has been set and the temperature at the present. The microcontroller will compare the tempature detected with the set one, output the PWM wave whose Duty Ratio will change according to the difference of the two tempratures, and to achieve the linear control of the temprature.The heating power is 0 ~ 10W, power supply is 10V (DC), Temperature range +0 ℃~ +100 ℃theoretically , temperature control accuracy of ± 0.5 ℃.Keywords:MCS-51 microcontroller ; temperature control system ; DS18B20 ; linear control .目录摘要 (2)1 引言 (4)1.1 恒温控制系统设计的背景、发展历史及意义 (4)1.2 温度控制系统的目的 (4)1.3 温度控制系统完成的功能 (4)2 总体设计方案 (5)2.1 单片机主控制电路 (5)2.2 人机交互模块 (5)2.3 温度测量与控制模块 (6)3 硬件电路详细设计 (7)3.1 单片机最小系统 (7)3.2 人机交互模块 (7)3.3 测温模块 (9)3.4 温度控制模块 (9)3.5 总电路图 (10)3.6 硬件实物图 (10)4 系统软件设计 (11)4.1 原理框图 (11)4.2 详细程序 (13)5 系统性能测试与分析 (21)5.1 数据记录 (21)5.2 数据分析与结论 (21)6 结束语 (22)1 引言1.1 恒温控制系统设计的背景、发展历史及意义随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。

特别是近年来,温度控制系统已应用到人们生活的各个方面,但温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题。

针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景与实际意义。

温度是科学技术中最基本的物理量之一,物理、化学、生物等学科都离不开温度。

在工业生产和实验研究中,像电力、化工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等领域内,温度常常是表征对象和过程状态的最重要的参数之一。

比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行;炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、柴油、煤油等产品。

没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。

因此,各行各业对温度控制的要求都越来越高。

可见,温度的测量和控制是非常重要的。

单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。

随着温度控制器应用范围的日益广泛和多样,各种适用于不同场合的智能温度控制器应运而生。

1.2 温度控制系统的目的本设计的内容是恒温控制系统,控制对象是温度。

温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制。

而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。

针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,是一款既实用又廉价的控制系统。

1.3 温度控制系统完成的功能本设计是对温度进行实时监测与控制,设计的恒温控制系统实现了基本的温度控制功能:当温度低于设定温度1℃时,系统输出占孔比为1的波形,使加热电阻全功率加热,使温度快速上升,同时红灯亮;当温度上升到与设定温度差值小于1℃时,系统开始输出相应占空比的PWM波,随着温度的上升而不断减小加热电阻功率;当温度上升到设定温度时,系统输出占孔比为0的波形,停止加热,同时绿灯亮。

数码管即时显示温度,精确到小数点一位。

同时可以通过4个按键进行对设定温度的调节。

2 总体设计方案系统总体框图如图1所示。

图1 系统总框图2.1单片机主控制电路主控制电路准备用STC 89C52的单片机作为控制主机。

之所以选择89C52作为主机,是因为89C52作为51系列单片机的一种,其使用性能稳定,价格便宜,完全能够满足此次设计的需求。

而且89C52内部集成了程序存储器,可以装载用户程序,方便后续的课程设计需要。

图2 单片机最小应用系统框图2.2人机交互模块人机交互模块主要包括键盘、数码管、LED指示灯等功能模块,其中键盘用于供用户输入温度期望值,数码管用于显示用户设定温度及容器中水温,LED 指示灯用于指示系统工作状态(加热中、保温中)。

图3 人机交互模块系统框图2.3温度测量与控制模块温度测量模块准备采用美国DALLAS半导体公司的DS18B20温度传感器。

该传感器与传统的热敏电阻等测温元件相比,它能直接读出被测温。

这一部分主要完成对温度信号的采集和转换工作,由DS18B20数字温度传感器及其与单片机的接口部分组成。

数字温度传感器DS18B20把采集到的温度通过数据引脚传到单片机的IO口,单片机接受温度并存储。

此部分只用到DS18B20和单片机,硬件很简单温度控制模块准备采用FAIRYCHILD的8N60C开关管、10W10Ω的水泥电阻。

由单片机根据设定温度与测量温度之差输出相应占空比的PWM波,控制8N60C开关管的通断,近而控制水泥电阻的加热功率。

图3 温度测量与控制模块系统框图3 硬件电路详细设计3.1 单片机最小系统:包括复位电路、时钟电路、电源电路、烧录口共四个单元,其中电源电路与烧录口省略。

电路图如下:其中,31端口接高电平,表明单片机复位后访问内部程序存储器;由于P0口作为输出口时处于漏极开路状态,所以必须外接上拉电阻,如果后期实验中不使用其作为输出口,则此处可省略。

3.2 人机交互模块:(1)、数码管:其中,采用8段共阴数码管,P0口输出段码、位码,P2.2和P2.3分别为段锁存和位锁存。

数码管前四位显示用户测量温度,后四位显示测量温度。

(2)、LED指示灯:其中,指示灯绿色用于指示保温中、红色用于指示加热中,当两个LED均亮起时,表示正处于设置温度状态。

(3)、按键:其中,四个按键分别表示温度设置、上升1摄氏度、下降1摄氏度、确定。

温度设置键用于触发外部中断,以进行温度的调节。

3.3 测温模块:测温模块采用美国DALLAS 半导体公司的DS18B20温度传感器。

其输出与P1.0相连。

3.4 温度控制模块:8N60C 的栅极(G)与P1.1相连,源级(S)接地(注意与单片机控制端共地,否则将导致无法关断),漏极(D)接水泥电阻,水泥电阻另一端接10V 直流电。

水泥电阻是将电阻线绕在无碱性耐热瓷件上,外面加上耐热、耐湿及耐腐蚀之材料保护固定并把绕线电阻体放入方形瓷器框内,用特殊不燃性耐热水泥充填密封而成。

水泥电阻的外侧主要是陶瓷材质。

8N60C 是仙童公司出品的一款N 沟道的MOSFET ,最小开启电压为4V ,最大关断电压为2V ,故可以直接接在单片机IO 口,由高低电平控制通断。

DS18B20引脚图水泥电阻实物图3.5 总电路图:3.6 硬件实物图:4 系统软件设计 4.1 原理框图:(1)、主程序:(2)、定时中断0程序:4.2 详细程序:(1)、main.c#include<reg52.h>#include "18b20.h"#include "delay.h"#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换sbit PWM=P1^1;sbit LED_G=P1^2;sbit LED_R=P1^3;sbit LATCH1=P2^2;//定义锁存使能端口 段锁存sbit LATCH2=P2^3;// 位锁存sbit UP=P3^3;sbit DOWN=P3^4;sbit OK=P3^5;bit ReadTempFlag;//定义读时间标志unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9unsigned char code WeiMa[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码unsigned char TempData[8]={0x3f,0xbf,0x3f,0x39,0x6d,0xbf,0x3f,0x39}; //存储显示值的全局变量unsigned int temp;volatile int usertemp=50;void Display(unsigned char Num);//数码管显示函数void Init_Timer0(void);//定时器初始化void Init_Int0(void);//外部中断初始化/*------------------------------------------------主函数------------------------------------------------*/void main (void){unsigned int TempH,TempL,temp,CYCLE=100,DELTA;Init_Timer0();Init_Int0();while (1) //主循环{if(ReadTempFlag==1){ReadTempFlag=0;temp=ReadTemperature();TempH=temp>>4;TempL=temp&0x0F;TempL=TempL*6/10;//小数近似处理if(TempH/10==0)TempData[0]=0;//消隐elseTempData[0]=DuanMa[TempH/10]; //十位温度TempData[1]=DuanMa[TempH%10]|0x80; //个位温度,带小数点 TempData[2]=DuanMa[TempL];TempData[3]=0x39;//显示C符号}if(TempH<usertemp-1){LED_R=0;LED_G=1;PWM=1;}else{if(TempH>=usertemp){LED_R=1;LED_G=0;PWM=0;}else{LED_R=0;LED_G=1;DELTA=(usertemp-TempH-TempL*10)*100;PWM=1;DelayMs(DELTA);PWM=0;DelayMs(CYCLE-DELTA);}}}/*------------------------------------------------ 显示函数,用于动态扫描数码管------------------------------------------------*/ void Display(unsigned char Num){static unsigned char i=0;DataPort=0; //数码管清零,防止重影LATCH1=1; //段锁存LATCH1=0;DataPort=WeiMa[i]; //取位码LATCH2=1; //位锁存LATCH2=0;DataPort=TempData[i]; //取显示数据,段码LATCH1=1; //段锁存LATCH1=0;i++;if(i==Num)i=0;}/*------------------------------------------------ 定时器初始化子程序------------------------------------------------*/ void Init_Timer0(void){TMOD |= 0x01; //使用模式1,16位定时器//TH0=0x00; //给定初值//TL0=0x00;EA=1; //总中断打开ET0=1; //定时器中断打开TR0=1; //定时器开关打开}/*------------------------------------------------ 定时器中断子程序------------------------------------------------*/ void Timer0_isr(void) interrupt 1{static unsigned int num;TH0=(65536-2000)/256;TL0=(65536-2000)%256;Display(8); // 调用数码管扫描num++;if(num==300) //{num=0;ReadTempFlag=1; //读标志位置1}}/*------------------------------------------------外部中断初始化子程序------------------------------------------------*/void Init_Int0(void){EA=1; //全局中断开EX0=1; //外部中断1开IT0=1; //IT1=1表示边沿触发}/*------------------------------------------------外部中断中断子程序------------------------------------------------*/void ISR_INT0(void) interrupt 0{while(OK){LED_R=0;LED_G=0;if(!UP) //如果检测到低电平,说明按键按下{DelayMs(10); //延时去抖,一般10-20msif(!UP) //再次确认按键是否按下,没有按下则退出{while(!UP);//如果确认按下按键等待按键释放,没有释放则一直等待 {usertemp++;TempData[4]=DuanMa[usertemp/10];TempData[5]=DuanMa[usertemp%10]|0x80;}}}if(!DOWN) //如果检测到低电平,说明按键按下{DelayMs(10); //延时去抖,一般10-20msif(!DOWN) //再次确认按键是否按下,没有按下则退出{while(!DOWN);//如果确认按下按键等待按键释放,没有释放则一直等待 {usertemp--;TempData[4]=DuanMa[usertemp/10];TempData[5]=DuanMa[usertemp%10]|0x80;}}}Display(8);}return;}(2)、18b20.c#include"delay.h"#include"18b20.h"/*------------------------------------------------18b20初始化------------------------------------------------*/bit Init_DS18B20(void){bit dat=0;DQ = 1; //DQ复位DelayUs2x(5); //稍做延时DQ = 0; //单片机将DQ拉低DelayUs2x(200); //精确延时 大于 480us 小于960usDelayUs2x(200);DQ = 1; //拉高总线DelayUs2x(50); //15~60us 后 接收60-240us的存在脉冲dat=DQ; //如果x=0则初始化成功, x=1则初始化失败DelayUs2x(25); //稍作延时返回return dat;}/*------------------------------------------------读取一个字节------------------------------------------------*/unsigned char ReadOneChar(void){unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i--)DQ = 0; // 给脉冲信号dat>>=1;DQ = 1; // 给脉冲信号if(DQ)dat|=0x80;DelayUs2x(25);}return(dat);}/*------------------------------------------------写入一个字节------------------------------------------------*/void WriteOneChar(unsigned char dat){unsigned char i=0;for (i=8; i>0; i--){DQ = 0;DQ = dat&0x01;DelayUs2x(25);DQ = 1;dat>>=1;}DelayUs2x(25);}/*------------------------------------------------读取温度------------------------------------------------*/unsigned int ReadTemperature(void){unsigned char a=0;unsigned int b=0;unsigned int t=0;Init_DS18B20();WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换DelayMs(10);Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=ReadOneChar(); //低位b=ReadOneChar(); //高位b<<=8;t=a+b;return(t);}(3)、18b20.h#ifndef __DS18B20_H__#define __DS18B20_H__#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int;/*------------------------------------------------端口定义------------------------------------------------*/ sbit DQ=P1^0;//ds18b20 端口/*------------------------------------------------函数声明------------------------------------------------*/ unsigned int ReadTemperature(void);bit Init_DS18B20(void);unsigned char ReadOneChar(void);void WriteOneChar(unsigned char dat);#endif(4)、delay.c#include "delay.h"/*------------------------------------------------uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,,大致延时长度如下 T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t){while(--t);}/*------------------------------------------------mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M------------------------------------------------*/void DelayMs(unsigned char t){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}(5)、delay.h#ifndef __DELAY_H__#define __DELAY_H__/*------------------------------------------------uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,大致延时长度如下 T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t);/*------------------------------------------------mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M------------------------------------------------*/ void DelayMs(unsigned char t);#endif5 系统性能测试与分析5.1 数据记录:设定温度:42℃ 供电电压:10V时间、温度数据记录表:时间/s 0 21 43 62 87 107 135 温度/℃ 34.5 35 35.5 36 36.5 37 37.5 时间/s 157 185 209 241 270 302 330 温度/℃ 38 38.5 39 39.5 40 40.5 41 时间/s 340 350 360 370 380 390400 温度/℃ 41 41.1 41.2 41.3 41.3 41.1 41.1 时间/s 410 420 430 440 450 460 470 温度/℃ 41 40.9 40.8 40.8 40.8 40.9 41 时间/s 480 490 500 510 520 温度/℃ 41.1 41.1 41.3 41.3 41.35.2 数据分析与结论:由温度响应曲线可以观察出,最终温度应逐渐稳定在41℃,虽然与设定值42℃仍存在一定的误差,但已基本达到要求。

相关文档
最新文档