蓝桥杯嵌入式开发经验分享(第七届省赛——“模拟液位检测告警系统”)

作者:马一飞                                                         QQ:791729359       

在学习过程中有什么问题可以联系

(本篇博客有很多还没讲解很细致,先贴出代码,等有时间再进行注解)

一、题目

        “模拟液位检测告警系统”通过采集模拟电压信号计算液位高度,并根据用户设定的液位阈值执行报警动作,在液位等级发生变化时,通过串行通讯接口将液位信息发送到 PC 机。系统框图如图 1 所示:

                                                

蓝桥杯嵌入式开发经验分享(第七届省赛——“模拟液位检测告警系统”) 

设计任务及要求

1. 液位检测

        通过电位器 R37 模拟液位传感器输出电压信号,设备以 1 秒为间隔采集 R37 输出电压,并与用户设定的液位阈值进行比较。假定液位高度与 R37 输出电压之间具有正比例关系:H = VR37*K,当 VR37=3.3V 时,对应液位高度为 100cm。通过液晶显示当前的液位高度、传感器(R37)输出状态和液位等级,液位检测显示界面如图 1 所示:

                                                                 

蓝桥杯嵌入式开发经验分享(第七届省赛——“模拟液位检测告警系统”)

        AD 采集得到的结果应经过软件滤波算法处理,显示结果保留小数点后两位有效数字

2. 液位阈值设定

        设备可设定三个液位阈值,对应四个液位等级,阈值由用户通过按键输入,设备保存阈值,并根据此阈值判断液位等级,假        定用户输入的三个液位阈值为 10cm、20cm 和 30cm,液位高度与液位等级的对应关系如下:
                2.1 液位高度≤10cm 时,液位等级为 0;
                2.2 10cm<液位高度≤20cm 时,液位等级为 1;
                2.3 20cm<液位高度≤30cm 时,液位等级为 2;
                2.4 液位高度>30cm 时,液位等级为 3。
        设备初始液位阈值分别为 30cm、50cm 和 70cm,用户修改阈值后,设备应将此参数保
        存在 E2PROM 中,当设备重新上电时,可从 E2PROM 中获取。

3. 液位阈值设定

        B1 按键:“设置”按键,按下后进入阈值设定界面(如图 2 所示),再次按下 B1 按键时退出设置界面,保存用户设定的结果到 E2PROM,并返回图 1 所示的液位检测界面。

                                                                      

蓝桥杯嵌入式开发经验分享(第七届省赛——“模拟液位检测告警系统”)

        B2 按键:切换选择 3 个待修改的阈值,被选中的阈值应突出显示。
        B3 按键:“加”按键,按下后,被选择的阈值增加 5cm,增加到 95cm 为止。
        B4 按键:“减”按键,按下后,被选择的阈值减少 5cm,减少到 5cm 为止。

4. 串口查询与输出功能

’        使用 STM32 USART2 完成以下串口功能,波特率设置为 9600。

        4.1 查询
                通过 PC 机向设备发送字符‘C’,设备返回当前液位高度和液位等级;
                通过 PC 机向设备发送字符‘S’,设备返回当前设定的三个阈值。
               液位高度和等级返回数据格式举例:
                        “C:H55+L2rn”
                        解析:应答高度、等级查询,液位高度为 55cm,液位等级为 2。
               阈值返回数据格式举例:
                        “S:TL30+TM50+TH70rn”
                         解析:应答阈值查询,设备内保存的三个阈值分别为 30cm、50cm 和 70cm。
4.2 输出
        当液位等级发生变化时,设备自动向 PC 机发送当前液位等级、液位高度和液位变化趋势(上升或下降)。
        输出数据格式举例:
                “A:H55+L2+Drn”
                解析:液位变化自动发送,液位高度 55cm,液位等级为 2,变化趋势下降。
                “A:H55+L2+Urn”
                解析:液位变化自动发送,液位高度 55cm,液位等级为 2,变化趋势上升。

5. 状态指示

        LED 指示灯功能定义如下:
        LD1:运行状态指示灯,以 1 秒为间隔亮灭闪烁;
        LD2:液位等级变化指示灯,当液位等级发生变化时,LD2 以 0.2 秒为间隔闪烁 5 次;
        LD3:通讯状态指示灯,当设备接收到查询指令时,LD3 以 0.2 秒为间隔闪烁 5 次

二、模块化代码分析

1、初始化部分

2、ADC部分

3、串口部分

4、按键改变

来源:fei…

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年2月6日
下一篇 2019年2月7日

相关推荐