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(64 + j * 16, 0, point[scroll_pos + j], 16, 1); } OLED_Refresh_Gram(); //¸üÐÂÏÔʾµ½OLED 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; } } if(++i > 3) { LED1=!LED1;//ÌáʾϵͳÕýÔÚÔËÐÐ i=0; }详细解释每句代码的意思
时间: 2023-12-08 08:04:07 浏览: 63
oled_ssd1306_单片机_oled_0.96OLED_uno_unossd1306_
这段代码是一个无限循环,在OLED屏幕上显示一些信息并进行滚动显示。下面是每句代码的详细解释:
```c
while(1)
```
这是一个无限循环,程序将一直执行。
```c
OLED_Clear();
```
清空OLED屏幕,准备进行新的显示。
```c
OLED_ShowString(0,30,"21221054",16);
OLED_ShowString(0,15,"2023/5/18",16);
```
在OLED屏幕上显示一些文本,分别是学号和日期。
```c
OLED_ShowChinese(0,0,0,16,1);
OLED_ShowChinese(16,0,1,16,1);
OLED_ShowChinese(32,0,2,16,1);
```
在OLED屏幕上显示一些汉字,分别是姓名的每个汉字。
```c
for(j=0;j<8;j++)
{
OLED_ShowChinese(64 + j * 16, 0, point[scroll_pos + j], 16, 1);
}
```
在OLED屏幕上显示一个8个汉字长度的字符串,其中的每个汉字存储在数组point中,数组的起始位置由变量scroll_pos指定,每次滚动后变量scroll_pos的值会发生变化,从而实现滚动显示效果。
```c
OLED_Refresh_Gram();
```
将更新后的OLED屏幕的内容刷新到显示器上。
```c
delay_ms(SCROLL_SPEED);
```
延时一段时间,以控制滚动速度。滚动速度由常量SCROLL_SPEED指定。
```c
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;
}
}
```
更新滚动位置。变量scroll_dir表示滚动方向,0表示向右滚动,1表示向左滚动。根据滚动方向和当前滚动位置,更新scroll_pos的值。
```c
if(++i > 3)
{
LED1=!LED1;
i=0;
}
```
闪烁LED灯,每隔一段时间(通过变量i计数),将LED1的状态取反,从而实现闪烁效果。
阅读全文