基于51单片机的温度控制系统说明书
(完整word版)基于51单片机的温度控制系统
毕业论文设计基于51单片机的温度控制系统摘要在日常生活中温度在我们身边无时不在,温度的控制和应用在各个领域都有重要的作用。
很多行业中都有大量的用电加热设备,和温度控制设备,如用于报警的温度自动报警系统,热处理的加热炉,用于融化金属的坩锅电阻炉及各种不同用途的温度箱等,这些都采用单片机技术,利用单片机语言程序对它们进行控制。
而单片机技术具有控制和操作使用方便、结构简单便于修改和维护、灵活性大且具有一定的智能性等特点,可以精确的控制技术标准,提高了温控指标,也大大的提高了产品的质量和性能.由于单片机技术的优点突出,智能化温度控制技术正被广泛地采用。
本文介绍了基于单片机AT89C51 的温度控制系统的设计方案与软硬件实现.采用温度传感器DS18B20 采集温度数据,7段数码管显示温度数据,按键设置温度上下限,当温度低于设定的下限时,点亮绿色发光二极管,当温度高于设定的上限时,点亮红色发光二极管。
给出了系统总体框架、程序流程图和Protel 原理图,并在硬件平台上实现了所设计功能。
关键词:单片机温度控制系统温度传感器AbstractIn daily life,the temperature in our side the ever-present, the control of the temperature and the application in various fields all have important role. Many industry there are a large number of electric heating equipment, and the temperature control equipment,such as used for alarm automatic temperature alarm systems, heat treatment furnace, used to melt metal crucible resistance furnace,and all kinds of different USES of temperature box and so on,these using single chip microcomputer, using single chip computer language program to control them。
基于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显示器接口电路。
基于51单片机水温控制系统
题目基于51单片机水温控制系统系专业班级学号学生姓名指导教师完成日期本设计经过实践,绝对可以用,有需要的,认真阅读全文!!!!!可当单片机课设!!!需要全套资料的加Q845667599(10元)摘要随着科学技术的不断发展带动着电子行业的地位越来越重,现在电子产品几乎在社会的各个领域都可以见到。
这些技术的发展有效的带动着社会生产力的发展和信息化的提高,同时电子产品也越来越智能。
本设计采用STC89C51单片机为主控芯片,采用数字型防水温度传感器DS18B20制作温度检测报警器,通过四位共阳数码管显示温度值,系统设立几个按键,可以通过按键进行设置温度的上、下限值,并将数据保存在单片机EEPROM 中做到掉电存储的功能,当所采集温度超过设定值时,系统会控制蜂鸣器和对应LED发出声光报警和继电器的运作。
这个设计简单、成本低、具有实用性。
关键词:DS18B20防水温度传感器;STC89C51单片机;温度报警ABSTRACTWith the continuous development of science and technology, the status of the electronics industry is becoming more and more important. Now the electronic products can be seen in almost every field of the society. The development of these technologies is effective to promote the development of social productive forces and the improvement of information technology, while the electronic products are becoming more and more intelligent.This design uses STC89C51 microcontroller as the main control chip, the digital waterproof type temperature sensor DS18B20 temperature detection alarm and display the temperature value by the four common anode digital, system set up several key can by pressing a button to set the upper limit and lower limit of the temperature value, and data stored in microcontroller EEPROM do off the electric storage function, when the collected temperature exceeds the set value, the system will control buzzer and corresponding to the LED emit audible and visual alarm and relay operation. This design is simple, low cost, practical.Keywords:DS18B20 waterproof temperature sensor; STC89C51 single chip microcomputer; temperature alarm目录摘要 (I)ABSTRACT .......................................................................................................................................... I I 1 系统硬件方案选择 . (1)1.1硬件方案的选择 (1)1.1.1 主控芯片的选择 (1)1.1.2 显示器件的选择 (2)1.1.3 温度传感器的选择 (2)1.1.4 报警模块的选择 (3)1.2系统总体方案 (3)2 系统硬件电路设计 (5)2.1STC89C51单片机系统设计 (5)2.1.1 STC89C51的概述 (5)2.1.3 STC89C51单片机的最小系统 (5)2.2数码管显示电路设计 (7)2.2.1 共阳数码管的概述 (7)2.2.3 共阳数码管的驱动方式 (7)2.3DS18B20温度传感器的设计 (9)2.3.1 DS18B20的概述 (9)2.3.2 DS18B20的工作原理 (9)2.4蜂鸣器电路的设计 (12)2.5继电器驱动电路设计 (12)2.6独立按键电路的设计 (13)2.7原理图绘制软件的介绍 (14)2.8系统硬件测试 (14)3 系统软件部分设计 (16)3.1软件开发环境的介绍 (16)3.2系统重要函数的介绍 (16)3.2.1 主函数的设计 (16)3.2.2 数码管显示函数的设计 (17)3.2.3 DS18B20温度采集函数的设计 (18)3.3系统软件测试 (19)4 结论 (21)5 致谢 (22)参考文献 (23)附录A:原理图 (24)附录B:源程序 (25)1 系统硬件方案选择本章节主要介绍系统所用到的器件的选择与对比,进行综合的对比考虑选择出最适合本设计的一组方案。
基于51单片机的温度监测系统(DS18B20)
DS18B20读时序
所有的读时隙都由拉低总线,持续至少1us后再释放总线(由于上拉电阻的作用,总线恢复为 高
配置寄存器
8 位 CRC 生成器
DS18B20的时序
DS18B20复位时序
DS18B20的所有通信都由由复位脉冲组成的初始化序列开始。该初始化序列由主 机发出,后跟由DS18B20发出的存在脉冲(presence pulse)。在初始化步骤中,总线 上的主机通过拉低单总线至少480μs来产生复位脉冲。然后总线主机释放总线并进入接收 模式。当总线释放后,5kΩ的上拉电阻把单总线上的电平拉回高电平。当DS18B20检测 到上升沿后等待15到60us,发出存在脉冲,拉低总线60-240us至此,初始化和存在时序 完毕。时序图如下:
1.主控制器电路和测温
电路的设计
主控制器电路由AT89S52 及外围时钟和复位电路构成, 测温电路由DS18B20、报警 电路组成。AT89C52是此硬 件电路设计的核心,通过 AT89S52的管脚P2.7与 DS18B20相连,控制温度的 读出和显示。硬件电路的功 能都是与软件编程相结合而 实现的。具体电路原理图如 右图2所示。
送1,以拉低总线的方式表示发送0.当发送0的时候,DS18B20在读时隙的末期将会释放总线,总线
将会被上拉电阻拉回高电平(也是总线空闲的状态)。DS18B20输出的数据在下降沿(下降沿产 生读时隙)产生后15us后有效。因此,主机释放总线和采样总线等动作要在15μs内完成。
基于51单片机的温度控制系统设计说明
基于51单片机的水温自动控制系统0 引言在现代的各种工业生产中 ,很多地方都需要用到温度控制系统。
而智能化的控制系统成为一种发展的趋势。
本文所阐述的就是一种基于89C51单片机的温度控制系统。
本温控系统可应用于温度围30℃到96℃。
1 设计任务、要求和技术指标1.1任务设计并制作一水温自动控制系统,可以在一定围(30℃到96℃)自动调节温度,使水温保持在一定的围(30℃到96℃)。
1.2要求(1)利用模拟温度传感器检测温度,要求检测电路尽可能简单。
(2)当液位低于某一值时,停止加热。
(3)用AD转换器把采集到的模拟温度值送入单片机。
(4)无竞争-冒险,无抖动。
1.3技术指标(1)温度显示误差不超过1℃。
(2)温度显示围为0℃—99℃。
(3)程序部分用PID算法实现温度自动控制。
(4)检测信号为电压信号。
2 方案分析与论证2.1主控系统分析与论证根据设计要求和所学的专业知识,采用AT89C51为本系统的核心控制器件。
AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器。
其引脚图如图1所示。
2.2显示系统分析与论证显示模块主要用于显示时间,由于显示围为0~99℃,因此可采用两个共阴的数码管作为显示元件。
在显示驱动电路中拟订了两种设计方案:方案一:采用静态显示的方案采用三片移位寄存器74LS164作为显示电路,其优点在于占用主控系统的I/O口少,编程简单且静态显示的容无闪烁,但电路消耗的电流较大。
方案二:采用动态显示的方案由单片机的I/O口直接带数码管实现动态显示,占用资源少,动态控制节省了驱动芯片的成本,节省了电 ,但编程比较复杂,亮度不如静态的好。
由于对电路的功耗要求不大,因此就在尽量节省I/O口线的前提下选用方案一的静态显示。
图1 AT89C51引脚图2.3 检测系统分析与论证1 温度检测:有选用AD590和LM35D两种温度传感器的方案,但考虑到两者价格差距较大,而本系统中对温度要求的精度不很高,因而选用比较廉价LM35D。
基于51单片机的温度控制系统设计
基于51单片机的温度控制系统设计引言:随着科技的不断发展,温度控制系统在现代生活中应用广泛,例如空调、冰箱、温室等。
本文基于51单片机设计一个简单的温度控制系统,用于控制温度在一些合适的范围内。
一、系统功能设计本系统主要包括以下功能:1.温度采集:通过温度传感器实时采集环境温度数据;2.温度显示:将采集到的温度数据显示在液晶屏上,方便用户查看;3.温度控制:当环境温度超过设定的范围时,系统将自动启动风扇或制冷装置来降低温度;4.温度报警:当环境温度超过设定范围时,系统将通过报警器发出警报。
二、系统硬件设计1.51单片机2.LM35温度传感器:用于采集环境温度数据;3.ADC0804模数转换芯片:将LM35传感器输出的模拟电压转换为数字信号;4.LCD1602液晶屏:用于显示温度数据和系统状态;5. Buzzer报警器:用于发出警报;6.风扇或制冷装置:用于降低温度。
三、系统软件设计1.初始化:设置各个硬件模块的工作模式和初始化参数;2.温度采集:通过ADC0804芯片将LM35传感器输出的模拟信号转换为数字信号;3.温度显示:将采集到的数字信号转换为温度值,并通过LCD1602液晶屏显示;4.温度控制:根据设定的温度上下限值,判断当前温度是否超过范围,若超过则启动风扇或制冷装置进行温度控制;5. 温度报警:当温度超过设定范围时,通过Buzzer报警器发出声音警报;6.系统循环:以上功能通过循环执行,实现实时监控和控制。
四、系统流程图软件设计流程如下所示:```开始初始化系统循环执行以下步骤:采集温度数据显示温度数据温度控制判断温度报警判断结束```五、系统总结本文基于51单片机设计了一个简单的温度控制系统,通过温度采集、显示、控制和报警功能,实现了温度的实时监控和控制。
该系统可以广泛应用于家庭、办公室、温室等环境的温度控制,提高生活质量和工作效率。
六、系统展望本系统可以进行进一步的优化和扩展,例如添加温度传感器的校准功能,提高温度采集的精度;增加温度曲线图显示功能,方便用户了解温度变化趋势;引入无线通信模块,使用户可以通过手机或电脑远程监控和控制温度等。
基于51单片机水温检测控制系统说明书
基于单片机的水温检测控制系统设计学生姓名王培同院系名称机电学院专业名称机械电子工程班级机电132学号201300384228指导教师完成时间目录1 引言 (3)2 设计要求 (3)2.1 基本要求 (3)2.2 扩展功能 (3)3 总体方案设计 (3)3.1 方案论证 (3)3.1.1 方案一 (3)3.1.2 方案二 (4)4 硬件设计 (4)4.1 单片机系统 (4)4.2 数字温度传感器模块 (5)4.2.1 DS18B20性能 (5)4.2.2 DS18B20外形及引脚说明 (5)4.2.3 DS18B20接线原理图 (6)4.2.4 DS18B20时序图 (6)4.2.5 数据处理 (7)4.3 显示电路 (8)4.4 声光报警电路 (9)4.5 键盘输入电路 (10)5 软件设计 (11)5.1 主程序模块 (11)5.2 读温度值模块 (11)5.3 中断模块 (11)5.4 温度设定、报警模块 (12)6 源程序 (12)7 总结 (12)参考文献: (13)1 引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,各种数字系统的应用也使人们的生活更加舒适。
数字化控制、智能控制为现代人的工作、生活、科研等方面带来方便。
其中数字温度计就是一个典型的例子。
数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温精确、功能多样话等优点。
其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该设计使用STC89C52RC单片机作控制器,数字温度传感器DS18B20测量温度,单片机接受传感器输出,经处理用LCD实现温度值显示。
2 设计要求2.1 基本要求实现实时温度显示,测温范围0~1200C,误差50C以内。
2.2 扩展功能温度报警,能任意设定温度范围实现温度的报警。
温度控制,利用继电器控制热得快,当设置好温度上下限后,当没有超过温度上限时,继电器吸合,热得快通电,加热水温。
基于C51单片机的温度控制系统应用系统设计(附程序)
基于C51单片机的温度控制系统应用系统设计(附程序)基于C51单片机的温度控制系统应用系统设计--------- 单片机原理及应用实践周设计报告姓名:班级:学号:同组成员:指导老师:成绩:时间:2011 年7 月3 日单片机温度控制系统摘要温度是日常生活中无时不在的物理量,温度的控制在各个领域都有积极的意义。
很多行业中都有大量的用电加热设备,如用于热处理的加热炉,用于融化金属的坩锅电阻炉及各种不同用途的温度箱等,采用单片机对它们进行控制不仅具有控制方便、简单、灵活性大等特点,而且还可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量。
因此,智能化温度控制技术正被广泛地采用。
本温度设计采用现在流行的AT89S51单片机,配以DS18B2数字温度传感器,上、下限进行比较,由此作出判断是否触发相应设备。
本设计还加入了常用的液晶显示及状态灯显示灯常用电路,使得整个设计更加完整,更加灵活。
关键词:温度箱;AT89C52 LCD1602单片机;控制目录1引言11.1温度控制系统设计的背景、发展历史及意义11.2温度控制系统的目的11.3温度控制系统完成的功能12总体设计方案22.1方案一 22.2方案二 23DS18B20温度传感器简介73.1温度传感器的历史及简介73.2DS18B20的工作原理7DS18B20工作时序7ROM操作命令93.3DS18B20的测温原理98B20的测温原理:9DS18B20的测温流程104单片机接口设计124.1设计原则124.2引脚连接12晶振电路12串口引脚12其它引脚135系统整体设计145.1系统硬件电路设计14主板电路设计14各部分电路145.2系统软件设计16 系统软件设计整体思路系统程序流图176结束语2116附录22参考文献391引言1.1温度控制系统设计的背景、发展历史及意义随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。
基于51单片机水温控制系统
基于51单片机水温控制系统1.引言科技是社会发展的中流砥柱,而近几年比较热门的电子技术更是被广泛应用于各行各业。
电子技术衍生的电子产业更是如火如荼,蓬勃发展的电子产业日益趋向智能化、信息化。
2.总体设计控制器采用单片机STC89C51,温度传感器采用DS18B20,显示采用4位LED数码管,报警控制器采用有缘蜂鸣器、LED灯实现,按键用来设定报警上下限温度并将设置好的值保存在STC89C51的EEPROM中(具有掉电保护功能)。
当实测温度值小于设定的温度下限值时系统开启继电器间接控制接在继电器常开端上的加热棒,继电器一开启热得棒就开始工作,继电器关闭热得棒也随着停止工作。
本设计的具体的系统方案如图1所示。
图1 系统方案如图图2 程序流程图3.软件部分3.1 程序设计void main()是程序的主函数,用于构建框架。
程序的开头一般用于初始化和赋值变量,正常的程序运行一次后便结束了,但我们需要不断地运行来检验结果,所以在初始化后加入了死循环,使程序持续运行。
主函数在整个主程序的设计中最好放适量的代码,避免过多。
具体的代码是用函数进行封装然后在主函数进行调用。
程序流程图如图2所示。
3.2 软件使用系统软件测试KEIL软件是单片机编程的一款常用软件,创建空白文件编程编译调试生成HEX文件.随后下载到单片机中,下载器选用PL2303。
观察系统运行的状态,进而进行反复的修改调试程序,得到一个较为完善的程序。
在系统软件调试过程中遇到以下几个问题:(1)数码管没有正常显示出现了闪烁现象。
解决方法:闪烁的原因为每一位显示延时间期过短使得显示频率过快,导致人眼生物极限无法看清超速的显示,只需要调整延时函数就可以显示正常。
(2)EEPROM存储错误。
解决方法:一开始的时候在读写数据前都没有做任何的操作,本以为这样就可以完成数据的存储,但是并没有想的那样,在读与的时候出现与进去的和读出来的并没有相同,后通过查阅资料得知,STC单片机内部的EEPROM在写入数据之前心须擦除扇区,否则写入的数据就是和本身的数据进行相与的结果,而在程序上添加了在写入数据之前加上擦除扇区后,数据存储正常。
基于51单片机的温度控制系统说明书
中北大学课程设计说明书学生姓名:学号:学院:机械与动力工程学院专业:机械电子工程题目:基于51单片机的温度控制系统设计职称: 讲师2015 年 1 月 19 日目录第1章绪论 (2)1.1 题目背景 (2)1.2 题目简介 (2)第2章系统总体设计及方案 (3)2.1单片机的介绍 (3)2.2系统功能的确定 (3)2.3温度传感器DS18B20的介绍 (3)2.3.1DS18B20的内部结构 (4)2.3.2 DS18B20的引脚介绍 (6)2.4人机交互与串口通信 (6)第3章硬件设计 (8)3.1系统结构框图 (8)3.2人机交互与串口通信单元设计 (9)3.2.1 键盘输入电路 (9)3.2.2 串口通信电路 (9)3.2.3 LED七段数码动态显示电路 (10)3.2.4 控制执行单元设计 (11)第4章软件设计 (12)4.1设计思路、程序代码 (12)结束语 (22)参考文献 (23)第1章绪论1.1 题目背景不论是对于工业生产还是对于人们的日常生活,温度的变化都会对其产生一定程度的影响。
所以,适时和恰当的温度控制对生产生活具有非常重要的作用。
在过去,对温度的控制总是采用常规的模拟调节器,然而,这种调节器存在的缺点是控制精度低,具有滞后、非线性等特点。
-本文将采用微电子技术来提高温度控制的精度,因为微电子技术的电路设计简单,控制效果好,具有很强的实用性。
众所周知,在现代工业以及家用电器测控领域中,单片机系统的开发和运用给其带来了全新的技术创新和变革。
而且,自动化和智能化程度的高低均依赖于是否使用单片机。
试想:将单片机的温度控制方法如果能够运用到温度控制系统中的话,那么,就可以在一定程度上缓减和克服温度控制系统中存在的滞后现象,同时在很大程度的上,单片机的使用可以提高温度的控制效果以及控制精度。
在工业自动化控制中,温度的控制一直都占有非常特殊的地位。
在本文中作者针对电烤箱的温控系统利用单片机进行设计,从而达到精确控制电烤箱温度目的。
基于51单片机的温湿度控制系统设计
致 谢 ........................................................... 16
参考文献 ......................................................... 16
使用 8051 型单片机设计温湿度控制系统,可以及时、精确的反映室内的温度以及 湿度的变化。完成诸如升温到特定温度、降温到特定温度、在温度上下限范围内保持恒 温等多种控制方式,在湿度控制方面也是如此。将此系统应用到温室当中无疑为植被的 生长提供了更加适宜的环境。
1.3 植被栽培技术
植被 “设施栽培”,即“保护地栽培”。它是指在某种类型的保护设施内(如阳畦、温室、大 棚等),人为地创造适宜植被生长发育的最佳环境条件,在不同季节内,尤其是不利于植被生
2.1.2. 实施措施
· 实际环境温度与给定界限比较,执行加热/制冷措施。 · 实际环境湿度与给定界限比较,执行加湿/去湿措施。 · 越限报警:当温湿度越限时声光报警。 · 键盘显示:负责用户的输入及相关数据的显示,其中包括 LED 和 LCD 显示。
2.1.3.硬件系统设计
经过上面的总体方案和实施措施的讨论后可以开始着手硬件系统的设计,硬件系统是应 用系统的基础、软件系统设计的依据 主机与主要部件的选择: 根据总体功能和性价比及其运行速度等因素的考虑,选用 MCS-51 系列的 89C51 为主机,满足 上面的要求而且设计方便,不需要再存储扩展。
前种植植被一般都用温室栽培,为了充分的利用好温室栽培这一高效技术,就必需 有一套科学的,先进的管理方法,用以对不同种类植被生长的各个时期所需的温度及湿 度等进行实时的监控。温湿度控制对于单片机的应用具有一定的实际意义,它代表了一 类自动控制的方法。而且其应用十分广泛。
基于51单片机的温度控制器
温度控制器本设计要求温度控制器实现以下基本功能:(1).数码管准确显示温度值,测量精度为±0.5C︒;(2).五个按键操作(设置温度,加键、复位);(3).可以温度设置,超过设定温度,继电器吸合(且蜂鸣器发出报警声)。
Proteus仿真图仅供学习参考Main.c/*==========================================================说明:基于DS18b20的温度控制报警程序作者:kks创建时间:2013-03-18修改时间:============================================================*/#include "config.h"#include "type.h"#include "DS18B20.h"/*===================全局定义===============================*/ static uint8 uKeyValue=0; //键值static uint16 unTemp=0; //读取的温度值static uint8 uCnt=0; //定时器计数值bit b2msflag=0; //2ms时间标志位bit b2mskeyflag=0; //2ms标志,用于按键扫描bit b50msflag=0;uint8 uKeyCnt=0; //按键延时计数uint8 code SegTable[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90, /*不带小数点的断码表*/0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10, /*带小数点的断码表*/0xbf,0xff,0x86,0x88}; //-,不显示,E,Ruint8 code BitTable[]={0xfe,0xfd,0xfb,0xf7}; //位码uint8 DisBuff[]={0,0,0,0}; //显示缓存区/**************************************************************函数名:Delay250us*输入:无*输出:无*功能:蜂鸣器延时函数**************************************************************/void Delay250us(void){uint8 j;for(j=28;j>0;j--) //250us基准延时程序{;}}/**************************************************************函数名:Init*输入:无*输出:无*功能:程序初始化**************************************************************/void Init(void){P0=P1=P2=P3=0XFF; //IO口初始化TMOD=0x01; //定时器0方式1TH0=0xf8; //定时2msTL0=0x30;ET0=1;EX0=1;EA=1;TR0=1;}/************************************************************* *函数名:KeyHandle*输入:tem*输出:返回温度上下限设置值,上限最大值为90,下限为0*功能:按键处理程序**************************************************************/ uint8 KeyHandle(uint8 tem){if(KEYUP==0){uKeyCnt++;if(uKeyCnt>=2) //消抖{uKeyCnt=0;if(KEYUP==0){tem++;if(tem>99)tem=0;while(!KEYUP);}}}if(KEYDOWN==0){uKeyCnt++;if(uKeyCnt>=2){uKeyCnt=0;if(KEYDOWN==0){tem--;if(tem==-1){tem=99;}while(!KEYDOWN);}}}if(KEYWRITE==0){uKeyCnt++;if(uKeyCnt>=2){uKeyCnt=0;if(KEYWRITE==0){CopyToEEPROM(); //将上下限拷贝到E2PROMwhile(!KEYWRITE);}}}return tem;}/************************************************************* *函数名:Buzz*输入:无*输出:无*功能:蜂鸣器报警函数**************************************************************/ void Buzz(void){uint8 i;for(i=10;i>0;i--){BEEP=0;Delay250us();Delay250us();BEEP=1;Delay250us();}BEEP=1;}/**************************************************************函数名:TemAlarm*输入:无*输出:无*功能:温度报警检测**************************************************************/ void TemAlarm(void){if((unTemp>uTHigh*10)||(unTemp<uTLow*10)){RELAY=0; //继电器动作Buzz(); //蜂鸣器报警}else{RELAY=1; //继电器复位BEEP=1; //关闭蜂鸣器}}/************************************************************* *函数名:DispTem*输入:无*输出:无*功能:温度数码管显示**************************************************************/ void DisTem(void){uint8 i,j;for(i=30;i>0;i--){for(j=0;j<4;){P0=SegTable[DisBuff[j]];P2=BitTable[j];if(b2msflag){b2msflag=0;P2=0xff;j++;}}}}/**************************************************************函数名:CopyToDisBuff*输入:tem*输出:无*功能:将温度数据写入显示缓存区**************************************************************/ void CopyToDisBuff(uint16 tem){DisBuff[0]=sign;DisBuff[1]=tem/100;DisBuff[2]=tem%100/10+10;DisBuff[3]=tem%10;}/************************************************************* *函数名:Error*输入:无*输出:无*功能:若无DS18b20或其故障,显示ERR**************************************************************/ void Error(void){DisBuff[0]=21; //不显示DisBuff[1]=22; //EDisBuff[2]=23; //RDisBuff[3]=23; //R}/************************************************************* *函数名:SoftReset*输入:无*输出:无*功能:单片机软件复位**************************************************************/ void SoftReset(void){((void(code*)(void))0x0000)(); //函数指针reset指向地址0}/************************************************************* *函数名:main*输入:无*输出:无*功能:主函数,程序入口**************************************************************/ void main(void){Init();if(Reset18b20()){GetFromEEPROM(); //读取温度上下限值unTemp=ReadTem(); //读取温度uTHigh=uTemHigh; //将上下限值复制到临时存储区uTLow=uTemLow;}else{Error();while(Reset18b20()==0){DisTem();}SoftReset(); //软件复位}while(1){DisTem(); //调用显示switch(uKeyValue){case 0:if(b50msflag){b50msflag=0;unTemp=ReadTem(); //读取温度CopyToDisBuff(unTemp); //更新显示缓存区TemAlarm(); //温度报警检测}break;case 1:if(b2mskeyflag){b2mskeyflag=0;uTHigh=KeyHandle(uTHigh); //设置温度上限CopyToDisBuff(uTHigh*10); //更新显示缓存区}break;case 2:if(b2mskeyflag){b2mskeyflag=0;uTLow=KeyHandle(uTLow); //设置温度下限CopyToDisBuff(uTLow*10); //更新显示缓存区}break;default:uKeyValue=0;break;}}}/************************************************************* *函数名:Timer0ISR*输入:无*输出:无*功能:T0中断服务函数**************************************************************/ void Timer0ISR(void) interrupt 1 using 1{TH0=0xf8; //重赋初值TL0=0x30;b2msflag=1; //2ms时间标志b2mskeyflag=1;uCnt++;if(uCnt>=25){uCnt=0;b50msflag=1;}}/************************************************************* *函数名:INT0ISR*输入:无*输出:无*功能:INT0中断服务函数**************************************************************/ void INT0ISR(void) interrupt 0 using 0{uKeyValue++;if(uKeyValue>=3){uKeyValue=0;}}Config.H/*========================================================== 说明:硬件配置信息作者:kks创建时间:2012-09-03修改时间:2013-03-18============================================================*/#ifndef _CONFIG_H_#define _CONFIG_H_#include <reg52.h>/*******独立按键********/sbit KEYUP=P1^4; //加sbit KEYDOWN=P1^5; //减sbit KEYWRITE=P1^6; //写入/*******蜂鸣器********/sbit BEEP=P3^6;/*******继电器********/sbit RELAY=P3^7;/*******DS18B20信号线********/sbit QS=P3^3;#endifType.h/*========================================================== 说明:数据类型定义作者:kks创建时间:2012-09-03修改时间:2013-03-18============================================================*/#ifndef __TYPE_H__#define __TYPE_H__/*================================================整型数据类型================================================*/typedef unsigned char uint8;typedef unsigned int uint16;typedef unsigned long uint32;typedef char int8;typedef int int16;typedef long int32;typedef unsigned char WPARAM;typedef unsigned char LPARAM;/*================================================枚举数据类型================================================*/typedef enum{FALSE,TRUE}BOOL;#endifDS18b20.h#ifndef _DS18B20_H_#define _DS18B20_H_#ifndef _DS18B20_C_#define _EXTERN#endif/*===================全局定义===============================*//*===================全局变量===============================*/ #ifdef _EXTERNextern uint8 uTemHigh; //温度上限extern uint8 uTemLow; //温度下限extern uint8 uTHigh;extern uint8 uTLow;extern uint8 sign; //符号位#undef _EXTERN#endif/*===================全局函数===============================*/ bit Reset18b20(void);uint8 Rbyte18b20(void);void Wbyte18b20(uint8 dat);uint16 ReadTem(void);void CopyToEEPROM(void);void GetFromEEPROM(void);#endifDS18B20.c/*========================================================== 说明:DS18B20驱动程序作者:kks创建时间:2012-03-19优化时间:2013-03-20============================================================*/#define _DS18B20_C_#include <intrins.h>#include "config.h"#include "type.h"#include "DS18B20.h"uint8 uTemHigh=0; //温度上限uint8 uTemLow=0; //温度下限uint8 uTHigh=0; //温度上限临时存储uint8 uTLow=0; //温度下限临时存储uint8 sign=0xff; //用来判断暂存器的高5位是否为负float f_temp=0; //定义浮点型的温度数据/************************************************************* *函数名:Delay15us*输入:uint16 t*输出:无*功能:单位为15us延时函数,延时时间=15(1+t)us**************************************************************/ void Delay15us(uint16 t){uint16 i;for(i=t;i>0;i--){_nop_(); _nop_(); _nop_(); _nop_();}_nop_(); _nop_();}/************************************************************* *函数名:Reset18b20*输入:无*输出:1-复位成功,0-复位失败*功能:复位DS18b20,检测DS18b20工作是否正常**************************************************************/ bit Reset18b20(void){bit rest=1;QS=1; //QS复位Delay15us(1); //延时30usQS=0; //拉低总线Delay15us(32); //延时495usQS=1; //释放总线Delay15us(4); //延时15-60us,rest=QS; //记录DS返回的状态Delay15us(15); //延时240us后,释放总线QS=1;return (~rest); //返回复位结果}/************************************************************* *函数名:Wbyte18b20*输入:dat-待写字节数据*输出:无*功能:DS18b20写一字节数据**************************************************************/ void Wbyte18b20(uint8 dat){uint8 i;for(i=8;i>0;i--){QS=0; //拉低总线,产生写时序_nop_(); _nop_(); //至少延时1usQS=dat&0x01; //从最低位写起Delay15us(3); //延时60usQS=1; //释放总线dat>>=1; //数据右移一位,准备写下一位}}/************************************************************* *函数名:Rbyte18b20*输入:无*输出:dat-读出数据*功能:DS18b20读一字节数据**************************************************************/ uint8 Rbyte18b20(void){uint8 i,dat=0;for(i=8;i>0;i--){dat>>=1;QS=0; //产生读时序_nop_(); _nop_(); //至少延时1usQS=1; //释放总线_nop_(); _nop_();_nop_(); _nop_(); //延时4us后读数据if(QS)dat |=0x80;Delay15us(3); //延时60us}return dat;}/**************************************************************函数名:ReadTem*输入:无*输出:temp-读出温度*功能:读取温度**************************************************************/uint16 ReadTem(void){uint8 TL=0,TH=0;uint16 temp=0; //温度数据/*======开始转换=====*/if(Reset18b20()) //总线复位{Wbyte18b20(0xcc);//写跳过读ROM指令Wbyte18b20(0x44); //写温度转换指令Delay15us(15); //稍作延时}/*======读取温度=====*/if(Reset18b20()) //总线复位{Wbyte18b20(0xcc);//写跳过读ROM指令Wbyte18b20(0xbe); //读暂存器,读内部RAM中9字节的温度数据TL=Rbyte18b20(); //读低8位TH=Rbyte18b20(); //读高8位uTemHigh=Rbyte18b20();//读温度上限uTemLow=Rbyte18b20();//读温度下限Reset18b20(); //复位,终止读temp=TH;temp<<=8; //左移八位temp=temp|TL; //两个字节组成一个字if(TH>0x07) //符号位为负{sign=20; //符号位显示为'-'temp=~temp+1;//取temp的补码}else{sign=21; //符号位不显示temp=temp;}f_temp=temp*0.0625; //温度在寄存器中为12位,分辨率为0.0625temp=f_temp*10+0.5; //乘10是取一位小数,加0.5是四舍五入return (temp); //temp是整型}elsereturn 0;}/**************************************************************函数名:CopyToEEPROM*输入:无*输出:无*功能:将温度上下限写入E2PROM**************************************************************/ void CopyToEEPROM(void){if(Reset18b20()){Wbyte18b20(0xcc);Delay15us(1);Wbyte18b20(0x4e); //写暂存器Delay15us(1);Wbyte18b20(uTHigh); //写上限Wbyte18b20(uTLow); //写下限}if(Reset18b20()){Wbyte18b20(0xcc);Delay15us(1);Wbyte18b20(0x48); //复制暂存器}}/**************************************************************函数名:GetFromEEPROM*输入:无*输出:无*功能:从EEPROM中得到TH,TL的值**************************************************************/ void GetFromEEPROM(void){if(Reset18b20()){Wbyte18b20(0xcc);Delay15us(1);Wbyte18b20(0xb8);Delay15us(15);}}。
基于51单片机的温度上下限控制(实时显示时间、温度)
delay(5);
if(K1==0)
{
th4++;
while(!K1);
if(th4==10)th4=0;
}
}
if(K2==0)
{
delay(5);
if(K2==0)
{
th4--;
while(!K2);
if(th4==-1)th4=9;
}
}
write_cmd(0xcc);
write_dat(th4+0x30);
{
if(K4==0)
{
delay(5);
if(K4==0)
{
while(!K4);
keynum++;
if(keynum==5)keynum=1;
}
}
return keynum;
}
void key_lcd()
{
if(flag1==1&&k==3)
{
if(K3==0)
{
delay(5);
if(K3==0)
#include"STC89C51RC.H"
#include<absacc.h>
#include"ds18b20.h"
#include"lcd1602.h"
#include"ds1302.h"
#include"2402.h"
uchar data datadis[]={0x00,0x00,0x00,0x00,0x00};
}
return dat;
}
/**写一个字节**/
void write_byte(uchar dat)
基于51单片机的温度控制系统
一.概述温度是工业生产中常见的工艺参数之一,任何物理变化和化学反应过程都与温度密切相关,因此温度控制是生产自动化的重要任务。
对于不同生产情况和工艺要求下的温度控制,所采用的加热方式,燃料,控制方案也有所不同。
本设计的控制对象为一电加热炉,输入为加在电阻丝两断的电压,输出为电加热炉内的温度。
输入和输出的传递函数为:G(s)=2/(s(s+1))。
控温范围为100~500℃,所采用的控制方案为直接数字控制(DDC)中的最少拍控制。
二.温度控制系统的组成框图采用典型的反馈式温度控制系统,组成部分见下图。
其中数字控制器的功能由微型机算机实现。
图2.1 温度控制系统的组成框图三.温度控制系统结构图及总述图3.1 温度控制系统结构图图中由4~20mA变送器,I/V,A/D转换器构成输入通道,用于采集炉内的温度信号。
其中,变送器选用XTR101,它将热电偶信号(温度信号)变为4~20mA电流输出,再由高精密电流/电压变换器RCV420将4~20mA电流信号变为0~5V标准电压信号,以供A/D 转换用。
转换后的数字量与与炉温的给定值数字化后进行比较,即可得到实际炉温和给定炉温的偏差。
炉温的设定值由键盘输入。
由微型计算机构成的数字控制器按最小拍进行运算,计算出所需要的控制量。
数字控制器的输出经标度变换后送给8253,由8253定时计数器转变为高低电平的不同持续时间,送至SCR触发电路,触发晶闸管并改变其导通角大小,从而控制电加热炉的加热电压,起到调温的作用。
四.温度控制系统硬件与其详细功能介绍1.微型计算机的选择——时钟发生器,8282——带三态缓冲器的通用8位地址锁存器,8286——具有三态输出的8位双极型总线收发器。
其中,时钟发生器8284A为CPU提供时钟信号,经时钟同步的系统复位信号RESET和准备就绪信号READY;地址锁存器8282是针对于8086CPU地址/数据线分时复用而设计配备的,它可以在8086CPU总线周期的T1状态,利用ALE信号的下降沿将地址信息锁存于其中;总线收发器8286是为了提高8086CPU 数据总线的驱动能力2.SCR触发回路和主回路图4.1 SCR触发回路和主回路如图所示为一晶闸管触发电路。
51温控系统说明书
基于单片机的简单温控系统机控学院 自动化12-2 潘星光 3120619213实现功能:利用单片机89C52和热电偶进行测量发热电阻的温度,利用 LCD1602进行显示的温度和人工可设置温度的上限与下限值,即有两个按键是 来控制上限值的大小,而另两个按键则是控制下限值的大小的。
发热电阻从系统 上电后就立即通电发热,设置好所需要温度范围,则测量温度显示的数值会随发 热电阻通电时间的增大而增大,当测量的温度超出所设定的上限值时, 就会驱动 蜂鸣器报警,发热电阻停止通电,同时也会驱动马达扇风来降温; 而当测量温度 低于所设定的下限值时,也会进行报警,但电机不会被启动和发热电阻也继续通 电发热。
当然当测量温度在上限值和下限值之间时, 是不会进行报警和驱动马达 的,但发热电阻仍处于通电状态中。
电路原理图:C1Z 3EX-X EHcrl dE总fill I w I ?LCD1KQDS1&E2:1KQ NO 昌口 口 A主程序:#in clude<reg52.h> dat=ds; _nop_();#i nclude<1602.h> TempDelay(12); }#i ncludevi ntri ns.h> return dat; dat>>=1;sbit ds = P2A2; } }sbit beep =卩2八3; uchar ds_read_byte() }sbit rd = P3A7; { 一一sbit k = P1A0;uchar i,j,value; void ds_cha nge()bit flag; for(i=0;i<8;i++) {uchar ds_rom[8]; { ds_reset();uchar H,L,Key_value; j=ds_read_bit(); ds_write_byte(0xcc); void TempDelay(uchar ds_write_byte(0x44) us) value=(j<<7)|(value>J{ >1); }while(us--); 〃6.51us } uchar get_temperature() } retur n value; {void ds_reset() } uint temp;{ _ void ds_write_byte(uchar uchar a,b,c;ds=1; dat) ds_reset();_nop_(); { ds_write_byte(0xcc);ds=0; uchar i,o nebit; ds_write_byte(0xbe);TempDelay(80);//52 for(i=0;i<8;i++) a=ds_read_byte();0us { b=ds_read_byte();ds=1; temp=b;TempDelay(5); on ebit=dat&0x01; temp<<=8;if(ds==0) if(on ebit) temp|=a;flag=1; //写1 c = temp*0.0625;else { return c;flag=0; ds=0; }TempDelay(20);ds=1; TempDelay(l); void key()} ds=1; {bit ds_read_bit() _nop_(); Key_value = P3; { 一一} Key_value = bit dat; else //写 0 Key_value & 0x0f;ds=0; { if ( Key_value !=_nop_(); ds=0; 0x0f )_nop_(); {ds=1; TempDelay(11); dela y(5);_nop_(); ds=1; if(Key_value != OxOf )_ {switch(Key_value) { _case OxOe: H++; break;case0x0d: H--; break;case0x0b: L++; break;case0x07: L--; break;}}}}void mai n(){uchar i;rd = 0;in it_1602();write_com( 0x80 + 0 + 3);write_data( 'H');write_com( 0x80 + 0 + 8);-write_data( 'L');lcd_dis( 0,5,ucharto s tr( H ));lcd_dis( 0,10,ucharto str( L ));if ( i>=H){beep = 0; k= 0;}else if(i<=L) {beep = 0; k =1;} else{beep =1; k =1;}key();}}lcd_distostr(1,1,0);H = 35;L = 25;k = 1;while(1){ds_cha nge();i =get_temperature();lcd_dis( 1,14,ucharto str( i ));头文件1602.h程序:#define uchar unsigned char#defi ne uint un sig ned int sbit wela = P2A7;sbit dula =卩2八6;sbit LCDEN =卩3八4; sbit rs = P3A5;sbit rw = P3A6;uchar datstr[] = "Temperature:";uchar str[4];//uchartostr 函数转换的字符串同时可以把16进制转成10进制void delay( uint z) 〃延时函数{uint x,y;for(x=z;x>0;x__)for(y=120;y>0;y--);}void write_com(uchar com) //写命令{P0=com;rs=0;LCDEN=0; delay(10);LCDEN=1; delay(10);LCDEN=0;}void write_data(uchar date) //写数据{P0=date;rs=1;LCDEN=0; delay(10);LCDEN=1;delay(10); LCDEN=0;}void in it_1602(){rw=0;dula=0;wela=0;write_com(0x38);//显示模式设置:16 x 2 显示,5X 7点阵,8位数据接口delay(20);write_com(0x0c);//显示模式设置delay(20);write_com(0x06);〃显示模式设置:光标右移,字符不移delay(20);write_com(0x01);//清屏幕指令,将以前的显示内容清除delay(20);}uchar *uchartostr(ucharnum) //将一个字节的数据转换为字符串或10进制{uchar x2,x1,x0,i;x2=num/100; x仁num%100/10;x0=num%100%10;i=0;if(x2!=0){str[i]=x2+48; i++;} if(x1!=0){str[i]=x1+48; i++;} str[i]=x0+48;i++; str[i]='\0'; returnstr;}void lcd_dis(ucharX,uchar Y,uchar *dis) // 显示数据数组{uchar pos; switch(X){case 0:X=0x00;break;case 1:X=0x40;break;break;default:break;}pos =0x80+X+Y;write_com(pos);//显示地址while(*dis!='\0'){ write_data(*dis++);}}void lcd_distostr(ucharX,uchar Y,uchar dis)// 显示字符串数组{uchar pos,i;i=dis; //设定从数组中的第几个字符串开始显示switch(X){case O:X=OxOO; break;case 1:X=0x40; break; break; defaultbreak;}pos =0x80+X+Y; write_com(pos);//显示地址while(datstr[i] !='\0') {write_data(datstr[i]);i++;主要问题:在只使用一个电源供电时,马达启动的瞬间,单片机会掉电重启以致使系统不能稳定工作下去。
基于51单片机的空调温度控制设计说明
基于MCS-51单片机的空调智能温控器的设计与开发摘要本控制电路是以8051单片机为控制核心。
整个系统硬件部分包括温度采样电路,自激式A/D转换器,按键电路,驱动电路,时序电路,和8段译码器,LED数码显示器。
在配合用汇编语言编制的程序使软件实现,实现空调温度智能转换的基本功能。
本控制电路成本低廉,功能实用,操作简便,有一定的实用价值。
本文从3个方面展开论述,首先是硬件电路的描述;接着软件部分的设计;最后实现功能。
关键词8051单片机温度控制 LED数码显示一系统总体设计方案1.1 课题背景电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么单片机技术的出现则是给现代工业控制测控领域带来了一次新的革命。
目前,单片机在工业控制系统诸多领域得到了极为广泛的应用。
特别是其中的C51系列的单片机的出现,具有更好的稳定性,更快和更准确的运算精度,推动了工业生产,影响着人们的工作和学习。
在现代社会中,温度控制不仅应用在工厂生产方面,其作用也体现到了各个方面,随着人们生活质量的提高,酒店厂房与家庭生活中都会见到温度控制的影子,温度控制将更好的服务于社会.而今,空调等家用电器随着生产技术的发展和生活水平的提高越来越普与,一个简单,稳定的温度控制系统能更好的适应市场。
而本次设计就是要通过以MCS-51系列单片机为控制核心,实现空调机温度控制器的设计。
方案一通过温度传感器对空气进行温度采集,将采集到的温度信号传输给单片机,再由. . . .单片机控制显示器,并比较采集温度与设定温度是否一致,然后驱动空调机的加热或降温循环对空气进行处理,从而模拟实现空调温度控制单元的工作情况。
空调温控器主要单片机,时序电路,温度采样电路,A/D转换电路,温度显示电路,温度输入电路,驱动电路等组成。
系统原理图见图1所示:图1 空调机温度控制系统框图方案二DS18B20单线连接方案,方案二采用单线连接,就是四块DS18B20连到单片机的一个IO口上,这种方案只用到单片机的一个IO口,大大的节约了单片机的IO口资源。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中北大学课程设计说明书学生姓名:学号:学院:机械与动力工程学院专业:机械电子工程题目:基于51单片机的温度控制系统设计职称: 讲师2015 年 1 月 19 日目录第1章绪论 (2)1.1 题目背景 (2)1.2 题目简介 (2)第2章系统总体设计及方案 (3)2.1单片机的介绍 (3)2.2系统功能的确定 (3)2.3温度传感器DS18B20的介绍 (3)2.3.1DS18B20的内部结构 (4)2.3.2 DS18B20的引脚介绍 (6)2.4人机交互与串口通信 (6)第3章硬件设计 (8)3.1系统结构框图 (8)3.2人机交互与串口通信单元设计 (9)3.2.1 键盘输入电路 (9)3.2.2 串口通信电路 (9)3.2.3 LED七段数码动态显示电路 (10)3.2.4 控制执行单元设计 (11)第4章软件设计 (12)4.1设计思路、程序代码 (12)结束语 (22)参考文献 (23)第1章绪论1.1 题目背景不论是对于工业生产还是对于人们的日常生活,温度的变化都会对其产生一定程度的影响。
所以,适时和恰当的温度控制对生产生活具有非常重要的作用。
在过去,对温度的控制总是采用常规的模拟调节器,然而,这种调节器存在的缺点是控制精度低,具有滞后、非线性等特点。
-本文将采用微电子技术来提高温度控制的精度,因为微电子技术的电路设计简单,控制效果好,具有很强的实用性。
众所周知,在现代工业以及家用电器测控领域中,单片机系统的开发和运用给其带来了全新的技术创新和变革。
而且,自动化和智能化程度的高低均依赖于是否使用单片机。
试想:将单片机的温度控制方法如果能够运用到温度控制系统中的话,那么,就可以在一定程度上缓减和克服温度控制系统中存在的滞后现象,同时在很大程度的上,单片机的使用可以提高温度的控制效果以及控制精度。
在工业自动化控制中,温度的控制一直都占有非常特殊的地位。
在本文中作者针对电烤箱的温控系统利用单片机进行设计,从而达到精确控制电烤箱温度目的。
1.2 题目简介课题名称:基于51单片机的温度控制系统设计主要任务:(1)电烤箱由1kW电炉加热,最高温度为120℃;(2)电烤箱温度可设置,电烤过程恒温控制,温度控制误差≤±2℃;(3)实时显示温度和设置温度,显示精确为1℃;(4)温度超出设置温度±5℃时发出超限报警,对升温和降温过程不作要求。
开发环境:本环境温度控制系统的软件部分是通过KEIL进行编译,并由Proteus 7 Professional进行仿真测试。
技术指标:(1)以AT89C51系列单片机为核心部件(2)以数字电路和模拟电路为硬件基础(3)以C语言为软件实现语言功能概述:在该温度控制系统中,单片机作为核心部件进行检测控制。
在该环境温度控制系统中温度检测采用DS18B20温度传感器将实时温度传送至单片机,并加以显示。
再通过按键来设定温度,并实时显示。
按下确定键后将实际温度与设定温度进行比较,如果实际温度大于设定温度,则进行降温过程,反之,则进行升温过程,实现温度控制和报警等目的,按复位键后,从新开始。
第2章系统总体设计及方案2.1单片机的介绍随着大规模集成电路的出现及其发展,将计算机的CPU 、RAM 、ROM 、定时/计数器和多种I/O 接口集成在一片芯片上,形成芯片级的计算机,因此单片机早期的含义称为单片微型计算机,直译为单片机。
单片机具有以下特点:1.具有优异的性能价格比2.集成度高、体积小、可靠性高3.控制功能强4.低电压、低功耗2.2系统功能的确定一个控制系统是否能被大众所接受,在于该控制系统是否拥有人性化的操作功能。
为了使本次设计的环境温度控制系统具有操作简单、灵活及高可靠性等特点,确定了该系统功能:1.独立键盘输入。
2.单总线温度传感器DS18B20进行温度采集。
3.温度显示。
4.温度控制执行,温度超限进行报警。
5.温度测量范围为-55-125度,温度有效范围为2-98度,允许误差为1度。
2.3温度传感器DS18B20的介绍DS18B20温度传感器是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,在一根通信线,可以挂很多这样的温度传感器,十分方便。
DS18B20具有以下的的特点:1.只要求一个端口即可实现通信。
2.在DS18B20中的每个器件上都有独一无二的序列号。
3.实际应用中不需要外部任何元器件即可实现测温。
4.测量温度范围-55到+125。
5.数字温度计的分辨率用户可以从9位到12位选择。
6.内部有温度上、下限告警设置。
2.3.1DS18B20的内部结构DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2.1所示。
图2.1 DS18B20内部结构框图64位ROM的位结构如图2.2所示。
开始8位是产品类型的编号;接着是每个器件的唯一的序号,共有48位;最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用单线进行通信的原因。
非易失性温度报警触发器TH和TL,可通过软件写入用户报警上下限数据。
MSB LSB MSB LSB MSB LSB图2.2 64位ROM的位结构图DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的E2PROM。
高速暂存RAM的结构为9字节的存储器,结构如图2.3所示。
前2字节包含测得的温度信息。
第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5字节为配置寄存器,其内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。
该字节各位的定义如图2.4所示,其中,低5位一直为1;TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式,在DS18B20出厂时,该位被设置为0,用户不要去改动;R1和R0决定温度转换的精度位数,即用来设置分辨率,其定义方法见表2.1。
由表可见,DS18B20温度转换的时间比较长,而且设置的分辨率越高,所需要的温度数据转换时间就越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
高速暂存RAM 的第6、7、8字节保留未用,表现为全逻辑1。
第9字节是前面8字节的CRC 码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存RAM 的第1、2字节中。
单片机可以通过单线接口读出该数据。
读数据时,低位在先,高位在后,数据格式以0.0625°C/LSB 形式表示。
温度值格式如图2.5所示:E 2PROM图2.3 高速暂存RAM 结构图 表2.1 DS18B20分辨率的定义和规定 图 2.4 配置寄存器位低字节232221202-12-22-32-4高字节S S S S S 262524图2.5 温度数值格式2.3.2 DS18B20的引脚介绍T O-92封装的DS18B20的引脚排列见图2.6,其引脚功能描述见表2.2。
图2.6(底视图)表2.2 DS18B20详细引脚功能描述序号名称引脚功能描述1 GND 地信号2 DQ 数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3 VDD 可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
2.4人机交互与串口通信该热炉温度控制系统由温度采集、独立键盘输入、温度显示、温度控制执行等四大模块组成。
1. 温度采集:由温度传感器DS18B20完成,并通过串口通信技术与单片机进行数据传输,使用单片机P2.2端口。
2.独立键盘输入:将键盘扫描程序设置在主函数中while循环函数的第一条语句,不断刷新获得设定温度,按下确定键后执行温度比较和温度控制。
使用单片机的P2.1,P2.3,P2.4,P2.5端口。
3.温度显示:通过8个7段LED数码显示管显示当前温度值和设定的温度值,及时反应当前温度的变化与设置温度的关系,使用单片机P0.0--P0.7端口。
4.温度控制执行:系统根据当前温度与设置的温度自动进行相应的升温或降温的操作,在系统自动进行升温或降温处理的同时显示相应的指示灯,在本文的设计中,考虑到加入升温降温设备也不会使得DS18B20传感器有所感应,故而没有添加升降温设备。
只是通过两个升温降温指示灯来表示升降温过程,同样能让使用者知道系统正在进行的操作,使更加简洁。
但是,在实际的生产中升降温度设备是必须添加的。
两个指示灯使用单片机P1.4,P1.5端口。
5.超限报警:在任务书要求中,当温度超出设置温度±5℃时发出超限报警,但是由于作者能力所限,未能达到要求的±5℃,我选择了比较设置温度和实际温度的十位数据的方法,将误差控制在了±10℃以内,在仿真过程中影响是很小的。
第3章 硬件设计3.1系统结构框图图3.1系统硬件总体框图 该系统由核心部件AT89C51来处理从键盘输入电路和温度采集电路送入的数据,并通过温度显示电路进行温度显示,由温度控制电路来进行相应的升温或降温的操作。
如果超出温度限制则激发报警模块。
图3.2 系统硬件原理图AT89C51 显示模块温控执行模块 报警模块键盘模块 传感器模块3.2人机交互与串口通信单元设计在该系统中,人机交互技术主要应用在恒定温度的设置,以及当前温度与设置温度的显示;串口通信技术应用在对温度的采集。
3.2.1 键盘输入电路在本系统中,键盘输入主要采用四个独立按键来实现温度的设定。
如图3.3所示,当按下“加一”键时,恒定温度从0开始加一,按下“减一”键,设定温度从现有值减一。
按下“清零”键,设置温度清零。
按“确定”键,保存设置并退出键盘输入,进入温度控制状态。
只有按下“确定”后才开始执行温度控制和超限报警。
图3.3 键盘输入原理图3.2.2 串口通信电路为了使测得的温度更准确,在本系统中采用了温度传感器DS18B20来获取当前温度,而DS18B20是采用I²C总线进行通信的,如图3.4所示,单片机使用P2.2端口与DS18B20的数据通讯端口相连接,并通过软件实现P2.2控制DS18B20的读和写。
图3.4温度传感器原理图3.2.3 LED七段数码动态显示电路在本系统中采用了LED七段数码动态显示电路来显示温度值,设定温度显示范围在0-99之间,实时温度显示范围在-55--120之间。
该电路由显示、位选锁存器、段选锁存器三部分组成。
显示部分:由两个四位的LED七段共阴数码管构成,用来显示当前温度和设置温度,如图3.5所示。
图3.5 LED七段共阴数码管位选和段选部分:如图3.6所示,由两片74HC573锁存器构成,单片机的P2.6和P2.7分别输出段选和位选信号,然后再将P0口信号传递到锁存器,并完成段选。