資源簡介
基于51單片機的電子密碼鎖+仿真,歡迎大家下載參考,本人親自調試的

代碼片段和文件信息
#include
#include?
sbit?drive=P3^7;
unsigned?char?count=0pw[6]={101010101010}cipher[6]={654321}INT[6]={101010101010};
unsigned?ssuper[7]=?{1314520};
unsigned?char?code?tab[]=\
{0xc00xf90xa40xb00x990x920x820xf80x800x90~0x400XFF~0x71~0x77~0x39~0x79~0x3E~0x30~0x78};
unsigned?char??Flag=0have;?
unsigned?int?t=0;??
unsigned?char?keypress();
void?delay(unsigned?int?j);
void?display(unsigned?char?*sx);
void?button();
int?main()
{
while(1)
button();
return?0;
}
void?button()
{
unsigned?char?keyNumi=0k=0;
display(&pwcount);
if(!count)
???{
if(++t==1000)t=0;?
if((pw[5]==10?)&&?(t<500))
pw[0]=11;
else?if((pw[5]==10)?&&?(t>500))
pw[0]=10;
}
keyNum=keypress(); if(keyNum==‘n‘)return;
if?((count<=5)?&&?(keyNum!=10?&&?keyNum!=11??))
{
have=pw[1];
pw[1]=pw[0];
pw[0]=keyNum;
INT[count++]=keyNum;
} ??
else
{
if?(keyNum==10?&&?count)
{
?if(count==1?||?count==2)
?{?pw[0]=pw[1];pw[1]=10;INT[--count]=10;?}
?else?if(count>=3)
?{?pw[0]=pw[1];pw[1]=INT[count-3];INT[--count]=10;? }
}
else?if?(keyNum==11?&&?count==6)
{
if(INT[0]==cipher[0]?&&?INT[1]==cipher[1]?&&?INT[2]==cipher[2] \
?&&INT[3]==cipher[3]?&&?INT[4]==cipher[4]?&&?INT[5]==cipher[5])?//face??對
? {
????y:drive=0;?
pw[0]=12;pw[1]=13;pw[2]=14;pw[3]=15;
count=4;Flag=0;
}
else? ?//fault???錯
{
drive=1;
pw[0]=12;pw[1]=13;?pw[2]=16;pw[3]=17;?pw[4]=18;
count=5;?Flag++;
}
while(keyNum!=10||Flag==3){?
display(&pwcount);keyNum=keypress();
i=keyNum==‘n‘?0:keyNum==10?0:keyNum==11?0:1;
if(i?&&?(Flag==3))
{
if(ssuper[k]==keyNum?)
{ k++;if(k==6)goto?y;
}
else?k=0;
}
??}
for(i=0;i<=5;i++)
INT[i]=pw[i]=10;count=0;drive=1;k=0;
}
}?
}?
void?display(unsigned?char?*sx) //數碼顯示子函數
{
unsigned?char?wk=0x01;
? if(x>=1)x-=1;
for?(;s<=&pw+x;s++)
{
P0=tab[*s];
P2=wk;
delay(10); //30個機器周期
P2=0X00;
delay(5); //15個機器周期
wk=_crol_(wk1);
}
}
unsigned?char?keypress() //按鍵處理子函數
{
unsigned?char?abcnum=‘n‘;
P1=0xf0;
if?(P1!=0xf0)? //判斷是否有按鍵按下
{
delay(50); //延時去抖 //300個機器周期
if?(P1!=0xf0) //再次判斷是否有按鍵按下
{
a=P1;
P1=0x0f; //列作輸出,行作輸入
b=P1; //讀取行值并和列值合并
c=a|b; //num=c==0xee?1:c==0xde?2:c==0xbe?3:c==0xed?4:c==0xdd?5:c==0xeb?7:c==0xdb?8:c==0xbb?9:c==0xe7?0:c==0xd7?10:c==0xb7?11:‘n‘;
switch?(c)
{
case?0xee:num=1; break;
case?0xde:num=2; break;
case?0xbe:num=3; break;
case?0xed:num=4; break;
case?0xdd:num=5; break;
case?0xbd:num=6; break;
case?0xeb:num=7; break;
case?0xdb:num=8; break;
case?0xbb:num=9; break;
case?0xe7:num=0; break;
case?0xd7:num=10; break;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-06-07?12:36??電子密碼鎖888\
?????文件??????140720??2017-06-05?09:08??電子密碼鎖888\012.DSN
?????文件????????1052??2017-06-05?09:08??電子密碼鎖888\012.PWI
?????文件???????22235??2017-06-07?12:36??電子密碼鎖888\012.pdsprj
?????文件?????????872??2017-06-07?12:36??電子密碼鎖888\012.pdsprj.jyh.yh.workspace
?????文件????????7121??2017-06-07?12:35??電子密碼鎖888\0526
?????文件????????9296??2017-06-07?12:35??電子密碼鎖888\0526.LST
?????文件????????9398??2017-06-07?12:35??電子密碼鎖888\0526.M51
?????文件????????8743??2017-06-07?12:35??電子密碼鎖888\0526.OBJ
?????文件????????3260??2017-06-07?12:35??電子密碼鎖888\0526.c
?????文件????????2888??2017-06-07?12:35??電子密碼鎖888\0526.hex
?????文件??????????25??2017-06-07?12:35??電子密碼鎖888\0526.lnp
?????文件???????18390??2017-06-07?12:37??電子密碼鎖888\0526.plg
?????文件???????60596??2017-06-07?12:36??電子密碼鎖888\0526.uvopt
?????文件???????13224??2017-05-27?07:50??電子密碼鎖888\0526.uvproj
?????文件???????60596??2017-06-07?12:35??電子密碼鎖888\0526_uvopt.bak
?????文件???????????0??2017-05-26?17:04??電子密碼鎖888\0526_uvproj.bak
?????文件???????22239??2017-06-07?12:36??電子密碼鎖888\Backup?Of?012.pdsbak
?????文件??????126664??2017-06-02?11:50??電子密碼鎖888\Last?Loaded?012.DBK
評論
共有 條評論