一、实操题
1、主题:按键计数器
器件:ESP32 主控板、按键模块、一位数码管、74HC595 移位寄存器芯片(或模块)及相关器件。以上模块也可以采用分立器件结合面包板进行搭设。
任务要求:
通过点击按键控制一位数码管显示数字在 1~5~1 之间变化,具体要求如下:
(1)装置通电启动后,一位数码管保持熄灭,不显示任何内容;
(2)第一次点击按键,数码管倒计时依次显示 9、8、7、…、0,间隔时间为 0. 5 秒;
(3)倒计时显示完毕,装置进入计数状态,此时数码管显示的数字为 0;
(4)每次点击按键,一位数码管显示的数字比先前显示的数字加 1,直至显示的数字为 5;
(5)当显示的数字为 5 时,再次点击按键,一位数码管显示的数字比先前显示的数字减 1,直至显示的数字为 1;
(6)当显示的数字为 1 时,再次点击按键,一位数码管显示的数字比先前显示的数字加 1。依此循环,一位数码管显示的内容在 1、2、3、4、5、4、3、2、1、2、3...间循环;
(7)一位数码管必须使用 74HC595 移位寄存器芯片驱动显示。如采用其他方式,本实操成绩得 0 分;
(8)程序采用 Arduino C/C++代码编写,不得使用外部库调用;
(9)未作规定处可自行处理,无明显与事实违背即可。
说明:请考生在考试结束前,按照如下要求提交相关文件。
(1)将程序放在一个文件夹中,压缩为 1 个“rar 或 zip”格式文件,并命名为:DJKS5_身份证号,大小 5M 以下;
(2)将程序文件通过“上传附件”按钮进行上传;
(3)程序编写过程中不得打开其它示例程序,如发现,实操成绩按照 0 分处理。
参考资料:
数组 NUM[] 保存的是 0~9 十六进制形式的数码管显示的段位信息。编程时可参考使用。
// 保存 0~9
byte NUM[] = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xF6};
参考答案:由于题目要求使用Arduino C/C++编写程序,并且使用74HC595移位寄存器芯片驱动显示,因此我们需要编写一个程序来实现按键控制数码管显示数字在1~5~1之间变化的功能。首先,我们需要定义数组NUM[]来保存0~9的十六进制形式的数码管显示的段位信息。然后,我们需要编写程序来实现按键输入的处理和数码管的显示控制。当装置通电启动后,一位数码管保持熄灭。第一次点击按键,数码管倒计时依次显示9、8、7、…、0,间隔时间为0.5秒。倒计时显示完毕,装置进入计数状态,此时数码管显示的数字为0。每次点击按键,一位数码管显示的数字比先前显示的数字加1,直至显示的数字为5。当显示的数字为5时,再次点击按键,一位数码管显示的数字比先前显示的数字减1,直至显示的数字为1。当显示的数字为1时,再次点击按键,一位数码管显示的数字比先前显示的数字加1。依此循环,一位数码管显示的内容在1、2、3、4、5、4、3、2、1、2、3...间循环。在程序实现中,我们需要使用74HC595移位寄存器芯片驱动显示数码管,将数码管显示的段位信息通过移位寄存器芯片传输到数码管上。最后,我们需要将程序压缩为一个“rar或zip”格式文件,并按照要求提交相关文件。
解析:【喵呜刷题小喵解析】:
本题是一道关于按键控制和数码管显示的编程题目,需要使用Arduino C/C++编写程序,并使用74HC595移位寄存器芯片驱动显示数码管。
在编程过程中,我们需要定义数组NUM[]来保存0~9的十六进制形式的数码管显示的段位信息,这是实现数码管显示的基础。然后,我们需要编写程序来实现按键输入的处理和数码管的显示控制,包括倒计时显示、计数状态控制、数码管数字加减控制等。
在程序实现中,我们需要使用74HC595移位寄存器芯片驱动显示数码管,这是实现数码管显示的关键。移位寄存器芯片可以将数码管显示的段位信息传输到数码管上,从而实现数码管的显示控制。
最后,我们需要将程序压缩为一个“rar或zip”格式文件,并按照要求提交相关文件。这是符合题目要求的必要步骤。
需要注意的是,本题要求不得使用外部库调用,因此在编程过程中需要自行处理相关功能,如按键输入的处理、数码管的显示控制等。同时,程序编写过程中不得打开其它示例程序,否则实操成绩按照0分处理。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!