单总线数字温度计单片机课程设计.docx

上传人:b****2 文档编号:3031184 上传时间:2023-05-05 格式:DOCX 页数:14 大小:553.37KB
下载 相关 举报
单总线数字温度计单片机课程设计.docx_第1页
第1页 / 共14页
单总线数字温度计单片机课程设计.docx_第2页
第2页 / 共14页
单总线数字温度计单片机课程设计.docx_第3页
第3页 / 共14页
单总线数字温度计单片机课程设计.docx_第4页
第4页 / 共14页
单总线数字温度计单片机课程设计.docx_第5页
第5页 / 共14页
单总线数字温度计单片机课程设计.docx_第6页
第6页 / 共14页
单总线数字温度计单片机课程设计.docx_第7页
第7页 / 共14页
单总线数字温度计单片机课程设计.docx_第8页
第8页 / 共14页
单总线数字温度计单片机课程设计.docx_第9页
第9页 / 共14页
单总线数字温度计单片机课程设计.docx_第10页
第10页 / 共14页
单总线数字温度计单片机课程设计.docx_第11页
第11页 / 共14页
单总线数字温度计单片机课程设计.docx_第12页
第12页 / 共14页
单总线数字温度计单片机课程设计.docx_第13页
第13页 / 共14页
单总线数字温度计单片机课程设计.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单总线数字温度计单片机课程设计.docx

《单总线数字温度计单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单总线数字温度计单片机课程设计.docx(14页珍藏版)》请在冰点文库上搜索。

单总线数字温度计单片机课程设计.docx

单总线数字温度计单片机课程设计

单片机课程设计

DS1820单总线数字温度计

一统设计目的,用途,功能

1,目的:

.S1820温度传感器控制温度,熟悉芯片的使用,温度传感器的功能,实验电路板的焊接,数码显示管的使用,汇编语言的设计。

锻炼团队合作能力,动手设计能力以及发现问题并且解决问题的能力。

2,用途:

温度是工业控制中主要的被控参数之一。

随着电子技术和微型计算机的迅速发展,微机测量和控制技术得到了迅速的发展和广泛的应用。

单片机具有处理能强、运行速度快、功耗低等优点,应用在温度测量与控制方面,控制简单方便,测量范围广,精度较高。

3,功能.:

DS1820温度传感器温度的精确度高达0.1度,在许多工业控制中已经足够。

可以满足从-55摄氏度到+125摄氏度测量范围,在一秒内把温度转化成数字,测得的温度值的存储在两个八位的RAM中,单片机直接从中读出数据转换成十进制就是温度,使用方便。

从用途上讲,该单片机类似于温度计,但用途又不仅仅集限于温度计,由于蜂鸣器的使用,编写程序后,超过预设温度后,蜂鸣器发出蜂鸣声,为工业控制的安全保驾护航。

二试验原原理

DS1820单总线数字温度计引脚图

DS1820单总线数字温度计一般说明:

DS1820数字温度计提供9位温度读数,指示器件的温度信息经过单线接口送入DS1820或从DS1820送出因此从中央处理器到DS1820仅需连接一条

线和地读写和完成温度变换所需的电源可以由数据线本身提供而不需要外部电源因为每一个DS1820有唯一的系列号siliconserialnumber因此多个DS1820可以存在于同一条单线总线上这允许在许多不同的地方放置温度灵敏器件此性的应用范围包括HVAC环境控制建筑物设备或机械内的温度检测以及过程监视控制中的温度检测特性独特的单线接口只需1个接口引脚即可通信多点multidro能力使分布式温度检测应用得以简化不需要外部元件可用数据线供电不需备份电源

图1的方框图表示DS1820的主要部件DS1820有三个主要的数据部件164位激光laseredROM;2温度灵敏元件和3非易失性温度告警触发器TH和TL

64位激光ROM

每一DS1820包括一个唯一的64位长的ROM编码开绐的8位是单线产品系列编码

DS1820编码是10h接着的48位是唯一的系列号最后的8位是开始56位CRC见图564位ROM和ROM操作控制部分允许DS1820作为一个单线器件工作并循单线总线系统一节中所详述的单线协议直到ROM操作协议被满足DS1820控制分的功能是不可访问的此协议在ROM操作协议流程图图6中叙述单线总线主机必须首先操作五种ROM操作命令之一1ReadROM(读ROM),2)MatchROM(匹配ROM),3)SearchROM(搜索ROM),4)SkipROM(跳过ROM),或5)AlarmSearch告警搜索在成功地执行了ROM操作序列之后DS1820特定的功能便可访问然后总线上主机可提供六个存贮器和控制功能命令之一

  DS1820内部结构框图如图1所示。

  DS1820测温原理如图2所示。

