关于三级4*4键盘说明

来源:互联网 发布:mac pro win10性能 编辑:程序博客网 时间:2024/05/20 20:48

一般意义上的非标准键盘,通常设置为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组合更直观,只不过人家程序是这样做的。

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

原创粉丝点击