《基于51单片机的温度测量系统.doc》由会员分享,可在线阅读,更多相关《基于51单片机的温度测量系统.doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流基于51单片机的温度测量系统.精品文档.基于51单片机的温度测量系统原作者:飓风添加时间:2008-04-03原文发表:2008-04-03人气:128来源:赵娜 赵刚 于珍珠 郭守清本文章共3366字,分3页,当前第1页,快速翻页: 摘要: 单片机在检测和控制系统中得到广泛应用, 温度则是系统常需要测量、控制和保持一个量。 本文从硬件和软件两方面介绍了AT89C2051单片机温度控制系统设计,对硬件原理图和程序框图作了简洁描述。 关键词: 单片机AT89C2051;温度传感器DS18B20;温度;测量 引言 单片机在电子产品中应用已经越来越
2、广泛,并且在很多电子产品中也将其用到温度检测和温度控制。为此在本文中作者设计了基于atmel公司AT89C2051温度测量系统。这是一种低成本利用单片机多余I/O口实现温度检测电路, 该电路非常简单, 易于实现, 并且适用于几乎所有类型单片机。 一.系统硬件设计 系统硬件结构如图1所示。 PC提示请看下图: 1.1 数据采集 数据采集电路如图2所示, 由温度传感器DS18B20采集被控对象实时温度, 提供给AT89C2051P3.2口作为数据输入。在本次设计中我们所控对象为所处室温。当然作为改进我们可以把传感器与电路板分离,由数据线相连进行通讯,便于测量多种对象。 DS18B20是DALLAS
3、公司生产一线式数字温度传感器,具有3引脚TO92小体积封装形式;温度测量范围为55125,可编程为9位12位A/D转换精度,测温分辨率可达0.0625,被测温度用符号扩展16位数字量方式串行输出,支持3V5.5V电压范围,使系统设计更灵活、方便;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器端口较少,可节省大量引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。分辨率设定,及用户设定报警温度存储在EEPROM中,掉电后依然保存。DS18B20使电压、特性有更多选
4、择,让我们可以构建适合自己经济测温系统。如图2所示DS18B202脚DQ为数字信号输入/输出端;1脚GND为电源地;3脚VDD为外接供电电源输入端。 AT89C2051(以下简称2051)是一枚8051兼容单片机微控器,与IntelMCS-51完全兼容,内藏2K可程序化Flash存储体,内部有128B字节数据存储器空间,可直接推动LED,与8051完全相同,有15个可程序化I/O点,分别是P1端口与P3端口(少了P3.6)。 1.2 接口电路 PC提示请看下图: 图2 单片机2051与温度传感器DS18B20连接图接口电路由ATMEL公司2051单片机、ULN2003达林顿芯片、4511BCD
5、译码器、串行EEPROM24C16(保存系统参数)、MAX232、数码管及外围电路构成, 单片机以并行通信方式从P1.0P1.7口输出控制信号,通过4511BCD译码器译码,用2个共阴极LED静态显示温度十位、个位。 串行EEPROM24C16是标准I2C规格且只要两根引脚就能读写。由于单片机2051P1是一个双向I/O端口,所以在我们在设计中将P1端口当成输出端口用。由图2可知,P1.7作为串性时钟输出信号与24C16第6脚相接,P1.6则作为串行数据输出接到24C16第5脚。P1. 4和P1.5则作为两个数码管位选信号控制,在P1.4=1时,选中第一个数码管(个位);P1.5=1时,选中第
6、二个数码管(十位)。P1.0P1.3输出信号接到译码器4511上作为数码管显示。此外,由于单片机2051P3端口有特殊功能,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数码管,所以在设计电路时加了一个达林顿电路ULN20
7、03对信号进行放大,产生足够大电流驱动数码管显示。由于4511只能进行BCD十进制译码,只能译到0至9,所以在这里我们利用4511译码输出我们所需要温度。 1.3 报警电路简介 PC提示请看下图: 图3 温度在七段数码管上显示连接图本文中所设计报警电路较为简单,由一个自我震荡型蜂鸣器(只要在蜂鸣器两端加上超过3V电压,蜂鸣器就会叫个不停)和一个发光二极管组成(如图3所示)。在这次设计中蜂鸣器是通过ULN2003电流放大IC来控制。在我们所要求温度达到一定上界或者下界时(在文中我们设置上界温度是45,下界温度是5),报警电路开始工作,主要程序设计如下: main()/主函数 unsigned c
8、har i=0; unsigned int m,n; while(1) i=ReadTemperature();/读温度 if(i0 & i=4&m=5)%(m=5)/判断温度取值范围,如果大于45或小于5度,则蜂鸣器叫,发光二极管闪烁 int a,b; Q1=1;/蜂鸣器叫 for(a=0;a1000;a )/发光二极管闪烁 for(b=0;b1000;b ) Q2=1; for(a=0;a1000;a ) for(b=0;b0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay(4); return(dat)
9、; /写一个字节函数 WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat=1; (2)读取温度并计算函数 ReadTemperature(void) unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); / 跳过读序号列号操作 WriteOneChar(0x44); /
10、 启动温度转换 Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=ReadOneChar(); b=ReadOneChar(); t=b; t=8; t=t|a; tt=t*0.0625; t= tt*10 0.5; /放大10倍输出并四舍五入-此行没用 (3)主程序部分见前 return(t); 三. 结束语 AT89C2051单片机体积小、重量轻、抗干扰能力强、对环境要求不高、价格低廉、可靠性高、灵活性好。即使是非电子计算机专业人员,通过学习一些专
11、业基础知识以后也能依靠自己技术力量来开发所希望单片机应用系统。 本文温度控制系统只是单片机广泛应用于各行各业中一例,相信读者会依靠自己聪明才智使单片机应用更加广泛化。另外对本例子可以作一些扩展,单片机应用越来越广泛,由于单片机运算功能较差,往往需要借助计算机系统,因此单片机和PC机进行远程通信更具有实际意义。目前此设计已成功应用于钻井模拟器实验室室温控制。本文作者创新观点:采用单片机AT89C2051性价比高,而且温度传感器DS18B20转化温度方法非常简洁且精度高、测试范围较广。 参考文献 1林伸茂.8051单片机彻底研究基础篇 北京:人民邮电出版社 2004 2范风强等.单片机语言C51应
12、用实战集锦 北京:电子工业出版社 2005 3谭浩强.C语言程序设计(第二版) 北京:清华大学出版社 1999 4夏路易等.电路原理图与电路板设计教程 北京:北京希望电子出版社 2002 5赵晶.Protel99高级应用 北京:人民邮电出版社 2000 6聂毅.单片机定时器中断时间误差分析及补偿J 微计算机信息 2002,18(4):3738 简易数字温度计的设计与制作原作者:三毛添加时间:2008-04-03原文发表:2008-04-03人气:360来源:郇玉龙 赵宁本文章共3096字,分2页,当前第1页,快速翻页: 摘要:单片机在日用电子产品中应用越来越广泛,温度则是人们日常生活中常常需要
13、测量和控制一个量。本文作者采用AT89C51单片机和温度传感器AD590从硬件和软件两方面介绍了一款简易数字温度计设计过程, 并对硬件原理图和程序流程图作了简洁描述。关键词:单片机AT89C51;温度传感器AD590;数字温度计;模数转换;数码显示 1.前言 随着单片机技术不断发展,单片机在日用电子产品中应用越来越广泛,温度传感器AD590具有线性优良、性能稳定、灵敏度高、抗干扰能力强、使用方便等优点,广泛应用于冰箱、空调器、粮仓等日常生活中温度测量和控制。传统温度计有反应速度慢、读数麻烦、测量精度不高、误差大等缺点,本文作者利用集成温度传感器AD590设计并制作了一款基于AT89C514位数
14、码管显示数字温度计,其电路简单,软硬件结构模块化,易于实现。 2.系统功能原理及硬件组成 该数字温度计利用AD590集成温度传感器及其接口电路完成温度测量并转换成模拟电压信号,经由模数转换器ADC0804转换成单片机能够处理数字信号,然后送到单片机AT89C51中进行处理变换,最后将温度值显示在D4、D3、D2、D1共位七段码LED显示器上。 系统以AT89C51单片机为控制核心,加上AD590测温电路、ADC模数转换电路、4位温度数据显示电路以及外围电源、时钟电路等组成。系统组成框图如图1所示。PC提示请看下图: 图1 系统组成框图 2.1AT89C51单片机 Atmel公司生产AT89C5
15、1单片机是一种低功耗/低电压、高性能8位单片机,内部除CPU外,还包括128字节RAM,4个8位并行I/O口,5个中断优先级,2层中断嵌套中断,2个16位可编程定时计数器,片内集成4K字节可改变程序Flash存储器,具有低功耗,速度快,程序擦写方便等优点,完全满足本系统设计需要。 单片机P0口作为ADC0804转换数据输入端,P2.0接ADC0804INTR端检测数据转换是否结束。P1.0P1.3输出信号接到译码器7447上作为数码管显示,P1.4P1.7则作为个数码管位选信号控制。P3口有特殊功能,P3.6用于控制ADC0804启动,P3.7用于控制读取ADC0804转换结果。 2.2AD5
16、90温度传感器 AD590是美国模拟器件公司生产单片集成两端感温电流源。AD590测温范围为55150,满足人们日常生产和生活中温度范围。AD590电源电压可在4V6V范围变化,可以承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。AD590产生电流与绝对温度成正比,它有非常好线性输出性能,温度每增加1,其电流增加1A。 AD590温度与电流关系如下表所示: 摄氏温度 AD590电流 经10K电压 0 273.2 A 2.732 V 10 283.2 A 2.832 V 20 293.2 A 2.932 V 30 303.2 A 3.032 V 40 313.2 A 3.132 V
17、 50 323.2 A 3.232 V 60 333.2 A 3.332 V 100 373.2 A 3.732 V 为了提高精度,扩大测量范围,在A/D转换前还要将信号加以放大并进行零点迁移,因而一个高稳定性、高精度放大电路是必须。当温度变化时,AD590会产生电流变化,当AD590电流通过一个10k电阻时,这个电阻上压降为10mV,即转换成10mVK,为了使此10k电阻精确,可用一个9k电阻与一个2k电位器串联,然后通过调节电位器来获得精确10k。运算放大器A1被接成电压跟随器形式,以增加信号输入阻抗,由运放A2减去2.732做零位调整(即把绝对温度转成摄氏温度),最后由运放A3反相并放大
18、倍输送给A/D转换器。具体硬件连接图如图2 所示。PC提示请看下图: 图2 AD590温度采集及模数转换电路 2.3 ADC0804模数转换器 AD590测温电路输出电压信号为模拟信号,要进行数码显示,还需将此信号转换成数字信号。为此我们通过A/D转换器ADC0804将输入模拟值转换成数字值,经AT89C51单片机处理后输出到P1以控制温度显示电路。 ADC0804是用CMOS集成工艺制成逐次比较型摸数转换芯片,分辨率8位,转换时间100s,输入电压范围为05V,增加某些外部电路后,输入模拟电压可为5V。该芯片内有输出数据锁存器,当与计算机连接时,转换电路输出可以直接连接在CPU数据总线上,无
19、须附加逻辑接口电路。具体硬件连接图如图2所示。 2.4 七段码LED温度显示电路 由发光二极管组成七段码LED显示器是单片机应用产品中最常用廉价输出设备,用于显示各种数字和字符。该数字温度计温度显示由4位七段码LED显示器组成,单片机以并行通信方式从P1.0P1.7口输出段码和控制信号,通过7447 TTL BCD译码器译码,用4个共阳极LED动态显示温度各个数位。具体硬件连接图如图3所示。PC提示请看下图: 图3 温度显示及单片机时钟、复位电路 3.系统软件设计与编程 该数字温度计软件部分用MCS-51汇编语言编程实现,采用模块化程序设计思想,将软件划分成若干单元,主要包括主程序、十进制数据
20、转换及调整子程序、LED数码显示子程序和延时子程序等。本系统具体汇编源程序见后附。 3.1 系统主程序 在主程序中,系统上电自动复位以后首先设置堆栈,然后启动ADC0804,开始转换AD590测温电路输入电信号,待数据转换结束后读入到累加器A,然后进行十进制数据转换调整,输出给显示电路。主程序流程图如图4所示。PC提示请看下图:图4 主程序流程图 3.2 十进制数据转换调整子程序 由于ADC0804转换后数据是二进制数据,而七段码LED显示器所要显示数据是十进制数据,因此需要进行二、十进制数据转换。ADC0804输出最大转换值为FFH(255),由于运放放大倍,因此本数字温度计最大测量温度为5
21、.1V/51.02,即102。由255*=102,得知0.4,即先乘再除10。255*4=1020,其中高位10送高位显示缓冲区R4,低位20送低位显示缓冲区R5,将小数点设在D2位上,并将其分别显示为1(D4) 0(D3) 2(D2) . 0(D1) 。所以,十进制转换调整流程为A/D(二进制)十进制乘显示。程序流程图如图所示。PC提示请看下图:图5 十进制数据转换调整子程序流程图 3.3 LED数码显示子程序 十进制转换调整后数据送到寄存器R5、R4中,然后通过P1口把数据输出给D4、D3、D2、D1四个数码显示器中,从而最终把测得温度显示出来。显示子程序流程图如图所示。PC提示请看下图:
22、图 显示子程序流程图 .结束语 本文采用AT89C51单片机做主控芯片,利用温度传感器AD590测量温度,并配上相应外部接口电路,介绍了一款简易数字温度计设计与制作过程。该温度计系统实现简单、功能稳定、使用方便,适用于人们日常生活和工、农业生产中各种温度测量。参考文献: 1白泽生. 用MCS-51单片机实现温度检测J.现代电子技术,2005,(10):1-3. 2张开生,郭国法.MCS-51单片机温度控制系统设计J.微计算机信息,2005,21(7):68-69. 3何立民.单片机应用技术选编M.北京:北京航空航天大学出版社,2004. 4杨刚,周群.电子系统设计与实践M.北京:电子工业出版社,2004.