基于51单片机的电子密码锁,4*4键盘不起作用
来源:百度知道 编辑:UC知道 时间:2024/05/06 20:22:35
电路连接正确,程序在PROTEUS 上的仿真也正确找不到原因,急
p3口接键盘
p3口接键盘
可能是延时问题
4乘4扫描键盘,主要要注意的是,单片机读IO口时,要先写“1”,才能读,你看看是不是这个地方的毛病
如果别的功能正确,就换按键程序试试.
不明白你有什么问题...这里给个子函数,希望能帮你找出问题~!
注意:前面先定义全局变量
unsigned char code key_code[]={
0xe7,0xeb,0xdb,0xbb,0xed,0xdd,0xbd,0xee,
0xde,0xbe,0xd7,0xb7,0x77,0x7b,0x7d,0x7e };
/**********************************************************
键盘扫描子函数
**********************************************************/
uchar keyscan()
{
uchar scan1,scan2,keycode,j;
P4=0xf0;
scan1=P3;
if((scan1&0xf0)!=0xf0) //判键是否按下
{
delayms(10); //延时30ms
scan1=P3;
if((scan1&0xf0)!=0xf0) //二次判键是否按下
{
beep();
P3=0x0f;
scan2=P3;
keycode=scan1|scan2; //组合成键编码
for(j=0;j<=15;j++)
{
if(keycode== key_code[j]) //查表得键值
{
key=j;
return(key); //
}
}
}
}
else P3=0xff;
return (16);
}
/***