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 ; } }如何让这段函数又能上又能下
时间: 2023-07-14 12:13:07 浏览: 50
你可以将下面的代码:
```
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循环里面没有延时函数,所以可能会导致程序卡死,你需要根据实际情况添加延时函数。
相关问题
void Canshu_Change(u8 key)//改变参数显示按键调节哪个参数 { 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 ; } } if(key==4)//向上 { obj--; if(obj) { obj=2; } }如何让这段函数的向上按键到顶部之后可以返回底部
你可以改变 if(key==4) 中的逻辑,使其到达顶部时回到底部。以下是代码示例:
```
void Canshu_Change(u8 key)//改变参数显示按键调节哪个参数
{
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 ;
}
}
if(key==4)//向上
{
obj--;
if(obj>2) // 到达顶部时回到底部
{
obj=0;
}
}
}
}
}
```
现在,当 obj 为 2 时,按下向上键将会返回到 obj 为 0 的位置。
void Canshu_Change(u8 key)//改变参数显示按键调节哪个参数 { u8 obj=1;u8 obj2=1; if(key==3&&display_contrl%2==1) { //delay_ms(10);//消抖 BEEP=! BEEP; //本来响取反后不响 //OLED_Clear(); while(1) { key = KEY_Scan(0); //delay_ms(10);//消抖 if(key==3)//向下 { //delay_ms(10);//消抖 obj++; if(obj>=4) { obj=1 ; } } if(key==4)//向上 { //delay_ms(10);//消抖 obj--; if(obj<=0) { obj=3; } } if(obj==1) { OLED_ShowString(112,0,"<",16);//: OLED_ShowCHinese(112,2,39); OLED_ShowCHinese(112,4,39); } if(obj==2) { OLED_ShowCHinese(112,0,39); OLED_ShowString(112,2,"<",16); OLED_ShowCHinese(112,4,39); } if(obj==3) { OLED_ShowCHinese(112,0,39); OLED_ShowCHinese(112,2,39); OLED_ShowString(112,4,"<",16); } if(key==2) { OLED_Clear(); break; } } 这段函数的代码已经可以上下选择,那要怎么写才能在选择处进入下一个界面
你可以在选择处增加一个判断语句,当用户按下确定键时,根据选择的参数进入相应的下一个界面。例如:
```
if(key==1)//确定
{
if(obj==1)//第一个参数
{
//进入第一个参数的下一个界面
}
else if(obj==2)//第二个参数
{
//进入第二个参数的下一个界面
}
else if(obj==3)//第三个参数
{
//进入第三个参数的下一个界面
}
}
```
在进入下一个界面时,你可以使用类似于上面的代码,在下一个界面中增加类似的参数选择功能,让用户可以调节参数。