4×4键盘及8位数码管显示构成的电子密码锁33要点Word文档下载推荐.doc
《4×4键盘及8位数码管显示构成的电子密码锁33要点Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《4×4键盘及8位数码管显示构成的电子密码锁33要点Word文档下载推荐.doc(13页珍藏版)》请在冰点文库上搜索。
![4×4键盘及8位数码管显示构成的电子密码锁33要点Word文档下载推荐.doc](https://file1.bingdoc.com/fileroot1/2023-4/29/df1fdc78-9c1f-44b2-8277-f1b4ff9b36f9/df1fdc78-9c1f-44b2-8277-f1b4ff9b36f91.gif)
4.程序设计内容
(1).4×
4行列式键盘识别技术:
有关这方面内容前面已经讨论过,这里不再重复。
(2).8位数码显示,初始化时,显示“P ”,接着输入最大6位数的密码,当密码输入完后,按下确认键,进行密码比较,然后给出相应的信息。
在输入密码过程中,显示器只显示“8.”。
当数字输入超过6个时,给出报警信息。
在密码输入过程中,若输入错误,可以利用“DEL”键删除刚才输入的错误的数字。
(3).4×
4行列式键盘的按键功能分布图如图4.33.2所示:
7
8
9
4
5
6
1
2
3
Del
Enter
图4.33.2
5.C语言源程序
#include<
AT89X52.H>
unsignedcharps[]={1,2,3,4,5};
unsignedcharcodedispbit[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71,
0x00,0x40,0x73,0xff};
unsignedchardispbuf[8]={18,16,16,16,16,16,16,16};
unsignedchardispcount;
unsignedcharflashcount;
unsignedchartemp;
unsignedcharkey;
unsignedcharkeycount;
unsignedcharpslen=5;
unsignedchargetps[6];
bitkeyoverflag;
biterrorflag;
bitrightflag;
unsignedintsecond3;
unsignedintaa,bb;
unsignedintcc;
bitokflag;
bitalarmflag;
bithibitflag;
unsignedcharoka,okb;
voidmain(void)
{
unsignedchari,j;
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
TR0=1;
ET0=1;
EA=1;
while
(1)
{
P3=0xff;
P3_4=0;
temp=P3;
temp=temp&
0x0f;
if(temp!
=0x0f)
{
for(i=10;
i>
0;
i--)
for(j=248;
j>
j--);
temp=P3;
temp=temp&
if(temp!
{
temp=P3;
temp=temp&
switch(temp)
{
case0x0e:
key=7;
break;
case0x0d:
key=8;
case0x0b:
key=9;
case0x07:
key=10;
}
P1_1=~P1_1;
if((key>
=0)&
&
(key<
10))
if(keycount<
6)
{
getps[keycount]=key;
dispbuf[keycount+2]=19;
}
keycount++;
if(keycount==6)
keycount=6;
elseif(keycount>
{
keycount=6;
keyoverflag=1;
//keyoverflow
}
elseif(key==12)//deletekey
{
if(keycount>
0)
keycount--;
getps[keycount]=0;
dispbuf[keycount+2]=16;
else
{
keyoverflag=1;
}
}
elseif(key==15)//enterkey
if(keycount!
=pslen)
errorflag=1;
rightflag=0;
second3=0;
else
{
for(i=0;
i<
keycount;
i++)
{
if(getps[i]!
=ps[i])
{
i=keycount;
errorflag=1;
rightflag=0;
second3=0;
gotoa;
}
}
errorflag=0;
rightflag=1;
i=keycount;
}
while(temp!
temp=P3;
temp=temp&
keyoverflag=0;
//?
?
}
}
P3_5=0;
key=4;
key=5;
key=6;
key=11;
gotoa4;
a4:
P3_6=0;
key=1;
key=2;
key=3;
key=12;
=p