求一个单片机C51的 4*4矩阵键盘 扫描程序,

2024-12-16 00:12:45
推荐回答(3个)
回答1:

可以参考:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/ef086222268d4f4eac34de59.html
程序中,读取4*4矩阵键盘的函数,可以得到0~F,和16。
当读出为16的时候,即是按键放手了,可以执行对应的功能程序。

回答2:

程序忘了,大概跟你说秒 原理吧。
主要循环检测,比如P1接键盘,先往P1送个0x0F再读取P1口电压是否变化,不变则不处理,有变化则记录得到的值,然后再送个0xF0到P1口,读取值,记录,再用读取的两个值相与,得到具体是哪个键被按下了,再就是要继续送入初值0x0F,直到读取的值不在变化,还是0x0F,这时候就已经放手了,就可以运行下面的程序了

回答3:

键扫描的程序如下:
*******************************************************************************
unsigned int old,new,push,rel,temp,row;
void key(void)
{
for(row=0x10;row<0x100;row<<1) //扫描
{
*P_IOA_Data=*P_IOA_Data&row;
new=(new<<4)| *P_IOA_Data&0x0f; //读回列信息
}
if((temp=new^old)>0) //获取按下和释放的键值信息
{
push=temp&new;
rel=temp&old;
old=new;
}
}
*******************************************************************************
这段程序采用位移方式获取按键信息,程序效率高,原理简单易懂,推荐使用。