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

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


【项目概要】

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.mzph.cn/web/28073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【推荐算法】召回模型总结

文章目录 1、传统召回算法2、向量化召回统一建模架构2.1、如何定义正样本2.2、重点关注负样本2.3、召回生成Embedding:要求用户、物料解耦2.4、如何定义优化目标2.4.1、Softmax Loss、NCE Loss、NEG Loss2.4.2、Sampled Softmax Loss2.4.3、Pairwise Loss 3、Word2V…

量化交易入门——盘口

今天接着上一期讲解开盘定势的种类,在讲之前,科普一下“盘口五档”的成交知识。 每个炒股软件上,都会有某只个股的成交信息,在其中会出现一个五档的行情列表,里面列出了买家和卖家各五个价格及其对应的数量。这五档价…

Docker 基础使用(5)Compose

文章目录 Docker Compose 基础认识Docker Compose 基础语法Docker Compose 基础指令Docker Compose 使用实例 Docker 基础使用(0)基础认识 Docker 基础使用(1)使用流程概览 Docker 基础使用(2)镜像与容器 Docker 基础使用(3)存储卷…

【教程】使用立创EDA打开JSON格式的PCB及原理图

这里写目录标题 一、将PCB和原理图放同一文件夹二、打开嘉立创EDA并导入.zip文件三、选择.zip文件并选择 “导入文件并提取库” 一、将PCB和原理图放同一文件夹 并打包成.zip文件 二、打开嘉立创EDA并导入.zip文件 嘉立创 我这里用的网页端,客户端下载页面拉到…

FreeRTOS简单内核实现6 优先级

文章目录 0、思考与回答0.1、思考一 1、就绪链表1.1、创建1.2、初始化1.3、添加任务1.3.1、prvAddNewTaskToReadyList( )1.3.2、prvAddTaskToReadyList( ) 1.4、寻找最高优先级任务 2、修改内核程序2.1、TCB2.2、xTaskCreateStatic( )2.3、prvInitialiseNewTask( )2.4、vTaskSt…

[Qt的学习日常]--常用控件1

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、什么是控…

运算符与表达式

运算符和表达式是C语言编程的基础构建块,它们共同构成了C语言程序的核心逻辑和计算。理解和掌握运算符和表达式的相关知识,对于编写高效、易读的C语言代码至关重要。 一、运算符概述 运算符是C语言中用于执行各种操作的符号,它们可以对变量、…

python错题(1)

字典中min,max最后比较的是键,输出的是键

解决Pycharm远程连接WSL2的python解释器,使用调试模式时显示超时的问题

环境 windows 11wsl2ubuntu20.04pycharm2023.3.3 问题 Pycharm远程连接WSL2的python解释器,使用调试模式时显示超时 分析 TCP连接错误。 解决方法 windows高级防火墙设置->入站规则->找到pycharm2023.3.3的TCP连接规则->双击允许连接 步骤截图见下…

C++ 53 之 继承中同名成员处理

#include <iostream> #include <string> using namespace std;class Base06{ public:int m_a;Base06(){this->m_a 10;}void fun(){cout << "父类的fun函数" << endl;}void fun(int a){cout << "父类的fun(int a)函数" &…

远程连接服务器的工具?

远程连接服务器工具是现代工作环境中不可或缺的工具之一。它允许用户通过网络远程访问和控制远程服务器&#xff0c;为用户提供了更加便捷和高效的工作方式。无论是远程办公、远程维护还是云计算&#xff0c;远程连接服务器工具都发挥着重要的作用。 在众多远程连接服务器工具…

c++20 规范, vs2019 , 头文件 <mutex> ,注释以及几个探讨

&#xff08;1 探讨一&#xff09; mutex 这个名称的来源是 mutual exclusion &#xff1a;互相排斥。 mutex 与 recursive_mutex 的数据成员的定义如下&#xff1a; 测试如下&#xff1a; 运行以下&#xff1a; 以及&#xff1a; &#xff08;2 探讨二&#xff09; recursive_…

GitHub Copilot 登录账号激活,已经在IntellJ IDEA使用

GitHub Copilot 想必大家都是熟悉的&#xff0c;一款AI代码辅助神器&#xff0c;相信对编程界的诸位并不陌生。 今日特此分享一项便捷的工具&#xff0c;助您轻松激活GitHub Copilot&#xff0c;尽享智能编码之便利&#xff01; GitHub Copilot 是由 GitHub 和 OpenAI 共同开…

python基础 002 - 2 常用数据类型

python的常用数据类型 int , 整型 1,2,3float ,小数&#xff0c;浮点类型1.2bool , boolean 布尔&#xff0c;真假。判断命题。True Flasestr &#xff0c;字符串 list , 列表 a []tuple, 元组 a ()dict , dictionary, 字典 a {}set , 集合 a {} 1 查看数据类型 typ…

Apache Doris 基础 -- 部分数据类型及操作

您还可以使用SHOW DATA TYPES;查看Doris支持的所有数据类型。 部分类型如下&#xff1a; Type nameNumber of bytesDescriptionSTRING/可变长度字符串&#xff0c;默认支持1048576字节(1Mb)&#xff0c;最大精度限制为2147483643字节(2gb)。大小可以通过BE配置string_type_le…

点云传统算法

1 滤波&#xff0c;过滤噪点&#xff0c;下采样 统计滤波&#xff1a; voxel&#xff0c; 半径搜索&#xff1a; # 基于体素网格化的滤波器 voxel_down_pcd cloud.voxel_down_sample(voxel_size0.5)# 基于半径搜索的滤波器 cl, ind cloud.remove_statistical_outlier(nb_ne…

java问题解决: IDEA java 警告 源发行版 17 需要目标发行版 17

效果图 问题原因 jdk和你实际安装的jdk不匹配 解决问题 1.点击File -->Project Structure–>Project 修改这两处 2. 在Project Structure–>Modules中的红框位置都要调整对应版本 3、点击File–>settings–>java compile将对应框的版本修改成对应版本即可–改…

Cocos Creator,Youtube 小游戏!

YouTube 官方前段时间发布了一则重磅通知&#xff0c;宣布平台旗下小游戏功能 Youtube Playables 正式登录全平台&#xff08;安卓、iOS、网页&#xff09;&#xff0c;并内置了数十款精选小游戏。 Youtube Playables 入口&#xff1a; https://www.youtube.com/playables Coco…

苹果WWDC 2024 带来的 AI 风暴:从生产力工具到个人助理,AI 将如何融入我们的生活?

2024年6月5日&#xff0c;苹果WWDC 2024全球开发者大会如约而至&#xff0c;带来了众多令人兴奋的新功能和新产品。其中&#xff0c;AI 技术的全面融入无疑是最引人注目的亮点。从 iOS、iPadOS 到 macOS&#xff0c;再到 Siri 和开发者工具&#xff0c;苹果正在将 AI 融入到其生…

ubuntu20.04桌面蓝屏问题解决

前些天做仿真项目&#xff0c;遇到了ubuntu蓝屏问题&#xff0c;于是想着找几个参考办法修复&#xff0c;但不管用&#xff0c;疑似是重要组件损坏。 损坏的原因是强制关机&#xff0c;但究竟是强制关了哪一个卡死的进程&#xff0c;不得而知&#xff0c;我有一个关不掉的仿真…