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

上传人:精*** 文档编号:846010 上传时间:2023-09-09 格式:DOC 页数:27 大小:204.91KB
下载 相关 举报
基于51单片机的温度控制系统.doc_第1页
第1页 / 共27页
基于51单片机的温度控制系统.doc_第2页
第2页 / 共27页
基于51单片机的温度控制系统.doc_第3页
第3页 / 共27页
基于51单片机的温度控制系统.doc_第4页
第4页 / 共27页
基于51单片机的温度控制系统.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、四川师范大学成都学院电子工程系课程设计报告 前言随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系统的设计与研究有十分重要的意义。本次设计的目的在于学习基于51单片机的多路温度采集控制系统设计的基本流程。本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。单片机数据处理之后,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到LED进行显示。本系统可以实现多路温度信号采集与显示,可以使用按键来设置温

2、度限定值,通过进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和继电器的目的。我所采用的控制芯片为AT89c51,此芯片功能较为强大,能够满足设计要求。通过对电路的设计,对芯片的外围扩展,来达到对某一车间温度的控制和调节功能。1.总体设计方案1.1 温度控制系统设计方案主控制器单片机复位报警点按键调六位数码管显示温度传感器 图1.温度控制系统的系统款图 温度控制系统主要是由四部分组成:其中包括CPU单片机处理器;外围输入设备按键,其功能是设置温度报警的上下限;数码管显示部分,显示当前等我温度和温度的上下限;温度传感器,也是最重要的部分其功能是采集周围的温度;蜂蜜器用于报警使用,但温度超过上线

3、温度和下线温度时则发出报警声,直到温度恢复正常。1.2温度控制系统的方案和原理 该系统的设计方案是通过温度传感器DS18B20将周围的环境温度进行采集,等待单片机将其采集,当采集的信号一到就释放信号。而单片机通过单线总线的方式对DS18B20采集的信号进行采集并且将其转化成数字信号通过数码管进行显示。而独立按键是用来设置温度的上下限的。 其原理是:单片机对采集的温度进行处理并且进行采集,将采集到的温度使用数码管进行显示,并且将采集的温度和存储的上下限温度进行比较,当温度超过上下限制的时候驱动蜂鸣器鸣叫,直到温度达到正常温度是蜂鸣器停止工作;而使用两个独立按键则是用来设计温度上下限。2.单元模块

4、设计2.1主控制器 单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。AT89C51单片机是ATMEL公司生产的高性能8位单片机,主要功能特性如下: 兼容MCS-51指令系统; 32个双向I/O口,两个16位可编程定时/计数器; 1个串行中断,两个外部中断源; 可直接驱动LED; 低功耗空闲和掉电模式; 4 kB可反复擦写(1 000次)FLASI ROM; 全静态操作O24 MHz; 1288 b内部RAM。该款芯片的超低功耗和良好的性能价格比使其非常适合嵌入式产品应用。2.2温度传感器DS1

5、8B20 DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。2.2.1 DS18B20特性介绍 DS18B20是DALLAS公司的最新单线数字温度传感器,它的体积更小、适用电压更宽、更经济,DS18B20是世界上第一片支持“一线总线”接口的温度传感器,一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念,它的测量温度范围为55125,在1085范围内,精度为0.5,现场温度直接以“一线总线”的数字方式传输,大大提高

6、了系统的抗干扰性,适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等,与前一代产品不同,新的产品支持35.5V的电压范围,使系统设计更灵活、方便,而且新一代产品更便宜,体积更小,DS18B20可以程序设定912位的分辨率,精度为0.5。可以选择更小的封装方式,更宽的电压适用范围,分辨率设定及用户设定的报警温度存储在E2PROM中,掉电后依然保存,DS18B20的性能是新一代产品中最好的,性能价格比也非常出色,继“一线总线”的早期产品后,DS18B20开辟了温度传感器技术的新概念,DS18B20和DS18B22使电压、特性及封装有更多的选择,让我们可以构建适合自己的

7、经济的测温系统。2.2.2 DS18B20的内部结构DS18B20采用3脚PR35封装或脚SOIC封装,其内部结构框图如图2所示,主要由4部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,配制寄存器。DS18B20的管脚排列如图所示。图3. DS18B20引脚图2.2.3 DS18B20温度传感器的存储器64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。 DS18B20温度传感器的内部存储器还包括一个高速

