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