微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 4X4矩阵键盘控制LED ----AT89C51

4X4矩阵键盘控制LED ----AT89C51

时间:11-11 来源:互联网 点击:
#include

#include

#define uchar unsigned char

#define uint unsigned int

/*键盘按键特征码*/

/*这里的特征码与具体的硬件连接有关*/

uchar code keycodetable[]={0x11,0x12,0x14,0x18,

0x21,0x22,0x24,0x28,

0x41,0x42,0x44,0x48,

0x81,0x82,0x84,0x88};

void delayms(uint x)

{ uchar i;

while(x--) for(i=0;i<120;i++);

}

uchar key_scan()

{

uchar scode,kcode,i,k;

P1=0xf0;

if((P1&0xf0)!=0xf0)

{

delayms(2); /*延时,消除按键抖动*/

if((P1&0xf0)!=0xf0)

{

scode=0xfe;

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

{

P1=scode;

if((P1&0xf0)!=0xf0)

{

kcode=~P1; /*读取键值*/

for(i=0;i<16;i++) /*查找键值表*/

if(kcode==keycodetable[i])

return(i);

}

else

scode=_crol_(scode,1); /*左移,低位补1,由scode的高位补到低位*/

}

}

}

return (-1);

}

void main()

{

uchar i,p2_led,p3_led;

uchar keyno=-1;

while(1)

{

keyno=key_scan();

if(keyno!=-1)

{

p2_led=0xff;

p3_led=0xff;

for(i=0;i

{

if(i<8)

p3_led>>=1;

else

p2_led>>=1;

}

P3=p3_led;

P2=p2_led;

}

}

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top