基于DS18B20和89C2051组成的温度显示电路

描述

  由单总线数字温度传感器DS18B20和89C2051组成的经济型家庭用测温系统。其温度显示为“-XXC”,精度±0.5℃,测温范围-55℃~+125℃。下面详细分析系统构成及汇编语言对DS18B20操作时序的实现方法。图1为本系统电路图,图中DSP为四只数码LED显示器的简化。

  1.DS18B20的初始化与读写程序

  DS18B20是“一总线”接口温度传感器,测温范围为-55℃~+125℃,在-10℃~+85℃范围内精度为±0.5℃。DS18B20可以程序设定9~12位的分辨率,在出厂时被设置为12位的分辨率。通过和单片机系统的结合,可以构建经济的测温系统。DS18B20的管脚排列如图2所示,DQ为数字信号输入,输出端,与单片机系统接口时可通过5.1kΩ电阻上拉;GND为电源地;VDD为外接供电电源输入端。

  DS18B20内含64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器等。可采取直接读取DS18B20内部暂存寄存器的方法,通过四舍五入显示其整数温度值。DS18B20内部暂存寄存器包含九个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。以12位转化为例:温度信息用16位符号扩展的二进制补码形式提供,以0.0625℃/LSB形式表达,其中S为符号位,对应的换算关系参见附表。

  由于DS18B20与微处理器间采用单总线数据传送,因此,在对DS18B20进行读写编程时,必须严格遵守读写时序,否则将无法读取测量结果。

  DS18820的初始化程序如下。当程序检测到DS18820不存在的时候会设置不存在标志,以防止系统锁死。

  INIT_1820:SETBDS18B20;DS18B20数据线设置为P3.4NOPCLRDS18B20;resetDSMOVR0,#250;发延时500μs的复位低脉冲DJNZR0,SSETBDS18B20:拉高数据线MOVR0,#10;等待20μsDJNZR0,SMOVR0,#37TSR2:JNBDS18B20,TSR3;在150μs内等待DS18B20回应DJNZR0,TSR2;延时LJMPTSR4TSR3:SETBFLAG1;置标志位,DS1820存在LJMPTSR5TSR4:CLRFLAG1;清标志位,DS1820不存在AJMPTSR7TSR5:MOVR0,#118DJNZR0,S;时序要求延时240μsTSR7:SETBDS18B20RETDS18B20的读写程序(略)。

  2.数据转换与显示程序设计

  由于不要求显示小数,所以可以舍弃温度寄存器0(TEMPER_L)的低4位,而将温度寄存器1(TEMPER_H)中的低4位移入TEMPER_L中的高4位,组成的新字节,即实际测得的温度。在实际应用中,因为涉及到零度以下温度的显示,需要进行一定的数据转换。

  在显示子程序中,因为百位和负号“-”要区别显示,相应流程如图3所示。

  3.系统制作

  本系统四位一体的0.5英寸七段显示器是共阳型的。其管脚排列见图4。AT89C2051的P1.0和P1.1口是模拟比较器的输入端,内部无上拉电阻,所以在外部接10kΩ,上拉电阻后,接入CD4069作驱动,每段电流被限制在1mA左右,每段显示时间为1ms,温度刷新周期为1分钟;晶振选择12MHz的,每条指令周期正好为1μs的倍数。装饰面板选用家装剩下的“正泰CHNT”86型单键按钮面板,将按钮拆除,正好成显示窗口。系统采用+5V直流电源。本人正好有现成的三基DC5V微型开关电源,将其嵌入在86开关框中,元件布局及面板效果参见图5、图6。

  图5左上端的引出线为外接DS18B20导线,以便于进行高低温调试试验,调试结束后可以直接焊接在申,路板上。焊接完成后,不需要进行调试就能直接显示温度数据。

  4.其他

  在不改动系统硬件的基础上,通过计算方法的调整,DS18B20的测温分辨率可以提高到±0.1℃以上,由四位LED显示成“×××。×”格式。在本系统中,AT89C2051的P3.5、P3.7口未使用,可以调整程序增加控制继电器或门铃等应用。本人利用P3.5在调试时驱动一个LED发光管。实际可改作它用。

 

温度显示电路
 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
侯毓升 2013-03-29
0 回复 举报
不错 收起回复
jxw0017 2011-03-07
0 回复 举报
你好,我是新来的,你设计的系统基本原理能懂,讲解很清楚!但是又点校问题,网上收索了好多89C2051的资料都没有详细的讲解怎么编程及烧程序,如果您知道可以把资料分享下吗?非常感谢! 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分