刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

1.实操考题(共1题,共100分)
1. 主题:按键控制心形图案交互显示
器件:ESP32主控板1块,按键模块1个,8x8LED点阵1个,74HC595移位寄存器芯片(或模块)及相应辅件。以上模块也可使用分立器件结合面包板搭建。
任务要求:
通过按键控制8x8LED点阵屏在黑屏-小心形图案-大心形图案之间循环切换显示,具体任务要求如下:
(1) 程序启动后,8x8LED点阵最外侧四边的LED灯点亮,中间区域LED灯熄灭;
(2) 第1次点击按键,8x8LED点阵屏所有的LED熄灭,呈现黑屏状态;
(3) 第2次点击按键,8x8LED点阵屏显示小心形图案;
(4) 第3次点击按键,8x8LED点阵屏显示大心形图案;
(5) 依次类推,当再次点击按键时,8x8LED依次在黑屏、小心形图案、大心形图案之间循环切换显示;
(6) 按键输入须进行消抖处理;
(7) 程序采用Arduino C/C++代码编写,不得使用外部库调用;
(8) 未作规定处可自行处理,无明显与事实违背即可。

说明:请考生在考试结束前,按照如下要求提交相关文件。

(1) 将程序放在一个文件夹中,压缩为1个“rar或zip”格式文件,并命名为:DJKS5_身份证号,大小5M以下;
(2) 将程序文件通过“上传附件”按钮进行上传;
(3) 程序编写过程中不得打开其它示例程序,如发现,实操成绩按照0分处理。

参考资料:
数组heartB[]和heartS[]分别为大小心形的点阵数据。编程时可参考使用。
byte heartB[] = {0x99, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xE7, 0xFF};
byte heartS[] = {0xFF, 0xDB, 0x81, 0x81, 0xC3, 0xE7, 0xFF, 0xFF};



评分项:
1.器件及器件连接(20分)
2.功能实现(80分)
(1) 程序启动后,实现8x8LED点阵最外侧四边的LED灯点亮,中间区域LED灯熄灭;(20分)
(2) 实现第1次点击按键,8x8LED点阵屏所有的LED熄灭,呈现黑屏状态;(15分)
(3) 实现第2次点击按键,8x8LED点阵屏显示小心形图案;(15分)
(4) 实现第3次点击按键,8x8LED点阵屏显示大心形图案;(15分)
(5) 再次连续点击按键,实现8x8LED依次在黑屏、小心形图案、大心形图案之间循环切换显示。(15分)

使用微信搜索喵呜刷题,轻松应对考试!

答案:

由于题目要求使用Arduino C/C++代码编写,且不得使用外部库调用,因此,我们需要自己编写代码来实现按键控制8x8LED点阵屏在黑屏-小心形图案-大心形图案之间循环切换显示的功能。首先,我们需要定义8x8LED点阵的数据,以及按键输入的处理函数。在程序启动后,将8x8LED点阵最外侧四边的LED灯点亮,中间区域LED灯熄灭。当按下按键时,根据按键次数来显示不同的图案。按键输入需要进行消抖处理,以防止误判。具体的实现方式可以参考以下代码:```c++#include #define BUTTON_PIN GPIO_NUM_2#define DATA_PIN GPIO_NUM_15#define CLK_PIN GPIO_NUM_14#define STROBE_PIN GPIO_NUM_13byte heartB[] = 0x99, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xE7, 0xFF;byte heartS[] = 0xFF, 0xDB, 0x81, 0x81, 0xC3, 0xE7, 0xFF, 0xFF;byte displayData[8] = 0;void setup() pinMode(BUTTON_PIN, INPUT_PULLUP);pinMode(DATA_PIN, OUTPUT);pinMode(CLK_PIN, OUTPUT);pinMode(STROBE_PIN, OUTPUT);digitalWrite(DATA_PIN, LOW);digitalWrite(CLK_PIN, LOW);digitalWrite(STROBE_PIN, LOW);for (int i = 0; i < 8; i++) {displayData[i] = 0xFF;}for (int i = 0; i < 4; i++) {displayData[i] = 0x00;displayData[i + 4] = 0x00;}shiftOut(DATA_PIN, CLK_PIN, MSBFIRST, displayData[0]);digitalWrite(STROBE_PIN, HIGH);delayMicroseconds(1);digitalWrite(STROBE_PIN, LOW);for (int i = 1; i < 8; i++) {shiftOut(DATA_PIN, CLK_PIN, MSBFIRST, displayData[i]);digitalWrite(STROBE_PIN, HIGH);delayMicroseconds(1);digitalWrite(STROBE_PIN, LOW);}void loop() static int clickCount = 0;static bool lastButtonState = false;bool buttonState = digitalRead(BUTTON_PIN) == HIGH;if (buttonState && !lastButtonState) {clickCount++;}lastButtonState = buttonState;if (clickCount == 1) {for (int i = 0; i < 8; i++) {displayData[i] = 0x00;}} else if (clickCount == 2) {for (int i = 0; i < 8; i++) {displayData[i] = heartS[i];}} else if (clickCount == 3) {for (int i = 0; i < 8; i++) {displayData[i] = heartB[i];}}for (int i = 0; i < 8; i++) {shiftOut(DATA_PIN, CLK_PIN, MSBFIRST, displayData[i]);digitalWrite(STROBE_PIN, HIGH);delayMicroseconds(1);digitalWrite(STROBE_PIN, LOW);}```

解析:

【喵呜刷题小喵解析】:

由于本题考查的是嵌入式系统的编程,包括硬件接口控制、数据处理、程序流程控制等方面,所以需要我们根据题目要求,自行编写代码实现。

在编写代码时,我们首先需要定义相关的引脚,以及定义8x8LED点阵的数据。然后,在程序启动后,需要将8x8LED点阵最外侧四边的LED灯点亮,中间区域LED灯熄灭。

按键输入需要进行消抖处理,以防止误判。按键的处理可以通过判断按键的按下状态来实现,当按键被按下时,根据按键次数来显示不同的图案。

在显示图案时,我们需要将8x8LED点阵的数据通过移位寄存器芯片(或模块)输出到8x8LED点阵上。

最后,我们需要将程序压缩为一个压缩文件,并按照要求提交。

以上代码仅供参考,具体实现方式可能因硬件平台、编程环境等因素而有所不同。在编写代码时,需要根据具体的硬件平台、编程环境等因素进行相应的调整。
创作类型:
原创

本文链接:1.实操考题(共1题,共100分)1. 主题:按键控制心形图案交互显示器件:ESP32主控板1块,按

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share