当前位置:首页 > 单片机 > 单片机
[导读]用单片机P1口扩展成4*4的键盘 按下按键点亮P0口的LED矩阵键盘的扩展不算复杂 主要是检测代码部分比较复杂IO扩展原理矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每

用单片机P1口扩展成4*4的键盘 按下按键点亮P0口的LED

矩阵键盘的扩展不算复杂 主要是检测代码部分比较复杂

IO扩展原理

矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。

在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。

这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。

检测原理

当无按键闭合时,行线与列线之间开路。当有键闭合时,与闭合键相连的两条I/O口线之间短路。

判断有无按键按下的方法:

粗扫描。行线输出低电平,列线输出高电平。读取Px口,若数据不等于 0x0F则有按键按下。

细扫描。行线逐行输出低电平,其他IO口输出高电平。读取Px口,若数据不等于输出的数值则有按键按下。并可以确定行数。同理列线逐行输出低电平,可以检测出列数。

根据行数和列数转换按键码


代码如下:

#include#defineucharunsignedchar#defineLED_ON(X)P0=~(1<<(X))//LED低电平点亮ucharKeyScan(void);voidmain(void){ucharkey;while(1){key=KeyScan();if(key>0){key=key-1;LED_ON(key);}}}ucharKeyScan(void){uchari,val,row,col,key;P1=0xF0;//行线置0,列线置1if(P1!=0x0F0)//按键按下{for(i=0;i<4;i++)//行扫描{val=0xFF&(~(1<


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