由单总线数字温度传感器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发光管。实际可改作它用。
全部0条评论
快来发表一下你的评论吧 !