打印

用74C922和51单片机做键盘问题

[复制链接]
900|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lbb_1112|  楼主 | 2015-12-4 13:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lbb_1112 于 2015-12-4 13:45 编辑

用74c922做的键盘控制,51单片机和12864显示,按键后总是没反应进不到按键后的程序中去,74c922的输出有信号,能用万用表量到。
程序如下:好像进不去这个键盘的程序,
void main ()
{
start:
//delay_lcd(2000);
        
init_lcd ();
init();
shen=0;
time=0;
KDA=keyDA;
KDA=0;
counter=0;
clrram ();
        wc(0x80);
         wh("速度");
        wd(0x3a);
         wc(0x90);
        wh ("深度");
while(1)
{        uchar k;
         delay_lcd(100);
        k=key1();
if(k==14)
        {wc(0x98);
        wd(0x30+k);

         s=1;
         shezhi();

        }
        if(k<=9)
        {wc(0x88);
        wd(0x30+k);
        }
        sushen();
//   delay_lcd(1000);
        if(k==12)
         {
           goto start;
         }
  }
}
uchar  key1(void)
{ uchar keyk,k;
if(KDA==1)
{ //        P2=0x00;
          delay_key(20);
        if (KDA==1)
        {
                delay_key(20);
                  keyk=P2&0xf0;
                  P2=0xf0;
                        }
                        switch(keyk)
                {        
                        case 0x00:k=7; break;
                        case 0x10:k=4; break;
                        case 0x30:k=1; break;
                        case 0x20:k=0; break;
                        case 0x40:k=8; break;
                        case 0x50:k=5; break;
                        case 0x70:k=2; break;                                                                                                                                                                                                                                                                                                                                                                     
                        case 0x80:k=9; break;
                        case 0x90:k=6; break;
                        case 0xb0:k=3; break;
                        case 0x60:k=10;break;//光标        
                        case 0xa0:k=11;break;//确定
                        case 0xc0:k=12;break;//复位
                        case 0xd0:k=13;break;//通信
                    case 0xf0:k=14;break;//设置
                        case 0xe0:k=15;break;//测量
                        }

if (KDA==1);
{
next++;}        
return k;
}
//else
//{
//return;}

}

相关帖子

沙发
dirtwillfly| | 2015-12-6 08:13 | 只看该作者
楼主你好,你的代码关键地方也没注释,看不懂呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

54

帖子

1

粉丝