44键盘及8位数码管显示构成的电子密码锁.docx
- 文档编号:9243083
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:20
- 大小:15.31KB
44键盘及8位数码管显示构成的电子密码锁.docx
《44键盘及8位数码管显示构成的电子密码锁.docx》由会员分享,可在线阅读,更多相关《44键盘及8位数码管显示构成的电子密码锁.docx(20页珍藏版)》请在冰点文库上搜索。
44键盘及8位数码管显示构成的电子密码锁
C语言源程序
#include
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>0;j--);
temp=P3;
temp=temp&0x0f;
if(temp!
=0x0f)
{
temp=P3;
temp=temp&0x0f;
switch(temp)
{
case0x0e:
key=7;
break;
case0x0d:
key=8;
break;
case0x0b:
key=9;
break;
case0x07:
key=10;
break;
}
temp=P3;
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>6)
{
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 { if(getps[i]! =ps[i]) { i=keycount; errorflag=1; rightflag=0; second3=0; gotoa; } } errorflag=0; rightflag=1; a: i=keycount; } } temp=temp&0x0f; while(temp! =0x0f) { temp=P3; temp=temp&0x0f; } keyoverflag=0;//? ? ? ? ? ? ? ? ? } } P3=0xff; P3_5=0; temp=P3; temp=temp&0x0f; if(temp! =0x0f) { for(i=10;i>0;i--) for(j=248;j>0;j--); temp=P3; temp=temp&0x0f; if(temp! =0x0f) { temp=P3; temp=temp&0x0f; switch(temp) { case0x0e: key=4; break; case0x0d: key=5; break; case0x0b: key=6; break; case0x07: key=11; break; } temp=P3; 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>6) { 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 { if(getps[i]! =ps[i]) { i=keycount; errorflag=1; rightflag=0; second3=0; gotoa4; } } errorflag=0; rightflag=1; a4: i=keycount; } } temp=temp&0x0f; while(temp! =0x0f) { temp=P3; temp=temp&0x0f; } keyoverflag=0;//? ? ? ? ? ? ? ? ? } } P3=0xff; P3_6=0; temp=P3; temp=temp&0x0f; if(temp! =0x0f) { for(i=10;i>0;i--) for(j=248;j>0;j--); temp=P3; temp=temp&0x0f; if(temp! =0x0f) { temp=P3; temp=temp&0x0f; switch(temp) { case0x0e: key=1; break; case0x0d: key=2; break; case0x0b: key=3; break; case0x07: key=12; break; } temp=P3; 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>6) { 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 { if(getps[i]! =ps[i]) { i=keycount; errorflag=1; rightflag=0; second3=0; gotoa3; } } errorflag=0; rightflag=1; a3: i=keycount; } } temp=temp&0x0f; while(temp! =0x0f) { temp=P3; temp=temp&0x0f; } keyoverflag=0;//? ? ? ? ? ? ? ? ? } } P3=0xff; P3_7=0; temp=P3; temp=temp&0x0f; if(temp! =0x0f) { for(i=10;i>0;i--) for(j=248;j>0;j--); temp=P3; temp=temp&0x0f; if(temp! =0x0f) { temp=P3; temp=temp&0x0f; switch(temp) { case0x0e: key=0; break; case0x0d: key=13; break; case0x0b: key=14; break; case0x07: key=15; break; } temp=P3; 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>6) { 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 { if(getps[i]! =ps[i]) { i=keycount; errorflag=1; rightflag=0; second3=0; gotoa2; } } errorflag=0; rightflag=1; a2: i=keycount; } } temp=temp&0x0f; while(temp! =0x0f) { temp=P3; temp=temp&0x0f; } keyoverflag=0;//? ? ? ? ? ? ? ? ? } } } } voidt0(void)interrupt1using0 { TH0=(65536-500)/256; TL0=(65536-500)%256; flashcount++; if(flashcount==8) { flashcount=0; P0=dispcode[dispbuf[dispcount]]; P2=dispbit[dispcount]; dispcount++; if(dispcount==8) { dispcount=0; } } if((errorflag==1)&&(rightflag==0)) { bb++; if(bb==800) { bb=0; alarmflag=~alarmflag; } if(alarmflag==1)//soundalarmsignal { P1_7=~P1_7; } aa++; if(aa==800)//lightalarmsignal { aa=0; P1_0=~P1_0; } second3++; if(second3==6400) { second3=0; errorflag=0; rightflag=0; alarmflag=0; bb=0; aa=0; } } elseif((errorflag==0)&&(rightflag==1)) { P1_0=0; cc++; if(cc<1000) { okflag=1; } elseif(cc<2000) { okflag=0; } else { errorflag=0; rightflag=0; P1_7=1; cc=0; oka=0; okb=0; okflag=0; P1_0=1; } if(okflag==1) { oka++; if(oka==2) { oka=0; P1_7=~P1_7; } } else { okb++; if(okb==3) { okb=0; P1_7=~P1_7; } } } if(keyoverflag==1) { P1_7=~P1_7; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 44 键盘 数码管 显示 构成 电子 密码锁
![提示](https://static.bingdoc.com/images/bang_tan.gif)