基于单片机的温度测量与控制系统.docx
《基于单片机的温度测量与控制系统.docx》由会员分享,可在线阅读,更多相关《基于单片机的温度测量与控制系统.docx(23页珍藏版)》请在冰豆网上搜索。
基于单片机的温度测量与控制系统
课程设计报告
课程名称综合电子设计
题目基于单片机的温度测量与控制系统
指导教师
设计起止日期
系别
专业
学生姓名
班级/学号
成绩
2,硬件设计要求及思路…………………………………………………3
3,系统结构………………………………………………………………3
三,方案论证与比较……………………………………………………3
四,系统设计……………………………………………………………4
五,单元电路设计……………………………………………………………13
2,温度采集…………………………………………………………………14
3,显示电路…………………………………………………………………14
六,软件设计………………………………………………………………15
七,结束语…………………………………………………………………15
1,实验总结…………………………………………………………………15
2,设计心得与体会……………………………………………………………16
八,参考文献…………………………………………………………………17
九,附录………………………………………………………………………18
摘要
本设计以AT89S51单片机为核心的温度控制系统的工作原理和设计方法。
温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。
文中介绍了该控制系统的硬件部分,包括:
温度检测电路、温度控制电路、PC机与单片机串口通讯电路和一些接口电路。
单片机通过对信号进行相应处理,从而实现温度控制的目的。
文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:
数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序、继电器控制程序、超温报警程序。
关键词:
AT89S51单片机DS18B20温度芯片温度控制串口通讯
二,功能介绍
1,基本要求
(1)温度设定范围为20-30oC,最小区分度为1oC。
(2)环境温度超温时,接通制冷装置;低于等于设定温度时,断开制冷装置。
用LED表示制冷装置的接通/断开状态。
(3)用数码管显示环境的实际温度,温度显示范围0-99oC,显示精度为小数点后1位。
2,硬件设计要求及思路
要求设计单片机(AT89S51)最小系统,并在此基础上完成对温度传感器DS18B20的读写操作,实现温度测量功能,温度实时显示功能,要求所设计系统具备报警温度设置功能。
对超过设置温度值的状态进行报警和相应控制操作(本次使用LED表示相应的控制操作)。
单片机的选择在整个系统设计中至关重要,要满足大内存、高速率、通用性、价格便宜等要求,本课题选择AT89S51作为主控芯片。
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
3,系统结构
三,方案论证与比较
设计这个温度测量有两种方法:
分别是使用DE2开发板和单片机开发,以下是两种设计方法的原理介绍:
(1)使用DE2开发板设计:
使用DE2开发板提供的资源进行设计题目的实现。
1)FPGA芯片:
EP2C35F672C6N(CycloneII)
2)5M时钟
3)LED、按键、开关
4)IO扩展接口
5)7段数码管
(2)使用单片机设计思路:
要求设计单片机(AT89S51)最小系统,并在此基础上完成对温度传感器DS18B20的读写操作,
实现温度测量功能,温度实时显示功能,要求所设计系统具备报警温度设置功能。
对超过设
置温度值的状态进行报警和相应控制操作(本次使用LED表示相应的控制操作)。
两种方法比较的优缺点:
DE2是Altera研究机构推出的FPGA多媒体开发平台。
通过对DE2平台的了解它完全可以按照工业产品的标准进行,使用QUARTUSII的开发工具来进行设计,仿真。
它的优点是可靠性高,性能稳定。
但是缺点是平时我们接触较少,而且需要使用的程序相对于发杂。
而单片机与高精度温度传感器结合的方式我们接触较多,而且成本低,测量温度简单且容易实现。
即用单片机完成人机界面,系统控制,信号分析处理,由前端温度传感器完成信号的采集与转换。
这种方案克服了方案一的缺点,所以本课题任务是基于单片机和温度传感器实现对温度的控制。
四,系统设计
本课题设计的是一种以STC89C52单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。
该控制系统可以实时存储相关的温度数据并记录当前的时间。
其主要包括:
电源模块、温度采集模块、按键处理模块、实时时钟模块、数据存储模块、LCD显示模块、通讯模块以及单片机最小系统。
本系统由温度传感器DS18B20、AT89S52、LCD显示电路、软件构成。
DS18B20输出表示摄氏温度的数字量,然后用51单片机进行数据处理、译码、显示、报警等。
单片机原理系统结构图:
图1,单片机系统结构图
(1)主控制部分AT89S51的设计方案:
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51具有如下特点:
40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
由于系统控制方案简单,数据量也不大,考虑到电路的简单和成本等因素,因此在本设计中选用ATMEL公司的AT89S51单片机作为主控芯片。
主控模块采用单片机最小系统是由于AT89S51芯片内含有4kB的E2PROM,无需外扩存储器,电路简单可靠,其时钟频率为0~24MHz,并且价格低廉。
其主要功能特性:
兼容MCS-51指令系统
4k可反复擦写(>1000次)ISPFlashROM
32个双向I/O口
4.5-5.5V工作电压
2个16位可编程定时/计数器
时钟频率0-33MHz
全双工UART串行中断口线
128x8bit内部RAM
2个外部中断源
低功耗空闲和省电模式
中断唤醒省电模式
3级加密位
看门狗(WDT)电路
软件设置空闲和省电功能
灵活的ISP字节和分页编程
双数据寄存器指针
可以看出AT89S51提供以下标准功能:
4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时器/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟。
同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式何在RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直接到一个硬件复位。
AT89S51引角功能说明:
Vcc:
电源电压
GND:
地
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端口。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,P1接收低8位地址。
表1为P1口第二功能。
表1P1口第二功能
端口引脚
第二功能
P1.5
MOSI(用于ISP编程)
P1.6
MISO(用于ISP编程)
P1.7
SCK(用于ISP编程)
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。
在访问8位地址的外部数据存储器(如执行:
MOVX@Ri指令)时,P2口线上的内(也即特殊功能寄存器,在整个访问期间不改变。
Flash编程或校验时,P2也接收高位地址和其它控制信号。
)
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如下表2。
表2P3口的第二功能
端口功能
第二功能
端口引脚
第二功能
RXD(P3.0)
串行输入口
T0(P3.4)
定时/计数器0外部输入
TXD(P3.1)
串行输出口
T1(P3.5)
定时/计数器1外部输入
INT0(P3.2)
外中断0
WR(P3.6)
外部数据存储器写选通
INT1(P3.3)
外中断1
RD(P3.7)
外部数据存储器读选通
RST:
复位输入。
当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。
WDT益出将使该引脚输出高电平,设置SFRAUXR的DISRTO位(地址8EH)可打开或关闭该功能。
DISRTO位缺省为RESET输出高电平打开状态。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出的正脉冲信号,因此它可对外输出时钟或用于定时目地,要注意的是:
第当访问外部数据存储器时将跳过一个ALE脉冲。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位禁位后,只有一条MOVX和MOVC指令ALE才会被激活。
此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE无效。
PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
当访问外部数据存储器,高有两次有效的PSEN信号。
EA/VPP:
外部访问允许。
欲使CPU公访问外部程序存储器(地址0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的编程电压Vpp。
XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
AT89S51单片机内部构造及功能:
特殊功能寄存器:
特殊功能寄存器的片内空间分存如下图3-2所示。
这些地址并没有全部占用,没有占用的地址不可使用,读这些地址将得到一个随意的数值。
而写这些地址单元将不能得到预期的结果。
中断寄存器:
各中断允许控制位于IE寄存器,5个中断源的中断优先级控制位于IP寄存器。
图2为AUXR辅助寄存器。
图2AUXR辅助寄存器
双时钟指针寄存器:
为方便地访问内部和外部数据存储器,提供了两个16位数据指针寄存储器:
PD0位于SFR区块中的地址82H、83H和DP1位于地址84H、85H,当SFR中的位DPS=0时选择DP0,而DPS=1时选择DP1。
在使用前初始化DPS。
图3双时钟指针寄存器
电源空闲标志:
电源空闲标志(POF)在特殊功能寄存储器SFR中PCON的第4位(PCON.4),电源打开时POF置“1”,它可由软件设置睡眠状态并不为复位所影响。
存储器结构:
MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB外部程序和数据的寻址空间。
程序存储器:
如果EA引脚接地(GND),全部程序均执行外部存储器。
在AT89S51,假如接至Vcc(电源+),程序首先执行从地址0000H-0FFFH(4KB)内部程序存储器,再执行地址为1000H-FFFFH(60KB)的外部程序存储器。
数据存储器:
在AT89S51的具有128字节的内部RAM,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。
看门狗定时器(WDT):
WDT是为了解决CPU程序运行时可能进入混乱或死循环而设置,它由一个14bit计数器和看狗复位SFR(WDTRST)构成。
外部复位时,WDT默认为关闭状态,要打开WDT,必按顺序将01H和0E1H写到WDTRST寄存器,当启动了WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT溢出复位外没有其它方法关闭WDT,当WDT溢出,将使RST引脚输出高电平的复位脉冲。
引脚图详见图4。
图4AT89S51管脚图
(2)温度测量设计方案:
DS18B20是DALLAS公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚TO-92小体积封装形式,温度测量范围-55~+125℃,可编程为9~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。
综上,在本系统中我采用温度芯片DS18B20测量温度。
该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。
在0—100摄氏度时,最大线形偏差小于1摄氏度。
该芯片直接向单片机传输数字信号,便于单片机处理及控制。
图5温度芯片DS18B20
DS18B20内部结构主要由四部分组成:
64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。
DS18B20的管脚排列如图6所示。
图6DS18B20引脚分布图
在硬件上,DS18B20与单片机的连接有两种方法,一种是Vcc接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。
无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电阻。
CPU对DS18B20的访问流程是:
先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。
DS18B20每一步操作都要遵循严格的工作时序和通信协议。
如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:
每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
以下图7是做好的仿真图并运行结果:
图7仿真运行图
上图是仿真的运行图,其工作原理是,通过DS18B20对温度进行采集,当采集的温度大于最高上限值或低于下限值时,蜂鸣器将会发声;通过按键对设置的限值进行加减,单刀双掷开关控制显示电路显示限值还是当前温度。
图8实物完成图
五,单元电路设计
1,最小系统模块
单片机最小系统是指用最少的元件组成单片机系统,是单片机产品开发的核心电路。
最小系统是控制温度的采集、处理与显示、温度值的设定与温度越限时控制电路的启动。
图9最小系统
AT89S51内部有一个高增益反相放大器,用于构成振荡器,但要形成时钟脉冲,外部还需附加电路,本设计采用内部时钟方式,利用芯片内部的振荡器,然后在引脚XTAL1和XTAL2两端跨接晶体振荡器,就构成了稳定的自激振荡器,发出的脉冲直接送入内部时钟电路,C1和C2的值通常选择为22pF左右,晶振Y1选择12MHz.为了减小寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器电容应尽可能安装得与单片机引脚XTAL1和XTAL2靠近。
单片机的31脚(EA)接+5V电源,表示允许使用片内ROM。
2,温度采集模块
图10温度采集模块
DS18B20是数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理.,在本系统中我采用温度芯片DS18B20测量温度.
3,显示电路模块
图11显示电路图
显示电路图是采用数码管作为显示模块,其接口原理图如图9.
六,软件设计
以下是温度测量与控制系统的主程序流程图.
图12主程序流程图
七,结束语
实验总结:
本次课程设计完成了基于单片机AT89S51的温度控制系统的设计方案与软硬件实现。
系统包括数据采集模块,单片机控制模块,显示模块和温度设置模块四个部分。
文中对每个部分功能、实现过程作了详细介绍。
完成了课题既定的任务,达到了预期的目标。
系统具有如下特点:
⑴.采用智能温度传感器DS18B20采集温度数据,简化了硬件电路设计,温度采集数据更加精准;
⑵.AT89S51单片机的采用,有利于功能扩展;
⑶.电路设计充分考虑了系统可靠性和安全性。
本次课设软件和硬件相结合,有相当大的难度,同时也有很大的实用性。
在做课程设计的过程中,我的理论和实践水平都有了较大的提高。
并且我熟练掌握了单片机硬件设计和接口技术,同时对温度传感器的原理及应用有了一定的了解,掌握了各种控制电路及其相关元器件的使用。
实验心得与体会:
通过此次对温度测量与控制系统的设计,我们学会了怎样把所学的书本知识应用于实践中去,并学会了如何去思考整个控制系统的软硬件设计。
实践过程中我们遇到了一些困难,但在解决问题的过程中,我们学会了团队合作精神和怎样发现问题、分析问题,进而解决问题。
此次课程设计不仅增强了我们学习专业课的兴趣,而且给了我们勇气和信心,更重要的是它为我们以后的学习指明了方向。
八,参考文献
1曹巧媛主编.单片机原理及应用(第二版).北京:
电子工业出版社,2002
2全国大学生电子设计竞赛组委会编.第五届全国大学生电子设计竞赛获奖作品选编(2001),北京:
北京理工大学出版社,2003
3何力民编.单片机高级教程.北京:
北京航空大学出版社,2000
4金发庆等编.传感器技术与应用.北京机械工业出版社,2002
5王锦标,方崇智.过程计算机控制.北京:
清华大学出版社,1997;36~40
6邵惠鹤.工业过程高级控制.上海:
上海交通大学出版社,1997;58—62,78—101
7胡寿松.自动控制原理.北京:
国防工业出版社,2000;103—124
8刘伯春.智能PID调节器的设计及应用.电子自动化,1995;(3):
20~25
九,附录
#include"reg52.h"
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P1^4;//温度数据口
sbitwx1=P2^4;//位选1
sbitwx2=P2^5;//位选2
sbitwx3=P2^6;//位选3
sbitwx4=P2^7;//位选4
sbitsd=P1^2;//范围与显示开关=1范围
sbitsj=P1^3;//上下界切换=1上限
sbitss=P2^2;//加1
sbitxj=P2^3;//减1
sbitbjs=P1^0;//上限报警
sbitbjx=P1^1;//
unsignedinttemp,temp1,temp2,xs;
unsignedintsx=30;
unsignedintxx=20;
ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,//共阳数码管
0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6};
/******延时程序*******/
voiddelay1(unsignedintm)
{
unsignedinti,j;
for(i=m;i>0;i--)
for(j=110;j>0;j--);
}
voiddelay(unsignedintm)//温度延时程序
{
while(m--);
}
voidInit_DS18B20()
{
unsignedcharx=0;
DQ=1;//DQ复位ds18b20通信端口
delay(8);//稍做延时
DQ=0;//单片机将DQ拉低
delay(80);//精确延时大于480us
DQ=1;//拉高总线
delay(4);
x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败
delay(20);
}
/***********ds18b20读一个字节**************/
ucharReadOneChar()
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;i>0;i--)
{
DQ=0;//高电平拉成低电平时读周期开始
dat>>=1;
DQ=1;//给脉冲信号
if(DQ)
dat|=0x80;//
delay(4);
}
return(dat);
}
/****