void OLED_Processing(void) { unsigned char buf[32]; OLED_Clear(); switch(Mode) { case 0: sprintf(buf,"Light:%d lx",Light_Value); OLED_ShowString(0, 0, buf); sprintf(buf,"Humidity:%d %%",DHT_BUFF.Hum); OLED_ShowString(0, 16, buf); sprintf(buf,"Temp:%d C",DHT_BUFF.Temp); OLED_ShowString(0, 32, buf); // sprintf(buf,"HR:%d%%",DHT_BUFF.Hum); // OLED_ShowString(0, 48, buf); if(Auto) { OLED_ShowString(0, 48, "Mode:Auto"); } else { OLED_ShowString(0, 48, "Mode:Hand"); } break; case 1: sprintf(buf,"Ser Rh:"); OLED_ShowString(0, 0, buf); sprintf(buf,"%d %%",Water_Max); OLED_ShowString(48, 16, buf); break; case 2: sprintf(buf,"Ser Light:"); OLED_ShowString(0, 0, buf); sprintf(buf,"%d Lx",Light_Max); OLED_ShowString(48, 16, buf); break; case 3: sprintf(buf,"Ser Temp:"); OLED_ShowString(0, 0, buf); sprintf(buf,"%d C",Temp_Max); OLED_ShowString(48, 16, buf); break; }
时间: 2024-01-08 16:02:29 浏览: 56
这段代码是一个 OLED 显示屏的处理函数,根据变量 Mode 的不同值,显示不同的信息。在 Mode 为 0 时,显示光线、温度、湿度以及当前模式(手动或自动);在 Mode 为 1 时,显示设置的最大浇水湿度;在 Mode 为 2 时,显示设置的最大光照强度;在 Mode 为 3 时,显示设置的最高温度。其中 sprintf 函数是将格式化后的字符串存储到缓冲区 buf 中,然后通过 OLED_ShowString 函数将字符串显示在 OLED 屏幕上。
相关问题
void LCD1602_ShowNum(unsigned char x,unsigned char y,unsigned char *str,unsigned char i);
这是一个用于在LCD1602上显示数字的函数,函数原型如下:
```c
void LCD1602_ShowNum(unsigned char x, unsigned char y, unsigned char *str, unsigned char i);
```
函数参数说明:
- `x`:数字在LCD上显示的起始列位置,取值范围为0~15。
- `y`:数字在LCD上显示的起始行位置,取值为0或1。
- `str`:要显示的数字的字符数组,数组中每个元素存储一个数字字符。
- `i`:要显示的数字的位数,取值范围为1~4。
函数实现:
```c
void LCD1602_ShowNum(unsigned char x, unsigned char y, unsigned char *str, unsigned char i)
{
unsigned char j;
for(j=0; j<i; j++)
{
LCD1602_WriteData(x+j, y, str[j]);
}
}
```
该函数通过调用`LCD1602_WriteData()`函数将数字一个个显示在LCD屏幕上。注意,`LCD1602_ShowNum()`函数中的参数`str`是一个字符数组,因此在调用该函数时需要将数字转换为字符并存储在数组中。例如,要在LCD屏幕上显示数字1234,可以将其转换为字符数组并传递给`LCD1602_ShowNum()`函数:
```c
unsigned char num[4] = {'1', '2', '3', '4'};
LCD1602_ShowNum(0, 0, num, 4);
```
void OLED_W_Str(unsigned char lx,unsigned char ly,char *sch) { char *p2ch = sch; unsigned char L_y = ly; while (*p2ch) { OLED_W_Ch(lx,L_y,*p2ch++); L_y += 8; } }解释代码每一段,以及每一段的赋值是什么
这段代码是针对 OLED 显示屏进行字符显示的函数,主要功能是将字符串 sch 在指定的位置 lx, ly 处显示出来。
具体解释如下:
```
void OLED_W_Str(unsigned char lx,unsigned char ly,char *sch) {
```
函数名为 OLED_W_Str,参数为指定位置 lx, ly 和要显示的字符串 sch。
```
char *p2ch = sch;
```
定义一个字符指针 p2ch,初始值为字符串 sch 的首地址。
```
unsigned char L_y = ly;
```
定义一个无符号字符型变量 L_y,初始值为 ly。
```
while (*p2ch) {
```
当 p2ch 指向的字符不为 '\0'(即字符串结尾)时,进入循环。
```
OLED_W_Ch(lx,L_y,*p2ch++);
```
调用 OLED_W_Ch 函数,在指定位置 lx, L_y 处显示字符 p2ch 指向的字符,并将 p2ch 指针后移一位。
```
L_y += 8;
```
L_y 加上 8,因为每个字符的高度为 8 个像素。
```
}
```
当 p2ch 指向的字符为 '\0'(即字符串结尾)时,跳出循环。
```
}
```
函数结束。