当前位置:首页 > 基于51单片机的数字温度计设计
基于51单片机的数字温度计设计 一.课程设计题目
温度测量程序设计(二) 二.课程设计目的和要求
1、目的:通过对做的设计任务的实现,起到串起几年来所学的模数技术、传感器技术、单片机技术及智能仪器等知识,通过理论联系实际,从题目分析、电路设计调试、程序编制调试到传感器的标定等这一完整的实验过程,培养学生正确的设计思想,使学生充分发挥主观能动性,去独立解决实际问题,以达到提升学生的综合能力、动手能力、文献资料查阅能力的作用,为毕业设计和以后工作打下一个良好的基础。
2、要求:利用数字温度传感器DS18B20测量温度信号,计算后在LED数码管上显示相应的温度值。其温度测量范围为-55度~125度,精确到0.5度。 三.硬件电路设计及描述 1、硬件框图与说明: 图1 硬件总体设计框图
控制器采用单片机8031,温度传感器采用DS18B20,用6位共阴极LED数码管通过8279实现温度显示。 1.1主控制器:
8031,P1口P3口对用户开放,时钟频率为6.0MHz,程序存储器和数据存储器统一编址,最多可达64k,其中4000H-5FFFH为用户实验程序存储区,供用户下载实验程序。所以在编写程序的时候,程序的起始地址为4000H。 1.2 LED显示模块:
由6位共阴极LED数码管、位驱动电路、端输入电路组成,采用动态扫描的方式显示。 其中该模块包括了数码管6个、75451位驱动器3个、74LS244段驱动器一个、74LS138一个、8279一个,其具体接线如图4所示。 1.3 温度传感器
1.3.1 DS18B20概述:
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。 DS18B20的性能特点如下:
独特的单线接口仅需要一个端口引脚进行通信;
多个DS18B20可以并联在惟一的三线上,实现多点组网功能; 无须外部器件;
可通过数据线供电,电压范围为3.0~5.5V; 零待机功耗;
温度以9或12位数字; 用户可定义报警设置;
报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; 1.3.2 DS18B20的内部结构:
DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2所示。 图2 DS18B20内部结构
64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为9字节的存储器,结构如图3所示。
图3 DS18B20字节定义
其中1、2字节用来存放当前温度,1为低8位,2为高8位。字节3、4用来预置报警温度的上下限,字节5用于配置寄存器,用于确定温度数据位数,字节6、7、8均为保留字节,字节9存放前8个字节循环冗余校验码。(CRC) 1.3.3 DS18B20的两个表格:
由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。
表1 DS18B20温度转换时间表 R1 R0 温度位数 最大转换时间 0 0 9位 93.75ms 0 1 10位 187.5ms 1 0 11位 375ms 1 1 12位 750ms
表2 一部分温度对应值表
温度/℃ 二进制表示 十六进制表示 +125 0000 0111 1101 0000 07D0H +85 0000 0101 0101 0000 0550H
+25.0625 0000 0001 1001 0000 0191H +10.125 0000 0000 1010 0001 00A2H +0.5 0000 0000 0000 0010 0008H 0 0000 0000 0000 1000 0000H -0.5 1111 1111 1111 0000 FFF8H -10.125 1111 1111 0101 1110 FF5EH -25.0625 1111 1110 0110 1111 FE6FH -55 1111 1100 1001 0000 FC90H 1.3.4 DS18B20的测温原理
DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。 另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉
冲)→发ROM功能命令→发存储器操作命令→处理数据。DS18B20温度传感器与单片机的接口为1接地,2接P1.0口,3接4.7K上拉电阻, 2、电路原理图与说明
图4 总体电路原理图
说明:DS18B20的2与单片机P1.0口相连,1接地,3接4.7K上拉电阻。单片机与LED显示模块相连(其中该模块包括了数码管6个、75451位驱动器3个、74LS244段驱动器一个、74LS138一个、8279一个,)。各个芯片如图所示,其接线是按照缔造者电子电气技术综合实验操作平台指导书提供的原理图接线。 四.软件设计流程及描述 1、主要模块流程图
2、源程序代码
;数字温度传感器 TEMP EQU 30H TEMP1 EQU 40H TEMP2 EQU 41H ORG 4000H LJMP START ORG 4100H
START: LCALL RESET ;ds18b20复位 MOV A,#0CCH ;发SKIP ROM命令 LCALL WRITE
MOV A,#44H ;发开始温度转换命令 LCALL WRITE LCALL DLY1S ;延时
LCALL RESET ; ds18b20复位 MOV A,#0CCH ;发SKIP ROM命令 LCALL WRITE
MOV A,#0BEH ;发读存储器命令 LCALL WRITE
LCALL READ ;读出温度值1
MOV TEMP2,TEMP ;温度低8位存放41H LCALL READ ;读出温度值2
MOV TEMP1,TEMP ;温度高8位存放在40H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;开始数值转换 MOV A,41H RR A RR A
RR A ;把D3位右移到D0
ANL A,#01H ;除D0位,其他全部置零 MOV B,#5
MUL AB ;由于原D3位权值为0.5,故扩大10倍乘5后放十分位 MOV 42H,A ;十分位转换结束,送42H保存 NOP ;设置断点,方便修改和查阅 MOV A, 40H
ANL A, #0FH ;把40H中高四位置零 RL A RL A RL A
RL A ;40H左移4位
MOV 40H, A ;40H中低四位移到高四位,低四位为零 MOV A, 41H
ANL A, #0F0H ;把41H中小数点后的值全部置零 RR A RR A RR A
RR A ;41H右移4位
MOV 41H, A ; 把41H中高四位移到低四位,高四位置零 MOV A, 40H
ORL A, 41H ;组成新的带符号无小数点的八位数字温度,最高位为符号位
MOV 43H,A ;暂存温度值,原41H的高4位做43H的低4位,原40H的低4位做43H的高4位
ANL A,#80H ; 除最高位有效,其他置零 RR A RR A RR A RR A
MOV 44H,A ;判断温度值的符号位,把结果放44H,44H中要只有0和8,0为正,8为负 NOP
MOV A,43H ;恢复带符号八位无小数点温度 ANL A,#7FH ;屏蔽符号位 MOV B, #0AH
DIV AB ;无符号温度值除以10 MOV 40H, A ;商送40H暂存
MOV A, B ;余数通过A送41H保存 MOV 41H, A ;存个位十进制温度值 MOV A,40H
共分享92篇相关文档