8、暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图3所示。头2个字节包含测得的温度信息,第8和第4字节和的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示。低5位一直为1,是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和0决定温度转换的精度位数,来设置分辨率。 由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时

9、间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进

10、制温度数据。DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、T字节内容作比较。若TH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。2.2.4 DS18B20控制方法 在硬件上,DS18B20与单片机的连接有两种方法,一种是Vcc接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND

11、接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电阻。 DS18B20有六条控制命令,如表所示: 指 令 约定代码 操 作 说 明 温度转换 44H 启动DS18B20进行温度转换 读暂存器 BEH 读暂存器9个字节内容 写暂存器 4EH 将数据写入暂存器的TH、TL字节 复制暂存器 48H 把暂存器的TH、TL字节写到E2RAM中 重新调E2RAM B8H 把E2RAM中的TH、TL字节写到暂存器TH、TL字节 读电源供电方式 B4H 启动DS18B20发送电源供电方式的信号给主CPU CPU对DS18B20的访问流程是:先对DS18B20初始化,再进

12、行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。2.2.5 DS18B20的测温原理DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当

13、计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过

14、程,直到温度寄存器值大致被测温度值。 2.2.6 DS18B20温度传感器与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图4 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。 3.温度控制系统程序设计本软件系统有1个主

15、程序,6个子程序组成。6个子程序为定时/计数器0中断服务程序、温度采集及模数转换子程序ADCON、温度计算子程序CALCU、驱动控制子程序DRVCON、十进制转换子程序METRICCON及数码管显示子程序DISP。 3.1主程序主程序进行系统初始化操作,主要是进行定时/计数器的初始化。3.2 定时/计数器0中断服务程序应用定时计数器0中断的目的是进行定时采样,消除数码管温度显示的闪烁现象,用户可以根据实际环境温度变化率进行采样时间调整。每当定时时间到,调用温度采集机模数转换子程序ADCON,得到一个温度样本,并将其转换为数字量,传送给89C51单片机,然后在调用温度计算子程序CALCU,驱动控

16、制子程序DRVCON,十进制转换子程序MERTRICCON,温度数码显示子程序DISP。 3.3 温度采集及模数转换子程序ADCON该子程序进行温度采样并将其转换为8位数字量传送给89C51的P0口。采样得到的温度数据存放在片内RAM的20H单元中。 3.4 温度计算子程序CALCU根据热敏电阻的分度值和电路参数计算出出一张温度表,存放在DATATAB数据表中,由于篇幅关系,本程序只给出0-49的温度数据。一个温度有两个字节组成,前一字节为温度值,后一字节为该温度所对应的热敏电阻上的电压的数字量。根据采样值,通过查表及比较的方法计算出当前的温度值,并将其存入片内RAM的21H单元。采用查表法计

17、算温度值时为了克服热敏电阻的阻值温度特性曲线的非线性,提高测量精度。 3.5 驱动控制子程序DRVCON该子程序调节温度,当温度高于上限温度时(本程序设为30), P1.0输出驱动控制信号,驱动外设工作降温;当温度下降到下限温度时(本程序设为25),P1.0停止输出,温度上升,周而复始;工作状态有LED1-LED4指示。 3.6十进制转换子程序METRICCON将存放于内部RAM21H单元的当前温度值得二进制数形式转换为十进制数(BCD码)形式,以便输出显示,转换结果存放在片内RAM的32H单元(百位)、31H(十位)、30H单元(个位)。 3.7数码显示子程序DISP 该子程序利用89C51

18、串口的方式0串行移位寄存器工作方式,将片内RAM的30H、31H、32H单元的BCD码查表转换为七段码后由RXD端串行发出去,然后经74LS164串并转换,将七段值传送给数码管,以十进制形式显示出当前温度值。4系统软件算法分析 系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。4.1主程序流程主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见下图所示.开始RESET(DS18B20复位)RECONFIG(写DS18B20暂存器设定)GETTEM

