sprintf((char *)war, "inte:%d", yuzhi[0]); OLED_ShowString(18, 2, war,16);
时间: 2024-05-22 11:11:04 浏览: 12
这段代码使用sprintf函数将整型变量yuzhi[0]的值转换成字符串,并将其存储到字符数组war中。然后,使用OLED屏幕的显示函数OLED_ShowString将该字符串显示在屏幕上。具体来说,OLED_ShowString函数会将字符串从字符数组中逐个取出,并通过OLED屏幕显示出来。其中18和2分别表示显示的起始位置(即在屏幕上的横向、纵向位置),16表示字体大小。
相关问题
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; }
这段代码是一个 OLED 显示屏的处理函数,根据变量 Mode 的不同值,显示不同的信息。在 Mode 为 0 时,显示光线、温度、湿度以及当前模式(手动或自动);在 Mode 为 1 时,显示设置的最大浇水湿度;在 Mode 为 2 时,显示设置的最大光照强度;在 Mode 为 3 时,显示设置的最高温度。其中 sprintf 函数是将格式化后的字符串存储到缓冲区 buf 中,然后通过 OLED_ShowString 函数将字符串显示在 OLED 屏幕上。
u8 obj=0; if(key==3)//向下 { BEEP=0; //OLED_Clear(); while(1) { key = KEY_Scan(0); if(key==3) { obj++; if(obj>=3) { obj=0 ; } } // sprintf((char *)buff,"Working md:%4d",mode); // OLED_ShowString(8,0,buff,12); // sprintf((char *)buff,"A_Temp :%4d",A_DHT11_Temp); // OLED_ShowString(8,1,buff,12); // sprintf((char *)buff,"A_Hum :%4d",A_DHT11_Hum); // OLED_ShowString(8,2,buff,12); // sprintf((char *)buff,"A_pre :%4d",A_pre); // OLED_ShowString(8,3,buff,12); // sprintf((char *)buff,"A_gz_val :%4d",A_gz_value); // OLED_ShowString(8,4,buff,12); // sprintf((char *)buff,"A_m2_val :%4d",A_m2_value); // OLED_ShowString(8,5,buff,12); // sprintf((char *)buff,"A_m7_val :%4d",A_m7_value); // OLED_ShowString(8,6,buff,12); // sprintf((char *)buff,"A_m135_val:%4d",A_m135_value); // OLED_ShowString(8,7,buff,12); if(obj==0) { OLED_ShowString(112,0,"<",16);//: OLED_ShowCHinese(112,2,39); OLED_ShowCHinese(112,4,39); } if(obj==1) { OLED_ShowCHinese(112,0,39); OLED_ShowString(112,2,"<",16); OLED_ShowCHinese(112,4,39); } if(obj==2) { OLED_ShowCHinese(112,0,39); OLED_ShowCHinese(112,2,39); OLED_ShowString(112,4,"<",16); } if(key==4)//向上 { obj--; if(obj<0) { obj=2 ; } }如何让这段函数又能上又能下
你可以将下面的代码:
```
if(key==3) //向下
{
BEEP=0;
//OLED_Clear();
while(1)
{
key = KEY_Scan(0);
if(key==3)
{
obj++;
if(obj>=3)
{
obj=0 ;
}
}
...
}
```
改成以下的代码:
```
while(1)
{
key = KEY_Scan(0);
if(key==3) //向下
{
BEEP=0;
obj++;
if(obj>=3)
{
obj=0 ;
}
}
if(key==4) //向上
{
obj--;
if(obj<0)
{
obj=2 ;
}
}
...
}
```
这样就可以通过按键4向上选择,按键3向下选择了。注意,因为while循环里面没有延时函数,所以可能会导致程序卡死,你需要根据实际情况添加延时函数。