这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 4*4矩阵键盘的扫描

共3条 1/1 1 跳转至

4*4矩阵键盘的扫描

菜鸟
2010-09-28 19:43:02     打赏

看过很多单片机的书,上面都是采用IF语句进行判断,那样的话,代码量太大了,不过比较好理解,以下是我写的一个键盘扫描的程序,写过好几个,最后还是觉得这个比较简化,写的不好还清大家指教:

#include <reg52.h>

unsigned char p1[4][4]={

                        0xee,0xde,0xbe,0x7e,

                        0xed,0xdd,0xbd,0x7d,   

                        0xeb,0xdb,0xbb,0x7b,

                        0xe7,0xd7,0xb7,0x77

                           };   //判断按键的编码
       /*LED点阵显示的相应编码*/

unsigned char p0[4]={0xfc,0xf3,0xcf,0x3f};  

unsigned char p2[4]={0xfc,0xf3,0xcf,0x3f};

void delay(char x)   //延时函数

{

while(x--);

}

void main(void)

{

unsigned char temp1,i,j,temp2=0xfe;

while(1)

{

P1=temp2;

delay(10);

temp1=P1;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

if(temp1==p1[i][j])   //判断是哪一个键被按下

{

P0=p0[i];           //点亮相应的LED点整,用来标记哪一个键被按下

P2=p2[j];

}

temp2=temp2<<1|0x01; 

if(temp2==0xef)

temp2=0xfe;

}

}
我使用的板子上的键盘是接在P1口上,行对应P1^0~P1^3,列对应P1^4~P1^7,
使用行列扫描进行按键的判别,判断之后就点亮点阵上相应的LED,用来标识按下的是哪一个键,LED分别接在P0、P2口上的




关键词: 矩阵     键盘     扫描    

专家
2011-05-13 14:29:27     打赏
2楼
继续努力!

菜鸟
2011-07-05 18:06:43     打赏
3楼

不错,收藏。


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]