找回密码
 立即注册

QQ登录

只需一步,快速开始

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

新手关于矩阵键盘的问题:只有第四列四个键有反应

[复制链接]
跳转到指定楼层
楼主
ID:97355 发表于 2015-11-27 14:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>
unsigned char code LED[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
sbit H1=P1^0;
sbit H2=P1^1;
sbit H3=P1^2;
sbit H4=P1^3;
sbit L1=P1^4;
sbit L2=P1^5;
sbit L3=P1^6;   
sbit L4=P1^7;
void Delay (int c)   
{
    int a,b;
        for (; c>0; c--)
        {
                 for (b=199;b>0;b--)
                 {
                          for(a=1;a>0;a--);
                 }      
        }
           
}
void main(void)
{  
         unsigned char tmp_1,tmp_2,key;
   while(1)
         {    P1=0xff;
       if(P1!=0xff)
                         {Delay(7);
                           if(P1!=0xff)
                                 {

                                                tmp_1=P1&0x0f;//检测行
            tmp_2=P1&0xf0;//检测列
              key=tmp_1|tmp_2;//检测到按键位置
                                  }
                                Delay(5);
                                switch(key)
                                {
                                        case(0xee):P0=~LED[0];Delay(10);break;//数码管共阳极
                                        case(0xde):P0=~LED[1];Delay(10);break;
                                        case(0xbe):P0=~LED[2];Delay(10);break;
                                        case(0x7e):P0=~LED[3];Delay(10);break;
                                        case(0xed):P0=~LED[4];Delay(10);break;
                                        case(0xdd):P0=~LED[5];Delay(10);break;
                                        case(0xbd):P0=~LED[6];Delay(10);break;
                                        case(0x7d):P0=~LED[7];Delay(10);break;
                                        case(0xeb):P0=~LED[8];Delay(10);break;
                                        case(0xdb):P0=~LED[9];Delay(10);break;
                                        case(0xbb):P0=~LED[10];Delay(10);break;
                                        case(0x7b):P0=~LED[11];Delay(10);break;
                                        case(0xe7):P0=~LED[12];Delay(10);break;
                                        case(0xd7):P0=~LED[13];Delay(10);break;
                                        case(0xb7):P0=~LED[14];Delay(10);break;
                                        case(0x77):P0=~LED[15];Delay(10);break;
                                        }
                                }



}
         
}
只有第四列有显示('3' '7' 'b' 'f')新手...想好久不知道为什么               

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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