温度计.docx
- 文档编号:10808438
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:18
- 大小:116.22KB
温度计.docx
《温度计.docx》由会员分享,可在线阅读,更多相关《温度计.docx(18页珍藏版)》请在冰豆网上搜索。
温度计
数字温度计
1总体设计方案
进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
2总体设计框图
温度计电路设计总体设计方框图如图1所示,控制器采用单片机80C196,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示。
图1 总体设计方框图
2.1温度传感器
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
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温度转换时间表
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与单片机的接口电路
2.2DS18B20温度传感器与单片机的接口电路
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式,如图4所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
采用寄生电源供电方式时VDD端接地。
由于单线制只有一根线,因此发送接口必须是三态的。
2.3系统整体硬件电路图
3系统软件算法分析
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。
3.1主程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度,其程序流程见图7所示。
图7主程序流程图图8读温度流程图
3.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图8示
图9温度转换流程图
3.3温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如上图,图9所示
3.4计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图10所示。
图10 计算温度流程图 图11 显示数据刷新流程图
3.5显示数据刷新子程序
显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。
程序流程图如图11。
3.6程序
EXEQU26H
ELEQU26H
EHEQU27H
XIAOEQU28H
ZHENG1EQU2AH
ZHENG2EQU2CH
ORG2080H
MAIN:
CLRBIOPORT1
LDBHSO_COMMAND,#20H
ADDBHSO_TIME,T1,#03H
NOP
NOP
LDBHSO_COMMAND,#21H
ADDBHSO_TIME,T1,#0003H
NOP
NOP
LDBHSO_COMMAND,#22H
ADDBHSO_TIME,T1,#0003H
MAIN1:
LCALLTEMPCONV
LCALLDELAY8
LCALLRDTEMP
LCALLDISPLAY
LJMPMAIN1
RESET:
ORBIOPORT2,#80H
LCALLDELAY1
ANDBIOPORT2,#7FH
LCALLDELAY2
ORBIOPORT2,#80H
LCALLDELAY3
RETEMP:
JBCIOPORT2,7,RESETEND
SJMPRETEMP
RESETEND:
NOP
RET
TEMPWRITE:
LDBAH,#8
WRITE:
SHRBAL,#1
JCW1
W0:
ANDBIOPORT2,#7FH
LCALLDELAY3
ORBIOPORT2,#80H
LCALLDELAY4
SJMPTEMPEND
W1:
ANDBIOPORT2,#7FH
LCALLDELAY6
ORBIOPORT2,#80H
LCALLDELAY3
TEMPEND:
DJNZAH,WRITE
RET
TEMPCONV:
LCALLRESET
LCALLDELAY5
LDBAL,#0CCH
LCALLTEMPWRITE
LDBAL,#44H
LCALLTEMPWRITE
RET
;
TEMPREAD:
LDBBH,#0
LDBBL,#8
TEMPREAD3:
ANDBIOPORT2,#7FH
LCALLDELAY6
ORBIOPORT2,#80H
LCALLDELAY7
JBSIOPORT2,7,TEMPREAD1
ORBBH,#80H
LJMPTEMPREAD2
TEMPREAD1:
ANDBBH,#7FH
TEMPREAD2:
SHRBBH,#1
DJNZBL,TEMPREAD3
RET
RDTEMP:
LCALLRESET
LCALLDELAY5
LDBAL,#0CCH
LCALLTEMPWRITE
LDBAL,#0BEH
LCALLTEMPWRITE
LCALLTEMPREAD
STBBH,DL
LCALLTEMPREAD
STBBH,DH
STBDL,EL
ANDBEL,#0FH
CLRBXIAO
JBSEL,3,XIAO3
SJMPEL2
XIAO3:
LDBXIAO,#5
EL2:
LDBXIAO,#0
ZHENG:
SHRDX,#4
CLR24H
CLRZHENG1
CLRZHENG2
DIVUBDL,#100
LDB24H,DH
DIVUB24H,#10
LDBZHENG1,25H
LDBZHENG2,24H
RET
DISPLAY:
LDBIOPORT1,TAB[XIAO]
LDBHSO_COMMAND,#00H
ADDBHSO_TIME,#0003H
NOP
NOP
LDBIOPORT1,TAB1[ZHENG1]
LDBHSO_COMMAND,#01H
ADDBHSO_TIME,#0003H
NOP
NOP
LDBIOPORT1,TAB[ZHENG2]
LDBHSO_COMMAND,#02H
ADDBHSO_TIME,#0003H
NOP
NOP
RET
TAB:
DCB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H
TAB1:
DCB0FDH,61H,0DBH,0F3H,67H,0B7H,0BFH,0E1H,0FFH,0F7H
DELAY1:
LDB60H,#10
H1:
NOP
NOP
DJNZ60H,H1
RET
;
DELAY2:
LDB60H,#150;625US
H2:
NOP
NOP
NOP
DJNZ60H,H2
RET
;
DELAY3:
LDB60H,#18;75US
H3:
NOP
NOP
DJNZ60H,H3
RET
;
DELAY4:
LDB60H,#5;20US
H4:
NOP
NOP
DJNZ60H,H4
RET
;
DELAY5:
LDB60H,#200;100US
H5:
NOP
NOP
NOP
DJNZ60H,H5
RET
;
DELAY6:
LDB60H,#2;10US
H6:
NOP
NOP
DJNZ60H,H6
RET
;
DELAY7:
LDB60H,#10
H7:
NOP
NOP
DJNZ60H,H7
RET
;
DELAY8:
LDB60H,#35
H8:
NOP
NOP
DJNZ60H,H8
RET
END
4总结与体会
单片机课程设计又给了我们一次动手实践的机会,经过一周左右的时间在实验室里研究奋斗,不管最终结果如何,重要的是过程。
在实验室的几天里,我们小组成员分工明确,共同研究,集思广益,努力做出满意的结果。
但在做的过程中还是遇到了很多不可逾越的困难,比如说用万用表准确的画出电路原理图就是一项很费时费力的过程,有时还难免画错和画的不完整。
然而原理图是实验的根本,不懂得实验的原理就没法进行实验的下一步,终究在我们的共同努力下,画出了一份可靠的原理图。
懂得原理后,下一步就是编程调试,这个过程是整个课程设计的关键,它的成败决定了课设的成败。
正如每件事都会是那么一帆风顺一样,调试中出现了很多困难,比如说数码管完全没有反应,程序出现错误,单步运行进入死循环。
针对出现的各种情况,我们着重把握对程序的修改,将我们所学所理解的全部用上,最后认为程序本身没有问题,可是最后还是达不到老师的要求。
眼看着实验室里其他组的同学们都一个一个的验收离去,我们心如刀割,焦灼难耐,不知所措,脑中思绪全乱,整个课程设计的进程也被卡在了这里。
为此,我们寻求其他班做温度计的同僚们的帮助,然而他们也出现跟我们同样的情况,调试也不顺利。
虽然最后我们没能有个理想的结局,但是整个课程设计的过程和经历让我们对单片机在课堂上学习的东西有了更深刻的了解,同时也让我们看到了自身的不足。
能看到自身的不足也是一种学习的过程,相信将来我们会认真学习研究单片机的内容,锻炼自己将理论应用于实际,只有这样我们才能给单片机的学习划上圆满的句号,才能让自己满意,让老师满意。
整个课设的过程是学习的过程,是实践的过程,有喜有忧,有得有失,更重要的是知道自己学习的怎么样,了解了自己的实力,自己的缺陷在哪里,从而给以后的学习带来教训和经验。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度计
![提示](https://static.bdocx.com/images/bang_tan.gif)