普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 4321|回复: 2

4*4矩阵按键扫描,只扫描了行,列扫描不出来??求助。附程序和图

[复制链接]

1

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2020-4-28 14:40:45 | 显示全部楼层 |阅读模式
1金钱

#include<reg51.h>
typedef unsigned char u8;
typedef unsigned int u16;
#define smg P2
#define key P1
u8 code smgduan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
u8 key_value;
void delay(u16 i)
{
while(i--);
}
void key_down()
{
u8 a=0;
key=0x0f;
if(key!=0x0f)
{
  delay(1000);
  if(key!=0x0f)
  {
   key=0x0f;
   switch(key)
   {
    case(0x0e):key_value=0;break;
    case(0x0d):key_value=1;break;
    case(0x0b):key_value=2;break;
    case(0x07):key_value=3;break;   
   }
   key=0xf0;
   switch(key)
   {
    case(0x70):key_value=key_value;break;
    case(0xb0):key_value=key_value+4;break;
    case(0xd0):key_value=key_value+8;break;
    case(0xe0):key_value=key_value+12;break;   
   }
  }
}
while((a<50)&&(key!=0xf0)){
  delay(100);
  a++;
}
}
void main(){
while(1){
  key_down();
  smg=smgduan[key_value];  
}
}


我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励10 金钱 , 目前已有1人回答

回复

使用道具 举报

0

主题

49

帖子

242

积分

中级会员

Rank: 3Rank: 3

积分
242
发表于 2020-5-23 09:46:06 | 显示全部楼层
u8 code smgduan[10] 这地方要改为 u8 code smgduan[16]
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-26 16:56 , Processed in 0.108825 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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