收藏 分享(赏)

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

上传人:dzzj200808 文档编号:2298366 上传时间:2018-09-10 格式:DOC 页数:5 大小:31KB
下载 相关 举报
基于51单片机的温度控制系统.doc_第1页
第1页 / 共5页
基于51单片机的温度控制系统.doc_第2页
第2页 / 共5页
基于51单片机的温度控制系统.doc_第3页
第3页 / 共5页
基于51单片机的温度控制系统.doc_第4页
第4页 / 共5页
基于51单片机的温度控制系统.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、基于 51单片机的温度控制系统摘 要: 单片机在检测和控制系统中得到广泛的应用, 温度则是系统常需要测量、控制和保持的一个量。 本文从硬件和软件两方面介绍了 AT89C2051单片机温度控制系统的设计,对硬件原理图和程序框 图作了简洁的描述。关键词: 单片机 AT89C2051;温度传感器 DS18B20;温度;测量 引言 单片机在电子产品中的应用已经越来越广泛,并且在很多电子产品中也将其用到温度检测和温度控制。为此在本文中作者设计了基于 atmel公司的 AT89C2051的温度测量系统。这是一种低成本的利用单片机多余 I/O口实现的温度检测电路, 该电路非常简单, 易于实现, 并且适用于几

2、乎所有类型的单片机。 一.系统硬件设计 系统的硬件结构如图 1所示。1.1 数据采集 数据采集电路如图 2所示, 由温度传感器 DS18B20采集被控对象的实时温度, 提供给AT89C2051的 P3.2口作为数据输入。在本次设计中我们所控的对象为所处室温。当然作为改进我们可以把传感器与电路板分离,由数据线相连进行通讯,便于测量多种对象。 DS18B20是 DALLAS公司生产的一线式数字温度传感器,具有 3引脚 TO92 小体积封装形式;温度测量范围为55125,可编程为 9位12 位 A/D转换精度,测温分辨率可达 0.0625,被测温度用符号扩展的 16位数字量方式串行输出,支持 3V5

3、.5V 的电压范围,使系统设计更灵活、方便;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个 DS18B20可以并联到 3根或 2根线上,CPU 只需一根端口线就能与诸多 DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使 DS18B20非常适用于远距离多点温度检测系统。分辨率设定,及用户设定的报警温度存储在 EEPROM中,掉电后依然保存。DS18B20 使电压、特性有更多的选择,让我们可以构建适合自己的经济的测温系统。如图 2所示 DS18B20的 2脚 DQ为数字信号输入/输出端;1 脚 GND为电源地;3脚 VDD为外接供电电源输入端。 AT89

4、C2051(以下简称 2051)是一枚 8051兼容的单片机微控器,与 Intel的 MCS-51完全兼容,内藏 2K的可程序化 Flash存储体,内部有 128B字节的数据存储器空间,可直接推动 LED,与 8051完全相同,有 15个可程序化的 I/O点,分别是 P1端口与 P3端口(少了P3.6)。1.2 接口电路 图 2 单片机 2051与温度传感器 DS18B20的连接图接口电路由 ATMEL公司的 2051单片机、ULN2003 达林顿芯片、4511BCD 译码器、串行EEPROM24C16(保存系统参数)、MAX232、数码管及外围电路构成, 单片机以并行通信方式从 P1.0P1

5、.7 口输出控制信号,通过 4511BCD译码器译码,用 2个共阴极 LED静态显示温度的十位、个位。 串行 EEPROM24C16是标准 I2C规格且只要两根引脚就能读写。由于单片机 2051的 P1是一个双向的 I/O端口,所以在我们在设计中将 P1端口当成输出端口用。由图 2可知,P1.7作为串性的时钟输出信号与 24C16的第 6脚相接,P1.6 则作为串行数据输出接到 24C16的第 5脚。P1. 4 和 P1.5则作为两个数码管的位选信号控制,在 P1.4=1时,选中第一个数码管(个位);P1.5=1 时,选中第二个数码管(十位)。P1.0P1.3 的输出信号接到译码器 4511上

6、作为数码管的显示。此外,由于单片机 2051的 P3端口有特殊的功能,P3.0(RXD)串行输入端口,P3.1(TXD)串行输出端口,P3.2(INTO)外部中断0,P3.3(INT1)外部中断 1P3.4,(T0) 外部定时/计数输入点,P3.5(T1)外部定时/计数输入点。由图 2可知,P3.0 和 P3.1作为与 MAX232串行通信的接口;P3.2 和 P3.3作为中断信号接口;P3.4 和 P3.5作为外部定时/记数输入点。P3.7 作为一个脉冲输出,控制发光二极管的亮灭。 由于在电路中采用的共阴极的 LED数码管,所以在设计电路时加了一个达林顿电路ULN2003对信号进行放大,产生

7、足够大的电流驱动数码管显示。由于 4511只能进行 BCD十进制译码,只能译到 0至 9,所以在这里我们利用 4511译码输出我们所需要的温度。 1.3 报警电路简介 图 3 温度在七段数码管上显示连接图本文中所设计的报警电路较为简单,由一个自我震荡型的蜂鸣器(只要在蜂鸣器两端加上超过 3V的电压,蜂鸣器就会叫个不停)和一个发光二极管组成(如图 3所示)。在这次设计中蜂鸣器是通过 ULN2003电流放大 IC来控制。在我们所要求的温度达到一定的上界或者下界时(在文中我们设置的上界温度是 45,下界温度是 5),报警电路开始工作,主要程序设计如下: main()/主函数 unsigned cha

8、r i=0; unsigned int m,n; while(1) i=ReadTemperature();/读温度 if(i0 i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay(4); return(dat); /写一个字节函数 WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat delay(5); DQ = 1; dat=1; (2)读取温度并计算函数 ReadTemperature(vo

9、id) unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); / 跳过读序号列号的操作 WriteOneChar(0x44); / 启动温度转换 Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读 9个寄存器) 前两个就是温度 a=ReadOneChar(); b=ReadOneChar(); t=b; t=8; t=t|a; tt

10、=t*0.0625; t= tt*10 0.5; /放大 10倍输出并四舍五入-此行没用 (3)主程序部分见前 return(t); 三. 结束语 AT89C2051单片机体积小、重量轻、抗干扰能力强、对环境要求不高、价格低廉、可靠性高、灵活性好。即使是非电子计算机专业人员,通过学习一些专业基础知识以后也能依靠自己的技术力量来开发所希望的单片机应用系统。 本文的温度控制系统只是单片机广泛应用于各行各业中的一例,相信读者会依靠自己的聪明才智使单片机的应用更加广泛化。另外对本例子可以作一些扩展,单片机的应用越来越广泛,由于单片机的运算功能较差,往往需要借助计算机系统,因此单片机和 PC机进行远程通

11、信更具有实际意义。目前此设计已成功应用于钻井模拟器实验室室温控制。 本文作者创新观点:采用的单片机 AT89C2051性价比高,而且温度传感器 DS18B20转化温度的方法非常简洁且精度高、测试范围较广。 参考文献 1林伸茂.8051 单片机彻底研究基础篇 北京:人民邮电出版社 2004 2范风强等.单片机语言 C51应用实战集锦 北京:电子工业出版社 2005 3谭浩强.C 语言程序设计(第二版) 北京:清华大学出版社 1999 4夏路易等.电路原理图与电路板设计教程 北京:北京希望电子出版社 2002 5赵晶.Protel99 高级应用 北京:人民邮电出版社 2000 6聂毅.单片机定时器中断时间误差的分析及补偿J 微计算机信息 2002,18(4):3738

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报