我要写一篇关于单片机测温的论文谁给点资料,重谢!

这是我的毕业设计,指导老师给的课题是利用单片机去测温(3000度到负100度),谁能告诉我怎么测?用什么传感器?反正就是和论文差不多的资料都要,星期三就要交了,急!谢谢大家!

第1个回答  2014-01-11
基于51单片机的温度测量系统
摘 要: 单片机在检测和控制系统中得到广泛的应用, 温度则是系统常需要测量、控制和保持的一个量。本文从硬件和软件两方面介绍了AT89C2051单片机温度控制系统的设计,对硬件原理图和程序框图作了简洁的描述。
关键词: 单片机AT89C2051;温度传感器DS18B20;温度;测量

引言
单片机在电子产品中的应用已经越来越广泛,并且在很多电子产品中也将其用到温度检测和温度控制。为此在本文中作者设计了基于atmel公司的AT89C2051的温度测量系统。这是一种低成本的利用单片机多余I/O口实现的温度检测电路, 该电路非常简单, 易于实现, 并且适用于几乎所有类型的单片机。

一.系统硬件设计
系统的硬件结构如图1所示。

1.1数据采集
数据采集电路如图2所示, 由温度传感器DS18B20采集被控对象的实时温度, 提供给AT89C2051的P3.2口作为数据输入。在本次设计中我们所控的对象为所处室温。当然作为改进我们可以把传感器与电路板分离,由数据线相连进行通讯,便于测量多种对象。

DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,支持3V~5.5V的电压范围,使系统设计更灵活、方便;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20使电压、特性有更多的选择,让我们可以构建适合自己的经济的测温系统。如图2所示DS18B20的2脚DQ为数字信号输入/输出端;1脚GND为电源地;3脚VDD为外接供电电源输入端。

AT89C2051(以下简称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.0~P1.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.0~P1.3的输出信号接到译码器4511上作为数码管的显示。此外,由于单片机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对信号进行放大,产生足够大的电流驱动数码管显示。由于4511只能进行BCD十进制译码,只能译到0至9,所以在这里我们利用4511译码输出我们所需要的温度。

1.3报警电路简介

图3 温度在七段数码管上显示连接图

本文中所设计的报警电路较为简单,由一个自我震荡型的蜂鸣器(只要在蜂鸣器两端加上超过3V的电压,蜂鸣器就会叫个不停)和一个发光二极管组成(如图3所示)。在这次设计中蜂鸣器是通过ULN2003电流放大IC来控制。在我们所要求的温度达到一定的上界或者下界时(在文中我们设置的上界温度是45℃,下界温度是5℃),报警电路开始工作,主要程序设计如下:

main()//主函数
{unsigned char i=0;<br/>unsigned int m,n;<br/>while(1)<br/>{i=ReadTemperature();//读温度}
if(i>0 && i<=10) //如果温度在0到10度之间直接给七段数码管赋值
{P1=designP1[i];}
else//如果温度大于10度
{m=i%10;//先给第一个七段数码管赋值<br/>D1=1;<br/>D2=0;<br/>P1=designP1[m];<br/>n=i/10;//再给第二个七段数码管赋值<br/>D1=0;<br/>D2=1;<br/>P1=designP1[n];<br/>if(n>=4&&m>=5)%%(m<=5)//判断温度的取值范围,如果大于45或小于5度,则蜂鸣器叫,发光二极管闪烁<br/>{ int a,b;<br/>Q1=1;//蜂鸣器叫<br/>for(a=0;a<1000;a++)//发光二极管闪烁<br/>for(b=0;b<1000;b++)<br/>Q2=1;<br/>for(a=0;a<1000;a++)<br/>for(b=0;b<1000;b++)<br/>Q2=0;}}}
第2个回答  2014-01-11
二.系统软件设计

图4 系统程序流程图

2.1 系统程序流程图
系统程序流程图如图4所示。

2.2 温度部分软件设计

DS18B20的一线工作协议流程是:初始化→ROM操作指令→存储器操作指令→数据传输。其工作时序包括初始化时序、写时序和读时序。故主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。程序主要函数部分如下:

(1)初始化函数
//读一个字节函数
ReadOneChar(void)
{unsigned char i=0;<br/>unsigned char dat = 0;<br/>for (i=8;i>0;i--)<br/>{ DQ = 0; // 给脉冲信号<br/>dat>>=1;<br/>DQ = 1; // 给脉冲信号<br/>if(DQ)<br/>dat|=0x80;<br/>delay(4);}
return(dat);}
//写一个字节函数
WriteOneChar(unsigned char dat)
{unsigned char i=0;<br/>for (i=8; i>0; i--)<br/>{DQ = 0;<br/>DQ = dat&0x01;<br/>delay(5);<br/>DQ = 1;<br/>dat>>=1;}}
(2)读取温度并计算函数
ReadTemperature(void)
{unsigned char a=0;<br/>unsigned char b=0;<br/>unsigned int t=0;<br/>float tt=0;<br/>Init_DS18B20();<br/>WriteOneChar(0xCC); // 跳过读序号列号的操作<br/>WriteOneChar(0x44); // 启动温度转换<br/>Init_DS18B20();<br/>WriteOneChar(0xCC); //跳过读序号列号的操作<br/>WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度<br/>a=ReadOneChar();<br/>b=ReadOneChar();<br/>t=b;<br/>t<<=8;<br/>t=t|a;<br/>tt=t*0.0625;<br/>t= tt*10+0.5; //放大10倍输出并四舍五入---此行没用<br/>(3)主程序部分见前<br/>return(t);}

三. 结束语
AT89C2051单片机体积小、重量轻、抗干扰能力强、对环境要求不高、价格低廉、可靠性高、灵活性好。即使是非电子计算机专业人员,通过学习一些专业基础知识以后也能依靠自己的技术力量来开发所希望的单片机应用系统。本文的温度控制系统只是单片机广泛应用于各行各业中的一例,相信读者会依靠自己的聪明才智使单片机的应用更加广泛化。另外对本例子可以作一些扩展,单片机的应用越来越广泛,由于单片机的运算功能较差,往往需要借助计算机系统,因此单片机和PC机进行远程通信更具有实际意义。目前此设计已成功应用于钻井模拟器实验室室温控制。

本文作者创新观点:采用的单片机AT89C2051性价比高,而且温度传感器DS18B20转化温度的方法非常简洁且精度高、测试范围较广。

参考文献
[1]林伸茂.8051单片机彻底研究基础篇 北京:人民邮电出版社 2004
[2]范风强等.单片机语言C51应用实战集锦 北京:电子工业出版社 2005
[3]谭浩强.C语言程序设计(第二版) 北京:清华大学出版社 1999
[4]夏路易等.电路原理图与电路板设计教程 北京:北京希望电子出版社 2002
[5]赵晶.Protel99高级应用 北京:人民邮电出版社 2000
[6]聂毅.单片机定时器中断时间误差的分析及补偿[J] 微计算机信息 2002,18(4):37~38
第3个回答  2014-01-11
DS18B20智能温度控制器

DALLAS最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、 DS1822 “一线总线”数字化温度传感器 同DS1820一样,DS18B20也 支持“一线总线”接口,测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。DS1822的精度较差为± 2°C 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。 DS18B20、 DS1822 的特性 DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色! DS1822与 DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。 继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。
DS18B20的内部结构 DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下:

DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。

光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
DS18B20温度传感器的存储器
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。
相似回答