OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5894|回复: 3

4*4矩阵键盘扫描

[复制链接]

23

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
149
金钱
149
注册时间
2013-12-8
在线时间
0 小时
发表于 2013-12-8 22:31:46 | 显示全部楼层 |阅读模式
            

通常关于4*4矩阵键盘的扫描检测程序是这样的:

void keyscan()
{
unsigned char temp,key;
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delayms(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
key=0;
break;
.........//省略其他扫描

}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
display(key);
}
}

这里 if(temp!=0xf0) 这句话承担最终的检测判定角色,我不懂,按照C语言的规则,temp是个变量,跟P3应该不相关啊,P3把值赋给temp后,P3应该是不变的,之后temp的值应该跟P3就脱离关系了,但为什么这里把P3赋值给temp后,就可以根据temp的值来判定P3 I/O口的值呢?求大家指点

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-12-8 23:28:33 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-2-13
在线时间
0 小时
发表于 2014-2-14 16:06:53 | 显示全部楼层
void anxx()interrupt 0 //按键扫描中断,aj,as全局变量,com为I/O,aj_0中断入口引脚
{
uchar a,x,y;   //定义a缓存:xY数轴 
aj=0;
as=0;
ys10us(5000);     //延时25ms
if(!AJ_0){
a=COM;  //保护现场
y=a&0x0f;   //判断y数轴准备
switch(y){    //查表
case 0x07:x=4;break;
case 0x0b:x=3;break;
case 0x0d:x=2;break;
case 0x0e:x=1;break;
default: {   //查表失败
x=0;
break;
}
}
if(x&&(!AJ_0)){      //判断y=0?准备判断X数据
for(aj=0,y=0;y<4;++y){
switch(y){
case 0:COM=0x7f;break;
case 1:COM=0xbf;break;
case 2:COM=0xdf;break;
case 3:COM=0xef;break;
default:{
COM=a|0x0f;             //查表错误
aj=0;
as=0;
y=0;
}
}
ys10us(10);                     //去抖延时
while(!AJ_0){
for(;!aj;) { //防止二次计数
aj=y*4+x;               //求面值
}
for(as=0;!AJ_0;as++)        //求按键时间
ys10us(50000);  //1S

}
COM=a|0x0f; //恢复初次按键状态
}
else{    //按键扫描错误返回
aj=0;
as=0;
COM=a|0x0f;
}
}
让生活更简单
回复 支持 反对

使用道具 举报

55

主题

1231

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2624
金钱
2624
注册时间
2014-2-13
在线时间
514 小时
发表于 2014-2-16 11:17:26 | 显示全部楼层
估计你是看了郭天祥的视频,里面讲都比较清晰的
技术交流,Sell 中颖单片机,欢迎私信骚扰
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 22:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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