基于51单片机的电子密码锁,4*4键盘不起作用

来源:百度知道 编辑:UC知道 时间:2024/05/06 20:22:35
电路连接正确,程序在PROTEUS 上的仿真也正确找不到原因,急
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);
}

/***