编程题

主题:串口交互心形图案显示

器件:ESP32主控、8x8LED点阵、74HC595串口寄存器芯片(或模块)及相关器件。

要求:

使用74HC595串口寄存器芯片控制8x8LED点阵循环显示大小心形图案,通过串口输入报文来设置大小心形图案各自的显示时长。

报文的格式示例为:B100S300

其中:B100表示显示大的心形图案时长100毫秒;S300表示显示小的心形图案时长300毫秒。显示时间范围在100~999毫秒之间。

具体要求如下:

(1) 程序启动后,8x8LED点阵最外侧四边的LED灯点亮,中间区域LED灯熄灭。

(2) 在串口监视器窗口输入框输入上述格式的报文后,在串口监视器窗口输出解析后相应的报文内容。以报文B100S300为例,串口监视器窗口输出的内容为B-100:S-300。

(3) 8x8LED根据报文的内容连续切换显示大小两个心形图案。以报文B100S300为例,先显示大的心形图案,时长100毫秒,然后显示小的心形图案,时长300毫秒,依次反复,直至输入新的报文数据。

(4) 程序采用C代码编写,不得使用外部库调用。

(5) 未作规定处可自行处理,无明显与事实违背即可。

(6) 程序编写过程中不得打开库例程和其它程序,如发现,实操成绩按照0分处理。

说明:

请考生在考试结束前,按如下要求提交程序文件

(1) 将所有程序放在一个文件夹,并将文件夹命名为:DJKS5_身份证号;

(2) 将程序文件压缩为1个文件,“rar或zip”格式,大小5M以下;

(3) 将程序文件通过“上传附件”按钮进行上传。

 

参考资料

(1)数组heartB[]和heartS[]分别为大小心形的点阵数据。编程时可参考使用。

byte heartB[] = {0x99, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xE7, 0xFF};

byte heartS[] = {0xFF, 0xDB, 0x81, 0x81, 0xC3, 0xE7, 0xFF, 0xFF};

(2)String类库的成员函数及其功能描述如下:

indexOf(val); // 自左向右查找字符val在字符串对象实例中的位置。

substring(from,to) // 从字符串对象实例中截取指定位置的字符串。

toInt(); // 将字符串转换为整数。

(3)Serial类库的成员函数及其功能描述如下:

avaiable(); // 返回UART接收缓冲区中的字节数。

read(); // 从UART接收缓冲区读取数据。

readString(); // 从UART接收缓冲区中读取字符串。

查看答案
赣ICP备20007335号-2