表4.1 无线节点通信协议
内容 大小 取值
地址 7位 00H-7FH
奇验位 1位 0或1
湿度数据 2字节 0000H-FFFFH
温度数据 2字节 0000H-FFFFH
校验和 1字节 00H-FFH
为了和发射机可靠通信,防止外界的干扰出现错误,在发送或接收完数据后采用校验和方式进行校验,表4.1中的校验和为数据包中除了校验和外,其它所有字节的总和,当校验和大于FF时则采用其补码作为校验和。
2)串口通信协议
串口通信协议是在单片机和上位机之间制定的,它的内容是在无线节点传送的数据前插入一个起始符“255”,协议具体内容如表4.2所示。
表4.2 串口通信协议
内容 大小 取值
起始符 1字节 FFH
地址 7位 00H-7FH
奇校验 1位 0或1
湿度数据 2字节 0000H-FFFFH
温度数据 2字节 0000H-FFFFH
例如在串口调试助手下以十优尔进制的方式显示一组完整的数据是“03 33 1A 19 27”,“03”即是无线传输协议中的地址和校验位,可见这组地址是正确的。“33 1A 19 27”则分别对应湿度数据和温度数据。添加起始符后,送至上位机的完整数据是“FF 03 33 1A 19 27”。
4.2.2 单片机软件实现的功能
单片机软件要实现的功能如下:
1)使用中断的方式,接收无线传感器节点发送的数据。
2)对接收的数据进行判断,如果正确,插入起始符,否则丢弃。
3)通过串口1把处理后的数据送到上位机。
4.3 单片机软件的实现
4.3.1 主函数程序
单片机软件是从主函数开始运行的。在主函数中首先调用串口0、1初始化程序,接着开启全局中断。当无线传感器节点发送数据时,就会触发串口0的中断,进入串口0中断服务子程序。在串口0的中断服务子程序中,首先对数据的第一字节进行校验,如果校验结果正确,则对数据处理。如果校验的结果不正确,则丢弃数据。调用完发送数据函数后,回到中断请求处,等待下一次中断,具体见图4.1。
图4.1 主函数程序流程图
4.3.2 串口0、1初始化程序
串口0、1初始化程序中具体的参数设置是通过USART的控制和状态寄存器UCSRA、UCSRB、UBSRC和UBRR来完成的。传输的模式有同步和异步两种,默认为异步的方式,可通过选择USART的UCSARC中的Bit6-UMSEL位来选择,0为异步模式,1位同步模式。Bit5:4可设置奇偶校验模式,00禁止,01保留,10偶校验,11奇校验。Bit3是停止位的选择,0时为1位停止位,1时为2位停止位。Bit2:1用于设置字符长度,当UCSRB中的UCSZ2位为0时,00表示5位,01表示6位,10表示7位,11表示8位。当UCSZ2为1时11表示9位;UCSRA能写的有Bit0、Bit1和Bit6位,其它5位为状态位。一般使用Bit1-U2X,当这一位为1时,波特率的分频因子从16降到8,能够有效的将异步通信模式的传输速度加倍,但这一位仅对异步模式有影响,使用同步模式时应将此位清0,为0时则为普通模式;UCSRB的Bit7-RXCIE为接收中断使能,Bit6-TXCIE为发送中断结束使能,Bit4-RXEN为接收使能,Bit3-TXEN为发送使能;UBRR的设置和参数U2X、CPU频率、波特率有关。当U2X为0时,即异步正常模式下,UBRR的计算公式如下:
UBRRL=(F_CPU/BAUDRATE/16-1)%256;
UBRRH=(F_CPU/BAUDRATE/16-1)/256; LabVIEW温室多参数测控系统无线接收机软硬件设计+电路图(6):http://www.youerw.com/zidonghua/lunwen_4141.html