温度计毕业设计已修.docx
- 文档编号:9231858
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:20
- 大小:270.36KB
温度计毕业设计已修.docx
《温度计毕业设计已修.docx》由会员分享,可在线阅读,更多相关《温度计毕业设计已修.docx(20页珍藏版)》请在冰点文库上搜索。
温度计毕业设计已修
摘要
本文介绍了应用单片机AT89C51构成的数字气温计的主要功能、软硬件组成和设计。
采用数字温度传感器DS18B20将气温转换成相应的数字量,经单片机AT89C51处理后用4位共阳极LED数码管将气温实时显示。
整个系统结构紧凑、简单可靠、操作灵活、功能强、性能价格比高。
关键词:
单片机;AT89C51;DS18B20;LED数码管
第一章前言
目前的温度计发展很快,传感器作为温度计的重要组成部分,它的精确度,灵敏度基本决定了温度计的精确度,测量范围,控制范围和用途。
温度计加入传感器和单片机是很重要的,单片机应用系统开发技术是最普遍的实用技术之一,大多数电子产品和设备都采用单片机技术的支持。
本设计的电子温度计与传统温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于测温比较准确的场所。
第二章数字气温计总体设计方案
2.1数字气温计设计方案
此次设计系统主要由温度测量和数据采集两部分电路组成,实现的方法有很多种,下面将列出两种实现方案。
2.1.1方案一:
采用热敏电阻
由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
如下图:
图1热敏电阻
2.1.2方案二:
采用数字温度传感器
数字温度传感器与单片机的接口简单,没有太多外围电路,用数字温度传
感器可以完成设计要求。
如图 2所示:
图2 总体设计方框图
2.2传感器的选择
温度传感器从使用的角度大致可分为接触式和非接触式两大类,前者是让温度传感器直接与待测物体接触,而后者是使温度传感器与待测物体离开一定的距离,检测从待测物体放射出的红外线,达到测温的目的。
在接触式和非接触式两大类温度传感器中,相比运用多的是接触式传感器,非接触式传感器一般在比较特殊的场合才使用,目前得到广泛使用的接触式温度传感器主要有热电式传感器,其中将温度变化转换为电阻变化的称为热电阻传感器,将温度变化转换为热电势变化的称为热电偶传感器。
本设计的任务是要求测量范围为-10度到100度,测量分辨率为0.5°C,综合各方面因素和后续的电路,决定采用数字温度传感器作为本设计的温度传感器,具体是用DS18B20。
2.3设计思路
基于DS18B20的温度测量系统以AT89S52为中心器件,以KEIL为系统开发平台,用C语言进行程序设计,以PROTEUS作为仿真软件设计而成的。
DS18B20是智能温度传感器,它的输入、输出采用数字量,以单总线技术,接收主机发送的命令,根据DS18B20内部的协议进行相应的处理,将转换的温度以串口送给主机。
主机按照通信协议用一个IO口模拟DS18B20的时序,发送命令(初始值命令,ROM命令,功能命令)给DS18B20,并读取温度值,在内部进行相应的数值处理,用4位数码管显示测试点的温度。
第三章硬件设计
3.1主控制器AT89S51
单片机AT89S51有内部RAM,可以作为各种数据区使用,内部闪电存储器存放智能温度计的控制程序,实现温度的数字值采集,完成温度的数字采集值到对应数字温度的转换计算,并把计算的数字温度转换相应的显示段码,控制LED显示器以动态扫描方式进行温度显示。
3.2DS18B20
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
3.2.1引脚排列
TO-92封装的DS18B20的引脚排列见下图3,其引脚功能描述见表1。
图3DS18B20(底视图)
表1 DS18B20详细引脚功能描述
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
3.2.2DS18B20性能
DS18B20的性能特点如下:
1.采用单总线技术,与单片机通信只需要一根I/O线,在一根线上可以挂接多个DS18B20。
2.每只DS18B20具有一个独有的,不可修改的64位序列号,根据序列号访问地应的器件。
3.低压供电,电源范围从3~5V,可以本地供电,也可以直接从数据线上窃取电源(寄生电源方式)。
4.测温范围为-55℃~+125℃,在-10℃~85℃范围内误差为±0.5℃。
5.可编辑数据为9~12位,转换12位温度时间为750ms(最大)。
6.用户可自设定报警上下限温度。
7.报警搜索命令可识别和寻址哪个器件的温度超出预定值。
8.DS18B20的分辩率由用户通过EEPROM设置为9~12位。
9.DS18B20可将检测到温度值直接转化为数字量,并通过串行通信的方式与主控制器进行数据通信。
3.2.3DS18B20工作原理
DS18B20测温原理:
器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
3.2.4连接方式
单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。
单总线通常要求外接一个约为4.7K—10K的上拉电阻,这样,当总线闲置时其状态为高电平。
如图4所示:
图4连接方式
3.2.5温度采集
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式,单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
采用寄生电源供电方式时VDD端接地。
由于单线制只有一根线,因此发送接口必须是三态的。
3.3数码管显示设计
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;
按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
本文采用的显示电路为4位共阳数码管。
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多。
动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
本次设计采用三极管驱动。
3.4电路原理图
用pootel99画图,下图5为电路原理图
图5电路原理图
3.4.1电路组成
一、u2与R6元器件组成数字温度计的电源部分,u2的两个插孔连接电源的零线与火线,vcc端连接在单片机40脚上,可以说这一部分是数字温度计的血脉。
二、Y1与c1、c2给单片机提供晶振信号,这一部分可以说是单片机的心脏。
三、最重要的一部分是DS18B20,它此次的连接方式是外接电源方式。
四、P0口是数据口,连接数码管。
五、四个三极管为数码管提供驱动电流。
六、复位电路,由Key1、C3、R4组成。
其中Key1为复位开关。
七、显示电路,P0口是数据口连接数码管的段码,数码管采用共阳连接,P3口是控制线。
3.4.2电路原材料清单
3.4.3使用工具及仪表清单
序号
名称
型号
单位
数量
备注
1
万用表
块
1
2
內热式电烙铁
1
3
焊锡丝
若干
4
直流稳压电源
台
1
5
编程烧写器
台
1
6
导线
若干
第四章软件设计
4.1设计思路
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。
在单片机测量控制系统中,大体上可分为数据处理、过程控制两个基本类型。
数据处理包括:
数据的采集、数字滤波、标度变换等。
过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便达到测量控制目的。
本设计主要是对温度进行采集、显示,。
4.2设计流程图
程序运行开始后,系统进行初始化设置,DS18B20将采集到的温度经过AD转换后,送到单片机进行数据转换,并通过四位数码管显示。
如图6所示:
图6流程图
第五章仿真与调试
软件的调试可以先编写显示程序,接下来分别进行DS18B20复位函数、DS18B20写字节函数、DS18B20读字节函数、温度计算转换函数等程序的编写调试,调试到液晶能显示温度值,在环境温度有变化时,显示温度能改变就说明已能正确读取温度数据,此时可以通过比较确定温度计显示的温度是否正确,如果正确就实现了设计要求。
如图7所示
图七仿真效果图
第六章总结
温度传感器DS18B20的外形像一个小三极管,硬件连接非常简单,应用也非藏方便,它不仅能测量温度,而且也是一个DAC转换器,它能将测得的温度信号直接转换成数字信号输入到单片机。
硬件开销较小,相对需要复杂的软件进行补偿。
DS18B20软件编程较为复杂,但是可以把复位、读和写三个基本操作的子程序看成是三个固定的基本模块。
从这次课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识应用到实际中去,学习单片机更是如此,程序只有在不停的写与读的过程中才能提高,这就是我这次课程设计中的最大收获。
第七章致谢
经过一个月的忙碌,本次毕业设计已经接近尾声,回忆整个毕业设计完成的过程,很多人给了我莫大的关心和帮助。
首先感谢我的指导老师文主任对我做出了精心的指导,给了我许多宝贵的建设性的意见,由于中途除了点问题,文主任依然给我机会重新再来过,他严谨认真的作风深深的影响着我,使得我顺利的完成毕业设计的内容。
其次,要感谢梁老师和吴老师,在做实物的时候,他一直指导着我,才使得我的实物完好的做成。
同时,身边的同学也给了我提供了许多的帮助。
在此,我向身边关心我的同学及在设计过程中给予我极大帮助的人致以诚挚的谢意!
最后,感谢我的父母和朋友,是他们在学习上,生活上给我无数的鼓励与关心,才使我走到今天。
也感谢学校对我大学三年来的栽培,以及学校各老师对我的关怀。
参考文献
[1] 彭勇.单片机技术(M).北京:
电子工业出版社,2009
[2] 张永格.何乃味.单片机C语言应用技术与实践[M].北京:
北京交通大学出版社,2009
[3] 杨志忠.数字电子技术(第二版).北京:
高等教育出版社,2008
[4] 宇创IT培训教学研究组.C语言程序设计[第一版].中国地质大学出版社,2007.
[5]戴勇.微型计算机控制技术湘潭:
湘潭大学出版社版社,2009.
附件
(1)程序清单:
#include"reg52.h"
#include"INTRINS.H"
#include
#defineucharunsignedchar
#defineuintunsignedint
unsignedcharlow,high;
unsignedcharadd,baojin,bianhao=1;
inttempValue,n,j;
chart;
intave[2]={0,0};
sbitDQ=P1^0;
sbitbao=P3^7;
sbitkey1=P3^3;
sbitkey2=P3^6;
bitar,hlow=1;
ucharflag=0,flag1=0;
uchardata2[1]={0};
uchardata1[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
voiddelay1(uchari)
{
while(i>=1)
{
--i;
}
}
voidDelay(uintyou)
{
uintq,i;
for(q=you;q>0;q--)
for(i=125;i>0;i--);
}
ucharReadbit()
{
uchartdq;
_nop_();
DQ=0;
_nop_();
DQ=1;
_nop_();
tdq=DQ;
delay1(8);
returntdq;
}
ucharReset(void)
{
uchartdq;
DQ=0;
delay1(34);
delay1(34);
DQ=1;
delay1(7);
tdq=DQ;
delay1(37);
delay1(37);
returntdq;
}
voidWritebit(ucharwbit)
{
_nop_();
DQ=0;
_nop_();
if(wbit)
{
DQ=1;
delay1(7);
}
else
{
delay1(7);
DQ=1;
}
}
voiddisplay()
{
unsignedinttemp;
if(tempValue<0)
{
temp=abs(tempValue);
P0=0xff;
Delay(4);
P3=0x084;
P0=data1[(temp*10)%100/10];
Delay(4);
P0=0xff;
if((temp%100/10==0)&&(temp/100)==0)
{
P0=data1[temp%100/10]&0x7f;
P3=0x04;
Delay(4);
P0=data1[10];
P3=0x02;
}
else
{
P0=data1[temp%100/10]&0x7f;
P3=0x04;
Delay(4);
P0=0xff;
if(temp/100==0)
{
P3=0x02;
P0=data1[10];
Delay(4);
}
else
{
P3=0x02;
P0=data1[temp/100];
Delay(4);
P3=0x01;
P0=data1[10];
Delay(4);
}
}
}
else
{
P0=data1[tempValue%100%10];P3=0x08;
Delay(4);
P3=0x00;
P0=data1[tempValue%100/10]&0x7f;P3=0x04;
Delay(4);
P3=0x00;
if((tempValue/100%10!
=0)|(tempValue/100/10!
=0))P3=0x02;
elseP3=0x00;
P0=data1[tempValue/100%10];
Delay(4);
P3=0x00;
if(tempValue/100/10!
=0)P3=0x01;
elseP3=0x00;
P0=data1[tempValue/100/10];
Delay(4);
P3=0x00;
}
}
voidWrite18B20(ucharch)
{
bita;
uchari;
for(i=1;i<=8;i++)
{
a=ch&0x01;
Writebit(a);
ch>>=1;
}
}
ucharRead18B20()
{
uchari,h,y;
h=0;
for(i=1;i<=8;i++)
{
y=Readbit();
h=(y<<7)|h>>1;
}
return(h);
}
voidsendchanged()
{
Reset();
Write18B20(0xcc);
Write18B20(0x44);
}
voidsendread()
{
Reset();
Write18B20(0xcc);
Write18B20(0xbe);
}
inttemp()
{
unsignedinttmpvalue;
intvalue;
floatt;
sendread();
high=Read18B20();
low=Read18B20();
tmpvalue=low;
tmpvalue<<=8;
tmpvalue|=high;
value=tmpvalue;
t=value*0.0625;
value=t*10+(value>0?
0.5:
-0.5);
returnvalue;
}
voidmain()
{
unsignedchari;
while
(1)
{
sendchanged();
tempValue=temp();
for(i=0;i<20;i++)
{
display();
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度计 毕业设计