串口交互可调红绿灯倒计时牌仿真
题目说明
主题:串口交互可调红绿灯倒计时牌仿真
器件:ESP32主控板、按键模块、四位数码管、74HC595移位寄存器芯片(或模块)及相关器件。以上模块也可以采用分立器件结合面包板进行搭设。
任务要求
使用四位数码管模拟交通路口红绿灯的倒计时牌,倒计时牌的显示内容通过串口输入报文实现控制。
报文的格式为:XX-YY-ZZ,其中 XX 表示总的通行时长,范围 10~20;YY 表示闪烁显示的时间,范围 0~9;ZZ 表示闪烁显示的时间间隔。系统默认的报文为:15-5-100,表示路口总的通行时长为 15 秒,当倒计时时间还剩下 5 秒时,四位数码管开始闪烁显示,闪烁显示的时间间隔为 100 毫秒。
具体要求如下:
-
装置通电启动后,在四位数码管显示今天的日期:
1214; -
点击按键,装置进入工作状态,四位数码管按照默认的报文数据开始倒计时显示;
-
在串口监视器窗口输入框输入上述格式的新报文后,在串口监视器窗口输出解析后的相应报文内容。以报文
15-5-100为例,串口监视器窗口输出的内容为:总时长:15 倒计时:5 间隔:100; -
在串口监视器中,输入新的报文数据后,四位数码管按照新输入的报文数据倒计时显示;
-
四位数码管须使用
74HC595移位寄存器芯片驱动显示。如采用其他方式,本实操成绩得0分; -
程序采用
Arduino C/C++代码编写,不得使用外部库调用; -
未作规定处可自行处理,无明显与事实违背即可。
说明:程序编写过程中不得打开其它示例程序,如发现,实操成绩按照 0 分处理。
提交要求
请考生在考试结束前,按照如下要求提交相关文件。
-
将程序放在一个文件夹中,压缩为 1 个“rar或zip”格式文件,并命名为:
DJKS5_身份证号,大小5M以下; -
将程序文件通过“上传附件”按钮进行上传。
参考资料
- 数组
NUM[]保存的是0~9和'.'十六进制形式的数码管显示的段位信息。编程时可参考使用。
// 保存0~9
byte NUM[] = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xF6};
String类库的成员函数及其功能描述如下:
indexOf(val); // 自左向右查找字符val在字符串对象实例中的位置。
substring(from,to) // 从字符串对象实例中截取指定位置的字符串。
toInt(); // 将字符串转换为整数。
Serial类库的成员函数及其功能描述如下:
avaiable(); // 返回UART接收缓冲区中的字节数。
read(); // 从UART接收缓冲区读取数据。
readString(); // 从UART接收缓冲区中读取字符串。
评分标准
- 电路搭设(20分)
元器件:
(1)装置中包含 74HC595 移位寄存器模块(或元器件);(2分)
(2)装置中包含按键模块(或元器件);(2分)
(3)装置中包含四位数码管;(2分)
电路搭设:
(4)四位数码管与 74HC595 移位寄存器模块(或元器件)正确连接;(5分)
(5)74HC595 移位寄存器模块(或元器件)与主控板正确连接;(5分)
(6)按键模块(或元器件)与主控板正确连接。(4分)
- 功能实现(80分)
(1)实现装置通电启动后,在四位数码管显示今天的日期:1214;(10分)
(2)点击按键后,装置进入工作状态,实现四位数码管从 15 开始倒计时显示,时间间隔为 1 秒;(15分)
(3)实现当通行时长还剩下 5 秒时,四位数码管开始闪烁显示,闪烁时间间隔为 100 毫秒;(15分)
(4)听从测评师老师的指令输入新的报文数据后,实现在串口监视器中按任务要求的格式输出解析后的数据;(10分)
(5)四位数码管实现按新输入的报文数据开始倒计时显示,时间间隔为 1 秒;(15分)
(6)四位数码管实现按新输入的报文数据的时间和间隔闪烁显示。(15分)
子题 填空题
请按上述要求完成实操任务