数字温度计毕业论文.docx
- 文档编号:27604591
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:29
- 大小:211.21KB
数字温度计毕业论文.docx
《数字温度计毕业论文.docx》由会员分享,可在线阅读,更多相关《数字温度计毕业论文.docx(29页珍藏版)》请在冰豆网上搜索。
数字温度计毕业论文
毕业设计
毕业设计(论文)题目:
数字温度计设计
专业:
应用电子技术
********
班级:
08级应用电子5班
学号:
********
********
完成日期:
2011年4月18日
摘要…………………………………………………………………………………………3
第一章.数字温计总体设案
1.数字温度计设计方案论述…………………………………………………………………4
1.1方案一……………………………………………………………………………………4
1.2方案二……………………………………………………………………………………4
1.3方案三……………………………………………………………………………………4
第二章数字温度计总体详细设计
2.1主控器……………………………………………………………………………………5
.AT89S51特点及特性…………………………………………………………………5
.管脚功能说明…………………………………………………………………………5
2.2温度采集部分设计………………………………………………………………………5
温度传感器DS18B20…………………………………………………………………5
DS18B20温度传感器与单片机的接口电路…………………………………………8
DS18B20的控制方法…………………………………………………………………9
第三章系统硬件电路设计
3.1电路原理…………………………………………………………………………………11
3.2电路原材料清单…………………………………………………………………………12
3.3使用工具及仪表清单……………………………………………………………………12
第四章系统软件设计
4.1流程图……………………………………………………………………………………13
4.2读出温度子程序…………………………………………………………………………13
4.3温度转换命令子程序……………………………………………………………………14
4.4计算温度子程序…………………………………………………………………………14
4.5数字温度计程序清单……………………………………………………………………14
总结…………………………………………………………………………………………19
致谢…………………………………………………………………………………………20
参考文献…………………………………………………………………………………21
摘要
本文综述了数字温度计的设计与制作过程,介绍了设计制作一个完整的数字温度计需要做的准备与制作过程,通过一段时间的努力制作,从刚开始透彻理解题目要求及所要设计的产品的各项性能功能,然后觉得利用单片机作为控制内核,其次主要的就是温度传感器DS18B20,及其他重要部分电路的配合下设计出一套完整的硬件系统,及它的灵魂软件系统。
得到了一种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,用4位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。
关键词:
单片机,数字控制,温度计,DS18B20,AT89S51
第1章.数字温度计总体设计方案
1.数字温度计设计方案论证
1.1方案一:
热敏电阻
由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
如下图:
热敏电阻
1.2方案二:
温度传感器DS18B20
(1).进而考虑到用温度传感器,在设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。
(2).方案二的总体设计框图
温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用4位LED数码管以串口传送数据实现温度显示。
图1 总体设计方框图
1.3方案三:
控制内核不用单片机,用DSP
选定了温度传感器之后,再来考虑它的控制内核,因为数字温度计的设计并不复杂,单片机完全可以处理的了,DSP是比较高端的控制内核应用成本相对较高,所以选用单片机是即经济又实惠的选择。
第2章数字温度计详细设
2.1主控制器AT89S51
T89s51的特点及特性:
40个引脚,4kbytesflash片内程序存储器,128bytes的随机存取数据存储器(ram),32个外部双向输入/输出(i/o)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(wdt)电路,片内时钟振荡器。
此外,at89s51设计和配置了振荡频率可为0hz并可通过软件设置省电模式。
空闲模式下,cpu暂停工作,而ram定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存ram的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有pdip、tqfp和plcc等三种封装形式,以适应不同产品的需求。
主要功能特性:
·兼容mcs-51指令系统·4k可反复擦写(>1000次)ispflashrom
·32个双向i/o口·4.5-5.5v工作电压
·2个16位可编程定时/计数器·时钟频率0-33mhz
·全双工uart串行中断口线·128x8bit内部ram
·2个外部中断源·低功耗空闲和省电模式
·中断唤醒省电模式·3级加密位
·看门狗(wdt)电路·软件设置空闲和省电功能
·灵活的isp字节和分页编程·双数据寄存器指针
2.2温度采集部分的设计
.温度传感器DS18B20
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
TO-92封装的DS18B20的引脚排列见下图,其引脚功能描述见表1。
(底
视图)DS18B20
表1 DS18B20详细引脚功能描述
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
DS18B20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5V;
●零待机功耗;
●温度以9或12位数字;
●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2所示。
图2DS18B20内部结构
64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
温度报警触发器TH和TL,可通过软件写入户报警上下限。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM的结构为8字节的存储器,结构如图3所示。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
该字节各位的定义如图3所示。
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。
温度LSB
温度MSB
TH用户字节1
TL用户字节2
配置寄存器
保留
保留
保留
CRC
图3 DS18B20字节定义
由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数
据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。
表2是一部分温度值对应的二进制温度数据。
表1DS18B20温度转换时间表
R1
R0
分辨率/位
温度最大转换时间/ms
0
0
9
93.75
0
1
10
187.5
1
0
11
375
1
1
12
750
DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。
若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。
因此,可用多只DS18B20同时测量温度并进行报警搜索。
在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。
主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
DS18B20的测温原理是这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。
其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。
表2 一部分温度对应值表
温度/℃
二进制表示
十六进制表示
+125
0000011111010000
07D0H
+85
0000010101010000
0550H
+25.0625
0000000110010000
0191H
+10.125
0000000010100001
00A2H
+0.5
0000000000000010
0008H
0
0000000000001000
0000H
-0.5
1111111111110000
FFF8H
-10.125
1111111101011110
FF5EH
-25.0625
1111111001101111
FE6FH
-55
1111110010010000
FC90H
另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作按协议进行。
操作协议为:
初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
图4DS18B20与单片机的接口电路
DS18B20温度传感器与单片机的接口电路
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式,如图4所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
采用寄生电源供电方式时VDD端接地。
由于单线制只有一根线,因此发送接口必须是三态的。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:
初始化时序、读时序、写时序。
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
DS18B20控制方法
DS18B20有六条控制命令,指令约定代码操作说明
CCH:
跳过扫描温度传感芯片序列号
44H:
启动DS18B20进行温度转换
BEH:
读度温度值
DS18B20的复位时序:
(1)先将数据线置高电平“1”。
(2)延时(该时间要求的不是很严格,但是尽可能的短一点)
(3)数据线拉到低电平“0”。
(4)延时750微秒(该时间的时间范围可以从480到960微秒)。
(5)数据线拉到高电平“1”。
(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。
据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。
(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。
(8)将数据线再次拉高到高电平“1”后结束。
DS18B20的读时序:
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。
DS18B20在完成一个读时序过程,至少需要60us才能完成。
(1)将数据线拉高“1”。
(2)延时2微秒。
(3)将数据线拉低“0”。
(4)延时15微秒。
(5)将数据线拉高“1”。
(6)延时15微秒。
(7)读数据线的状态得到1个状态位,并进行数据处理。
(8)延时30微秒。
DS18B20的写时序:
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。
(1)数据线先置低电平“0”。
(2)延时确定的时间为15微秒。
(3)按从低位到高位的顺序发送字节(一次只发送一位)。
(4)延时时间为45微秒。
(5)将数据线拉到高电平。
(6)重复上
(1)到(6)的操作直到所有的字节全部发送完为止。
(7)最后将数据线拉高。
第3章系统硬件电路设计
3.1电路原理
一、jp1与c3、与c4三个元器件组成数字温度计的电源部分,jp1的两个插孔连接电源的零线与火线,c3与c4起到滤波作用,vcc端连接在单片机40脚上,可以说这一部分是数字温度计的血脉。
二、Y1与c1、c2给单片机提供晶振信号,这一部分可以说是单片机的心脏。
三、最重要的一部分是DS18B20,它此它的连接方式是外接电源方式。
四、p0口是数据口,连接数码管。
五、四支三极管为数码管提供驱动。
六、复位电路,s3为复位开关。
七、蜂鸣器电路,三极管起到开关的作用。
八、显示电路,p0口是数据口连接数码管的段码,数码管采用共阳连接,p2口是控制线。
3.2电路原材料清单
序号
名称
型号
单位
数量
备注
1
电阻
1KΩ
支
5
2
电阻
200Ω
支
8
3
传感器
DS18B20
支
1
4
电阻
4.7KΩ
支
2
5
电阻
5.1KΩ
支
1
6
电阻
10KΩ
支
1
7
晶振
12MHz
支
1
8
普通电容
30pF
支
2
9
电解电容
100uF/16V
支
1
10
电解电容
470uF/25V
支
1
11
普通电容
0.1uF
支
1
12
三极管
8550
支
4
13
三极管
9013
支
1
14
蜂鸣器
支
1
15
数码管
SM410564
支
1
16
单片机
AT89C51
支
1
3.3使用工具及仪表清单
序号
名称
型号
单位
数量
备注
1
万用表
块
1
2
內热式电烙铁
1
3
焊锡丝
若干
4
直流稳压电源
台
1
5
编程烧写器
台
1
6
导线
若干
第4章系统软件设计
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。
4.1流程图
图7主程序流程图图8读温度流程图
4.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图8示
图9温度转换流程图
4.3温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如上图,图9所示
4.4计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图10所示。
图10 计算温度流程图 图11 显示数据刷新流程图
4.5数字温度计程序清单
//初始化子程序
#indclue
#defineucharunsignedchar
#defineuintunsignedint
sbitP1.3=P1^1
uchardisbuf[4];
ucharcodetab[]={0xc0,0xf9,0xa4,0xbo,0x99,0x92,0x82,oxf8,0x80,0x90,0xff,0xbf};
ucharcodextab={0x7f,0xbf,0xdf,0xef};//子码表
chartempmax=6C;//110度的十六进制为6C
chartempmin=1C;//30的十六进制为1C
//延时子程序、延时1ms
voidmdelay(uintm)
{uchari;
for(;m>0;m--)
for(i=124;i>0;i--);
}
//延时子程序15微秒
voiddelay(uchark)
{do{_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}while(k--);
}
//单总线的复位,器件不存在输出1器件正常输出0
bitreset()
{bitF;
P1.3=1;
_nop_();
_nop_();
P1.3=0;
delay(64);
P1.3=1;
delay
(1);
delay(16);//等待结束脉冲
if(p1.3==1)
{delay(15);
P1.3=1;
F=1;
}
else
{delay(15);
F=0:
}return(F);//应答信号返回
}
//从单总线送出1B、输入要写入的字节
voidwrite(ucharx)
{birR;
uchari;
for(i=8;i>0;i--)//写字节、1位一各时序
{R=x&0x01;
if(R)
{P1.3=0;//降低P1.3平开始转换脉冲
_nop_();
_nop_();
P1.3=1;
delay(8);
}
else
{P1.3=1;
_nop_();
P1.3=0;
delay(8);
}
x>>1;
}
}
//从单总线读1B子程序
read()
{uchart,i,v;
for(i=8;i>0;i--)
{p1.3=1;
_nop_();
P1.3=0;//降低P1.3电平开始脉冲
delay
(1);
P1.3=1;//拉高P1.3脉冲
delay(3);//等待复位脉冲
t=P1.3;
P1.3=1;
if(t==1)
{v|=0x80;
v=v>>1;
}else{v>>1;}
}return(v);
}
//从DS18B20读取十六进制温度值返回未处理的16进制温度值
uintreadtemp()
{floatt;
bitflag;
ucharc[2];
flag=reset();
while(flag);
write(0xcc);//跳
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 温度计 毕业论文