通过观察表4-2可以发现,一个十进制值与二进制值间有很明显的关系,就是把二进制的高字节的低半字节和低字节的高半字节组成一字节,这个字节二进制值化为十进制值后,就是温度值的百、十、个位值,而剩下的低字节的低半字节化成十进制后,就是温度值的小数部分。因为小数部分是半字节,所以二进制值范围是0-F,转换成十进制小数值就是0,0625的倍数(0-15倍)。这样需要4位的数码管来显示小数部分。实际应用不必有这么高的精度,采用1位数码管来显示小数,可以精确到0.1℃.
表3就是二进制与十进制的近似对应关系表。
小数部分二进制值 0 1 2 3 4 5 6 7 8 9 A B C D E F
十进制 0 0 1 1 2 3 3 4 5 5 6 6 7 8 8 9
表3 小数部分二进制和十进制的近似对应关系表
第 四 章 调试及性能分析
系统的调试以程序调试为主。
硬件调试比较简单,首先检查电路的焊接是否正确,然后可用万用表测试或通电检测。
软件调试可以先编写显示程序并进行硬件的正确性检测,然后分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和显示数据刷新子程序等的编程和调试。
由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。本程序采用单片机汇编编写,用Waver 3.2编译器编程调试。
软件调试到能显示温度值,而且在有温度变化时(例如用手去接触)显示温度能变化,就基本完成。
性能测试可用制作的温度计和已有的成品温度计同时进行测量比较。由于DS18B20的精度很高,所以误差指标可以限制在+0.5℃以内。
另外,-55~~+125 ℃的测温范围使得该温度计完全适合一般的应用场合,其低电压供电性能可做成用电池供电的手持电子温度计。
DS18B20温度计还可以在高低温报警、远距离多点测温控制等方面进行应用开发,但在实际设计中应注意以下问题:
DS18B20工作时电流高达1.5mA,总线上挂接点数较多且同时进行转换时要考虑增加总线驱动,可用单片机端口在温度转换时导通一个MOSFET供电。
连接DS18B20的总线电缆是有长度限制的,因此在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配等问题。
在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号。一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。
第 五 章 程序清单
DS18B20采用4位LED共阳显示器显示测温值,显示精度为0.1 ℃,测温范围为-55~~+125 ℃,用AT89C2051单片机,12MHz晶振
TIMEL EQU 0E0H
TIMEN EQU 0B1H
TEMPHEAD EQU 36H
BITST DATA 20H
TIME1SOK BIT BITST.1
TEMPONEOK BIT BITST.2
TEMPL DATA 26H
TEMPH DATA 27H
TEMPHC DATA 28H
TEMPLC DATA 29H
TEMPDIN DIT P3.7
ORG 0000H
LJMP START
ORG 00BH
LJMP T0IT
ORG 100H
START: MOV SP , #60H
CLSMEM: MOV R0 , #20H
MOV R1 , #60H
CLSMEM1: MOV @R0,#00H
INC R0
DJNZ R1 , CLSMEM1
MOV TMOD ,#00100001B
MOV TH0, #TIMEL
MOV TL0, #TIMEH
SJMP INIT
ERROR: NOP
LJMP START
NOP
INIT: NOP
SETB ET0
SETB TR0
SETB EA
MOV PSW, #00H
CLR TEMPONEOK
LJMP MAIN
T0IT: PUSH PSW
MOV PSW,#10H
MOV TH0,#TIM
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 4/9/9
DS18B20数字温度计的设计(四)由毕业论文网(www.huoyuandh.com)会员上传。