永发信息网

单片机矩阵按键,求大神解答

答案:2  悬赏:60  手机版
解决时间 2021-02-03 00:33
#include

sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

sbit KEY_IN_4 = P2^7;
sbit KEY_IN_3 = P2^6;
sbit KEY_IN_2 = P2^5;
sbit KEY_IN_1 = P2^4;
sbit KEY_OUT_1 = P2^3;
sbit KEY_OUT_2 = P2^2;
sbit KEY_OUT_3 = P2^1;
sbit KEY_OUT_4 = P2^0;

unsigned char KeySta[4][4]={ {1,1,1,1},
{1,1,1,1},
{1,1,1,1},
{1,1,1,1},
};

unsigned char code LedChar[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99,
0x92, 0x82, 0xF8, 0x80, 0x90,
0x83, 0xC6, 0xA1, 0x86, 0x8E};

void main ()
{
unsigned char i,j;
unsigned char backup[4][4]={ {1,1,1,1},
{1,1,1,1},
{1,1,1,1},
{1,1,1,1},
};
EA=1;
ADDR3 = 1;
ENLED = 0;
ADDR0 = 0;
ADDR1 = 0;
ADDR2 = 0;
TMOD = 0x01;
TH0 = 0xFC;
TL0 = 0x67;
ET0=1;
TR0=1;
P0 = LedChar[0];

while(1)
{
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if (backup[i][j] != KeySta[i][j])
{
if (backup[i][j] == 0)
{
P0 = LedChar[i*4+j];
}
backup[i][j] = KeySta[i][j];
}
}
}
}
}

void InterruptTimer0() interrupt 1
{
unsigned char i;
static unsigned keyout = 0;
unsigned char keychec[4][4] = {
{0xFF,0xFF,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF},
{0xFF,0xFF,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF}
};
TH0 = 0xfc;
TL0 = 0x67;

keychec[keyout][0] = (keychec[keyout][0] << 1) | KEY_IN_1;
keychec[keyout][1] = (keychec[keyout][1] << 1) | KEY_IN_2;
keychec[keyout][2] = (keychec[keyout][2] << 1) | KEY_IN_3;
keychec[keyout][3] = (keychec[keyout][3] << 1) | KEY_IN_4;

for(i=0;i<4;i++)
{
if((keychec[keyout][i] & 0x0F) == 0x00)
{
KeySta[keyout][i] = 0;
}
else if((keychec[keyout][i] & 0x0F) == 0x0F)
{
KeySta[keyout][i] = 1;
}
}
keyout++;
keyout = keyout & 0x03;

switch (keyout)
{
case 0 : KEY_OUT_4 = 1 ; KEY_OUT_1 = 0 ; break;
case 1 : KEY_OUT_1 = 1 ; KEY_OUT_2 = 0 ; break;
case 2 : KEY_OUT_2 = 1 ; KEY_OUT_3 = 0 ; break;
case 3 : KEY_OUT_3 = 1 ; KEY_OUT_4 = 0 ; break;
default :break;
}

}

中断为扫描按键并去抖,主函数刷新数码管
最佳答案
不可能。即便程序OK,没有在硬件连接的基础上说事,也是空谈。
全部回答
.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
最近我买了一套房子,交付了10000元,当做订
一根长13米的绳子,绕大树10圈多44厘米,大树横
神奇宝贝之金钱至上
中国移动立信手机卖场地址在什么地方,想过去
压腿的意思是什么啊?知道的请说下!
38.36等于多少千克
桂东县卫生监督所地址在什么地方,想过去办事
哌嗪的意思是什么啊?知道的请说下!
炖完排骨的锅怎么去掉味道
中国足道重庆富侨地址在什么地方,想过去办事
我国至今一直延用的县、省级行政机构,最早推
爱婴天地北流妇幼店在什么地方啊,我要过去处
鹤山哪里KTV比较实惠
扑浣的意思是什么啊?知道的请说下!
【右图是三个直径相等的圆,求阴影部分的面积
推荐资讯
老庙黄金昌盛西路店地址在哪,我要去那里办事
石田村民委员会地址在什么地方,我要处理点事
老婆怀孕7个多月了左侧睡觉压得耳朵疼怎么办
混合动力suv好不好
中国石化全资持有的盛骏国际是个什么类型的公
小米手机刷机后接不了电话
2017年1月18伊春地震
怎么让声带发育得更宽,更长,更厚,承受力更
沱江地址有知道的么?有点事想过去
吃什么药或者是食物对噪子好
牛奶企业最大的上市公司
叹号在电脑健盆是哪一个
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?