3.2.2 温度数据的读取

转换完成后的温度数据由低8位和高8位组成,且低8位在前,需将其转换为1个16位的数,高5位代表符号,低11位是温度值。11位的温度值中高7位是温度整数,低4位是温度小数,如果是负温度,则从温度寄存器读出的是补码,应将补码取反加1得到原码。

需要注意,单片机发出读取温度寄存器命令后,DS18B20会返回9组数据,其中第一组数据的低4位代表温度的小数值,因此温度小数部分的精度为1/16=0.0625。另外程序中应增加延时函数,确保温度转换完成。

3.3 nRF2401程序设计要点

温度转换完成后,由nRF2401将数据发送给上位机,并接收上位机发出的指令,实现双向通信。

3.3.1 初始化配置与数据收发

nRF2401初始化配置包括设置待机模式、CRC校验、收发完成后中断响应、选择射频通道、设置数据传输率和发射功率。

nRF2401的CE管脚为0时处于待机模式,为1时处于收发模式,收发模式有ShockBurst模式和直接模式两种,本文选择速度较快、功耗较低的ShockBurst模式。

发送过程为:设置Config寄存器使器件处于发送模式,当测温节点有数据需要发送时,温度和地址数据送到nRF2401中,单片机将CE管脚置高,激活ShockBurst发送模式,完成数据打包并高速发送,然后等待中断。

接收过程为:设置Config寄存器使器件处于接收模式,单片机将CE管脚置高,激活ShockBurst接收模式,延时130μs后检测空中信息,若接收到有效的数据包,则发送确认信号,产生中断,同时读出有效数据并发送给单片机,单片机通过串口将数据发给PC机。

基于DS18B20和nRF2401的库区测温网络无线传输系统