19、PER(读温度命令)TEMPERCOV(转化为一字节温度值) REDKEY(读键盘) BD(实际温度与上下限比较,亮灯,打铃) FB(BCD码转换)DIR(显示) 图4 主函数流程图4.2 DS18B20复位子程序 此部分程序在执行前先将DAT复位,然后通过对DAT的判断来检测DS18B20的回应,并进行相应的置位,通过R2计数的控制来将C中的数据送入数据线,一共写入一字节,本程序当R2=8时共计数8次,送入的数据正好一字节,其程序流程见下图所示。SETB DATCLR DAT(复位)SETB DAT(拉高数据线) 等待DS18B20回应 DAT=0?FLAG1=0 N FLAG1=1(置标志

20、位,DS18B20存在) Y SETB DAT 子程序返回 图5 DS18B20流程图 4.3 读温度值命令 此子程序主要是通过FLAG1的判断来进行如何执行,若存在,则跳过ROM,并由DS18B20发出温度转换命令,并读取命令,最终在DS18B20中读取两字节温度。若不存在,则返回,对应程序流程图如下。FLAG1=1?(DS18B20是否存在?)返回 N跳过ROM匹配 YDS18B20中写入44H(发出温度转换命令)DS18B20中写入0BEH(读取温度指令)RDTEMP(从DS18B20中读取两字节温度子程序)子程序返回图6 温度读取流程图4.4 按键设置 此程序是通过对四个按键有无按下的

21、判断来对其相应的TH、TL值进行相应的设置,其流程图如下。子程序返回上限值TH增一JB=0?(键按下) K1下限值TL减一上限值TH减一 K4 K2 K3下限值TL减一图7 按键设计流程图4.5响铃与亮灯的设置 此程序是通过TEMPNUM与TH的比较来进行是否响铃与亮灯,其流程图如下图。TEMPNUMTH?SETB P1.6(响铃) YTEMPUMTH NSETB P1.7(亮灯) Y N子程序返回 图8 蜂鸣器程序流程图5 设计总结经过将近两周的单片机课程设计,终于完成了数字温度传感器测温现实系统的设计,虽然有些地方可能还存在一些小缺点,但从心底里说,还是高兴的,毕竟这次设计把实物都做了出来

22、,高兴之余不得不深思呀!在本次设计的过程中,我们发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我们长进了很多。在调程序的时候按键一度成为我们的难点,但经过反复调整修改程序,还是实现了按键功能。单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我们觉的写好一个程序并不是一件简单的事,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。 从这次的课程设计中,我们真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这

23、就是我在这次课程设计中的最大收获。6 参考文献1李朝青.单片机原理及接口技术:北京航空航天大学出版社,1998.1-292李广弟.单片机基础.北京:北京航空航天大学出版社,1994.42-913阎石.数字电子技术基础(第三版). 北京:高等教育出版社,1989.28-294廖常初.现场总线概述J.电工技术,1999.111-1234 胡学海.单片机原理及应用系统设计:电子工业出版社,2005.8.101-1346 李勋.单片机实用教程:北京航空航天大学出版社,2006.5.104-107附录1:系统原理图附录2:元件清单序号名称 厂家 价格(元)189C51STC 1028155 NEC 83

24、74LS14 美国德州 247407 IR 3575452 36工阴极数码管 LG 0.67 DS18B20 达来丝 6.58 排电阻(0.1K*8) 风华 0.29 电解电容 三和 0.0510瓷片电容 (国产) 0.0211 独石电容 飞利浦0.0512 三极管 0.213发光二极管 0.114按钮开关 0.0615晶振(11.0592) 116蜂鸣器 华宇 0.6附录3 程序部分#include#include#includeconfing.hvoid main()HC138(5);P0 = 0x00; /关闭蜂蜜器、继电器HC138(0); /锁存P0 = 0XFF;/消隐HC138(

25、4);P0 = 0xff; /关闭LEDHC138(0); /锁存while(1)read_ds18b20_temp();display();key();get();alarm();#include#includeiic.h#includeonewire.hsbit k1 = P30; /上限温度加sbit k2= P31; /上限温度减sbit k3 = P32; /下限温度加sbit k4= P33; /下限温度减unsigned char code DuanMa = 0xc0/*0*/,0xf9/*1*/,0xa4/*2*/,0xb0/*3*/,0x99/*4*/,0x92/*5*/,0

