关于三级4*4键盘说明

一般意义上的非标准键盘,通常设置为4*4阵列或者5*5阵列,现在单讲前者。关于具体的原理不必多说,主要是三级里面有这样的程序,加深印象,就此说明一下。
接口电路选择:

GPE0~3,行扫描,输出
GPE4~7,列扫描,输入

这里写图片描述
注:每行左侧均连一电至5V电源

//该端口为GPECON寄存器地址
#define KEYOUTPUT (*(volatile INT8U *)0x56000044)
#define KEYINPUT (*(volatile INT8U *)0x56000044)
INT16U KeyScan()
{
    INT16U key=0xffff,i;
    INT8U temp=0xff,output;
    //端口寄存器配置
    rGPECON=((rGPECON&0xffffff00)|0x00000055);
    rGPECON=rGPECON&0xffff00ff;
    //查询是否有按键落下
    for(i=1;((i<=8)&&(i>0));i<<=1)
    {
        //这里的for加上下面三行指的是行扫描,也就是GPE0-3不断依次输出为0
        output|=0xff;
        output&=(~i);
        KEYOUTPUT=output;
        //检查列信号是否为0,当某一列为0的话,表示该按键被按下
        temp=KEYINPUT;
        if((temp&0xf0)!=0xf0)
        {
            key=(~i);
            key<<=8;
            //行信号移至高八位与低八位的列信号合并
            key|=((temp&0xf0)|0x0f);
            return key;
        }   
    }
    return 0xffff;
}

这里写图片描述
注:当然用16bit是比较麻烦的,用8bit组合更直观,只不过人家程序是这样做的。

再将所有返回的可能值组合排列成一个数组,通过查询该值对应的数字按键,即可转移到相应的程序中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值