要求编写一个显示屏显示控制程序,可以实现显示屏上显示内容的控制功能。选手需要找到 1 个NB-IoT模块在提供的工程项目中完成相关功能开发,并发布程序到NB-IoT模块中,通上电源等待裁判评判。
Ø 程序要求在显示屏上文字“预祝顺利”以间隔1秒的频率实现文字从右往左滚动,当文字滚动抵达左侧以后,再向右侧滚动。当文字滚动抵达右侧以后,再向左滚动,形成左右滚动显示文字的效果。具体的显示效果如图上编号所示(重复从④到⑩)。
#include <string.h>
#include "board.h"
#include "hal_key.h"
#include "tim-board.h"
#include "timer_handles.h"
uint8_t arr[][32] = {
0x42,0x4A,0xD2,0x6A,0x46,0xC0,0x00,0xF2,0x12,0x1A,0xD6,0x12,0x12,0xF2,0x02,0x00,
0x40,0x80,0x7F,0x00,0x01,0x00,0x80,0x4F,0x20,0x18,0x07,0x10,0x20,0x4F,0x80,0x00,
0x08,0x08,0x89,0xEE,0x98,0x00,0x7E,0x42,0xC2,0x42,0x42,0xC2,0x42,0x7E,0x00,0x00,
0x02,0x01,0x00,0xFF,0x80,0x43,0x20,0x18,0x07,0x00,0x00,0x3F,0x40,0x40,0x78,0x00,
0x00,0xFE,0x00,0xFC,0x00,0xFF,0x00,0xF2,0x12,0x1A,0xD6,0x12,0x12,0xF2,0x02,0x00,
0x40,0x3F,0x00,0x3F,0x00,0xFF,0x80,0x4F,0x20,0x18,0x07,0x10,0x20,0x4F,0x80,0x00,
0x40,0x44,0x44,0x44,0xC4,0xFE,0x42,0x43,0x42,0x00,0xF8,0x00,0x00,0xFF,0x00,0x00,
0x20,0x10,0x0C,0x03,0x00,0xFF,0x01,0x02,0x04,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,
};
uint8_t State = 0;
void Init() {
BoardInitMcu();
BoardInitPeriph();
keys_init();
setTimer2Callback(Time2Handler);
Tim2McuInit(1);
}
void KeyDownHandler(void) {
if(isKey2Pressed()){
OLED_Clear();
State = 2;
resetKey2();
}
if(isKey3Pressed()){
OLED_Clear();
State = 3;
resetKey3();
}
if(isKey4Pressed()){
OLED_Clear();
State = 4;
resetKey4();
}
}
void handlerPre10Ms(void) {
for (int delay = 0; delay < 30; delay++) {
HAL_Delay(10);
}
}
void WZ(uint8_t x,uint8_t y){
OLED_ShowCHineseArray(x,y,arr[0]);
OLED_ShowCHineseArray(x+16,y,arr[1]);
OLED_ShowCHineseArray(x+32,y,arr[2]);
OLED_ShowCHineseArray(x+48,y,arr[3]);
}
int main( void )
{
uint8_t i = 0,F;
uint32_t t = 0;
uint8_t j = 2;
Init();
OLED_Init();
OLED_Clear();
while( 1 )
{
S1: if(State == 0){
OLED_Clear();
OLED_ShowCHineseArray(127-16-i,j,arr[0]);
if(i > 16){
OLED_ShowCHineseArray(127-16-i+16,j,arr[1]);
}
if(i > 32){
OLED_ShowCHineseArray(127-16-i+32,j,arr[2]);
}
if(i > 48){
OLED_ShowCHineseArray(127-16-i+48,j,arr[3]);
}
HAL_Delay(10);
i++;
if(i < 127-16)goto S1;
State = 1;只执行一次
}
S2: if(State == 1){
OLED_Clear();
if(i < 64){
WZ(i,j);
}else{
WZ(127-i,j);
}
HAL_Delay(10);
i++;
if(i < 127) goto S2;
i = 0;
}
S3: if(State == 2){
OLED_Clear();
WZ(127-i,j);
i++;
HAL_Delay(10);
if(i > 128)
goto S3;
}
S4: if(State == 3){
OLED_Clear();
WZ(i,j);
i++;
HAL_Delay(10);
if(i < 128)
goto S4;
}
S5: if(State == 4){
OLED_Clear();
WZ(i,j);
j++;
HAL_Delay(80);
if(j < 8)
goto S5;
j = 0;
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律