26、x82/*6*/,0xf8/*7*/,0x80/*8*/,0x90/*9*/;unsigned char code WeiMa = 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;unsigned char temp_L; /读取的低字节数据unsigned char temp_H; /读取的高字节数据unsigned char wen_H; /温度的整数部分unsigned char a2 = 32,12;unsigned char table2 = 32,12;unsigned char k;void HC138(unsigned char x)P2 = (

27、 x5 )|( P2&0x1f);void delay(unsigned char i) unsigned char k;while(i-)for(k = 0 ; k 20 ; k +);void read_ds18b20_temp() Init_DS18B20(); /初始化 Write_DS18B20(0xcc); /跳过ROM区 Write_DS18B20(0x44); /温度转换 Init_DS18B20(); Write_DS18B20(0xcc); Write_DS18B20(0xbe); /读取地址 temp_L = Read_DS18B20(); /读取低字节 temp_H =

28、 Read_DS18B20(); /读取高字节 temp_H = temp_H4; wen_H = temp_H|temp_L; /整数部分void display() /显示函数HC138(6);P0 = WeiMa7 ;HC138(0);P0 = 0XFF;HC138(7);P0 = DuanMaa0/10;delay(10);HC138(0);P0 = 0X00;HC138(6);P0 = WeiMa6 ;HC138(0);P0 = 0XFF;HC138(7);P0 = DuanMaa0%10;delay(10);HC138(0);P0 = 0X00;HC138(6);P0 = WeiM

29、a5 ;HC138(0);P0 = 0XFF;HC138(7);P0 = DuanMaa1/10;delay(10);HC138(0);P0 = 0X00;HC138(6);P0 = WeiMa4 ;HC138(0);P0 = 0XFF;HC138(7);P0 = DuanMaa1%10;delay(10);HC138(0);P0 = 0X00;HC138(6);P0 = WeiMa3 ;HC138(0);P0 = 0XFF;HC138(7);P0 = 0XFF;delay(10);HC138(0);P0 = 0X00;HC138(6);P0 = WeiMa2 ;HC138(0);P0 = 0

30、XFF;HC138(7);P0 = 0XFF;delay(10);HC138(0);P0 = 0X00;HC138(6);P0 = WeiMa1 ;HC138(0);P0 = 0XFF;HC138(7);P0 = DuanMawen_H/10;delay(10);HC138(0);P0 = 0X00;HC138(6);P0 = WeiMa0 ;HC138(0);P0 = 0XFF;HC138(7);P0 = DuanMawen_H%10;delay(10);HC138(0);P0 = 0X00;void get()/读取密码table0 = read_dat(0x01);delay(10);t

31、able1 = read_dat(0x02);delay(10);void set()write_dat(0x01,a0);delay(10);write_dat(0x02,a1);delay(10);void key() /按键扫描if(k1 = 0) /温度上限加 delay(20);while(k1 = 0);a0+;if(a0=100) a0 = a1;set();if(k2 = 0) /上限温度减 delay(20);while(k2 = 0);if(a0a1)a0-;set();if(k3 = 0) /温度下限加 delay(20);while(k3 = 0);a1+;if(a1

32、= a0) a1 = a0;set();if(k4 = 0) /下限温度减 delay(20);while(k4 = 0);if(a10)a1-;set();void alarm()if(wen_H table0)HC138(5);P0 = 0x50; /关闭蜂蜜器,打开继电器HC138(0); /锁存P0 = 0XFF;/消隐elseHC138(5);P0 = 0x00; /关闭蜂蜜器,打开继电器HC138(0); /锁存P0 = 0XFF;/消隐目 录前言11.总体设计方案21.1 温度控制系统设计方案22.单元模块设计32.1主控制器32.2温度传感器18B2032.2.1 DS18B2

33、0特性介绍42.2.2 DS18B20的内部结构42.2.3 DS18B20温度传感器的存储器62.2.4 DS18B20控制方法72.2.5 DS18B20的测温原理82.2.6 DS18B20温度传感器与单片机的接口电路93.温度控制系统程序设计93.1主程序93.2 定时/计数器0中断服务程序103.3 温度采集及模数转换子程序ADCON103.4 温度计算子程序CALCU103.5 驱动控制子程序DRVCON103.6十进制转换子程序METRICCON113.7数码显示子程序DISP11 4系统软件算法分析 114.1主程序流程114.2 DS18B20复位子程序124.3 读温度值命令144.4 按键设置154.5响铃与亮灯的设置155 设计总结166 参考文献17附录1:系统原理图18附录2:元件清单19附录3 程序部分2027

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922