图5 DS18B20封装
DS18B20的读写时序和测温原理与DS18B20相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。 DS18B20封装如图5所示。温度对低温度系数晶振的振荡频率影响很有限,由它产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的先前设定的值减到0的时候,寄存器的值就会整加1,计数器1的预先设定的置将会重新载入,低温度系数晶振产生的脉冲信号重新被计数器1计数,像这样循环下去直到计数器2的计数变为0为止,则温度寄存器的值累加将会停止,则温度寄存器中的值就是要检测的温度。图5中斜率累加器用于补偿、修正测温过程中的非线性,其输出用来修正计数器1的预置值[3]。
DS18B20的一般操作过程:
(1)初始化;
(2)跳过ROM(命令:CCH);
(3)温度变换(命令:44H);
(4)读暂存存储器(命令:BEH);
注:每次读取温度都必然经过上面四个过程。
3.3.2 DS18B20的温度存储方式
DS18B20是用12位存储温度,最高位为符号位,下表为它的温度存储方式:
2^3 2^2 2^1 2^0 2^-1 2^-2 2^-3 2^-4
LSBYTE Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
S S S S S 2^6 2^5 2^4
MSBYTE Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8
表1 DS18B20温度存储地址分配
这是12位转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度[4]。
3.3.3 温度传感器模块组成
本模块由DS18B20作为温度传感器,而AT89C51作为处理器,配以温度显示作为温度输出单元。整个系统结构简单,功能完善。
系统工作原理如下:DS18B20进行现场温度探测,将测量数据送入控制中心AT89C51的P3.7口,经过AT89C51处理后输出显示温度值,并与设定上下限温度值进行比较,若高于上限值或低于下限值则控制电机转速进行相应的调整。
3.4 显示电路
显示电路如下图6。
图6 显示电路
本设计中显示模块儿采用的是5641BS显示,它有低功耗,电路构成简单,使用方便等特点,符合设计要求,它主要用来显示风扇档位和室内温度[5]。当风扇处于手动状态下时,显示电路用来显示档位。当风扇处于自动控制状态下时,显示电路用来显示室内温度。它由三极管来驱动,电路简单,功耗低。本设计中采用8段数码管动态显示,所有位断码线阳极并在一起,采用共阳的接法,由单片机的一个8位I\O口控制,分时选通。它利用视觉暂停效应,使得人们看上去所有位都是一起亮。
3.5 键盘输入电路 AT89C51单片机的电风扇控制系统设计+流程图+仿真图(3):http://www.youerw.com/zidonghua/lunwen_1783.html