找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1572|回复: 2
打印 上一主题 下一主题
收起左侧

51单片机键控菜单程序 按键没用

[复制链接]
跳转到指定楼层
楼主
ID:687601 发表于 2020-2-6 20:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初始化能反白到第二行,也就是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);     
}        
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:619946 发表于 2020-2-7 01:07 | 只看该作者
新手吧,初始化时就执行到case 0 ,然后就在while(1); 死循环了当然没反应啦
回复

使用道具 举报

板凳
ID:213173 发表于 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);     
                }
        }        
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表