标题:
51单片机键控菜单程序 按键没用
[打印本页]
作者:
旭旭龙
时间:
2020-2-6 20:38
标题:
51单片机键控菜单程序 按键没用
初始化能反白到第二行,也就是case 0 ,但是按键按下没有反应。
{
uint a ;
if(key_down==0)
{
delay(30); //消抖
if(key_down==0)
a = 0;
a++;
while(!key_down); //等待按键松开
}
switch(a)//第一层
{
case 0:
lcd_block(32,16,79,31); break; //第2行反白:贪吃蛇
case 1:
lcd_block(32,16,79,31); //清除第2行反白:贪吃蛇
delay(20);
lcd_block(16,32,95,47); //第3行反白:俄罗斯方块
break;
case 2:
lcd_block(16,32,95,47); //清除第3行反白:俄罗斯方块
delay(20);
lcd_block(48,48,79,63); //第4行反白:闹钟/返回
break;
case 3:
lcd_block(48,48,79,63); //取消第4行反白:闹钟/返回
delay(20);
lcd_block(32,16,79,31); //第2行反白:贪吃蛇
break; //返回第一行
case 4: a = 0;break;
}
while(1);
}
}
作者:
小小大虾
时间:
2020-2-7 01:07
新手吧,初始化时就执行到case 0 ,然后就在while(1); 死循环了当然没反应啦
作者:
wulin
时间:
2020-2-7 09:06
按键程序只能执行1次,死在while(1); ,a也不可以每次清0,否则switch(a)只能执行1。给你改一下你试试。
void key_scan()
{
static uint a=0;//静态变量
if(key_down==0)
{
delay(30); //消抖
if(key_down==0)
{
// a=0;
while(!key_down); //等待按键松开
switch(a)//第一层
{
case 0:
lcd_block(32,16,79,31); //第2行反白:贪吃蛇
break;
case 1:
lcd_block(32,16,79,31); //清除第2行反白:贪吃蛇
delay(20);
lcd_block(16,32,95,47); //第3行反白:俄罗斯方块
break;
case 2:
lcd_block(16,32,95,47); //清除第3行反白:俄罗斯方块
delay(20);
lcd_block(48,48,79,63); //第4行反白:闹钟/返回
break;
case 3:
lcd_block(48,48,79,63); //取消第4行反白:闹钟/返回
delay(20);
lcd_block(32,16,79,31); //第2行反白:贪吃蛇
break; //返回第一行
// case 4: a = 0;break;
}
a++;
if(a>=4)
a=0;
// while(1);
}
}
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1