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

news2024/11/25 4:21:47

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


【项目概要】

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.coloradmin.cn/o/1828660.html

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

相关文章

CMake的使用方法

1 CMakeLists.txt编写 cmake_minimum_required(VERSION 3.12)project(djl_plm)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdc17 -g")add_executable(simple simple.cpp) add_executable(main main.cpp)include_directories(include) 相当于如下gcc命令&#xff1…

浅析MySQL-基础篇01

执行一条select语句,发生了什么? 学习SQL的时候,查询数据的时候简单的用到就是下面的这SQL语句: select * from tbl_1 where id 100; 有没有想过,MYSQL执行一条select查询语句,在MYSQL中期间发生了什么…

C/C++李峋同款跳动的爱心代码

一、写在前面 在编程的世界里,代码不仅仅是冷冰冰的命令,它也可以成为表达情感、传递浪漫的工具。今天,就让小编带着大家用C语言打造出李峋同款跳动的爱心吧! 首先,我们需要知道C作为一种高级编程语言,拥…

Linux常用操作大全(上)

Linux常用操作 文章目录 Linux常用操作一、各类小技巧**1.ctrl c 强制停止****2.ctrl d 退出或登出**3.历史命令搜索4.光标移动快捷键5.清屏6.复制Ctrlshiftc7.粘贴Ctrlshiftv 二、软件安装1.概念2.yum与apt 三、systemctl控制服务四、软链接ln五、日期时区1.date查看日期2.修…

高阶数据结构[2]图的初相识

图的初相识 1.前言 2.图的概念 3.图的相关术语 4.图的存储结构 4.1邻接矩阵 4.2邻接表 4.3两种存储方式的对比 5.图的存储实现 5.1邻接矩阵的实现 5.2邻接表的实现 6.总结 1.前言 本章将大家学习数据结构中的“图”。有学习过离散数学的同学对这一章节或许会比…

和鲸科技执行总裁殷自强:面向空间数据协同分析场景的模型生命周期管理方法

导读: 由 ACM SIGSPATIAL 中国分会主办的第五届空间数据智能学术会议(SpatialDI 2024)于 2024 年 4 月 25 日- 27 日在南京圆满召开,主题为“ AGI 时代下的空间数据智能”,旨在深入推动空间数据智能研究的理论进步与应…

os实训课程模拟考试(8~13)

基于信号量的进程间通信 信号量IPC操作考查 编程要求 根据提示,在右侧编辑器补充代码,了解OpenEuler系统如何使用信号量进行IPC通信,代码中先用sem_read_array[]数组存储数据,并进行信号量与数据的输出,我们需要补充…

大数据与人工智能在保险行业数字化转型中的应用

随着科技的快速发展,大数据和人工智能(AI)技术在保险行业中扮演着越来越重要的角色,推动了保险行业的数字化转型。通过收集和分析海量的用户数据,利用先进的人工智能算法,保险公司能够更准确地评估风险&…

消息队列-概述-JMS和AMQP

JMS和AMQP JMS是什么 JMS(JAVA Message Service,java 消息服务)是 Java 的消息服务,JMS 的客户端之间可以通过 JMS 服务进行异步的消息传输。JMS(JAVA Message Service,Java 消息服务)API 是一个消息服务…

docker desktop for mac os如何使用本地代理

在macbook上弄了个代理,然后按照网上所说的去配代理 然后测试下 docker pull busybox 结果无反应,超时。我去!!! 鼓捣了半天,看了docker官网,问了chatgpt ,按照它们所说的试了下也没…

IDEA导入项目报错java程序包不存在

如图文件结构,本来是在web-demo中操作,但是想导入一下其他模块,切换了项目文件的目录,发现需要重新对Tomcat等进行配置,配置好之后发现运行出现Java相关错误(如下)记录一下修正过程。 java: 程序…

中国最著名的起名大师颜廷利:父亲节与之相关的真实含义

今天是2024年6月16日,这一天被广泛庆祝为“父亲节”。在汉语中,“父亲”这一角色常以“爸爸”、“大大”(da-da)或“爹爹”等词汇表达。有趣的是,“爸爸”在汉语拼音中表示为“ba-ba”,而当我们稍微改变“b…

消息队列-概述-什么是消息队列

什么是消息队列 我们可以把消息队列看作是一个存放消息的容器,当我们需要使用消息的时候,直接从容器中取出消息供自己使用即可。由于队列 Queue 是一种先进先出的数据结构,所以消费消息时也是按照顺序来消费的。 参与消息传递的双方称为 生产…

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

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

Orange Pi AIpro:高性能AI开发板开箱体验及样例测试

文章目录 前言背景介绍产品介绍主要参数配置AI处理器——昇腾310 NPU模型训练预测加载resnet50模型真实动物测试虚拟动物测试 前言 随着人工智能和物联网技术的迅速发展,单板计算机(Single Board Computer, SBC)在创客和开发者社区中越来越受…

buuctf-findKey

exe文件 运行发现这个窗口,没有任何消息 32位 进入字符串就发现了flag{ 左边红色代表没有F5成功 我们再编译一下(选中红色的全部按p) LRESULT __stdcall sub_401640(HWND hWndParent, UINT Msg, WPARAM wParam, LPARAM lParam) {int v5; // eaxsize_t v6; // eaxDWORD v7; /…

1055 集体照(测试点3, 4, 5)

solution 从后排开始输出,可以先把所有的学生进行排序(身高降序,名字升序),再按照每排的人数找到中间位置依次左右各一个进行排列测试点3, 4, 5:k是小于10的正整数,则每…

Spring5中IOC创建对象的方式(有参与无参)与时机(附三类无参创建代码供参考)

Spring5中IOC创建对象的方式(有参与无参)附三类无参创建代码供参考 1. IOC容器 IOC是Spring框架的核心内容,Spring容器使用多种方式完美的实现了IOC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置实现IOC。 Spri…

嵌入式微处理器重点学习(三)

堆栈操作 R1=0x005 R3=0x004 SP=0x80014 STMFD sp!, {r1, r3} 指令STMFD sp!, {r1, r3}是一条ARM架构中的存储多个寄存器到内存的指令,这里用于将r1和r3寄存器的内容存储到栈上。STMFD(Store Multiple Full Descending)是一种全递减模式的多寄存器存储指令,它会先将栈指针…

流媒体传输协议HTTP-FLV、WebSocket-FLV、HTTP-TS 和 WebSocket-TS的详细介绍、应用场景及对比

一、前言 HTTP-FLV、WS-FLV、HTTP-TS 和 WS-TS 是针对 FLV 和 TS 格式视频流的不同传输方式。它们通过不同的协议实现视频流的传输,以满足不同的应用场景和需求。接下来我们对这些流媒体传输协议进行剖析。 二、传输协议 1、HTTP-FLV 介绍:基于 HTTP…