矩阵键

矩阵键盘是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。矩阵键盘,按键的位置由行号和列号唯一确定,因此可以分别对行号和列号进行二进制编码,然后两值合成一个字节,高4位是行号,低4位是列号。
<span style="font-family:宋体;">unsigned char key_scan(void)   //物理键值
{
    unsigned char keyvalue;
    KEYPORT  =0xf0;
    if(0xf0 != KEYPORT)
    {
        delay_ms(10);
	if(0xf0 != KEYPORT)    //有按键按下
	{
	    KEYPORT  =0xfe;
	    if(0xfe != KEYPORT)   //确实有按键按下
	    {
	        keyvalue = KEYPORT;
		keyvalue &= 0xf0;
		keyvalue += 0x0e;    //过滤干扰
		while(0xfe != KEYPORT);//有按键抬起
		delay_ms(10);
		while(0xfe != KEYPORT);//确实有按键抬起
	        return keyvalue;
	    }
	    KEYPORT  =0xfd;
	    if(0xfd != KEYPORT)    //确实</span><span style="font-family: 宋体;">有按键按下</span><span style="font-family:宋体;">
	    {
	        keyvalue = KEYPORT;
		keyvalue &= 0xf0;
		keyvalue += 0x0d;    //过滤干扰
		while(0xfd != KEYPORT);   //有按键抬起
		delay_ms(10);
		while(0xfd != KEYPORT);    //确实有按键抬起
		return keyvalue;
	    }
	    KEYPORT  =0xfb;
	    if(0xfb != KEYPORT)  //确实有按键按下
	    {
		keyvalue = KEYPORT;
		keyvalue &= 0xf0;
		keyvalue += 0x0b;//过滤干扰
		while(0xfb != KEYPORT);//有按键抬起
		delay_ms(10);
		while(0xfb != KEYPORT);//确实有按键抬起
		return keyvalue;
	    }
	    KEYPORT  =0xf7;
	    if(0xf7 != KEYPORT)          //确实有按键按下
	    {
		keyvalue = KEYPORT;
		keyvalue &= 0xf0;
		keyvalue += 0x07;        //过滤干扰
		while(0xf7 != KEYPORT);   //有按键抬起
		delay_ms(10);
		while(0xf7 != KEYPORT);    //确实有按键抬起
	        return     keyvalue;
	    }
        }
    }
    return  0xff;
}</span>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值