图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。

高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。

计数器1和温度寄存器被预置在-55℃所对应的一个基数值。

计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。

图2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。

  在正常测温情况下,DS1820的测温分辩率为0.5℃以9位数据格式表示,其中最低有效位(LSB)由比较器进行0.25℃比较,当计数器1中的余值转化成温度后低于0.25℃时,清除温度寄存器的最低位(LSB),当计数器1中的余值转化成温度后高于0.25℃,置位温度寄存器的最低位(LSB),如-25.5℃对应的9位数据格式如下:

2提高DS1820测温精度的途径

2.1DS1820高精度测温的理论依据

  DS1820正常使用时的测温分辨率为0.5℃,这对于水轮发电机组轴瓦温度监测来讲略显不足,在对DS1820测温原理详细分析的基础上,我们采取直接读取DS1820内部暂存寄存器的方法,将DS1820的测温分辨率提高到0.1℃~0.01℃.

  DS1820内部暂存寄存器的分布如表1所示,其中第7字节存放的是当温度寄存器停止增值时计数器1的计数剩余值,第8字节存放的是每度所对应的计数值,这样,我们就可以通过下面的方法获得高分辨率的温度测量结果。

首先用DS1820提供的读暂存寄存器指令(BEH)读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度整数部分T整数,然后再用BEH指令读取计数器1的计数剩余值M剩余和每度计数值M每度,考虑到DS1820测量温度的整数部分以0.25℃、0.75℃为进位界限的关系,实际温度T实际可用下式计算得到:

  T实际=(T整数-0.25℃)+(M每度-M剩余)/M每度

三温度传感器ds1820的汇编程序

这是关于DS18B20的读写程序,数据脚P3.4,晶振12MHZ

温度传感器18B20汇编程序,采用器件默认的12位转化,最大转化时间750微秒

可以将检测到的温度直接显示到连接到AT89C2051的两个数码管上

显示温度00到99度,很准确哦~~无需校正!

ORG  0000H

;单片机内存分配申明!

TEMPER_L  EQU  29H  ;用于保存读出温度的低8位

TEMPER_H  EQU  28H  ;用于保存读出温度的高8位

FLAG1  EQU  38H  ;是否检测到DS1820标志位

A_BIT  EQU  20H  ;数码管个位数存放内存位置

B_BIT  EQU  21H  ;数码管十位数存放内存位置

MAIN:

  LCALL  GET_TEMPER;调用读温度子程序

;显示范围00到99度,显示精度为1度

;因为12位转化时每一位的精度为0.0625度,我们不要求显示小数所以可以抛弃29H的低4位

;将28H中的低4位移入29H中的高4位,这样获得一个新字节,这个字节就是实际测量获得的温度

;这个转化温度的方法非常简洁,无需乘于0.0625系数

  MOV  A,29H

  MOV  C,40  ;将28H中的最低位移入C

  RRC  A

  MOV  C,41H

  RRC  A

  MOV  C,42H

  RRC  A

  MOV  C,43H

  RRC  A

  MOV  29H,A

  LCALL  DISPLAY  ;调用数码管显示子程序

  AJMP  MAIN

;这是DS18B20复位初始化子程序

INIT_1820:

SETB  P3.4

  NOP

  CLR  P3.4

;主机发出延时537微秒的复位低脉冲

  MOV  R1,#3

TSR1:

  MOV  R0,#107

  DJNZ  R0,$

  DJNZ  R1,TSR1

  SETB  P3.4  ;然后拉高数据线

  NOP

  NOP

  NOP

  MOV  R0,#25H

TSR2:

  JNB  P3.4,TSR3;等待DS1820回应

  DJNZ  R0,TSR2  ;延时

  LJMP  TSR4  

TSR3:

  SETB  FLAG1  ;置标志位,表示DS1820存在

  LJMP  TSR5

TSR4:

  CLR  FLAG1  ;清标志位,表示DS1820不存在

  LJMP  TSR7

TSR5:

  MOV  R0,#117

TSR6:

  DJNZ  R0,TSR6  ;时序要求延时一段时间

