4*4矩阵键盘c语言,经典4*4矩阵键盘C51程序

原标题:经典4*4矩阵键盘C51程序

/**************************

文件所用资源

1.:P2

2.调用delay_ms函数

**************************/

#

#include

#key_port P2 //键盘

sbit key_port_0=key_port^0;

sbit key_port_1=key_port^1;

sbit key_port_2=key_port^2;

sbit key_port_3=key_port^3;

/**************************

延时函数

***************************/

delay_ms(unsigned int ms)

{

unsigned int i,j;

for( i=0;i

for(j=0;j

}

/**************************

键盘扫描函数

**************************/

unsigned char keyscan(void)

{

unsigned char key,i;

unsigned char code key_table[16]=

{0xee,0xed,0xeb,0xe,0xde,0xdd,0xdb,0xd7,0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77};

//扫描端口数据与键值的对应关系,可以根据使用来调节顺序

key_port=0x0f; //确定行列位置

if(key_port==0x0f)urn(0x10); //无键按下返回0

delay_ms(10); //调用延时函数 ,目的是去前沿键抖。

if(key_port==0x0f)return(0x10); //再次判断。目的是检测正确

e

{

for(i=0;i<4;i++) //以下为经典的计算键值(判断闭合键所在的位置)

{

key_port=_cror_(0x7f,i);

if(key_port_0==0)break;

if(key_port_1==0)break;

if(key_port_2==0)break;

if(key_port_3==0)break;

}

key=key_port; //取得键值

for(;key_port!=0x0f;key_port=0x0f); //等待键松开,目的是去后沿键抖

for(i=0;key_table[i]!=key && i<16;i++); //查表取key的值0-F

key=i;

return(key); //带键值返回主调函数

}

}

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值