图2.4 高速暂存RAM结构图
其中,前2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
暂存存储器的第5个字节是配置寄存器,可以通过相应的写命令进行配置,其内容如下: 0 R1 R0 1 1 1 1 1 1 MSB LSB
其中R0和R1是温度值分辨率位,可按表2.1进行配置。
表2.1 温度值分辨率配置表
最大转换时间
R1 0
R0 0
分辨率
(ms)
9位
93.75ms(tconv/8
)
183.50ms(tconv
0 1 1
1 0 1
10位
/4)
11位 12位
375ms(tconv /2) 750ms(tconv)
当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可通过单线接口读到该数据,读取时低位在前、高位在后,数据格式以0.0625℃/LSB形式表示。温度值格式如下: 低 23 22 21 20
高 S S S S S 26 25 24 2-1 2-2 2-3 2-4 MSB LSB
这是12位转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。格式中,S表示位。对应的温度计算:当符号位S=0时,表示测得的温度植为正值,直接将二进制位转换为十进制;当S=1时,表示测得的温度植为负值,先将补码变换为原码,再计算十
进制值。例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H.?
表2.2 部分温度的二进制数表示
温度 +125℃ +85℃ +25.0625℃ +10.125℃ +0.5℃ 0℃ -0.5℃ -10.125℃ -25.0625℃ -55℃
(3) DS18B20测温原理
DS18B20的 测温原理如图2.5所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门
数字输出(二进制)
数字输出(16进制)
07D0H 0550H 0191H 00A2H 0008H 0000H FFF8H FFE5H FF6FH FC90H
打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
图2.5 DS18B20测温原理图
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器 1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
在正常测温情况下,DS18B20的测温分辨力为0.5℃,可采用下述方法获得高分辨率的温度测量结果:首先用DS18B20提供的读暂存器指令(BEH)读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数部分Tz,然后再用BEH指令取计数器1的计数剩余值Cs和每度计数值CD。实际温度Ts可用式(2-1)计算:
Ts=(Tz-0.25℃)+(CD-Cs)/CD (2-1)
2.1.3 蜂鸣器的报警原理 (1)三极管驱动的蜂鸣器报警电路
图2.6 三极管驱动的蜂鸣器报警电路
压电式蜂鸣器约10mA的驱动电流,可以使用TTL系列集成电路7406或7407低电平驱动,这里我选用了一个三极管来做驱动。
P1.0接三极管输入端。当P1.0输出低电平时,三极管导通,压电式蜂鸣器两端获得的+5V电压而鸣叫:当P1.0输出高电平,三极管截止,蜂鸣器停止发音。
2.1.4 LCD1602显示原理 (1) LCD1602的控制原理:
1602液晶模块内部的控制器共有11条控制指令,如下表所示 表2.3 LCD1602控制指令 序号 指令 1 清显示 2 光标返回 3 置输入模式 4 显示开/关控制 5 光标或字符移位 6 置功能 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 * 0 0 0 0 0 0 0 1 I/D S 0 0 0 0 0 0 1 D C B 0 0 0 0 0 1 S/C R/L * * 0 0 0 0 1 DL N F * *