找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请教一下4*4矩阵键盘的问题

[复制链接]
跳转到指定楼层
楼主
ID:35999 发表于 2012-4-7 10:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#include<reg52.h>
#define uint unsigned int 
#define uchar unsigned char
uchar temp,key_num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};
uchar code scan[4] = {0xfe, 0xfd, 0xfb, 0xf7};
void delay(uint z)
{
 uint x,y;
 for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
uchar keyscan();
void mian()
{
 P2=0x0f;
 while(1)
 {
  keyscan();
  delay(10);
  P0=table[key_num];
 
 }
}
uchar keyscan()
{
 uint i;
 for(i=0;i<4;i++)
  {
  P1=scan;//按键检测
  temp=P1;
  temp=temp&0xf0;
  while(temp!=0xf0)
    {
      delay(10);
      P1=scan;
      temp=P1;
      temp=temp&0xf0;
      while(temp!=0xf0)
       {
         temp=P1;
        switch(temp&0xf0)
         {
          case 0xe0: key_num=i*4;
          break;
          case 0xd0: key_num=i*4+1;
          break;
          case 0xb0: key_num=i*4+2;
          break;
          case 0x70: key_num=i*4+3;
          break;
         }
   while(temp!=0xf0)//松手检测
     {
      temp=P1;
      temp=temp&0xf0;
     }
       }
    } 
  }
  return key_num;
    
}

这是我自己写的一个键盘扫描的程序,p1口接矩阵键盘,p0口接数码管,p2的第四位控制数码管的位选端,把程序写进去的时候,数码管一直都显示不出来,不知道哪里出了问题,请求高手解答

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

使用道具 举报

沙发
ID:37273 发表于 2012-4-7 16:45 | 只看该作者
p2口低四位一直高电平,数码管怎么显示啊。 4位数码管是要扫描显示的,或者只用其中一路。
回复

使用道具 举报

板凳
ID:35999 发表于 2012-4-7 18:32 | 只看该作者
不是,我主要是要键盘扫描,数码管四个显示是一样的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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