图3-10 硬件成品正面图
4 软件编程设计
4.1软件整体设计
4.1.1整体设计方案
主程序要实现的功能是结合系统的硬件完成对酒精气体浓度检测的各项任务。主要的程序有以下几个模块:数据的采集模块;A/D转换模块;数据处理模块;数据显示模块;报警模块。
主程序模块:系统上电后,首先进入初始化模块,进入酒精浓度检测界面测量酒精浓度,首先等待读数归零,然后再进行测量。系统测出酒精浓度值后一方面在显示屏上显示,另一方面判断浓度值是否超过阀值,如超过阀值进行报警。
4.1.2主程序流程图
如图4-1所示,是整个系统的主程序流程图
第 16 页 共 31页
4.1.3主程序设计
开始 初始化 触发A/D转换 换算酒精浓度 酒精浓度显示 是否大于阀值 N Y 报警灯亮 结束 图4-1 主程序流程图 本课题软件设计主要采用分模块设计的思想,这样便于修改和调试。主要程序模块包括:数据采集子程序、ADC转换及数据处理子程序、报警子程序、OLED显示子程序。下面的程序展示如何调用这些子程序。
#include \#include \#include \#include \#include \#include \
第 17 页 共 31页
#include \#include \#include \#include \int main(void) { }
Warning_init(); while(1);
Adc_Init(); 调用ADC转换子程序 delay_init(); 调用延时子程序 NVIC_Configuration(); Warning_init();调用报警子程序 OLED_Init();调用LED显示子程序 OLED_P8x16Str(20, 0,\OLED_P6x8Str(0, 2,\while(1) { }
Voltage_Deal();
4.2数据采集模块程序设计
数据采集模块程序为:首先进入初始化,界面归零,然后开始测量浓度值,A/D设置成连续扫描模式,一次采集12个数,去掉最大值和最小值,然后算出平均值并显示。程序流程图如图4-2所示。
第 18 页 共 31页
开始 初始化 连续采集12个值 去掉最大值、最小值,算出平均值 显示屏显示,声光报警 结束 图4-2 数据采集模块程序流程图
4.3液晶显示模块程序设计
要让液晶显示屏正常工作,首先写入命令控制字,然后在写入需要显示的数据。写入命令控制字之前,必须用指令来查看液晶是否正在工作。如果正在工作,那就必须等待,直到液晶发出工作完成的信号时,才能够写入控制字和数据。液晶显示模块程序流程图如图4-3 设计如图所示。
第 19 页 共 31页
开始 OLED液晶初始化 延时 显示器是否忙 N Y 写指令,设置第一行显示位置 写显示的数据 写指令,设置第二行显示位置 写显示的数据 结束 图4-3 液晶显示模块程序设计流程图
4.4报警模块程序设计
传感器采集的数据经过A/D转换成数字信号后,与阀值进行比较,超过阀值进行声光报警。如图4-4所示,是报警模块程序流程图。
第 20 页 共 31页