课程设计论文.docx
《课程设计论文.docx》由会员分享,可在线阅读,更多相关《课程设计论文.docx(31页珍藏版)》请在冰豆网上搜索。
课程设计论文
摘要
随着现代信息技术的飞速发展,在生产中温度的准确测量是一个比较困难的事情从最初的酒精、水银温度计到现在的数字化、集成化的温度检测系统。
可见传感器的发展是飞快的。
它快速的发展必将带来新一轮的工业化的革命和社会发展的飞跃。
本文从硬软件两个方面介绍了基于AT89S52单片机温度自动检测系统的设计。
系统硬件由控制电路、温度采集电路、键盘和LED显示电路组成。
软件设计从设计思路、软件系统框图出发,先介绍整体的思路后,再逐一分析各模块程序算法的实现,最终编写出满足任务需求的程序。
最终通过DS18B20采集温度并显示出来,由此对周围环境的温度进行有效检测与报警。
基本上满足了温度检测与报警的要求,具有超调量小,采样值与设定值基本一致,操作简单等优点。
本设计创新点在于采用数字式温度传感器DS18B20作为感温元件,占用单片机引脚少,因而可以利用空余引脚通过软件模拟和温度显示。
关键词:
温度检测;AT89S52;LED显示器;DS18B20温度传感器
ABSTRACT
Withtherapiddevelopmentofmoderninformationtechnology,accuratemeasurementoftemperatureintheproductionisadifficultthingfromtheinitialalcohol,mercurythermometertothepresentdigital,integratedtemperaturedetectionsystem.Visiblesensordevelopmentisfast.Itsrapiddevelopmentwillbringaboutanewroundofindustrialrevolutionandaleapofsocialdevelopment.
ThispaperintroducesthedesignofautomaticdetectionsystemoftemperaturebasedonAT89S52fromtwoaspectsofhardwareandsoftware.Thesystemhardwareconsistsofcontrolcircuit,temperatureacquisitioncircuit,keyboardandLEDdisplaycircuit.Softwaredesignfromthedesignideas,softwaresystemblockdiagram,firstintroducedtheoverallidea,andthenonebyonetoanalyzetheimplementationofeachmoduleprogramalgorithm,andultimatelytowriteprogramstomeettheneedsofthetask.FinallythroughtheDS18B20collectiontemperatureanddisplay,thesurroundingenvironmentofthetemperatureforeffectivedetectionandalarm.Basicallymeettherequirementsoftemperaturedetectionandalarm,withasmallovershoot,thesamplingvalueandthesetvalueisbasicallythesame,easytooperateandsoon.
ThedesigninnovationistheuseofdigitaltemperaturesensorDS18B20asatemperaturesensor,theuseofsingle-chippin,andthuscanbeusedinthesparepinthroughthesoftwaresimulationandtemperaturedisplay.
Keyword:
Temperaturedetection;LEDAT89S52display;DS18B20temperaturesensor
目录
引言2
1温度采集系统的设计说明2
1.1温度控制系统完成的功能2
1.2温度采集系统方案2
1.3设计思路2
2硬件电路设计3
2.1系统总体设计3
2.2各部分硬件电路设计3
2.2.1、时钟电路设计3
2.2.2系统复位电路4
2.2.3报警与控制电路设计4
2.2.4LED显示电路设计5
2.2.5温度检测电路设计6
2.2.6按键电路设计8
3软件设计9
3.1主程序方案9
3.2各个模块子程序设计11
3.2.1温度采集11
3.2.2数码管显示模块12
3.2.3温度处理程序12
4系统调试13
4.1测试环境及工具13
4.2测试方法13
4.3测试结果分析13
5结论14
谢辞15
参考文献16
附录..............................................................17
引言
随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。
温度测试控制系统,控制对象是温度。
温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制。
而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。
针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。
特别是近年来,温度控制系统已应用到人们生活的各个方面,但温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题。
1温度采集系统的设计说明
1.1温度控制系统完成的功能
本器件以AT89S52单片机系统进行温度采集与控制温度信号由模拟温度传感器DS18B20采集输入AT89S52,主控器能对各温度检测器通过LED进行显示。
本机实现的功能:
1.当温度低于设定下限温度时,低温发光二极管闪烁,蜂鸣器报警;
2.当温度上升到下限温度以上时,高温发光二极管闪烁,蜂鸣器报警;
3.数码管即时显示温度。
1.2温度采集系统方案
采用数字可编程温度传感器作为温度检测元件。
数字可编程温度传感器可以直接读出被测温度值。
不需要将温度传感器的输出信号接到A/D转换器上,减少了系统的硬件电路的成本和整个系统的体积。
美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。
全部传感元件及转换电路集成在形如一只三极管的集成电路内。
“一线总线”独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
现在,新一代的DS18B20体积更小、更经济、更灵活。
使你可以充分发挥“一线总线”的优点。
同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:
环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。
而且新一代产品更便宜,体积更小
1.3设计思路
用温度传感器去读取当前的温度值,再把温度值传送到51单片机,51单片机再根据读取到的温度值进行处理。
如果温度是符合要求就显示当前温度,如果高于上限温度,则显示上限温度并蜂鸣,如果低于下限温度就显示下限温度并蜂鸣。
2硬件电路设计
2.1系统总体设计
本次设计采用采样值和键盘设定值进行比较运算的方法来简单精确地控制温度。
它的整体思想是先通过键盘输入设定温度的范围,保存在AT89S52的指定单元中,再利用温度传感器DS18B20进行信号的采集,送入单片机中,保存在采样值单元。
然后把采样值与设定值进行比较运算,得出控制量,从而调节继电器触发端的通断,来实现将温度控制在一定的范围内。
单片机控制系统是一个完整的智能化的集数据采集、显示、处理、控制于一体的系统。
由传感器、LED显示单片机及执行机构控制部分等组成。
系统结构框图如图2.1所示。
图2.1系统硬件结构框图
2.2各部分硬件电路设计
2.2.1、时钟电路设计
时钟电路是用来产生AT89S52单片机工作时所必须的时钟信号,AT89C52本身就是一个复杂的同步时序电路,为保证工作方式的实现,AT89C52在唯一的时钟信号的控制下严格的按时序执行指令进行工作,时钟的频率影响单片机的速度和稳定性。
通常时钟由于两种形式:
内部时钟和外部时钟。
我们系统采用内部时钟方式来为系统提供时钟信号。
AT89C52内部有一个用于构成振荡器的高增益反向放大器,该放大器的输入输出引脚为XTAL1和XTAL2,它们跨接在晶体振荡器和用于微调的电容,便构成了一个自激励振荡器。
电路中的C1、C2的选择在30PF左右,但电容太小会影响振荡的频率、稳定性和快速性。
晶振频率为在1.2MHZ~12MHZ之间,频率越高单片机的速度就越快,但对存储器速度要求就高。
为了提高稳定性我们采用温度稳定性好的NPO电容,采用的晶振频率为12MHZ。
本次系统的时钟电路设计如图2.2所示。
图2.2时钟电路图
2.2.2系统复位电路
在图2.3中复位开关K被按下并松开,使
端获得低电平,RST端输出复位信号,单片机复位。
或由于(VCC加入并超过复位门限电压)引起系统正常复位。
图2.3复位电路图
2.2.3报警与控制电路设计
在微型计算机控制系统中,为了安全生产,对于一些重要的参数或系统部位,都设有紧急状态报警系统,以便提醒操作人员注意,或采取紧急措施。
其方法就是把计算机采集的数据或记过计算机进行数据处理、数字滤波,标度变换之后,与该参数上下限给定值进行比较,如果高于上限值(或低于下限值)则进行报警,否则就作为采样的正常值,进行显示和控制。
室内的温度高于设定的温度范围内时当P1.4输出低电平“0”时,三极管导通,压电蜂鸣器两端获得约+5V电压而鸣叫,发出报警声音。
温度高于设定上限温度是P1.4输出低电平,P1.0输出低电平,高温报警温度低于设定下限温度是P1.4输出低电平,P1.1输出低电平,低温报警。
图2.4报警与控制电路与单片机的连接
2.2.4LED显示电路设计
LED数码管是一种半导体发光器件,其基本单元是发光二极管,通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字。
可以显示:
时间、日期、温度等可以用数字代替的参数。
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳极数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,通过由各自独立的I/O线控制,当单片机的P0口输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对P2.0-P2.3位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在本设计中采用了四位七段数码管,用动态驱动来显示温度的值,如图2.5所示。
图2.5显示电路图
2.2.5温度检测电路设计
本次设计所采用的温度传感器为Dallas半导体公司的数字化温度传感器DS18B20,它是世界上第一片支持“一线总线”接口的温度传感器。
“一线器件”体积更小、适用电压更宽、更经济。
全部传感元件及转换电路集成在形如一只三极管的集成电路内。
DS18B20可以程序设定9-12位的分辨率,精度为±0.5℃。
可选更小的封装方式,更宽的电压适用范围。
分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20与AT89S52单片机接口电路的设计
DSl8B20数字温度计提供9位(二进制)温度读数,指示器件的温度信息经过单线接口送入DSl8B20或从DSl8B20送出,因此从主机CPU到DSl8B20仅需一条线,当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。
表2是一部分温度值对应的二进制温度数据[6]。
图2.6DS18B20与AT89S52单片机的连接
DS18B20支持“一线总线”接口,测量温度范围为-55°C--+125°C,在-10--+85°C范围内,精度为±0.5°C。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:
环境控制、设备或过程控制、测温类消费电子产品等。
1.DS18B20产品的特点
(1)只要求一个端口即可实现通信。
(2)在DS18B20中的每个器件上都有独一无二的序列号。
(3)实际应用中不需要外部任何元器件即可实现测温。
(4)测量温度范围在-55°C- +125°C之间。
(5)数字温度计的分辨率用户可以从9位到12位选择。
(6)内部有温度上、下限设置。
2.DS18B20的引脚介绍
TO-92封装的DS18B20引脚功能描述见表1。
表1 DS18B20详细引脚功能描述
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。
主要首先DS18B20提供以下功能命令之一:
读ROM,ROM匹配,搜索ROM,跳过ROM,报警检查。
若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。
一个控制功能指挥指示DS18B20的演出测温。
测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。
温度报警触发器TH和TL都有一字节EEPROM的数据。
如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。
在片上还载有配置字节以理想的解决温度数字转换。
写TH,TL指令以及配置字节利用一个记忆功能的指令完成。
所有的数据的读、写都是从最低位开始。
2.2.6按键电路设计
键盘共有三个键,判断K3~K5键是否按下,可采用软件查询和中断的方法,当某个键按下时,低电平有效。
3个键K3~K5的功能定义如表所示。
K3~K5键的定义
按键
键名
功能
K1
功能转换键
此键按下,显示温度设定值,按键松开,显示当前温度
K2
加1键
设定温度值加1
K3
减1键
设置温度值减1
图2.7按键电路
3软件设计
3.1主程序方案
首先要根据系统的总体功能和键盘设置选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。
本部分详细介绍了基于AT89S52单片机的多路温度采集控制系统的软件设计。
根据系统功能,可以将系统设计分为若干个子程序进行设计,如温度采集子程序,数据处理子程序、显示子程序、执行子程序。
采用KieluVision3集成编译环境和汇编语言来进行系统软件的设计。
本章从设计思路、软件系统框图出发,先介绍整体的思路后,再逐一分析各模块程序算法的实现,最终编写出满足任务需求的程序。
并对温度进行实时显示。
采用C语言编写代码,鉴于篇幅限制及DS18B20的应用已经规范和成熟,本文仅就主程序流程图和显示子程序流程图及其代码进行说明。
通过定时器T0P3.4口的定时来实现,在此不再赘述。
主程序流程图主程序通过调用温度采集子程序完成温度数据采集,然后调用温度转换子程序转换读取温度数据,调用显示子程序进行温度显示和判断温度数据。
主程序调用四个子程序,分别是温度采集程序、数码管显示程序、温度处理程序和数据存储程序。
温度采集程序:
对温度芯片送过来的数据进行处理,进行判断和显示。
数码管显示程序:
向数码的显示送数,控制系统的显示部分。
温度处理程序:
对采集到的温度和设置的上、下限进行比较,做出判断,向继电器输出。
数据存储程序:
对键盘的设置的数据进行存储。
图3.1系统流程图
3.2各个模块子程序设计
3.2.1温度采集
温度采集子程序流程图如下:
图3.2温度采集子程序流程图
3.2.2数码管显示模块
本系统采用共阳极数码管,用模拟串口的动态显示数据。
其流程图如图3.3所示:
图3.3数码管显示流程图
3.2.3温度处理程序
系统通过DS18B20采集到温度和设置的上、下限进行比较得出结果,进行报警。
voidhdidi()
{
beep=0;
led1=0;
delay(500);
beep=1;
led1=1;
delay(500);
}
voidldidi()
{
beep=0;
led2=0;
delay(50);
beep=1;
led2=1;
delay(50);
}
4系统调试
4.1测试环境及工具
测试温度:
0-100摄氏度。
(模拟不同温度值环境)
测试仪器及软件:
数字万用表,温度计0-100摄氏度。
4.2测试方法
先检查元器件的好坏和是否连接正确,再运行系统运行,观察系统硬件检测是否正常(包括单片机控制系统,键盘电路,显示电路,温度测试电路等)。
系统自带测试表格数据,观察显示数据是否相符合即可。
采用温度传感器变化情况,目测显示电路是否正常。
并记录温度值,与实际温度值比较,得出系统的温度指标。
4.3测试结果分析
自检正常,温度显示正常。
因为芯片是塑料封装,所以对温度的感应灵敏度不是相当高,需要一个很短的时间才能达到稳定。
5结论
经过设计和实践,本设计已经完成了一个比较完整的温度检测预与报警系统。
它可以通过键盘输入温度上限、下限值,然后计算其上限和下限的中间值作为最适温度值。
不断的采集温度值,显示温度值,如果发现采集的温度值高于上限值就通过相应的提示灯亮。
如果采集的温度值低于下限值,那么也有相应的灯提示操作人员。
如果并没有超过上下限则不会报警。
致此本人设计基本完成了预期的目标,系统在温度采集、温度处理和键盘处理方面做的比较好,而在数据的存储和数码管的显示方面不够理想。
主要存在以下几个方面:
(1)程序的代码不够精练,浪费AT89S52内的FLASHROM;
(2)未对以前的温度数值进行存储,使以后不能利用这些数据;
(3)对数码管的控制考虑不周,以致出现闪烁现象;
参考文献
[1]陶冶,袁永超,罗平. 基于DS18B20的单片机温度测量系统[J]. 农机化研究,2007,10:
160-164.
[2]卢思祺. MCS-51单片机温度控制系统的设计[J]. 科技致富向导,2013,17:
25+30.
[3]周秀明,曹隽,张春龙. 基于DS18B20的单片机温度检测与调节系统设计[J]. 实验室科学,2011,01:
79-81.
[4]周钦,张博舒. 单片机温度控制系统探究[J]. 安徽电子信息职业技术学院学报,2011,02:
22-23+28.
[5]李晓妮. 单片机温度控制系统的设计[J]. 九江学院学报(自然科版),2005,02:
25-28.
[6]余瑾,姚燕. 基于DS18B20测温的单片机温度控制系统[J]. 微计算机信息,2009,08:
105-106+112.
[7]岳慧平,刘广,刘建平. 单片机温度控制系统方案的研究[J]. 信息系统工程,2012,02:
139-140.
[8]赵晓光. 单片机温度控制系统方案的研究[J]. 科技传播,2013,03:
187+175.
[9]Su, Liangyu. Design of RF Heat Therapy System Based on DS18B20 and FPGA[J]. Sensors &Transducers,
2014,1789:
89.
[10]Limin Cai. Temperature Measurement and Control System Based on Embedded WEB[J]. Computer and
Information Science,2009,22:
108.
附录
源程序代码
#include//52系列头文件
#include
#defineucharunsignedchar//宏定义uchar
#defineuintunsignedint//宏定义uint
sbitds=P3^4;//定义DS198B20的io口
sbitbeep=P1^4;//定义蜂鸣器的io
uinttemp,t,w;//定义整型的温度数据
ucharflag;
floatf_temp;//定义浮点型的温度数据
uintlow;//定义温度下限值是温度乘以10后的结果
uinthigh;//定义温度的上限值
sbitled1=P1^0;//控制高温发光二极管
sbitled2=P1^1;//控制低温发光二极管
sbits1=P3^5;//功能键控制io
sbits2=P3^6;//增大按键io
sbits3=P3^7;//减少键控制io
ucharflag1,flag2,flag3,flag4,s1num,qian,bai,shi,ge;
ucharcodetable[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,