当地址信息发送完毕后,紧接着发送数据信息,其中数据信息由4个字节组成,其中前两个字节为湿度的整数部分和小数部分,后两个字节为温度的整数和小数部分。
最后一个字节是数据校验和,它是前面5字节数据的和,用于校验目的,减少数据在传输的过程中受外界干扰发生跳变而误将数据接收处理。与奇偶校验类似,首先将欲发送的前5个字节数据进行累加,若累加后超出8位则采用补码形式表示,将所得的数据和作为最后一个字节。接收端接收到这组数据后,将前面5组数据进行累加,超出8位同样采用补码形式表示,得出新的校验和,将此校验和与接收所得的校验和进行对比,若结果相同则数据在传输过程中没有发生错误,否则数据传输有误,丢弃整组数据不进行处理。
每个字节在传输过程中均按下面介绍的串口通信协议传输。详见串口初始化子程序。
4.3 串口子程序
当单片机读取到传感器的数据时,就需要将所得数据发送至无线模块,在这里采用的是串口通信协议,同样在调试过程中,节点与上位机通信也是使用的串口通信协议,利用单片机的USART口进行数据传输,在ATmega8上通用同步和异步串行接收器和转发器(USART) 是一个高度灵活的串行通讯设备。
其主要特点为:
全双工操作( 独立的串行接收和发送寄存器)
高精度的波特率发生器
支持5,6,7,8,或9个数据位和1个或2个停止位
硬件支持的奇偶校验操作
数据过速检测
帧错误检测
三个独立中断:发送结束中断,发送数据寄存器空中断,以及接收结束中断
倍速异步通讯模式
4.3.1 串口初始化子程序
要保证下位单片机和上位PC机之间的数据传送准确、可靠,需要像无线传输一样共同遵守一个事先制定好通信协议,对USART进行初始化就是对通信协议确定。
初始化过程通常包括波特率的设定,帧结构的设定,以及根据需要使能接收器或发送器。重新改变USART的设置应该在没有数据传输的情况下进行。TXC标志位可以用来检验一个数据帧的发送是否已经完成,RXC标志位可以用来检验接收缓冲器中是否还有数据未读出。在每次发送数据之前(在写发送数据寄存器UDR前)TXC标志位必须清零。图4.2为串口初始化子程序流程图。 ATmega8单片机温室环境多参数测控系统无线节点软硬件设计(11):http://www.youerw.com/tongxin/lunwen_3961.html