#define SCROLL_SPEED 100 int scroll_dir = 0; int scroll_pos = 0; while(1) { OLED_Clear(); OLED_ShowString(0,30,"21221054",16); OLED_ShowString(0,15,"2023/5/18",16); OLED_ShowChinese(0,0,0,16,1); OLED_ShowChinese(16,0,1,16,1); OLED_ShowChinese(32,0,2,16,1); for(j=0;j<8;j++) { OLED_ShowChinese( 128+j * 16, 0, point[scroll_pos + j], 16, 1); } OLED_Refresh_Gram(); delay_ms(SCROLL_SPEED); if (scroll_dir == 0) { scroll_pos++; if (scroll_pos + 8 >= SIZE) { scroll_dir = 1; scroll_pos = SIZE - 8; } } else { scroll_pos--; if (scroll_pos == 0) { scroll_dir = 0; scroll_pos = 0; } } delay_ms(1000);详细解释每句代码的意思
时间: 2023-12-08 07:04:00 浏览: 117
bios_interrupt_manual.pdf
这是一段使用 OLED 显示屏进行滚动显示的代码,下面逐行解释每个语句的含义:
1. `#define SCROLL_SPEED 100`:定义一个常量 SCROLL_SPEED,它的值为 100。
2. `int scroll_dir = 0;`:定义一个整型变量 scroll_dir,并初始化为 0。
3. `int scroll_pos = 0;`:定义一个整型变量 scroll_pos,并初始化为 0。
4. `while(1)`:进入一个无限循环。
5. `OLED_Clear();`:清空 OLED 显示屏上的内容。
6. `OLED_ShowString(0,30,"21221054",16);`:在 OLED 显示屏的第一行第 30 列开始显示字符串 "21221054",字符大小为 16。
7. `OLED_ShowString(0,15,"2023/5/18",16);`:在 OLED 显示屏的第一行第 15 列开始显示字符串 "2023/5/18",字符大小为 16。
8. `OLED_ShowChinese(0,0,0,16,1);`:在 OLED 显示屏的第一行第一列开始显示一个汉字,该汉字是在字库中的第 0 个位置,字符大小为 16。
9. `OLED_ShowChinese(16,0,1,16,1);`:在 OLED 显示屏的第一行第二列开始显示一个汉字,该汉字是在字库中的第 1 个位置,字符大小为 16。
10. `OLED_ShowChinese(32,0,2,16,1);`:在 OLED 显示屏的第一行第三列开始显示一个汉字,该汉字是在字库中的第 2 个位置,字符大小为 16。
11. `for(j=0;j<8;j++)`:进入一个循环,循环次数为 8。
12. `OLED_ShowChinese(128+j * 16, 0, point[scroll_pos + j], 16, 1);`:在 OLED 显示屏的第一行开始显示一个汉字,该汉字是 point 数组中从 scroll_pos 开始的第 j 个元素,字符大小为 16。其中,128+j*16 表示每个汉字所占的像素宽度为 16,因此每个汉字之间相隔 16 个像素。
13. `OLED_Refresh_Gram();`:更新 OLED 显示屏的显存,将最新的内容显示在屏幕上。
14. `delay_ms(SCROLL_SPEED);`:延时 SCROLL_SPEED 毫秒。
15. `if (scroll_dir == 0)`:如果 scroll_dir 的值为 0,即向右滚动。
16. `scroll_pos++;`:滚动位置加 1。
17. `if (scroll_pos + 8 >= SIZE)`:如果滚动位置加上 8 大于等于 SIZE,即已经滚动到末尾。
18. `scroll_dir = 1;`:改变滚动方向为向左。
19. `scroll_pos = SIZE - 8;`:将滚动位置调整到末尾前 8 个位置处。
20. `else`:如果滚动位置加上 8 小于 SIZE,即还没有滚动到末尾。
21. `scroll_pos--;`:滚动位置减 1。
22. `if (scroll_pos == 0)`:如果滚动位置已经回到起始位置。
23. `scroll_dir = 0;`:改变滚动方向为向右。
24. `scroll_pos = 0;`:将滚动位置重置为 0。
25. `delay_ms(1000);`:延时 1000 毫秒,即每隔 1 秒钟滚动一次。
阅读全文