TSR7:

  SETB  P3.4

  RET

;读出转换后的温度值

GET_TEMPER:

SETB  P3.4

  LCALL  INIT_1820;先复位DS1820

  JB  FLAG1,TSS2

  RET    ;判断DS1820是否存在?

若DS1820不存在则返回

TSS2:

  MOV  A,#0CCH  ;跳过ROM匹配

  LCALL  WRITE_1820

  MOV  A,#44H  ;发出温度转换命令

  LCALL  WRITE_1820

;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒

  LCALL  DISPLAY

  LCALL  INIT_1820;准备读温度前先复位

  MOV  A,#0CCH  ;跳过ROM匹配

  LCALL  WRITE_1820

  MOV  A,#0BEH  ;发出读温度命令

  LCALL  WRITE_1820

  LCALL  READ_18200;将读出的温度数据保存到35H/36H

  RET

;写DS18B20的子程序(有具体的时序要求)

WRITE_1820:

MOV  R2,#8  ;一共8位数据

  CLR  C

WR1:

  CLR  P3.4

  MOV  R3,#6

  DJNZ  R3,$

  RRC  A

  MOV  P3.4,C

  MOV  R3,#23

  DJNZ  R3,$

  SETB  P3.4

  NOP

  DJNZ  R2,WR1

  SETB  P3.4

  RET

;读DS1820的程序,从DS1820中读出两个字节的温度数据

READ_18200:

MOV  R4,#2  ;将温度高位和低位从DS1820中读出

  MOV  R1,#29H  ;低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)

RE00:

  MOV  R2,#8  ;数据一共有8位

RE01:

  CLR  C

  SETB  P3.4

  NOP

  NOP

  CLR  P3.4

  NOP

  NOP

  NOP

  SETB  P3.4

  MOV  R3,#9

RE10:

  DJNZ  R3,RE10

  MOV  C,P3.4

  MOV  R3,#23

RE20:

  DJNZ  R3,RE20

  RRC  A

  DJNZ  R2,RE01

  MOV  @R1,A

  DEC  R1

  DJNZ  R4,RE00

  RET

;显示子程序

DISPLAY:

  MOV  A,29H  ;将29H中的十六进制数转换成10进制

  MOV  B,#10  ;10进制/10=10进制

  DIV  AB

  MOV  B_BIT,A  ;十位在a

  MOV  A_BIT,B  ;个位在b

  MOV  DPTR,#NUMTAB  ;指定查表启始地址

  MOV  R0,#4

DPL1:

  MOV  R1,#250  ;显示1000次

DPLOP:

  MOV  A,A_BIT  ;取个位数

  MOVC  A,@A+DPTR  ;查个位数的7段代码

  MOV  P1,A  ;送出个位的7段代码

  CLR  P3.7  ;开个位显示

  ACALL  D1MS  ;显示1ms

  SETB  P3.7

  MOV  A,B_BIT  ;取十位数

  MOVC  A,@A+DPTR  ;查十位数的7段代码

  MOV  P1,A  ;送出十位的7段代码

  CLR  P3.5  ;开十位显示

  ACALL  D1MS  ;显示1ms

  SETB  P3.5

  DJNZ  R1,DPLOP  ;250次没完循环

  DJNZ  R0,DPL1  ;4个250次没完循环

  RET

;1MS延时(按12MHZ算)

D1MS:

  MOV  R7,#80

  DJNZ  R7,$

  RET

;7段数码管0~9数字的共阳显示代码

NUMTAB:

  DB081H,0CFH,092H,086H,0CCH,0A4H,0A0H,08FH,080H,084H

  END

温度控制流程图

四:

总结及体会

在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。

这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。

经过一个学期的学习和实践,我们终于做出了这个项目。

由于刚接触单片机,所以从选择硬件到程序编写调试我们遇到了许多的困难,而且理论和实际有一定的差距,但我们通过交流和向他人请教,最终把所有的问题都解决了。

在操作的过程中,我们感到了自己的动手能力上有不足,但我们增强了自己的动手能力。

更重要的是,在实验中我们不抛弃,不放弃,遇到困难从来不灰心,最终享受到了成功的喜悦。

只要抱着这种精神,我们相信以后的学习生活会做得更好!

五:

参考文献

《单片机课程设计》`《单片微型计算机原理及应用》

《DS1820中文资料》

 

 

 

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2