黑龙江工程学院本科生毕业设计
第四章 软件设计分析
伴随着硬件电路设计的完成,本设计的节点主要功能将依赖于系统软件来实现。系统软件能否正常可靠地工作,除了硬件的合理设计外,与功能完善的软件设计密不可分。因此软件设计对于设计的成败也起到至关重要的一面。本设计的软件程序主要有两方面,首先是发射程序的设计,然后是接收程序的设计。
4.1 主程序方框图
依据本设计的相关要求,编写了以下主程序框架结构图。如图4.1
否 开始 MCU、无线模块休眠 MCU处理数据 传感器是否采集数据 否 无线模块开启发送模式 是 MCU、无线模块开启 无线模块发送数据 无线模块开启发送模式 MCU、无线模块休眠 是 无线模块发送数据 结束 MCU、无线模块休眠 无线模块是否接收数据 是 图4.1主程序框架结构图
15
黑龙江工程学院本科生毕业设计
本设计重点在于无线传感器网络的低功耗,因此,在流程图中适当的表现
出MCU与无线模块的休眠与启动,是本设计的硬件低功耗的一大特点,只有在硬件应用时才会启动,其他时间里都是出于休眠状态。
4.2 数据发射程序
4.2.1 读取数据子程序设计
读取传感器数据程序需要完成器件的初始化和当采集外部环境变量送MCU处理等功能。读取数据程序的的流程图如图4.2所示。
程序开始后,首先初始化各I/O和各外部器件。然后开始调用读传感器程序,之后通过读子函数传回的值判断是否温度数据传送完毕,定时完成湿度传感器频率的测量,开启无线传感模块和MCU,然后送单片机运算成相对湿度。将读回并运算后的数据经Zigbee芯片RF部分发送出去。然后在调用读取子函数继续读取下一帧数据。
程序出口 送MCU处理换算 采集完毕? 是 否 读取温湿度数据 程序入口
DS18B20初始化 MCU、无线模块开启 图4.2 读数据子程序
4.2.2 发射子程序设计
发射子程序的设计主要依靠Zigbee成都无线龙公司提供的无线传感器网络框架在编译器IAR上运行,通过Zigbee芯片内部的数据收发器将数据发射出去,发射子程序主要完成以下任务:第一,完成MCU对外围传感器的电参量的采集
16
黑龙江工程学院本科生毕业设计
以及处理;第二,完成MCU与ZigbeeRF射频模块的实时通信;第三,始终使能发射数据。程序设计流程如图4.3所示。
在编写发射模块软件时,应尤为注意读DS18B20的速度,读DS18B20的速度为100ms左右,这就导致发射的数据不能连续,这个问题可以通过定时器解决,设定定时器0中断在一定的时间间隔内去读DS18B20传感器,同时对于湿度传感器也可以在中断的定时器0当中去读T0引脚,然后通过公式转换成相对湿度,在主函数当中设定标志位始终执行发射数据包函数,这样既减少了一定的数据延时,也使接收实时数据的效率打打提高,调试现象:对应P0^0口的LED指示灯不断闪烁,证明正在有数据被发射,还有一个最重要的问题就是一个发射模块使用一个发射芯片,也就是一个单片机,怎样实现温湿度数据同时传送呢,通过具体调试,可以利用在读出的DS18B20温度数据或换算完的相对湿度数据中加入一个标志位,这样接收时候就避免了将两组数据混淆的结果。
程序出口 是 无线收发模块休眠 是否发送完毕? 将数据写入寄存器,使能发射 否 无线收发模块启动 程序入口 图4.3发射子程序流程图
4.3 数据接收程序
接收模块的MCU主要承担以下任务是实现MCU与RF射频模块的通信,使能内部接收寄存器实时进行接收。程序流程图如图4.4所示。
17
黑龙江工程学院本科生毕业设计
、无线模块启动 MCU
是 否 接收完否? 接收数据 打开RX 程序入口
、
无线收发模块休眠 将数据写入寄存器
图4.4接收子程序流程图
程序出口 以上是接收程序的软件流程图,这里需要注意几个问题,上面已经说到假如发射的数据的时间间隔不是一定的,那么接收到的数据的时间间隔也不是一定的,这样就使送显示的时候产生了一些问题,第一、接收到的数据频率不一定;第二、上图已经提到,接收到的数据中带标志位的温度或湿度数据在子程序中将会被MCU判断,而另一个数据将会直接送到上位机显示,这样就导致了两个数据显示不同步;解决方法就是定时读取RF射频模块中的接收数据寄存器,在定时器中断当中设置一个变量,拟定一个具体的时间间隔,定时读取,而这个时间间隔大了会导致程序卡死;在接收程序当中会明显看到被注释的部分就是当时调试的结果,具体接收程序将在附录中给出。
4.4 本章小结
本章主要讲解了本设计程序设计方面的相关设计思路和方法。通过程序流程图对程序的工作过程进行了初步的讲解和分析,使得本文对本设计程序设计方面的讲解更加形象深刻。
18
相关推荐: