东北电力大学本科毕业设计论文
第4章 系统的软件设计
温湿度测量系统的功能是在程序控制下实现的。该系统的软件设计方法与硬件设计相对应,同样采用模块化的设计思想,按整体功能分成多个不同的程序模块,分别进行设计、编程和调试,最后通过主程序和中断处理程序将各程序模块连接起来。这样有利于程序修改和调试,增强了程序的可移植性。温湿度测量系统的软件主要分为:下位机的温度、湿度采集和数据无线传输程序以及上位机的温度、湿度数据的查询、接收、显示和上传程序。
4.1 主程序设计
系统的主程序设计主要完成系统初始化、中断优先级设定以及判断调用各模块程序,即主要实现各程序模块的连接。上位机的系统初始化主要包括 nRF24E1 中寄存器、存储单元的设置、nRF2401 子系统初始化、ZLG7289A 的初始化。下位机的系统初始化主要包括 nRF24E1 中寄存器、存储单元的配置、nRF2401 子系统初始化、DS18B20 的初始化和 HM1500地址的设置。
4.1.1 上位机主程序
上位机主程序开始后先进行初始化设置。初始化的内容包括给相应的字符名称赋值,ZLG7289A 的初始化,设置串口通信参数,打开 CPU 中断,打开串口中断,设置定时器 T0 中断。没有中断的时候,上位机子系统处于等待状态,直到有中断需要响应时,单片机进入相应的中断服务程序,向下位机发送温度(或湿度)测试指令,等下位机接收到完整数据后,将上位机置接收方式,准备接收测得的数据,在上位机接收完下位机上传的数据后,根据中断指令进行显示(或上传),并保持状态,直到响应新的中断为止。
上位机主程序流程框图如图 4-1 所示。
4.1.2 下位机主程序
下位机主程序开始后首先进行初始化设置。初始化的内容包括给相应的字符名称赋值,设置串口通信参数。下位机然后向在线的 DS18B20发初始化脉冲。然后发送 Skip ROM 命令,也就是接下来的 RAM 命令是针对在线所有 DS18B20。将在线所有 DS18B20 序列号存入下位机中,接着循环查询 nRF2401 子系统是否置接收方式,直到有接收数据,转入相应的子程序,执行温度(或湿度)的检测,然后,将测得的数据发送给上位机,复位返回,准备进行新的测试。 下位机主程序流程框图如图 4-2 所示。
17
东北电力大学本科毕业设计论文
图 4-1 上位机主程序流程框图
18
东北电力大学本科毕业设计论文
图 4-2 下位机主程序流程框图
4.2 子程序设计
4.2.1 温度测量子程序
首先由下位机发出所要查询的 DS18B20 地址,所有的 DS18B20 响应中断,判断是否与主机查询的地址相符。地址符合的 DS18B20 回送本机地址,并改变 SM2,地址不符合的 DS18B20 退出中断,SM2=1 不变。DS18B20 在与下位机建立联系后,跟着以查询方式接收下位机接着发送的 DS18B20 的 ROM 命令。主机只有两种 DS18B20 的 ROM 命令:读 DS18B20 的序列号和匹配指定 DS18B20。读序列号和匹配指定DS18B20 都是单字节的指令。匹配指定 DS18B20 命令发送后紧接着的是相应测温点序列号。DS18B20 首先判断是那一种命令,然后转入相应子程序进行处理。读序列号指令相应的子程序完成的是,读出在线的 DS18B20 的序列号,一共八个字节并回送下位机。读序列号时线上只能有一个 DS18B20,否则会引起数据冲突。匹配指定 DS18B20 命令相应的子程序先把接收到的相应测温点序列号放入单片机 RAM 的指定地址中。然后向在线的多个DS18B20 发送匹配测温点的 ROM 命令和相应序列号。只有序列号相同的DS18B20 响应命令。然后单片机发送读寄存器命令,把相应 DS18B20 寄存器内的数据先放入单片机
19
东北电力大学本科毕业设计论文
RAM 的指定地址中。程序流程框图见图 4-3。
4.2.2 湿度测量子程序
下位机发出所要查询的HM1500地址,然后调用A/D转换子程序。HM1500是电压输出式湿敏传感器,输出信号为+1V~+4V的模拟电压,其内部有信号调理电路,已做线性化处理,可根据下式编制出相应的程序:
RH%=0.0391Vout-42.5 (Vout单位为mV)
湿度是温度的函数,湿敏元件对温度亦十分敏感,湿敏传感器温度系数一般在0.2~0.8%RH/℃范围内(HM1500为±0.1%RH/℃),因此,应做相应的温度补偿,可用如下的关系式做补偿:
RH%=(39.1-0.056Ta)Vout10-3-38.5 (Vout单位为mV,Ta单位℃)程序流程框图见图 4-4
图4-3温度测量子程序 图4-4 湿度测量子程序
20
相关推荐: