本学期嵌入式期末考试的综合项目,我是这么出题的

2024-06-16 14:12

本文主要是介绍本学期嵌入式期末考试的综合项目,我是这么出题的,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        时间过得真快,临近期末,又到了老师出卷的时候。作为《嵌入式开发及应用》这门课的主讲教师,今年给学生出的题目有一点点难度,最后的综合项目要求如下所示,各位学生朋友和教师同行可以评论一下难度如何,单片机老鸟就略过吧。


【项目概要】

1. 本项目基于“OneNET V3.2嵌入式开发板(图1所示)”而设计,涉及的硬件有LED、有源蜂鸣器、独立按键、液晶屏、光敏电阻、SHT20温湿度传感器,涵盖了STM32的GPIO、串口、定时器、中断、ADC、I2C通信,是平时基础项目的综合,具体功能见【项目功能描述】部分。

2. 学生需要使用集成开发环境MDK5,完成本项目所有代码的编写和调试工作,并最终在开发板上完成程序下载和功能测试。

图1 OneNET V3.2嵌入式开发板

【项目功能描述】

1. 上电之后,开发板的效果为:绿灯常亮,液晶屏呈现图2所示的效果,代表程序已就绪,等待运行。此时除了SW1按键有效,其他按键、串口、蜂鸣器、SHT20传感器、光敏电阻均无效。

图2 上电时的液晶屏显示

2. 单击KEY1,程序开始运行,初始效果如下:
① 绿灯闪烁(1s变化一次),且在程序运行期间一直保持该闪烁效果;
② 在串口助手上显示本项目的启动信息,具体效果如下(-------- 请替换成本人的姓名缩写和完整学号):
***************************
* STM32 Final Project *
* Name: ----------- *
* St.No.: ---------- *
***************************
③ 液晶屏呈现图3所示效果,第1行为光敏电阻上的电压值,第2行为SHT20传感器的温湿度值,三个数值均按照每2s采集变化1次。遮住光敏电阻或用手机电筒照射光敏电阻,电压值有相应变化;手指触摸传感器,温湿度值有相应变化。 

图3 液晶屏显示传感器数值

3. 单击SW2按键,液晶屏上第1行的电压值不再变化,无论遮挡还是照射光敏电阻,电压值都保持在按下那刻的值;再单击一次SW2,电压值恢复正常显示,依然为2s变化一次,上述操作可重复。每单击一次SW2串口助手上都显示出“LDR HOLD”或“LDR CHANGE”的信息。

4. 双击SW2按键,液晶屏第2行的温湿度数值不再变化,无论外界环境如何,温湿度值都保持在按下那刻的值;再双击一次SW2,温湿度数值恢复正常显示,依然为2s变化一次,上述操作可重复。每双击一次SW2,串口助手上都相应的显示出“T&RH HOLD”或“T&RH CHANGE”的信息。

5. 单击SW3按键,黄灯开始按照0.5s变化一次闪烁;再单击一次SW3,黄灯停止闪烁(保持在按下那刻的状态)。每单击一次SW3,串口助手上都显示出对应的信息:黄灯闪显示“Yellow BLINK”,黄灯亮则显示“Yellow ON”,黄灯灭则显示“Yellow OFF”。

6. 通过串口助手向开发板发命令可实现不同的声光效果,具体控制要求为:
发送“blue_on” --- 点亮蓝灯
发送“blue_off”--- 熄灭蓝灯
发送“blue_blink” --- 闪烁蓝灯
发送“blue_breath” --- 蓝灯呼吸
发送“help” --- 红灯快闪,蜂鸣器按照“3短-3长-3短”持续鸣响
发送“cancel”--- 红灯、蓝灯都熄灭,蜂鸣器停止鸣响
发送其他内容 --- 串口助手回显“Wrong command”

7. 程序运行期间,若长按SW1按键3s以上,程序将返回到“功能1”所述的情况:绿灯常亮,其他灯熄灭;液晶屏恢复上电的效果;串口、蜂鸣器、SHT20传感器、光敏电阻停止工作。


        在平时的课堂上,每个独立的功能都手把手带着学生做过,现在整合成一个综合项目,看看有几个学生能有点悟性,做出一点名堂来。本人是不指望学生能全部做出来,主要看学生的工作量和汇报情况

        基础的驱动文件都是平时积累好的,主要是写主程序和几个定时器中断程序,我自己撸完这些代码接近1000行(含较多注释),如图4所示,用了状态机思路来解决,完整的效果如下面的演示视频所示。

图4 部分程序截图

嵌入式期末考试的综合项目,我是这么出题的

(本文完) 

这篇关于本学期嵌入式期末考试的综合项目,我是这么出题的的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1066658

相关文章

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法

《SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法》本文主要介绍了SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录方法1:更改IDE配置方法2:在Eclipse中清理项目方法3:使用Maven命令行在开发Sprin