基于单片机的温度控制器附程序代码
单片机基于stm32的数字温度计设计
单片机基于stm32的数字温度计设计
数字温度计是一种用于测量环境温度的设备。
在这个问题中,我们将使用基于STM32的单片机来设计一个数字温度计。
为了设计这个温度计,我们需要以下组件和步骤:
1. STM32单片机:STM32是一种基于ARM架构的单片机,它具有强大的计算能力和丰富的外设接口,适用于各种应用。
2. 温度传感器:我们需要选择一种适合的温度传感器,常用的有数字式温度传感器,如DS18B20。
3. 连接电路:将温度传感器连接到STM32单片机。
这通常需要使用一些电子元件,如电阻、电容和连接线等来建立电路连接。
4. 编程:使用适合STM32单片机的编程语言,如C语言,来编写程序。
程序将读取温度传感器的数据,并将其转换为数字值。
5. 温度显示:将温度数据显示在合适的显示设备上,如LCD显示屏或七段数码管。
可以使用STM32单片机的GPIO口控制这些显示设备。
6. 数据处理:可以对温度数据进行进一步处理,如计算平均温度、设定警报阈值等。
以上是一个基本的数字温度计设计的流程。
具体的实现细节和代码编写可能需要根据具体的硬件和软件平台进行调整。
基于STM32单片机的温度控制系统设计
基于STM32单片机的温度控制系统设计一、本文概述本文旨在探讨基于STM32单片机的温度控制系统的设计。
我们将从系统需求分析、硬件设计、软件编程以及系统测试等多个方面进行全面而详细的介绍。
STM32单片机作为一款高性能、低功耗的微控制器,广泛应用于各类嵌入式系统中。
通过STM32单片机实现温度控制,不仅可以精确控制目标温度,而且能够实现系统的智能化和自动化。
本文将介绍如何通过STM32单片机,结合传感器、执行器等硬件设备,构建一套高效、稳定的温度控制系统,以满足不同应用场景的需求。
在本文中,我们将首先分析温度控制系统的基本需求,包括温度范围、精度、稳定性等关键指标。
随后,我们将详细介绍系统的硬件设计,包括STM32单片机的选型、传感器和执行器的选择、电路设计等。
在软件编程方面,我们将介绍如何使用STM32的开发环境进行程序编写,包括温度数据的采集、处理、显示以及控制策略的实现等。
我们将对系统进行测试,以验证其性能和稳定性。
通过本文的阐述,读者可以深入了解基于STM32单片机的温度控制系统的设计过程,掌握相关硬件和软件技术,为实际应用提供有力支持。
本文也为从事嵌入式系统设计和开发的工程师提供了一定的参考和借鉴。
二、系统总体设计基于STM32单片机的温度控制系统设计,主要围绕实现精确的温度监测与控制展开。
系统的总体设计目标是构建一个稳定、可靠且高效的环境温度控制平台,能够实时采集环境温度,并根据预设的温度阈值进行智能调节,以实现对环境温度的精确控制。
在系统总体设计中,我们采用了模块化设计的思想,将整个系统划分为多个功能模块,包括温度采集模块、控制算法模块、执行机构模块以及人机交互模块等。
这样的设计方式不仅提高了系统的可维护性和可扩展性,同时也便于后续的调试与优化。
温度采集模块是系统的感知层,负责实时采集环境温度数据。
我们选用高精度温度传感器作为采集元件,将其与STM32单片机相连,通过ADC(模数转换器)将模拟信号转换为数字信号,供后续处理使用。
基于PLC的PID温度控制系统设计(附程序代码)
基于PLC的PID温度控制系统设计(附程序代码)摘要自动控制系统在各个领域尤其是工业领域中有着及其广泛的应用,温度控制是控制系统中最为常见的控制类型之一。
随着PLC技术的飞速发展,通过PLC对被控对象进行控制日益成为今后自动控制领域的一个重要发展方向。
温度控制系统广泛应用于工业控制领域,如钢铁厂、化工厂、火电厂等锅炉的温度控制系统。
而温度控制在许多领域中也有广泛的应用。
这方面的应用大多是基于单片机进行PID 控制, 然而单片机控制的DDC 系统软硬件设计较为复杂, 特别是涉及到逻辑控制方面更不是其长处, 然而PLC 在这方面却是公认的最佳选择。
根据大滞后、大惯性、时变性的特点,一般采用PID调节进行控制。
随着PLC功能的扩充,在许多PLC 控制器中都扩充了PID 控制功能, 因此在逻辑控制与PID控制混合的应用场所中采用PLC控制是较为合理的。
本设计是利用西门子S7-200PLC来控制温度系统。
首先研究了温度的PID调节控制,提出了PID的模糊自整定的设计方案,结合MCGS监控软件控制得以实现控制温度目的。
关键词:PLC;PID;温度控制沈阳理工大学课程设计论文目录1 引言...................................................................... (1)1.1 温度控制系统的意义...................................................................... .. (1)1.2 温度控制系统背景...................................................................... .................. 1 1.3 研究技术介绍...................................................................... .. (1)1.3.1 传感技术...................................................................... (1)1.3.2PLC .................................................................... . (2)上位机...................................................................... ............................1.3.3 31.3.4 组态软件...................................................................... ........................ 3 1.4 本文研究对象...................................................................... .. (4)2 温度PID控制硬件设计...................................................................... (5)2.1 控制要求...................................................................... .................................. 5 2.2 系统整体设计方案...................................................................... .................. 5 2.3 硬件配置...................................................................... . (6)2.3.1 西门子S7-200CUP224 ................................................................. .. (6)2.3.2 传感器...................................................................... . (6)2.3.3 EM235模拟量输入模块.....................................................................72.3.4 温度检测和控制模块...................................................................... .... 8 2.4 I/O分配表 ..................................................................... ................................ 8 2.5 I/O接线图 ..................................................................... .. (8)3 控制算法设计...................................................................... .. (9)3.1 P-I-D控制...................................................................... .............................. 9 3.2 PID回路指令 ..................................................................... .. (11)3.2.1 PID算法 ..................................................................... .. (11)3.2.2 PID回路指令 ..................................................................... (14)3.2.3 回路输入输出变量的数值转换 (16)3.2.4 PID参数整定 ..................................................................... (17)4 程序设计...................................................................... .. (19)4.1 程序流程图...................................................................... .............................. 19 4.2 梯形图...................................................................... .. (19)I沈阳理工大学课程设计论文5 调试...................................................................... . (23)5.1 程序调试...................................................................... .. (23)5.2 硬件调试...................................................................... .. (23)结束语...................................................................... .................................................... 24 附录程序代码...................................................................... ........................................ 25 参考文献...................................................................... (27)II沈阳理工大学课程设计论文1引言1.1 温度控制系统的意义温度及湿度的测量和控制对人类日常生活、工业生产、气象预报、物资仓储等都起着极其重要的作用。
单片机的数字温度计设计方案(附代码与仿真)
基于STC89C52的数字温度计目录1、简介....... .......... ..... 3 _ _2、计划选择2.1。
主控片选 (3)2.2.显示模块.............................. (3)2.3、温度检测模块………………………………… .. 43、系统硬件设计3.1。
51单片机最小系统设计………………………… .4 .电源电路设计…………………… .. 5.液晶显示电路设计……………………………… ..63.4.温度检测电路设计………… . . . 74.系统软件设计4.1。
温度传感器数据读取流程图......... .. (9)4.2.系统编程………………… .105. 编程与仿真5.1、Keil编程软件………………… .. .. 115.2.变形杆菌 (11)5.3.模拟界面……………………… ..116.总结........ .......... ........ 12 _ _ _ _ _七、附录附录 1. 原理图........ .......... (12)附录 2. 程序清单…………………………………………………………………… ..131 简介进入信息飞速发展的21世纪,科学技术的发展日新月异。
科学技术的进步带动了测量技术的发展,现代控制设备的性能和结构发生了翻天覆地的变化。
我们已经进入高速发展的信息时代,测量技术也成为当今技术的主流,已经渗透到研究和应用工程的各个领域。
温度与人们的生活息息相关,温度的测量变得非常重要。
2.系统方案选择2.1 主控芯片选型方案一:STC89C52RCSTC89C52RC是8051内核的ISP在线可编程芯片,最高工作时钟频率为80MHz,芯片内含8KB Flash ROM,可反复擦写1000次。
该器件兼容MCS-51指令系统和8051引脚结构。
该芯片集成了通用8位中央处理器和ISP Flash存储单元,具有在线可编程特性,在PC端有控制程序,用户程序代码可下载到单片机部门,无需购买通用编程器,速度更快。
基于单片机的温湿度传感器程序代码(编译成功)
温度
#include <reg52.h>
#include "1602.h"
#include "dht.h"
#include "2402.h"
//定义三个LED灯
sbit L2=P1^3;
sbit L3=P1^4;
sbit L4=P1^5;
}
//存入设定值、
void Save_Setting()
{
pSave = (char *)&TL;//地址低位对应低8位,高位对应高8位
wrteeprom(0, *pSave);//存温度上限值TH低8位
DELAY(500);
pSave ++;
wrteeprom(1, *pSave);//存温度上限值TH高8位
while(1)
{
//温度转换标志检查
if (FlagStartRH == 1)
{
TR0 = 0;
testnum = RH();
FlagStartRH = 0;
TR0 = 1;
//读出温度,只取整数部分
humidity = U8RH_data_H;
temperature = U8T_data_H;
//显示温度
volatile bit FlagKeyPress = 0; //有键按下
//定义温度传感器用外部变量
extern U8 U8FLAG,k;
extern U8 U8count,U8temp;
extern U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
单片机温度测量程序代码
for(a=0;a<1000;a++)
for(b=0;b<1000;b++)
Q2=0;}}}
(1)初始化函数
//读一个字节函数
ReadOneChar(void)
{unsigned char i=0;
unsigned char dat = 0;
WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=ReadOneChar();
b=ReadOneChar();
t=b;
t<<=8;
t=t|a;
tt=t*0.0625;
t= tt*10+0.5; //放大10倍输出并四舍五入---此行没用
main()//主函数
{unsigned char i=0;
unsigned int m,n;
while(1)
{i=ReadTemperature();//读温度}
if(i>0 && i<=10) //如果温度在0到10度之间直接给七段数码管赋值
for (i=8;i>0;i--)
{ DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;
delay(4);}
return(dat);}
//写一个字节函数
WriteOneChar(unsigned char dat)
(3)主程序部分见前
return(telse//如果温度大于10度
基于单片机的温度控制系统课设报告
基于单片机的温度控制系统摘要:该实验设计基于飞思卡尔MC9S12DG128开发板平台,根据实验任务要求,完成了水温自动控制系统的设计,该系统的温度给定值可由人工通过键盘进行设定,测量温度经过A/D转换由数码管显示,通过PID控制算法对温度进行调节,使温度输出值在给定值上下波动,控制该系统的静态误差为1℃,用LED灯模拟加热强度,并用串口将输出的水温随时间的变化数值发到PC机上。
关键字:飞思卡尔单片机水温控制MC9S12DG1281、设计题目与设计任务σ≤;3.温度误要求:1温度连续可调范围是30-150摄氏度;2 超调量20%<±;4尝试使用能预估大滞后的方法,如史密斯预估,或大林算法;也可差0.5用PID及改进算法。
内容:1.根据题目的技术要求,画出系统组成的原理框图;2. 给出系统硬件电路图;3.确定温度控制方案;4. 给出控制方法及控制程序;5.整理设计数据资料,课程设计总结,撰写设计计算说明书。
2、前言:随着电子技术和计算机的迅速发展,计算机测量控制技术拥有操作简单、控制灵活、使用便捷以及性价比较高的优点,从而得到了广泛的应用。
单片机是一种集CPU、RAM、ROM、I/O接口和中断系统等部分于一体的器件,只需要外加电源和晶振就可以实现对数字信息的处理和控制,因此,单片机广泛应用于现代工业控制中。
利用单片机对温度测量控制会大大提高系统的可靠性和准确性。
该设计实验是在实验室完成,实验任务是设计制作一个水温自动控制系统,控制对象为1L净水,容器为搪瓷器皿。
水温由人工通过4*4的键盘设定,并能在环境温度改变时实现对水温的自动控制,采用PWM技术控制电阻丝的加热,加热强度由8个LED小灯模拟,以保持设定的温度基本不变,测量温度经过A/D 转换在4位数码管上显示(保留一位小数),并将温度每秒钟向计算机发送一次。
一、系统设计的功能该系统的闭环控制系统框图如图所示。
图水温控制系统结构框图单片机对温度的测量控制是基于传感器、A/D转换器以及扩展接口和执行机构来进行的。
单片机温控程序
单片机温控程序设计一个单片机温控程序涉及多个方面,包括传感器的接口、温度采集、控制算法、显示等。
以下是一个简要的单片机温控程序的设计示例,具体实现可能依赖于使用的单片机型号、传感器型号等。
1. 硬件设计a. 传感器接口选择合适的温度传感器,比如常用的DS18B20数字温度传感器。
连接传感器的引脚到单片机的GPIO口。
c// DS18B20传感器连接// VCC -> 单片机电源// GND -> 单片机地// DQ -> 单片机GPIO口b. 输出控制选择用于控制的输出设备,如继电器、加热器、风扇等。
连接输出设备的引脚到单片机的GPIO口。
c// 控制设备连接// 继电器、加热器、风扇等的控制引脚连接到单片机GPIO口c. 显示设备如果需要显示当前温度或其他信息,可以选择合适的显示设备,如数码管、LCD等。
c// 显示设备连接// 数码管、LCD等的引脚连接到单片机GPIO口2. 软件设计a. 温度采集使用单片机的GPIO口读取温度传感器的数据,获取当前环境温度。
c// 读取DS18B20传感器温度数据float readTemperature(){// 实现读取DS18B20数据的代码// 返回浮点数温度值}b. 控制算法根据采集到的温度数据,实现控制算法。
比如,当温度过高时打开风扇或者关闭加热器。
c// 温控算法void temperatureControl(float currentTemperature){float targetTemperature =25.0;// 目标温度float hysteresis =1.0;// 温度死区if(currentTemperature >targetTemperature +hysteresis){// 温度过高,执行降温操作,比如打开风扇turnOnFan();}else if(currentTemperature <targetTemperature -hysteresis){// 温度过低,执行升温操作,比如关闭风扇、打开加热器turnOffFan();turnOnHeater();}else{// 温度在目标范围内,保持当前状态turnOffFan();turnOffHeater();}}c. 控制设备根据控制算法的结果,控制相应的输出设备。
基于单片机的温度控制器附程序代码
生产实习报告书报告名称基于单片机的温度控制系统设计姓名学号8、0、1院、系、部计算机与通信工程学院专业信息工程10-01指导教师2013年 9 月 1日目录1.引言 (1)2.设计要求 (1)3.设计思路 (1)4.方案论证 (2)4.1方案一 (2)4.2方案二 (2)5.工作原理 (2)6.硬件设计 (2)6.1单片机模块 (2)6.2 数字温度传感器模块 (4)6.2.1 DS18B20性能 (4)6.2.2 DS18B20外形及引脚说明 (5)6.2.3 DS18B20接线原理图 (5)6.3按键模块 (6)6.4声光报警模块 (6)6.5数码管显示模块 (7)7.程序设计 (8)7.1主程序模块 (8)7.2 读温度值模块 (8)7.2.1读温度值模块流程图: (9)7.2.2 DS18B20写字节和读字节子程序流程图: (10)7.3 中断模块 (10)7.4 温度设定、报警模块 (10)8.实物效果图 (12)9.实习总结 (14)附录 (15)基于单片机的温度控制系统设计1.引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,各种数字系统的应用也使人们的生活更加舒适。
数字化控制、智能控制为现代人的工作、生活、科研等方面带来方便。
其中数字温控器就是一个典型的例子。
数字温控器具有读数方便、测温围广、测温精确、功能多样话等优点。
其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该设计使用STC12C5A60S2单片机作控制器,数字温度传感器DS18B20测量温度,单片机接受传感器输出,经处理用LED数码管实现温度值显示,并能任意设定报警温度的温度围,实现声光报警。
在我们的实习过程中,我们首先要根据原理图焊接一个STC12C5A60S2单片机的开发板,经测试准确无误后,编写程序实现上面所说的数字温度控制器。
2.设计要求1.控制温箱温度2.加热:电炉丝,这里改成发光二极管3.冷却:自然or风冷4.温度目标区间:-50-100℃5.运行环境:常温6.供电:+5v7.控制精度:±2 ℃8.温度可设定,如果下限超过上限,显示错误。
基于单片机的温度控制器附程序代码.docx
生产实习报告书报告名称基于单片机的温度控制系统设计姓名学号0138、 0140、0141院、系、部计算机与通信工程学院专业信息工程10-01指导教师2013 年 9 月 1 日目录1.引言 ..................................................................... 错误 !未定义书签。
2.设计要求 ............................................................. 错误 !未定义书签。
3.设计思路 ............................................................. 错误 !未定义书签。
4.方案论证.............................................................错误 !未定义书签。
方案一....................................................................................................错误 !未定义书签。
方案二....................................................................................................错误 !未定义书签。
5.工作原理 ............................................................. 错误 !未定义书签。
6.硬件设计 .............................................................错误 !未定义书签。
单片机模块 ............................................................................................错误 !未定义书签。
基于51单片机温度报警器的设计
目录摘要 (2)第一章绪论 (4)1.1 系统背景 (4)1.2 温度控制系统设计的意义 (5)1.3 温度控制系统完成的功能 (5)第二章系统方案设计 (6)2.1 方案一 (6)2.2 方案二 (6)2.3 方案论证 (7)第三章硬件电路设计 (8)3.1系统总体设计 (8)3.2 各部分硬件电路设计 (9)3.2.1时钟电路设计 (9)3.2.2系统复位电路 (10)3.2.3报警与控制电路设计 (11)3.2.4 LED显示电路设计 (12)3.2.4温度检测电路设计 (14)3.2.5按键电路设计 (16)第四章软件设计 (17)4.1 主程序方案 (17)4.2 各个模块子程序设计 (20)4.2.1温度采集程序 (20)4.2.2数码管显示模块 (23)4.2.3温度处理程序 (24)第五章系统调试 (25)5.1测试环境及工具 (25)5.2测试方法 (25)5.3测试结果分析 (26)结论 (26)致谢 (26)参考文献 (27)附录一:系统原理图 (29)附录二:程序代码 (30)摘要随着现代信息技术的飞速发展,在生产中温度的准确测量是一个比较困难的事情从最初的酒精、水银温度计到现在的数字化、集成化的温度检测系统。
可见传感器的发展是飞快的。
它快速的发展必将带来新一轮的工业化的革命和社会发展的飞跃。
本文从硬软件两个方面介绍了基于AT89S52单片机温度自动检测系统的设计。
系统硬件由控制电路、温度采集电路、键盘和LED显示电路组成。
软件设计从设计思路、软件系统框图出发,先介绍整体的思路后,再逐一分析各模块程序算法的实现,最终编写出满足任务需求的程序。
最终通过DS18B20采集温度并显示出来,由此对周围环境的温度进行有效检测与报警。
基本上满足了温度检测与报警的要求,具有超调量小,采样值与设定值基本一致,操作简单等优点。
本设计创新点在于采用数字式温度传感器DS18B20 作为感温元件, 占用单片机引脚少, 因而可以利用空余引脚通过软件模拟和温度显示。
基于单片机的智能温度控制系统设计
基于单片机的智能温度控制系统设计智能温度控制系统设计是一种基于单片机的物联网应用,旨在实现对温度的自动感知和调控。
本文将对这一任务进行详细的内容描述和设计实现思路。
一、任务概述智能温度控制系统是一种自动化控制系统,通过感知环境温度并与用户设定的温度阈值进行比较,实现对温度的自动调节。
它经常应用于室内温度调控、温室环境控制、电子设备散热等场景。
本系统基于单片机进行设计,具有实时监测、精确定时和高效控制的特点。
二、设计方案1. 单片机选择为了实现智能温度控制系统,我们选择一款适合高性能、低功耗的单片机作为核心控制器。
例如,我们可以选择常见的STM32系列或者Arduino等开源硬件平台。
2. 温度感知系统需要具备温度感知的能力,以实时获取环境温度数据。
可选用温度传感器(如DS18B20)通过单片机的GPIO接口进行连线,并通过相应的驱动程序获取温度数据。
3. 温度控制算法智能温度控制系统的关键在于控制算法的设计。
可以采用PID(Proportional-Integral-Derivative)控制算法,根据温度的实际情况和设定值进行比较,通过调整控制器输出控制执行器(如加热器或制冷器)的工作状态。
4. 控制执行器根据温度控制算法的输出,系统需要实现对执行器(如加热器或制冷器)的控制。
通过合适的驱动电路和接口实现对执行器的实时控制,以实现温度的精确调节。
5. 用户界面为了用户方便地设定温度阈值和实时查看环境温度,系统需要设计一个用户界面。
可以通过液晶显示屏或者OLED屏幕来展示温度信息,并提供物理按键或者触摸界面进行温度设定。
6. 数据存储与远程访问系统还可以考虑将温度数据通过网络传输至云端服务器进行存储和分析,以实现温度数据的长期保存和远程监控。
可以选择WiFi或者蓝牙等无线通信方式来实现数据传输。
7. 辅助功能除了基本的温度控制外,系统还可以增加一些辅助功能,如温度数据的图表绘制、报警功能、定时开关机功能等。
基于51单片机的温控系统设计
基于51单片机的温控系统设计1.引言1.1 概述概述部分的内容可以包括以下几个方面:温控系统是一种广泛应用于各个领域的实时温度控制系统。
随着科技的发展和人们对生活质量的要求提高,温控系统在工业、家居、医疗、农业等领域得到了广泛应用。
温度作为一个重要的物理量,对于许多过程和设备的稳定运行至关重要。
因此,设计一种高效可靠的温控系统对于提高工作效率和产品质量具有重要意义。
本文将基于51单片机设计一个温控系统,通过对系统的整体结构和工作原理的介绍,可以深入了解温控系统在实际应用中的工作机制。
以及本文重点研究的51单片机在温控系统中的应用。
首先,本文将介绍温控系统的原理。
温控系统的核心是温度传感器、控制器和执行器三部分组成。
温度传感器用于实时检测环境温度,通过控制器对温度数据进行处理,并通过执行器对环境温度进行调节。
本文将详细介绍这三个组成部分的工作原理及其在温控系统中的作用。
其次,本文将重点介绍51单片机在温控系统中的应用。
51单片机作为一种经典的微控制器,具有体积小、功耗低、性能稳定等优点,广泛应用于各种嵌入式应用中。
本文将分析51单片机的特点,并介绍其在温控系统中的具体应用,包括温度传感器的数据采集、控制器的数据处理以及执行器的控制等方面。
最后,本文将对设计的可行性进行分析,并总结本文的研究结果。
通过对温控系统的设计和实现,将验证51单片机在温控系统中的应用效果,并对未来的研究方向和发展趋势进行展望。
通过本文的研究,可以为温控系统的设计与应用提供一定的参考和指导,同时也为利用51单片机进行嵌入式系统设计的工程师和研究人员提供一定的技术支持。
1.2文章结构文章结构部分的内容可以包含以下内容:文章结构部分旨在介绍整篇文章的组织结构和各个部分的内容。
本篇文章基于51单片机的温控系统设计,总共分为引言、正文和结论三部分。
引言部分主要包括概述、文章结构和目的三个小节。
首先,概述部分介绍了本文的主题,即基于51单片机的温控系统设计。
(完整版)基于单片机的多点温度检测系统毕业设计论文
集成电路课程设计课题:基于AT89C51单片机的多点温度测量系统设计姓名:韩颖班级:测控12-1学号:指导老师:汪玉坤日期:目录一、绪论二、总体方案设计三、硬件系统设计1主控制器2 显示模块3温度采集模块(1)DS18B20的内部结构(2)高速暂存存储器(3)DS18B20的测温功能及原理(4)DS18B20温度传感器与单片机的连接(5)单片机最小系统总体电路图四、系统软件设计五、系统仿真六、设计总结七、参考文献八、附源程序代码一、绪论在现代工业控制中和智能化仪表中,对于温度的控制,恒温等有较高的要求,如对食品的管理,冰箱的恒温控制,而且现在越来越多的地方用到多点温度测量,比如冰箱的保鲜层和冷冻层是不同的温度这就需要多点的测量和显示可以让用户直观的看到温度值,并根据需要调节冰箱的温。
它还在其他领域有着广泛的应用,如:消防电气的非破坏性温度检测,电力、电讯设备之过热故障预知检测,空调系统的温度检测。
温度检测系统应用十分广阔。
本设计采用DALLAS最新单线数字温度传感器DS18B20 简介新的"一线器件"体积更小、适用电压更宽、更经济DALLAS 半导体公司的数字化温度传感器DS18B20是世界上第一片支持"一线总线",测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°二、设计过程及工艺要求1、基本功能(1)检测两点温度(2)两秒间隔循环显示温度2、主要技术参数测温范围:-30℃到+99℃测量精度:0.0625℃显示精度:0.1℃显示方法:LCD循环显示3、系统设计系统使用AT89C51单片机对两个DS18B20进行数据采集,并通过1602LCD液晶显示器显示所采集的温度。
DS18B20以单总线协议工作,51单片机首先分别发送复位脉冲,使信号上所有的DS18B20芯片都被复位,程序先跳过ROM,启动DS18B20进行温度变换,再读取存储器的第一位和第二位读取温度,通过IO口传到1602LCD显示。
基于PIC单片机的实时温度控制系统
基于PIC单片机的实时温度控制系统// 实现的功能:数码管显示实时温度,支持负温度// 芯片PIC16F877// XT:4MHZ//*********************************************************#include <pic.h> //包含单片机内部资源预定义#define LVP 0x3f39// 晶振:XT;代码:没有代码保护;上电延时定时器关闭;// 低电压复位禁止;看门狗关闭 ;低电压编程禁止__CONFIG (XT & UNPROTECT & PWRTDIS & BORDIS & WDTDIS & LVP);#define uch unsigned char //给unsigned char起别名 uch#define DQRA2 //定义18B20数据端口#define DQ_DIRTRISA2 //定义18B20D 口方向寄存器#define DQ_HIGH() DQ_DIR =1 //设置数据口为输入#define DQ_LOW() DQ_DIR = 0;DQ = 0 //设置数据口为输出const unsigned charledcode[12]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,0 x40};//不带小数点的共阴极数码管0123456789段码,正负符号位const unsigned charledcode1[12]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x00, 0x40};//带小数点的共阴极数码管0123456789段码 ,正负符号位void init_port(void);void delay(char x,char y);void delay_1ms(void);void delay_ms(unsigned int time);void interrupt dealtime();void tmint(void);void timetoseg(uch fh_temp,uch bai_temp,uch shi_temp,uch ge_temp,uch sf_temp,uch bf_temp,uch qf_temp,uch wf_temp);void binary_temp(uch TL , signed char TH);void reset(void);void write_byte(uch val);uch read_byte(void);void get_temp(void);unsigned char display_data[8];unsigned char intcount=0;uch TLV=0 ; //采集到的温度高8位uch THV=0; //采集到的温度低8位union temp //定义一个联合体{int T;uch TV[2];}temp;signed char TZ=0; //转换后的温度值整数部分,有符号位uch TX=0; //转换后的温度值小数部分unsigned intwd; //转换后的温度值BCD码形式unsigned charfh; //符号位unsigned charbai; //整数百位unsigned charshi; //整数十位unsigned charge; //整数个位unsigned charshifen; //十分位unsigned charbaifen; //百分位unsigned charqianfen; //千分位unsigned charwanfen; //万分位//*********************************************************// 主程序//*********************************************************void main(void){init_port();tmint();while(1){get_temp();timetoseg(fh,bai,shi,ge,shifen,baifen,qianfen,wanfen);}}//*********************************************************// 端口初始化// PORTD作为数码管段驱动(高有效)// PORTE作为数码管位选择驱动(低有效)//*********************************************************void init_port(void){RBPU=0;// PORTB=0xFF;TRISB=0xFF;PORTD=0x00; //TRISC=0x00; //C口控制LED指示灯,设置成输出TRISD=0; //D口当作数码管段,设置成输出ADCON1=0x07; //使A口,E口全为数字I/O口TRISE=0x00; //E口当作数码管位选择控制脚,设置成输出PORTE=0x00;}//*********************************************************// 延时程序//*********************************************************void delay(char x,char y){char z;do{z=y;do{;}while(--z);}while(--x);}//其指令时间为:7+(3*(Y-1)+7)*(X-1)如果再加上函数调用的call 指令、页面设定、传递参数花掉的7 个指令。
单片机课程设计——温度监控系统
单片机课程设计报告题目:温度监控系统设计学院:通信与信息工程学院专业:电子信息工程专业班级:电信xxxx班成员: XXXXXXXXX二〇一一年七月十二日一、引言温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用。
对于不同场所、不同工艺、所需温度高低范围不同、精度不同,则采用的测温元件、测方法以及对温度的控制方法也将不同;产品工艺不同、控制温度的精度不同、时效不同,则对数据采集的精度和采用的控制算法也不同,因而,对温度的测控方法多种多样。
随着电子技术和微型计算机的迅速发展,微机测量和控制技术也得到了迅速的发展和广泛的应用。
利用微机对温度进行测控的技术,也便随之而生,并得到日益发展和完善,越来越显示出其优越性。
作为获取信息的手段——传感器技术得到了显著的进步,其应用领域较广泛。
传感器技术已成为衡量一个国家科学技术发展水平的重要标志之一。
因此,了解并掌握各类传感器的基本结构、工作原理及特性是非常重要的。
为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究以及其用法与用途,基于实用、广泛和典型的原则而设计了本系统。
本系统利用传感器与单片机相结合,应用性比较强,本系统可以作为仓库温度监控系统,如果稍微改装可以做热水器温度调节系统、实验室温度监控系统,以及构成智能电饭煲等等。
课题主要任务是完成环境温度监测,利用单片机实现温度监测并通过报警信号提示温度异常。
本设计具有操作方便,控制灵活等优点。
本设计系统包括单片机,温度采集模块,显示模块,按键控制模块,报警和指示模块五个部分。
文中对每个部分功能、实现过程作了详细介绍。
整个系统的核心是进行温度监控,完成了课题所有要求。
二、实验目的和要求2.1学习DS18B20温度传感芯片的结构和工作原理。
2.2掌握LED数码管显示的原理及编程方法。
2.3掌握独立式键盘的原理及使用方法。
2.4掌握51系列单片机数据采集及处理的方法。
51单片机设计数字温度计(流程图+源码+实物图片)
DS18B20获取温度程序流程图DS18B20的读字节,写字节,获取温度的程序流程图如图所示。
DS18B20初始化程序流程图DS18B20读字节程序流程图DS18B20写字节程序流程图DS18B20获取温度程序流程图图3-4 DS18B20程序流程图显示程序设计显示电路是由四位一体的数码管来实现的。
由于单片机的I/O 口有限,所以数码管采用动态扫描的方式来进行显示。
程序流程图如图所示。
图显示程序流程图按键程序设计按键是用来设定上下限报警温度的。
具体的程序流程图如图所示。
N图按键程序流程图附1 源程序代码/********************************************************************* 程序名; 基于DS18B20的测温系统* 功能:实时测量温度,超过上下限报警,报警温度可手动调整。
K1是用来* 进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限* 调节模式。
在正常模式下,按一下K2进入查看上限温度模式,显示1s左右自动* 退出;按一下K3进入查看下限温度模式,显示1s左右自动退出;按一下K4消除* 按键音,再按一下启动按键音。
在调节上下限温度模式下,K2是实现加1功能,* K1是实现减1功能,K3是用来设定上下限温度正负的。
* 编程者:ZPZ* 编程时间:2009/10/2*********************************************************************/#include<AT89X52.h> //将AT89X52.h头文件包含到主程序#include<intrins.h> //将intrins.h头文件包含到主程序(调用其中的_nop_()空操作函数延时)#define uint unsigned int //变量类型宏定义,用uint表示无符号整形(16位)#define uchar unsigned char //变量类型宏定义,用uchar表示无符号字符型(8位)uchar max=0x00,min=0x00; //max是上限报警温度,min是下限报警温度bit s=0; //s是调整上下限温度时温度闪烁的标志位,s=0不显示200ms,s=1显示1s左右bit s1=0; //s1标志位用于上下限查看时的显示void display1(uint z); //声明display1()函数#include"ds18b20.h" //将ds18b20.h头文件包含到主程序#include"keyscan.h" //将keyscan.h头文件包含到主程序#include"display.h" //将display.h头文件包含到主程序/***********************主函数************************/void main(){beer=1; //关闭蜂鸣器led=1; //关闭LED灯timer1_init(0); //初始化定时器1(未启动定时器1)get_temperature(1); //首次启动DS18B20获取温度(DS18B20上点后自动将EEPROM中的上下限温度复制到TH和TL寄存器)while(1) //主循环{keyscan(); //按键扫描函数get_temperature(0); //获取温度函数keyscan(); //按键扫描函数display(temp,temp_d*0.625);//显示函数alarm(); //报警函数keyscan(); //按键扫描函数}}/********************************************************************* 程序名; __ds18b20_h__* 功能:DS18B20的c51编程头文件* 编程者:ZPZ* 编程时间:2009/10/2* 说明:用到的全局变量是:无符号字符型变量temp(测得的温度整数部分),temp_d* (测得的温度小数部分),标志位f(测量温度的标志位‘0’表示“正温度”‘1’表* 示“负温度”),标志位f_max(上限温度的标志位‘0’表示“正温度”、‘1’表* 示“负温度”),标志位f_min(下限温度的标志位‘0’表示“正温度”、‘1’表* 示“负温度”),标志位w(报警标志位‘1’启动报警‘0’关闭报警)。
基于51单片机的DHT11温湿度监测+液晶LCD1602显示程序源代码
基于51单片机的DHT11温湿度监测+液晶LCD1602显示程序源代码/***************DHT11温湿度监测+液晶LCD1602显示程序源代码******************单片机型号:STC15W4K56S4,内部晶振:22.1184M。
功能:DHT11温湿度监测+液晶LCD1602显示。
操作说明:通过温湿度传感器DHT11监测温湿度数值,并将温湿度数值显示在液晶LCD1602上。
**************************************************************************/#include "stc15.h" //包含头文件stc15.h#include <intrins.h> //包含头文件intrins.h#define Busy 0x80 //LCD忙sbit LCD_D0 = P0^0; //LCD_D0对应P0.0sbit LCD_D1 = P0^1; //LCD_D1对应P0.1sbit LCD_D2 = P0^2; //LCD_D2对应P0.2sbit LCD_D3 = P0^3; //LCD_D3对应P0.3sbit LCD_D4 = P0^4; //LCD_D4对应P0.4sbit LCD_D5 = P0^5; //LCD_D5对应P0.5sbit LCD_D6 = P0^6; //LCD_D6对应P0.6sbit LCD_D7 = P0^7; //LCD_D7对应P0.7sbit LCD_RS = P1^0; //LCD_RS对应P1.0sbit LCD_RW = P1^1; //LCD_RW对应P1.1sbit LCD_EN = P3^4; //LCD_EN对应P3.4sbit DHT11_PIN = P4^0; //DHT11管脚对应P4.0void delay(unsigned int t); //delay延时函数void delay_us(unsigned int t); //delay_us延时函数void delay_ms(unsigned int t); //delay_ms延时函数void Delay5Ms(void); //5Ms延时函数void GPIO_1602_Configuration(void); //LCD1602液晶IO口初始化void WriteDataLCD(unsigned char WDLCD); //LCD写数据函数void WriteCommandLCD(unsigned char WCLCD,BuysC); //LCD写命令函数unsigned char ReadDataLCD(void); //LCD读数据函数unsigned char ReadStatusLCD(void); //LCD读状态函数void LCDInit(void); //LCD初始化void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData);//LCD显示一个字符void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData); //LCD显示一个字符串void DHT11_Init(void); //初始化DHT11void DHT11_Delay(unsigned int j); //延时函数,用于DHT11 void DHT11_Delay_10us(void); //延时函数,用于DHT11 void COM(void);void RH(unsigned char *temp,unsigned char *humi);void DHT11_Display(void);unsigned char code welcome[] = {"DHT 11"}; //LCD显示内容DHT 11 unsigned char code Dht11[] = {"T: H: "}; //LCD显示内容T: H: unsigned char code Space[] = {" "};//LCD显示内容空白unsigned char U8FLAG,k;unsigned char U8count,U8temp;unsigned char U8T_data_H_temp,U8T_data_L_temp;unsigned char U8RH_data_H_temp,U8RH_data_L_temp;unsigned char U8checkdata_temp;unsigned char U8comdata;unsigned char temperature;unsigned char humidity;unsigned char disbuff_T[4]={0,0,0,0};unsigned char disbuff_H[4]={0,0,0,0};void delay(unsigned int t) //delay延时函数{while(t--);}void delay_us(unsigned int t) //delay_us延时函数{unsigned char i;while(t--){i = 3;while(i--) delay(1);}}void delay_ms(unsigned int t) //delay_ms延时函数{while(t--){delay_us(t);}}void Delay5Ms(void) //5ms延时函数{unsigned int TempCyc = 3552;while(TempCyc--);}void GPIO_1602_Configuration(void) //LCD1602液晶IO口初始化{P0M1 = P3M1&0x00;P0M0 = P3M0&0x00;P1M1 = P3M1&0xfc;P1M0 = P3M0&0xfc;P3M1 = P4M1&0xef;P3M0 = P4M0&0xef;}unsigned char ReadStatusLCD(void) //测试LCD忙碌状态{LCD_D7 = 1; //LCD的D7置1LCD_RS = 0; //LCD管脚RS设置成低电平LCD_RW = 1; //LCD管脚RW设置成高电平LCD_EN = 0; //LCD管脚E设置成低电平LCD_EN = 0; //LCD管脚E设置成低电平LCD_EN = 1; //LCD管脚E设置成高电平while(LCD_D7); //检测忙信号return(Busy); //表示当前忙}void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC为0时忽略忙检测{if(BuysC) ReadStatusLCD(); //根据需要检测忙LCD_EN = 0; //LCD管脚E设置成低电平_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时LCD_RS = 0; //LCD管脚RS设置成低电平LCD_RW = 0; //LCD管脚RW设置成低电平_nop_(); //空操作,延时_nop_(); //空操作,延时P0 = WCLCD; //将数据送入P0口,即写入指令或地址 _nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时LCD_EN = 1; //E置高电平_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时LCD_EN = 0;//当E由高电平跳变成低电平时,液晶模块开始执行命令}void WriteDataLCD(unsigned char WDLCD) //LCD写数据函数{ReadStatusLCD(); //读取LCD状态LCD_EN = 0; //LCD管脚E设置成低电平_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时LCD_RS = 1; //LCD管脚RS设置成高电平LCD_RW = 0; //LCD管脚RW设置成低电平P0 = WDLCD; //将数据送入P0口_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时LCD_EN = 1; //E置高电平_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时_nop_(); //空操作,延时LCD_EN = 0;//当E由高电平跳变成低电平时,液晶模块开始执行命令}void LCDInit(void) //LCD初始化{WriteCommandLCD(0x38,0); //三次显示模式设置,不检测忙信号Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);WriteCommandLCD(0x08,1); //关闭显示WriteCommandLCD(0x01,1); //显示清屏WriteCommandLCD(0x06,1); //显示光标移动设置WriteCommandLCD(0x0C,1); //显示开及光标设置}void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData){Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;X |= 0x80; //算出指令码WriteCommandLCD(X,0); //这里不检测忙信号,发送地址码WriteDataLCD(DData); //发送数据}void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData) {unsigned char ListLength;ListLength = 0;Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1while (DData[ListLength]>=0x20) //若到达字串尾则退出{if (X <= 0xF) //X坐标应小于0xF{DisplayOneChar(X, Y, DData[ListLength]);//显示单个字符ListLength++;X++;}}}void DHT11_Init(void) //初始化DHT11 {P4M1 = P4M1&0xfe;P4M0 = P4M0&0xfe;}void DHT11_Delay(unsigned int j){unsigned char i;for(;j>0;j--){for(i=0;i<250;i++);}}void DHT11_Delay_10us(void){unsigned char i;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;i--;}void COM(void){unsigned char i;for(i=0;i<8;i++){U8FLAG=2;while((!DHT11_PIN)&&U8FLAG++);DHT11_Delay_10us();DHT11_Delay_10us();DHT11_Delay_10us();U8temp=0;if(DHT11_PIN)U8temp=1;U8FLAG=2;while((DHT11_PIN)&&U8FLAG++); //超时则跳出for循环if(U8FLAG==1)break;//判断数据位是0还是1,如果高电平高过预定0高电平值则数据位为 1U8comdata<<=1;U8comdata|=U8temp;}}void RH(unsigned char *temp,unsigned char *humi){DHT11_PIN = 0;DHT11_Delay(180);DHT11_PIN = 1; //总线由上拉电阻拉高主机延时20us DHT11_Delay_10us();DHT11_Delay_10us();DHT11_Delay_10us();DHT11_Delay_10us(); //主机设为输入判断从机响应信号DHT11_PIN = 1;//判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行if(!DHT11_PIN){U8FLAG=2;//判断从机是否发出 80us 的低电平响应信号是否结束while((!DHT11_PIN)&&U8FLAG++);U8FLAG=2;//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态while((DHT11_PIN)&&U8FLAG++); //数据接收状态COM();U8RH_data_H_temp=U8comdata;COM();U8RH_data_L_temp=U8comdata;COM();U8T_data_H_temp=U8comdata;COM();U8T_data_L_temp=U8comdata;COM();U8checkdata_temp=U8comdata;DHT11_PIN=1; //数据校验U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp==U8checkdata_temp){*temp = U8T_data_H_temp;*humi = U8RH_data_H_temp;}}}void DHT11_Display(void){RH(&temperature,&humidity);disbuff_T[2]=temperature/100+0x30;disbuff_T[1]=temperature/10%10+0x30;disbuff_T[0]=temperature%10+0x30;disbuff_H[2]=humidity/100+0x30;disbuff_H[1]=humidity/10%10+0x30;disbuff_H[0]=humidity%10+0x30;DisplayOneChar(2,1,disbuff_T[2]);delay_ms(10); //延时DisplayOneChar(3,1,disbuff_T[1]);delay_ms(10); //延时DisplayOneChar(4,1,disbuff_T[0]);delay_ms(10); //延时DisplayOneChar(8,1,disbuff_H[2]);delay_ms(10); //延时DisplayOneChar(9,1,disbuff_H[1]);delay_ms(10); //延时DisplayOneChar(10,1,disbuff_H[0]);delay_ms(10); //延时}void main(void){GPIO_1602_Configuration(); //LCD1602液晶IO口初始化delay_ms(10); //延时LCDInit(); //LCD1602初始化delay_ms(10); //延时DHT11_Init(); //初始化DHT11DisplayListChar(5,0,welcome); //LCD1602显示Hello My Friends delay_ms(10); //延时while(1){DisplayListChar(0,1,Space); //LCD1602显示P: K1delay_ms(10); //延时DisplayListChar(0,1,Dht11); //LCD1602显示delay_ms(10); //延时DHT11_Display();delay_ms(200); //延时}}程序源代码是编译通过的DHT11温湿度监测模块接口电路图该程序的实际运行效果。
基于单片机温度控制系统设计
基于单片机的温度控制系统设计摘要:这次综合设计,主要是设计一个温度控制系统,用STC89C52单片机控制,用智能温度传感器DS18B20对温度进行采集,用LCD1602液晶显示屏将采集到的温度显示出来。
系统可以有效的将温度控制在设定的范围内。
如果实际温度超出了控制范围,则系统会有自动的提示信号,并且相应的继电器会动作。
我们的实际生活离不开对温度的控制,在很多情况下我们都要对我们所处的环境进行温度检测,然后通过一定的措施进行调节,从而达到我们自己想要的温度,使我们的生活环境更加适宜。
关键字:单片机;液晶显示屏;温度传感器;继电器;提示信号Abstract:This integrated design is the design of a temperature control system. A smart temperature sensor DS18B20 is used to collect temperature and a LCD1602 Liquid Screen is used to display the collected temperature. The system controlled by STC89C52 can effectively control the temperature within the setting limits. If the actual temperature exceeds the setting range, the system will automatically give signal, and the corresponding Relay will take related actions. It is necessary for us to control the temperature because in many situations the temperature around us is not proper for us. So we need to detect it and take some actions to adjust it to the temperature we want to make the environment around us better.Key Words:DS18B20;LCD1602;STC89C52;Relay;Signal引言目前,测控系统在工业生产中起着把关者和指导者的作用,它从生产现场到各种参数的获取,运用科学规律和系统工程的做法,综合有效地利用各种先进技术,通过自动手段和装备,使每个生产环节得到优化,进而保证生产规范化,提高产品质量,降低成本,满足需要,保证安全生产。
基于单片机的温度控制系统设计
基于单片机的温度控制系统设计温度控制系统是现代生活中不可或缺的一部分,常见于家庭的的空调、电饭煲、烤箱等家用电器,以及工业生产中的各种自动化设备。
本文基于单片机设计针对室内温度控制系统的实现方法进行说明,包括温度采集、温度控制器的实现和人机交互等方面。
一、温度采集温度采集是温度控制系统的核心部分。
目前比较常见的温度采集器主要有热电偶、热敏电阻和半导体温度传感器。
在本文中我们以半导体温度传感器为例进行说明。
常见的半导体温度传感器有DS18B20、LM35等,本次实验中采用DS18B20进行温度采集。
DS18B20是一种数字温度传感器,可以直接与单片机通信,通常使用仅三根导线连接。
其中VCC为控制器的电源正极,GND为电源负极,DATA为数据传输引脚。
DS18B20通过快速菲涅耳射线(FSR)读取芯片内部的温度数据并将其转换为数字信号。
传感器能够感知的温度范围通常为-55℃至125℃,精度通常为±0.5℃。
为了方便使用,DS18B20可以通过单片机内部的1-Wire总线进行控制和数据传输。
具体实现方法如下:1.首先需要引入相关库文件,如:#include <OneWire.h> //引用1-Wire库#include <DallasTemperature.h> //引用温度传感器库2.创建实例对象,其中参数10代表连接传感器的数字I/O引脚:OneWire oneWire(10); //实例化一个1-Wire示例DallasTemperature sensors(&oneWire); //实例化一个显示温度传感器示例3.在setup中初始化模块:sensors.begin(); // 初始化DS18B204.在主循环中,读取传感器数据并将温度值输出到串口监视器:sensors.requestTemperatures(); //请求温度值float tempC = sensors.getTempCByIndex(0); // 读取温度值Serial.println(tempC); //输出温度值二、温度控制器的实现温度控制器是本次实验的关键部件,主要实现对温度的控制和调节,其基本原理是根据温度变化情况来控制输出电压或模拟脚电平,驱动继电器控制电器设备工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
生产实习报告书报告名称基于单片机的温度控制系统设计姓名学号0138、0140、0141院、系、部计算机与通信工程学院专业信息工程10-01指导教师2013年 9 月 1日目录1.引言.................................. 错误!未定义书签。
2.设计要求.............................. 错误!未定义书签。
3.设计思路.............................. 错误!未定义书签。
4.方案论证.............................. 错误!未定义书签。
方案一................................................. 错误!未定义书签。
方案二................................................. 错误!未定义书签。
5.工作原理.............................. 错误!未定义书签。
6.硬件设计.............................. 错误!未定义书签。
单片机模块............................................. 错误!未定义书签。
数字温度传感器模块 .................................... 错误!未定义书签。
DS18B20性能......................................... 错误!未定义书签。
DS18B20外形及引脚说明............................... 错误!未定义书签。
DS18B20接线原理图................................... 错误!未定义书签。
按键模块............................................... 错误!未定义书签。
声光报警模块........................................... 错误!未定义书签。
数码管显示模块......................................... 错误!未定义书签。
7.程序设计.............................. 错误!未定义书签。
主程序模块............................................. 错误!未定义书签。
读温度值模块.......................................... 错误!未定义书签。
读温度值模块流程图: ................................. 错误!未定义书签。
DS18B20写字节和读字节子程序流程图:................. 错误!未定义书签。
中断模块.............................................. 错误!未定义书签。
温度设定、报警模块 .................................... 错误!未定义书签。
8.实物效果图 ............................ 错误!未定义书签。
9.实习总结.............................. 错误!未定义书签。
附录.................................... 错误!未定义书签。
基于单片机的温度控制系统设计1.引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,各种数字系统的应用也使人们的生活更加舒适。
数字化控制、智能控制为现代人的工作、生活、科研等方面带来方便。
其中数字温控器就是一个典型的例子。
数字温控器具有读数方便、测温范围广、测温精确、功能多样话等优点。
其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该设计使用STC12C5A60S2单片机作控制器,数字温度传感器DS18B20测量温度,单片机接受传感器输出,经处理用LED数码管实现温度值显示,并能任意设定报警温度的温度范围,实现声光报警。
在我们的实习过程中,我们首先要根据原理图焊接一个STC12C5A60S2单片机的开发板,经测试准确无误后,编写程序实现上面所说的数字温度控制器。
2.设计要求1.控制温箱温度2.加热:电炉丝,这里改成发光二极管3.冷却:自然or风冷4.温度目标区间:-50-100℃5.运行环境:常温6.供电:+5v7.控制精度:±2 ℃8.温度可设定,如果下限超过上限,显示错误。
9.温度可显示10.超温报警3.设计思路设计一个单片机测控系统,一般可分为四个步骤:(1)需求分析,方案论证和总体设计需求分析:被测控参数的形式(电量、非电量、模拟量、数字量等)、被测控参数的范围、性能指标、系统功能、工作环境、显示、报警、打印要求等。
方案论证:根据要求,设计出符合现场条件的软硬件方案,又要使系统简单、经济、可靠,这是进行方案论证与总体设计一贯坚持的原则。
(2)器件选择,电路设计制作,数据处理算法,软件的编制阶段。
(3)系统调试与性能测定。
(4)文件编制。
文件包括:任务描述、设计的指导思想及设计方案论证、性能测定及现场试用报告与说明、使用指南、软件资料(流程图、子程序使用说明、地址分配、程序清单)、硬件资料(电原理图、元件布置图及接线图、接插件引脚图、线路板图、注意事项)。
文件不仅是设计工作的结果,而且是以后使用、维修以及进一步再设计的依据。
因此,一定要精心编写,描述清楚,使数据及资料齐全。
4.方案论证方案一由于本设计是测温电路,可以使用热敏电阻之类的器件,将随被测温度变化的电压或电流采样,进行A/D转换后就可以用单片机进行数据处理,实现温度显示。
这种设计需要用到A/D转换电路,增大了电路的复杂性,而且要做到高精度也比较困难。
方案二考虑到在单片机属于数字系统,容易想到数字温度传感器,可选用DS18B20数字温度传感器,此传感器为单总线数字温度传感器,起体积小、构成的系统结构简单,它可直接将温度转化成串行数字信号给单片机处理,即可实现温度显示。
另外DS18B20具有3引脚的小体积封装,测温范围为-55~+125摄氏度,测温分辨率可达摄氏度,其测量范围与精度都能符合设计要求。
以上两种方案相比较,第二种方案的电路、软件设计更简单,此方案设计的系统在功耗、测量精度、范围等方面都能很好地达到要求,故本设计采用方案二。
5.工作原理温度传感器 DS18B20 从设备环境的不同位置采集温度,单片机 AT89S51 获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。
当采集的温度经处理后超过设定温度的上限时,单片机通过三极管驱动继电器开启降温设备 (压缩制冷器) ,并通过三极管驱动扬声器发出警笛声。
当采集的温度经处理后低于设定温度的下时 , 单片机通过三极管驱动继电器开启升温设备 (加热器) ,并通过三极管驱动扬声器发出警笛声。
6.硬件设计单片机模块STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。
内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。
1.增强型8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051;2.工作电压:STC12C5A60S2系列工作电压:(5V单片机)STC12LE5A60S2系列工作电压:(3V单片机);3.工作频率范围:0 - 35MHz,相当于普通8051的 0~420MHz;4.用户应用程序空间8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K 字节;5.片上集成1280字节RAM;6.通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口),可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏,每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过55Ma;7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口()直接下载用户程序,数秒即可完成一片;8.有EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM);9. 看门狗;10.内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地);11.外部掉电检测电路:在口有一个低压门槛比较器,5V单片机为,误差为+/-5%,单片机为,误差为+/-3%;12.时钟源:外部高精度晶体/时钟,内部R/C振荡器(温漂为+/-5%到+/-10%以内) 1用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟,常温下内部R/C振荡器频率为:单片机为:11MHz~,单片机为:8MHz~12MHz,精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准;13.共4个16位定时器两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器再加上2路PCA模块可再实现2个16位定时器;14. 2个时钟输出口,可由T0的溢出在T0输出时钟,可由T1的溢出在T1输出时钟;15.外部中断I/O口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA模块, Power Down模式可由外部中断唤醒,INT0/,INT1/,T0/, T1/, RxD/,CCP0/(也可通过寄存器设置到 ), CCP1/ (也可通过寄存器设置到;16. PWM(2路)/PCA(可编程计数器阵列,2路):——也可用来当2路D/A使用——也可用来再实现2个定时器——也可用来再实现2个外部中断(上升沿中断/下降沿中断均可分别或同时支持);D转换, 10位精度ADC,共8路,转换速度可达250K/S(每秒钟25万次)18.通用全双工异步串行口(UART),由于STC12系列是高速的8051,可再用定时器或PCA软件实现多串口;19. STC12C5A60S2系列有双串口,后缀有S2标志的才有双串口,RxD2/(可通过寄存器设置到,TxD2/(可通过寄存器设置到;20.工作温度范围:-40 - +85℃(工业级) / 0 - 75℃(商业级)21.封装:PDIP-40,LQFP-44,LQFP-48 I/O口不够时,可用2到3根普通I/O口线外接74HC164/165/595(均可级联)来扩展I/O口, 还可用A/D做按键扫描来节省I/O口,或用双CPU,三线通信,还多了串口。