資源簡介
51單片機密碼鎖+proteus仿真調試,安裝ISIS仿真工具使用

代碼片段和文件信息
/*
六位密碼原始密碼為680424該程序有點問題也有不完善的地方就是修改密碼后如果輸入的密碼與修改的密碼
相同則鎖會開如果有一次輸入有錯則密碼會變回原來的密碼即362330.可能因為定義的數組
pws[6]為全局變量但是也不肯定.希望下載的人提出寶貴的意見大家共同交流謝謝.
*/
#include
#define?uchar?unsigned?char
#define?uint?unsigned?int
uint?num=10; //開始讓數碼管什么都顯示
bit?set=0; //定義設置密碼的位
char?count=-1; //開始讓COUNT=-1方便后面顯示數碼管
sbit?Beep=P1^2;?//蜂鳴器
uchar?temp;
uchar?pws[6]={680424}; //原始密碼
uchar?pwx[6]; //按下的數字存儲區
bit?rightflag; //密碼正確標志位
uchar?workbuf[6];
uchar?code?tabledu[]={
0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x000x40
}; //段選碼共陰極
uchar?code?tablewe[]={
0xfe0xfd0xfb0xf70xef0xdf
}; //位選碼
uint?keyscan();
void?delay(uchar?z) //延時ms級
{
uchar?y;
for(;z>0;z--)
for(y=120;y>0;y--);
}
void?setpw() //設置密碼函數
{
keyscan();
}
uint?keyscan() //鍵盤掃描函數
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(5); //鍵盤去抖最好20ms以上這里用了5ms
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
count++;//按鍵計數加1
temp=P3;
switch(temp)
{
case?0xee:?
{
num=7;
if(count<6) //六位密碼所以COUNT<6
{
if(set==0) //設置密碼鍵沒有按下時
pwx[count]=num;?//存儲按下的數字
else
pws[count]=num;?//設置密碼鍵按下時設置新密碼
workbuf[count]=tabledu[11];?//相應位的數碼管顯示“--“不顯示相應的數字密碼是保密的
}
}
break;
case?0xde:?
{
num=8;
if(count<6) //以下掃描鍵盤的原理差不多同上
{
if(set==0)
pwx[count]=num;
else
pws[count]=num;
workbuf[count]=tabledu[11];
}
}
break;
case?0xbe:?
{
num=9;
{
if(count<6)
{
if(set==0)
pwx[count]=num;
else
pws[count]=num;
workbuf[count]=tabledu[11];
}
}?
}
break;
case?0x7e: //設置密碼鍵按下
{
set=1; //設置密碼標志位置1
P1_3=0; //設置密碼指示燈亮
workbuf[0]=0x00;//數碼管第一位不顯示
workbuf[1]=0x00;//......
workbuf[2]=0x00;//......
workbuf[3]=0x00;
workbuf[4]=0x00;
workbuf[5]=0x00;//......
count=-1; //按鍵計數復位為-1
if(count<6) //密碼沒有設置完繼續設置密碼
{
setpw(); //設置密碼
}
}
break;
}
while(temp!=0xf0)??//按鍵抬起檢測
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
count++;
temp=P3;
switch(temp)
{
case?0xed:?
{
num=4;
if(count<6)
{
if(set==0)
pwx[count]=num;
else
pws[count]=num;
workbuf[count]=tabledu[11];
}
}
break;
case?0xdd:?
{
num=5;
if(count<6)
{
if(set==0)
pwx[count]=num;
else
pws[count]=num;
workbuf[count]=tabledu[11];
}
}
break;
case?0xbd:
{
num=6;
if(count<6)
{
if(set==0)
pwx[count]=num;
else
pws[count]=num;
workbuf[count]=tabledu[11];
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-07-06?21:23??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\
?????文件???????12932??2013-07-06?21:15??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\hanmeng
?????文件????????3877??2013-07-06?21:15??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\hanmeng.hex
?????文件??????????31??2013-07-06?21:15??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\hanmeng.lnp
?????文件???????19565??2013-07-06?21:15??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\hanmeng.M51
?????文件?????????962??2013-07-06?21:15??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\hanmeng.Opt
?????文件?????????177??2013-07-06?21:23??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\hanmeng.plg
?????文件????????2111??2013-07-06?21:15??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\hanmeng.Uv2
?????文件?????????962??2010-06-30?19:37??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\hanmeng_Opt.Bak
?????文件????????7596??2010-06-29?20:31??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\mimasuo.c
?????文件???????25244??2013-07-06?21:15??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\mimasuo.LST
?????文件???????15801??2013-07-06?21:15??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\mimasuo.OBJ
?????目錄???????????0??2013-07-06?21:23??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\原理圖\
?????文件??????132923??2010-06-29?20:35??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\原理圖\11.DSN
?????文件?????????768??2013-07-06?21:23??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\原理圖\11.PWI
?????文件??????132927??2010-06-29?20:28??密碼鎖仿真?51密碼鎖protues仿真?密碼鎖程序仿真圖protues仿真\原理圖\Last?Loaded?11.DBK
- 上一篇:百度云盤.txt241771
- 下一篇:有圖形界面的DES加解密程序
評論
共有 條評論